5e5bb929e00599c97e059b9bb4ba1192eec2a2cd.svn-base 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <j-vxe-table
  3. ref="vTable"
  4. toolbar
  5. row-number
  6. row-selection
  7. keep-source
  8. :height="484"
  9. :dataSource="dataSource"
  10. :columns="columns"
  11. :linkage-config="linkageConfig"
  12. />
  13. </template>
  14. <script>
  15. import { JVXETypes } from '@/components/jeecg/JVxeTable'
  16. export default {
  17. name: 'JVxeDemo2',
  18. data() {
  19. return {
  20. // 联动配置
  21. linkageConfig: [
  22. {requestData: this.requestData, key: 's1'},
  23. // 可配置多个联动
  24. {requestData: this.loadData, key: 'level1',},
  25. ],
  26. columns: [
  27. {
  28. title: '性别',
  29. key: 'sex',
  30. type: JVXETypes.select,
  31. dictCode: 'sex',
  32. width: '180px',
  33. placeholder: '请选择${title}',
  34. },
  35. {
  36. title: '省/直辖市/自治区',
  37. key: 's1',
  38. type: JVXETypes.select,
  39. width: '180px',
  40. placeholder: '请选择${title}',
  41. // 联动字段(即下一级的字段)
  42. linkageKey: 's2',
  43. },
  44. {
  45. title: '市',
  46. key: 's2',
  47. type: JVXETypes.select,
  48. width: '180px',
  49. placeholder: '请选择${title}',
  50. // 联动字段(即下一级的字段)
  51. linkageKey: 's3',
  52. },
  53. {
  54. title: '县/区',
  55. key: 's3',
  56. type: JVXETypes.select,
  57. width: '180px',
  58. options: [],
  59. placeholder: '请选择${title}',
  60. },
  61. {
  62. title: '一级',
  63. key: 'level1',
  64. type: JVXETypes.select,
  65. width: '180px',
  66. placeholder: '请选择${title}',
  67. // 联动字段(即下一级的字段)
  68. linkageKey: 'level2',
  69. },
  70. {
  71. title: '二级',
  72. key: 'level2',
  73. type: JVXETypes.select,
  74. width: '180px',
  75. placeholder: '请选择${title}',
  76. // 联动字段(即下一级的字段)
  77. linkageKey: 'level3',
  78. },
  79. {
  80. title: '三级',
  81. key: 'level3',
  82. type: JVXETypes.select,
  83. width: '180px',
  84. placeholder: '请选择${title}',
  85. }
  86. ],
  87. dataSource: [
  88. {sex: '1', s1: '110000', s2: '110100', s3: '110101', level1: '1', level2: '3', level3: '7'},
  89. {sex: '2', s1: '130000', s2: '130300', s3: '130303', level1: '2', level2: '6', level3: '14'},
  90. ],
  91. // 模拟数据
  92. mockData: [
  93. {text: '北京市', value: '110000', parent: ''},
  94. {text: '天津市', value: '120000', parent: ''},
  95. {text: '河北省', value: '130000', parent: ''},
  96. {text: '上海市', value: '310000', parent: ''},
  97. {text: '北京市', value: '110100', parent: '110000'},
  98. {text: '天津市市', value: '120100', parent: '120000'},
  99. {text: '石家庄市', value: '130100', parent: '130000'},
  100. {text: '唐山市', value: '130200', parent: '130000'},
  101. {text: '秦皇岛市', value: '130300', parent: '130000'},
  102. {text: '上海市', value: '310100', parent: '310000'},
  103. {text: '东城区', value: '110101', parent: '110100'},
  104. {text: '西城区', value: '110102', parent: '110100'},
  105. {text: '朝阳区', value: '110105', parent: '110100'},
  106. {text: '和平区', value: '120101', parent: '120100'},
  107. {text: '河东区', value: '120102', parent: '120100'},
  108. {text: '河西区', value: '120103', parent: '120100'},
  109. {text: '黄浦区', value: '310101', parent: '310100'},
  110. {text: '徐汇区', value: '310104', parent: '310100'},
  111. {text: '长宁区', value: '310105', parent: '310100'},
  112. {text: '长安区', value: '130102', parent: '130100'},
  113. {text: '桥西区', value: '130104', parent: '130100'},
  114. {text: '新华区', value: '130105', parent: '130100'},
  115. {text: '路南区', value: '130202', parent: '130200'},
  116. {text: '路北区', value: '130203', parent: '130200'},
  117. {text: '古冶区', value: '130204', parent: '130200'},
  118. {text: '海港区', value: '130302', parent: '130300'},
  119. {text: '山海关区', value: '130303', parent: '130300'},
  120. {text: '北戴河区', value: '130304', parent: '130300'},
  121. ],
  122. mockData1: [
  123. {id: '1', name: '图书馆', parentId: '0'},
  124. {id: '2', name: '电影院', parentId: '0'},
  125. {id: '3', name: '一楼', parentId: '1'},
  126. {id: '4', name: '二楼', parentId: '1'},
  127. {id: '5', name: '中影星美', parentId: '2'},
  128. {id: '6', name: '万达国际', parentId: '2'},
  129. {id: '7', name: '技术图书', parentId: '3'},
  130. {id: '8', name: '财务图书', parentId: '3'},
  131. {id: '9', name: '儿童图书', parentId: '4'},
  132. {id: '10', name: '励志图书', parentId: '4'},
  133. {id: '11', name: '1号厅', parentId: '5'},
  134. {id: '12', name: '2号厅', parentId: '5'},
  135. {id: '13', name: 'I-MAX厅', parentId: '6'},
  136. {id: '14', name: '3D厅', parentId: '6'},
  137. ],
  138. }
  139. },
  140. methods: {
  141. /**
  142. * 模拟从后台查询数据
  143. */
  144. requestData(parent) {
  145. return new Promise((resolve, reject) => {
  146. let data = this.mockData.filter(i => i.parent === parent)
  147. setTimeout(() => {
  148. resolve(data)
  149. }, 500)
  150. })
  151. },
  152. // 模拟加载数据,模拟数据格式不同的情况下如何组装数据
  153. async loadData(parent) {
  154. return new Promise((resolve, reject) => {
  155. let parentId = parent === '' ? '0' : parent
  156. let data = this.mockData1.filter(i => i.parentId === parentId)
  157. data = data.map(item => {
  158. return {
  159. // 必须包含以下两个字段
  160. value: item.id,
  161. text: item.name,
  162. }
  163. })
  164. setTimeout(() => {
  165. resolve(data)
  166. }, 500)
  167. })
  168. },
  169. }
  170. }
  171. </script>
  172. <style scoped>
  173. </style>