data-table-picker.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <div>
  3. <a-modal
  4. :body-style="bodyStyle"
  5. :title="title"
  6. :destroy-on-close="true"
  7. :visible="visible"
  8. :width="modalWidth"
  9. @ok="handleOk"
  10. @cancel="handleCancel"
  11. >
  12. <!-- 列表 -->
  13. <SdTable
  14. ref="SJMXDataTable"
  15. :row-key="(record, index) => index"
  16. :columns="columns"
  17. :pagination="false"
  18. :data-source="dataList"
  19. :row-selection="{
  20. getCheckboxProps() {
  21. return {}
  22. },
  23. selectedRowKeys: selectedRowKeys,
  24. onChange: onSelectChange,
  25. }"
  26. >
  27. </SdTable> </a-modal
  28. ></div>
  29. </template>
  30. <script>
  31. import components from './_import-components/data-table-picker-import'
  32. import SdTable from '@/common/components/sd-table.vue'
  33. import apis from './data-market'
  34. export default {
  35. name: 'DataTablePicker',
  36. metaInfo: {
  37. title: 'DataTablePicker',
  38. },
  39. components: {
  40. ...components,
  41. SdTable,
  42. },
  43. props: {
  44. title: {
  45. type: String,
  46. default: '数据表选择器',
  47. },
  48. // 弹出窗宽度
  49. modalWidth: {
  50. type: String,
  51. default: '1200px',
  52. },
  53. // 弹出窗显示参数
  54. visible: {
  55. type: Boolean,
  56. default: false,
  57. },
  58. classData: {
  59. type: Array,
  60. default: () => [],
  61. },
  62. },
  63. data() {
  64. return {
  65. columns: [
  66. {
  67. title: '序号',
  68. dataIndex: 'sortNum',
  69. key: 'sortNum',
  70. customRender: (text, record, index) => `${index + 1}`,
  71. width: '80px',
  72. },
  73. {
  74. title: '表中文名称',
  75. dataIndex: 'tableNameCN',
  76. },
  77. {
  78. title: '表英文名称',
  79. dataIndex: 'tableNameEN',
  80. },
  81. {
  82. title: '所属分类',
  83. dataIndex: 'classifyName',
  84. },
  85. ],
  86. dataList: [],
  87. selectedRowKeys: [],
  88. selectedRows: [],
  89. bodyStyle: {
  90. minHeight: '700px',
  91. },
  92. }
  93. },
  94. watch: {
  95. classData: {
  96. handler(val) {
  97. this.dataList = []
  98. this.getDataList()
  99. },
  100. deep: true,
  101. },
  102. },
  103. created() {
  104. this.getDataList()
  105. },
  106. methods: {
  107. getDataList() {
  108. this.dataList = []
  109. const ids = this.classData.map((item) => item.id)
  110. // 获取全部信息
  111. const datas = []
  112. for (let i = 0; i < ids.length; i++) {
  113. apis.findOutsideAll(ids[i]).then((data) => {
  114. if (data.length > 0) {
  115. datas.push(...data)
  116. this.dataList = datas
  117. }
  118. })
  119. }
  120. },
  121. handleOk(e) {
  122. this.$parent.showSelectTable = !this.$parent.showSelectTable
  123. this.$emit('listMxSelected', this.selectedRowKeys, this.selectedRows)
  124. },
  125. handleCancel(e) {
  126. this.$parent.showSelectTable = !this.$parent.showSelectTable
  127. },
  128. onSelectChange(selectedRowKeys, selectedRows) {
  129. this.selectedRowKeys = selectedRowKeys
  130. this.selectedRows = selectedRows
  131. },
  132. },
  133. }
  134. </script>
  135. <style module lang="scss">
  136. @use '@/common/design' as *;
  137. </style>