eoss-ui 0.7.54 → 0.7.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/lib/calogin.js +233 -233
  2. package/lib/eoss-ui.common.js +845 -760
  3. package/lib/flow-list.js +81 -81
  4. package/lib/flow.js +280 -280
  5. package/lib/icons.js +1 -1
  6. package/lib/index.js +1 -1
  7. package/lib/main.js +236 -151
  8. package/lib/qr-code.js +13 -13
  9. package/lib/theme-chalk/base.css +1 -1
  10. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  11. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  12. package/lib/theme-chalk/icon.css +1 -1
  13. package/lib/theme-chalk/index.css +1 -1
  14. package/lib/theme-chalk/main.css +1 -1
  15. package/lib/theme-chalk/menu.css +1 -1
  16. package/lib/theme-chalk/simplicity.css +1 -1
  17. package/lib/theme-chalk/sizer.css +1 -1
  18. package/lib/theme-chalk/upload.css +1 -1
  19. package/package.json +160 -160
  20. package/packages/.DS_Store +0 -0
  21. package/packages/button/index.js +5 -5
  22. package/packages/button/src/main.vue +418 -418
  23. package/packages/button-group/index.js +5 -5
  24. package/packages/button-group/src/main.vue +346 -346
  25. package/packages/calendar/index.js +5 -5
  26. package/packages/calogin/.DS_Store +0 -0
  27. package/packages/calogin/index.js +5 -5
  28. package/packages/calogin/src/main.vue +412 -412
  29. package/packages/calogin/src/plugin.js +915 -915
  30. package/packages/card/index.js +5 -5
  31. package/packages/card/src/main.vue +156 -156
  32. package/packages/cascader/index.js +5 -5
  33. package/packages/cascader/src/main.vue +168 -168
  34. package/packages/checkbox-group/index.js +5 -5
  35. package/packages/checkbox-group/src/main.vue +333 -333
  36. package/packages/clients/index.js +5 -5
  37. package/packages/clients/src/main.vue +151 -151
  38. package/packages/data-table/index.js +5 -5
  39. package/packages/data-table/src/children.vue +39 -39
  40. package/packages/data-table/src/column.vue +992 -992
  41. package/packages/data-table/src/main.vue +1840 -1840
  42. package/packages/data-table/src/sizer.vue +195 -195
  43. package/packages/data-table-form/index.js +5 -5
  44. package/packages/data-table-form/src/checkbox.vue +101 -101
  45. package/packages/data-table-form/src/colgroup.vue +17 -17
  46. package/packages/data-table-form/src/main.vue +181 -181
  47. package/packages/data-table-form/src/radio.vue +65 -65
  48. package/packages/data-table-form/src/table.vue +233 -233
  49. package/packages/data-table-form/src/tbody.vue +336 -336
  50. package/packages/data-table-form/src/thead.vue +68 -68
  51. package/packages/date-picker/.DS_Store +0 -0
  52. package/packages/date-picker/index.js +5 -5
  53. package/packages/date-picker/src/.DS_Store +0 -0
  54. package/packages/date-picker/src/main.vue +236 -236
  55. package/packages/dialog/.DS_Store +0 -0
  56. package/packages/dialog/index.js +5 -5
  57. package/packages/enable-drag/index.js +5 -5
  58. package/packages/enterprise/index.js +5 -5
  59. package/packages/enterprise/src/main.vue +66 -66
  60. package/packages/error-page/index.js +5 -5
  61. package/packages/error-page/src/main.vue +44 -44
  62. package/packages/flow/.DS_Store +0 -0
  63. package/packages/flow/index.js +5 -5
  64. package/packages/flow/src/.DS_Store +0 -0
  65. package/packages/flow/src/component/Circulate.vue +413 -413
  66. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  67. package/packages/flow/src/component/CustomPreset.vue +322 -322
  68. package/packages/flow/src/component/FileList.vue +97 -97
  69. package/packages/flow/src/component/FreeCirculation.vue +241 -241
  70. package/packages/flow/src/component/Preset.vue +255 -255
  71. package/packages/flow/src/component/SendMsg.vue +242 -242
  72. package/packages/flow/src/component/TimeLimit.vue +190 -190
  73. package/packages/flow/src/component/taskUnionExamine.vue +756 -756
  74. package/packages/flow/src/form.vue +121 -121
  75. package/packages/flow/src/freeStartFlow.vue +2846 -2846
  76. package/packages/flow/src/main.vue +3878 -3878
  77. package/packages/flow/src/processForm.vue +1365 -1365
  78. package/packages/flow/src/processReject.vue +309 -309
  79. package/packages/flow/src/reset.vue +942 -942
  80. package/packages/flow/src/startTaskRead.vue +692 -692
  81. package/packages/flow/src/supervise.vue +159 -159
  82. package/packages/flow/src/table.vue +58 -58
  83. package/packages/flow-group/index.js +5 -5
  84. package/packages/flow-group/src/main.vue +717 -717
  85. package/packages/flow-list/.DS_Store +0 -0
  86. package/packages/flow-list/index.js +5 -5
  87. package/packages/flow-list/src/main.vue +1801 -1801
  88. package/packages/form/.DS_Store +0 -0
  89. package/packages/form/index.js +5 -5
  90. package/packages/form/src/main.vue +3901 -3901
  91. package/packages/form/src/table.vue +1512 -1512
  92. package/packages/handle-user/index.js +5 -5
  93. package/packages/handle-user/src/main.vue +137 -137
  94. package/packages/handler/index.js +5 -5
  95. package/packages/handler/src/main.vue +496 -496
  96. package/packages/icon/.DS_Store +0 -0
  97. package/packages/icon/index.js +5 -5
  98. package/packages/icon/src/main.vue +104 -104
  99. package/packages/icons/index.js +5 -5
  100. package/packages/icons/src/icon.json +1 -1
  101. package/packages/icons/src/main.vue +81 -81
  102. package/packages/input/index.js +5 -5
  103. package/packages/input/src/main.vue +356 -356
  104. package/packages/input-number/index.js +5 -5
  105. package/packages/input-number/src/main.vue +106 -106
  106. package/packages/label/index.js +5 -5
  107. package/packages/label/src/main.vue +457 -457
  108. package/packages/layout/index.js +5 -5
  109. package/packages/layout/src/item.vue +152 -152
  110. package/packages/layout/src/main.vue +31 -31
  111. package/packages/login/.DS_Store +0 -0
  112. package/packages/login/index.js +5 -5
  113. package/packages/login/src/main.vue +2082 -2082
  114. package/packages/login/src/resetPassword.vue +557 -557
  115. package/packages/main/.DS_Store +0 -0
  116. package/packages/main/index.js +5 -5
  117. package/packages/main/src/.DS_Store +0 -0
  118. package/packages/main/src/default/message.vue +249 -249
  119. package/packages/main/src/default/notice.vue +157 -157
  120. package/packages/main/src/default/userinfo.vue +503 -503
  121. package/packages/main/src/public/online.vue +89 -89
  122. package/packages/main/src/public/search.vue +464 -464
  123. package/packages/main/src/public/settings.vue +227 -227
  124. package/packages/main/src/simplicity/apps.vue +388 -388
  125. package/packages/main/src/simplicity/avatar.vue +82 -82
  126. package/packages/main/src/simplicity/handler.vue +160 -160
  127. package/packages/main/src/simplicity/index.vue +2307 -2277
  128. package/packages/main/src/simplicity/lists.vue +84 -84
  129. package/packages/main/src/simplicity/menu-list.vue +135 -135
  130. package/packages/main/src/simplicity/message.vue +293 -293
  131. package/packages/main/src/simplicity/notice.vue +222 -222
  132. package/packages/main/src/simplicity/router-page.vue +45 -45
  133. package/packages/main/src/simplicity/sub-menu.vue +274 -274
  134. package/packages/main/src/simplicity/user.vue +259 -259
  135. package/packages/main/src/simplicity/userinfo.vue +401 -401
  136. package/packages/menu/.DS_Store +0 -0
  137. package/packages/menu/index.js +5 -5
  138. package/packages/menu/src/main.vue +595 -595
  139. package/packages/nav/index.js +5 -5
  140. package/packages/nav/src/main.vue +351 -351
  141. package/packages/notify/index.js +5 -5
  142. package/packages/notify/src/main.vue +538 -538
  143. package/packages/page/index.js +5 -5
  144. package/packages/page/src/main.vue +167 -167
  145. package/packages/pagination/index.js +5 -5
  146. package/packages/pagination/src/main.vue +96 -96
  147. package/packages/player/index.js +5 -5
  148. package/packages/player/src/main.vue +194 -194
  149. package/packages/qr-code/index.js +5 -5
  150. package/packages/qr-code/src/main.vue +170 -170
  151. package/packages/radio-group/index.js +6 -6
  152. package/packages/radio-group/src/main.vue +319 -319
  153. package/packages/retrial-auth/index.js +5 -5
  154. package/packages/retrial-auth/src/main.vue +280 -280
  155. package/packages/select/.DS_Store +0 -0
  156. package/packages/select/index.js +5 -5
  157. package/packages/select/src/main.vue +782 -782
  158. package/packages/select-ganged/index.js +5 -5
  159. package/packages/select-ganged/src/main.vue +724 -724
  160. package/packages/selector/.DS_Store +0 -0
  161. package/packages/selector/index.js +5 -5
  162. package/packages/selector/src/main.vue +761 -761
  163. package/packages/selector-panel/.DS_Store +0 -0
  164. package/packages/selector-panel/index.js +5 -5
  165. package/packages/selector-panel/src/main.vue +1027 -1027
  166. package/packages/selector-panel/src/selection.vue +170 -170
  167. package/packages/selector-panel/src/tree.vue +129 -129
  168. package/packages/sizer/index.js +5 -5
  169. package/packages/sizer/src/main.vue +254 -254
  170. package/packages/steps/index.js +5 -5
  171. package/packages/steps/src/main.vue +181 -181
  172. package/packages/switch/index.js +5 -5
  173. package/packages/switch/src/main.vue +170 -170
  174. package/packages/table-form/index.js +5 -5
  175. package/packages/tabs/index.js +5 -5
  176. package/packages/tabs/src/main.vue +788 -788
  177. package/packages/tabs-panel/index.js +5 -5
  178. package/packages/tabs-panel/src/main.vue +29 -29
  179. package/packages/theme-chalk/lib/base.css +1 -1
  180. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  181. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  182. package/packages/theme-chalk/lib/icon.css +1 -1
  183. package/packages/theme-chalk/lib/index.css +1 -1
  184. package/packages/theme-chalk/lib/main.css +1 -1
  185. package/packages/theme-chalk/lib/menu.css +1 -1
  186. package/packages/theme-chalk/lib/simplicity.css +1 -1
  187. package/packages/theme-chalk/lib/sizer.css +1 -1
  188. package/packages/theme-chalk/lib/upload.css +1 -1
  189. package/packages/theme-chalk/src/.DS_Store +0 -0
  190. package/packages/theme-chalk/src/base.scss +261 -261
  191. package/packages/theme-chalk/src/button-group.scss +176 -176
  192. package/packages/theme-chalk/src/button.scss +24 -24
  193. package/packages/theme-chalk/src/calendar.scss +113 -113
  194. package/packages/theme-chalk/src/card.scss +99 -99
  195. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  196. package/packages/theme-chalk/src/clients.scss +87 -87
  197. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  198. package/packages/theme-chalk/src/data-table.scss +297 -297
  199. package/packages/theme-chalk/src/date-picker.scss +7 -7
  200. package/packages/theme-chalk/src/dialog.scss +77 -77
  201. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  202. package/packages/theme-chalk/src/enterprise.scss +5 -5
  203. package/packages/theme-chalk/src/error-page.scss +18 -18
  204. package/packages/theme-chalk/src/flow-group.scss +110 -110
  205. package/packages/theme-chalk/src/flow-list.scss +39 -39
  206. package/packages/theme-chalk/src/flow.scss +351 -351
  207. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  208. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  209. package/packages/theme-chalk/src/form.scss +501 -501
  210. package/packages/theme-chalk/src/handle-user.scss +40 -40
  211. package/packages/theme-chalk/src/handler.scss +148 -148
  212. package/packages/theme-chalk/src/icon.scss +1608 -1540
  213. package/packages/theme-chalk/src/icons.scss +99 -99
  214. package/packages/theme-chalk/src/input.scss +9 -9
  215. package/packages/theme-chalk/src/label.scss +24 -24
  216. package/packages/theme-chalk/src/layout.scss +46 -46
  217. package/packages/theme-chalk/src/login.scss +1006 -1006
  218. package/packages/theme-chalk/src/main.scss +663 -663
  219. package/packages/theme-chalk/src/menu.scss +224 -224
  220. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  221. package/packages/theme-chalk/src/nav.scss +111 -111
  222. package/packages/theme-chalk/src/page.scss +3 -3
  223. package/packages/theme-chalk/src/pagination.scss +29 -29
  224. package/packages/theme-chalk/src/player.scss +9 -9
  225. package/packages/theme-chalk/src/qr-code.scss +17 -17
  226. package/packages/theme-chalk/src/radio-group.scss +9 -9
  227. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  228. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  229. package/packages/theme-chalk/src/select.scss +8 -8
  230. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  231. package/packages/theme-chalk/src/selector.scss +114 -114
  232. package/packages/theme-chalk/src/simplicity.scss +1404 -1395
  233. package/packages/theme-chalk/src/sizer.scss +36 -36
  234. package/packages/theme-chalk/src/steps.scss +88 -88
  235. package/packages/theme-chalk/src/switch.scss +3 -3
  236. package/packages/theme-chalk/src/table-form.scss +1 -1
  237. package/packages/theme-chalk/src/tabs.scss +87 -87
  238. package/packages/theme-chalk/src/tips.scss +7 -7
  239. package/packages/theme-chalk/src/toolbar.scss +179 -179
  240. package/packages/theme-chalk/src/tree-group.scss +72 -72
  241. package/packages/theme-chalk/src/tree.scss +165 -165
  242. package/packages/theme-chalk/src/upload.scss +172 -172
  243. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  244. package/packages/tips/index.js +5 -5
  245. package/packages/tips/src/main.vue +141 -141
  246. package/packages/toolbar/index.js +5 -5
  247. package/packages/toolbar/src/main.vue +430 -430
  248. package/packages/tree/index.js +5 -5
  249. package/packages/tree-group/index.js +5 -5
  250. package/packages/upload/.DS_Store +0 -0
  251. package/packages/upload/index.js +5 -5
  252. package/packages/upload/src/main.vue +1344 -1344
  253. package/packages/upload/src/picture.js +15 -15
  254. package/packages/wujie/index.js +5 -5
  255. package/packages/wujie/src/main.vue +145 -145
  256. package/packages/wxlogin/index.js +5 -5
  257. package/packages/wxlogin/src/main.vue +128 -128
  258. package/src/.DS_Store +0 -0
  259. package/src/config/api.js +317 -317
  260. package/src/config/image.js +2 -2
  261. package/src/index.js +163 -163
  262. package/src/utils/.DS_Store +0 -0
  263. package/src/utils/bus.js +3 -3
  264. package/src/utils/date-util.js +312 -312
  265. package/src/utils/http.js +50 -50
  266. package/src/utils/rules.js +18 -18
  267. package/src/utils/store.js +21 -21
  268. package/src/utils/webSocket.js +107 -107
@@ -1,724 +1,724 @@
1
- <script>
2
- import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
3
- import { debounce } from 'throttle-debounce';
4
- import util from 'eoss-ui/src/utils/util';
5
- export default {
6
- name: 'EsSelectGanged',
7
- componentName: 'EsSelectGanged',
8
- inheritAttrs: false,
9
- provide() {
10
- return {
11
- ganged: this
12
- };
13
- },
14
- inject: {
15
- esForm: {
16
- default: ''
17
- }
18
- },
19
- props: {
20
- service: String,
21
- method: {
22
- type: String,
23
- default: 'get'
24
- },
25
- //接口请求携带的参数
26
- param: {
27
- type: [Object, Array],
28
- default() {
29
- return {};
30
- }
31
- },
32
- // 显示隐藏组件
33
- display: {
34
- type: Boolean,
35
- default: true
36
- },
37
- // 是否不渲染组件
38
- hide: {
39
- type: Boolean,
40
- default: false
41
- },
42
- placeholder: {
43
- type: String,
44
- default: '请选择'
45
- },
46
- valueType: {
47
- type: String,
48
- default: 'object',
49
- validator: function (value) {
50
- return ['string', 'object'].includes(value);
51
- }
52
- },
53
- data: {
54
- type: Array,
55
- default() {
56
- return [];
57
- }
58
- },
59
- // 选择项远程地址
60
- url: {
61
- type: String,
62
- default: ''
63
- },
64
- // 开启联动选择
65
- ganged: {
66
- type: Number,
67
- default: 0
68
- },
69
- //是否多选
70
- multiple: [Boolean, Array],
71
- // 选择项的值字段
72
- value: {
73
- type: [String, Array],
74
- default: ''
75
- },
76
- filtrate: [String, Number],
77
- filtrateKey: {
78
- type: String,
79
- default: 'pid'
80
- },
81
- // 请求参数
82
- queryKey: [Object, Array, String],
83
- //选择项的值字段
84
- valueKey: {
85
- type: String,
86
- default: 'value'
87
- },
88
- labelKey: {
89
- type: String,
90
- default: 'name'
91
- },
92
- sysCode: String,
93
- integrality: {
94
- type: Boolean,
95
- default: false
96
- },
97
- separator: {
98
- type: String,
99
- default: '/'
100
- },
101
- symbol: {
102
- type: String,
103
- default: ','
104
- },
105
- readonly: Boolean,
106
- plain: Boolean,
107
- parseData: Function,
108
- group: Boolean,
109
- hasSub: {
110
- type: String,
111
- default: 'hasSub'
112
- },
113
- defaultValue: Boolean,
114
- dataKey: String
115
- },
116
- data() {
117
- return {
118
- lists: [],
119
- options: null,
120
- disabled: [],
121
- values: [],
122
- filtrates: [this.filtrate],
123
- wheres: [{}],
124
- first: true,
125
- height: undefined,
126
- gangedNum: null,
127
- canceled: false
128
- };
129
- },
130
- computed: {
131
- getGanged: {
132
- get() {
133
- if (this.ganged > 0) {
134
- return this.ganged;
135
- } else if (this.results.length > 0 && Array.isArray(this.results[0])) {
136
- return this.results.length;
137
- } else {
138
- return 1;
139
- }
140
- },
141
- set(val) {
142
- return val;
143
- }
144
- },
145
- multiples: {
146
- get() {
147
- if (!this.gangedNum) {
148
- if (this.ganged && this.value.length <= this.getGanged) {
149
- this.gangedNum = this.getGanged;
150
- } else {
151
- let val = this.value.length
152
- ? this.value[this.value.length - 1]
153
- : null;
154
- if (
155
- val &&
156
- Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
157
- val.hasSub === false
158
- ) {
159
- this.gangedNum = this.value.length;
160
- } else {
161
- this.gangedNum = this.value.length + 1;
162
- }
163
- }
164
- }
165
- let multiples = [];
166
- if (this.multiple === undefined && this.value.length) {
167
- multiples = this.value.map((item) => {
168
- return Array.isArray(item);
169
- });
170
- } else if (Array.isArray(this.multiple) && this.multiple.length) {
171
- if (this.multiple.length < this.gangedNum) {
172
- for (let i = 0; i < this.gangedNum; i++) {
173
- multiples.push(
174
- this.multiple[i] == undefined
175
- ? multiples[i - 1]
176
- : this.multiple[i]
177
- );
178
- }
179
- } else {
180
- multiples = this.multiple;
181
- }
182
- } else {
183
- for (let i = 0; i < this.gangedNum; i++) {
184
- multiples.push(this.multiple);
185
- }
186
- }
187
- return multiples;
188
- },
189
- set(val) {
190
- return val;
191
- }
192
- },
193
- results() {
194
- if (this.integrality) {
195
- return this.lists;
196
- }
197
- return this.data;
198
- },
199
- findCode() {
200
- if (this.service) {
201
- return `/${this.service}${getDictList}`;
202
- }
203
- return findSysCode;
204
- }
205
- },
206
- watch: {
207
- value: {
208
- immediate: true,
209
- deep: true,
210
- handler(val) {
211
- if (this.first) {
212
- this.getValue();
213
- if (val && (util.isObject(val) || val.length)) {
214
- this.getChildren(this.results, this.values);
215
- }
216
- }
217
- }
218
- },
219
- // 监听级联层数,便于动态修改级联数据
220
- ganged: {
221
- deep: true,
222
- handler(val, oldVal) {
223
- if (val !== oldVal) {
224
- this.gangedNum = val;
225
- // 当级联数增加时,重新执行handeChange,以便最后一层数据从倒数第二层的位置开始找
226
- if (val > oldVal) {
227
- let value = this.values[oldVal - 1];
228
- this.handeChange(value, oldVal - 1);
229
- } else {
230
- let value = this.values[val - 1];
231
- this.handeChange(value, val - 1);
232
- }
233
- }
234
- }
235
- }
236
- },
237
- beforeCreate() {
238
- this.getData = debounce(500, () => {
239
- this.getDatas();
240
- });
241
- },
242
- created() {
243
- this.getData();
244
- },
245
- mounted() {},
246
- methods: {
247
- getDatas() {
248
- if (!this.integrality || !this.url) {
249
- return false;
250
- }
251
- util
252
- .ajax({
253
- url: this.sysCode ? this.findCode : this.url,
254
- method: this.method,
255
- params: this.param,
256
- data: this.param
257
- })
258
- .then((res) => {
259
- this.canceled = false;
260
- if (res.rCode === 0) {
261
- this.lists = res.results;
262
- this.getChildren(this.results, this.values);
263
- if (sysCode || this.dataKey) {
264
- this.esForm &&
265
- this.esForm.setSysCodes(
266
- sysCode || this.dataKey,
267
- JSON.parse(JSON.stringify(this.lists))
268
- );
269
- store.set(sysCode, JSON.parse(JSON.stringify(this.lists)));
270
- }
271
- }
272
- })
273
- .catch((err) => {
274
- if (err.message) {
275
- if (err.message !== 'canceled') {
276
- this.$message.error(err.message);
277
- }
278
- if (err.message === 'canceled' && sysCode) {
279
- this.canceled = true;
280
- }
281
- }
282
- });
283
- },
284
- getChildren(data, values) {
285
- if (!this.gangedNum) {
286
- if (
287
- (this.ganged && this.value.length < this.getGanged) ||
288
- Array.isArray(this.results[0])
289
- ) {
290
- this.gangedNum = this.getGanged;
291
- } else {
292
- let val = this.value.length
293
- ? this.value[this.value.length - 1]
294
- : null;
295
- if (
296
- val &&
297
- Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
298
- val.hasSub === false
299
- ) {
300
- this.gangedNum = this.value.length;
301
- } else {
302
- this.gangedNum = this.value.length + 1;
303
- }
304
- }
305
- }
306
- for (let i = 0; i < values.length; i++) {
307
- if (i > 0) {
308
- if (
309
- (values[i] || values[i] == 0) &&
310
- (util.isObject(values[i]) || values[i].length)
311
- ) {
312
- this.$set(this.disabled, i, false);
313
- }
314
- }
315
- if (i < values.length - 1) {
316
- if (
317
- values[i] &&
318
- Object.prototype.hasOwnProperty.call(values[i], 'multiple')
319
- ) {
320
- this.$set(this.multiples, i + 1, Boolean(this.values[i].multiple));
321
- }
322
- if (i + 1 <= values.length) {
323
- this.$set(
324
- this.filtrates,
325
- i + 1,
326
- this.multiples[i + 1]
327
- ? Array.isArray(values[i])
328
- ? values[i]
329
- : [values[i]]
330
- : values[i]
331
- );
332
- }
333
-
334
- if (this.url && i + 1 <= values.length) {
335
- let params = {};
336
- if (this.queryKey !== undefined) {
337
- if (typeof this.queryKey === 'string') {
338
- if (Array.isArray(values[i])) {
339
- params[this.queryKey] = values[i].map((item) => {
340
- return item[this.queryKey];
341
- });
342
- } else {
343
- params[this.queryKey] = values[i][this.queryKey];
344
- }
345
- } else {
346
- for (let x in this.queryKey) {
347
- if (Array.isArray(values[i])) {
348
- params[x] = values[i].map((item) => {
349
- return item[this.queryKey[x]];
350
- });
351
- } else {
352
- params[x] = values[i][this.queryKey[x]];
353
- }
354
- }
355
- }
356
- }
357
- this.$set(this.wheres, i + 1, params);
358
- }
359
- }
360
- }
361
- if (values.length && values.length < this.gangedNum) {
362
- this.$set(this.disabled, values.length, false);
363
- }
364
- },
365
- getValue() {
366
- if (!this.gangedNum) {
367
- if (
368
- (this.ganged && this.value.length <= this.getGanged) ||
369
- Array.isArray(this.results[0])
370
- ) {
371
- this.gangedNum = this.getGanged;
372
- } else {
373
- let val = this.value.length
374
- ? this.value[this.value.length - 1]
375
- : null;
376
- if (
377
- val &&
378
- Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
379
- val.hasSub === false
380
- ) {
381
- this.gangedNum = this.value.length;
382
- } else {
383
- this.gangedNum = this.value.length + 1;
384
- }
385
- }
386
- }
387
- if (
388
- !this.ganged ||
389
- (this.value.length < this.gangedNum - 1 && this.gangedNum > 0)
390
- ) {
391
- let val = this.value.length
392
- ? JSON.parse(JSON.stringify(this.value))
393
- : [];
394
- let disabled = [];
395
- for (let i = 0; i < this.gangedNum; i++) {
396
- if (i > this.value.length - 1) {
397
- val.push(this.multiples[i] ? [] : '');
398
- }
399
- disabled.push(i > this.value.length);
400
- }
401
- this.disabled = disabled;
402
- this.values = val;
403
- } else {
404
- let disabled = [];
405
- if (this.multiple) {
406
- this.values = this.value.map((item, index) => {
407
- return this.multiples[index]
408
- ? Array.isArray(item)
409
- ? item
410
- : [item]
411
- : item;
412
- });
413
- for (let i = 0; i < this.gangedNum; i++) {
414
- disabled.push(
415
- this.values[i] && this.values[i].length ? false : i > 0
416
- );
417
- }
418
- } else {
419
- for (let i = 0; i < this.gangedNum; i++) {
420
- if (Array.isArray(this.value[i])) {
421
- this.$set(this.multiples, i, true);
422
- disabled.push(this.value[i].length ? false : i > 0);
423
- } else {
424
- this.$set(
425
- this.multiples,
426
- i,
427
- util.isObject(this.value[i]) ? this.value[i].multiple : false
428
- );
429
- disabled.push(this.value[i] ? false : i > 0);
430
- }
431
- }
432
- this.values = JSON.parse(JSON.stringify(this.value));
433
- }
434
- this.disabled = disabled;
435
- }
436
- },
437
- handeChange(val, key) {
438
- if (!this.gangedNum) {
439
- if (this.ganged && this.value.length < this.getGanged) {
440
- this.gangedNum = this.getGanged;
441
- } else {
442
- let val = this.value.length
443
- ? this.value[this.value.length - 1]
444
- : null;
445
- if (
446
- val &&
447
- Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
448
- val.hasSub === false
449
- ) {
450
- this.gangedNum = this.value.length;
451
- } else {
452
- this.gangedNum = this.value.length + 1;
453
- }
454
- }
455
- }
456
- if (key === this.gangedNum - 1 && val[this.hasSub]) {
457
- this.gangedNum += 1;
458
- } else if (val[this.hasSub] === false) {
459
- this.gangedNum = key + 1;
460
- }
461
- this.first = false;
462
- this.parentData = null;
463
- if (this.url && key + 1 < this.gangedNum) {
464
- this.parentData = val;
465
- let params = {};
466
- if (this.queryKey !== undefined) {
467
- if (typeof this.queryKey === 'string') {
468
- params[this.queryKey] = Array.isArray(val)
469
- ? val.map((item) => {
470
- return item[this.queryKey];
471
- })
472
- : val[this.queryKey];
473
- } else {
474
- for (let i in this.queryKey) {
475
- params[i] = Array.isArray(val)
476
- ? val.map((item) => {
477
- return item[this.queryKey[i]];
478
- })
479
- : val[this.queryKey[i]];
480
- }
481
- }
482
- } else {
483
- params.id = Array.isArray(val)
484
- ? val.map((item) => {
485
- return item[this.valueKey];
486
- })
487
- : val[this.valueKey];
488
- }
489
- this.$set(this.wheres, key + 1, params);
490
- }
491
- this.$set(this.values, key, val);
492
- if (key + 1 < this.gangedNum) {
493
- }
494
- for (let i = key + 1; i < this.gangedNum; i++) {
495
- if (this.multiples[i - 1]) {
496
- let newVal = [];
497
- this.values[i - 1].forEach((element) => {
498
- this.values[i].forEach((itemVal) => {
499
- if (element[this.valueKey] === itemVal[this.filtrateKey]) {
500
- newVal.push(itemVal);
501
- }
502
- });
503
- });
504
- this.$set(this.values, i, newVal);
505
- }
506
- if (
507
- this.values[i - 1] &&
508
- (util.isObject(this.values[i - 1]) || this.values[i - 1].length)
509
- ) {
510
- this.$set(this.disabled, i, false);
511
- } else {
512
- this.$set(this.disabled, i, true);
513
- }
514
- this.$set(this.filtrates, i, this.values[i - 1]);
515
- if (!this.multiple) {
516
- if (
517
- util.isObject(val) &&
518
- Object.prototype.hasOwnProperty.call(val, 'multiple')
519
- ) {
520
- this.$set(this.multiples, i, Boolean(val.multiple));
521
- }
522
- }
523
- if (!this.multiples[i - 1] || val.length == 0) {
524
- this.$set(this.values, i, this.multiples[i] ? [] : '');
525
- }
526
- }
527
- if (key + 1 === this.gangedNum) {
528
- this.$emit('input', this.values);
529
- }
530
- this.$emit('change', { value: val, index: key, data: this.values });
531
- },
532
- getLabel(res, index) {
533
- let results = this.results;
534
- if (Array.isArray(this.results[0])) {
535
- results = this.results[index];
536
- }
537
- for (let i = 0; i < results.length; i++) {
538
- let item = results[i];
539
- if (item[this.valueKey] == res) {
540
- return item;
541
- }
542
- if (
543
- Object.prototype.hasOwnProperty.call(item, 'children') &&
544
- item.children &&
545
- item.children.length
546
- ) {
547
- return this.getLabel(item.children, res);
548
- }
549
- }
550
- }
551
- },
552
- render(h) {
553
- if (!this.hide) {
554
- if (this.readonly) {
555
- let value = [];
556
- if (this.value) {
557
- if (this.group) {
558
- let path = {};
559
- let values = [];
560
- this.value.forEach((item, index) => {
561
- if (Array.isArray(item)) {
562
- item.forEach((ele) => {
563
- let obj = ele;
564
- if (!ele[this.filtrateKey]) {
565
- obj = this.getLabel(ele[this.valueKey] || ele, index);
566
- }
567
- if (path[obj[this.filtrateKey]]) {
568
- path[obj[this.valueKey]] =
569
- path[obj[this.filtrateKey]] +
570
- this.separator +
571
- (obj[this.labelKey] || obj.label);
572
- values.push(path[obj[this.valueKey]]);
573
- } else {
574
- path[obj[this.valueKey]] = obj[this.labelKey] || obj.label;
575
- }
576
- });
577
- } else {
578
- let obj = item;
579
- if (!item[this.filtrateKey]) {
580
- obj = this.getLabel(item[this.valueKey] || item, index);
581
- }
582
- if (path[obj[this.filtrateKey]]) {
583
- path[obj[this.valueKey]] =
584
- path[obj[this.filtrateKey]] +
585
- this.separator +
586
- (obj[this.labelKey] || obj.label);
587
- values.push(path[obj[this.valueKey]]);
588
- } else {
589
- path[obj[this.valueKey]] = obj[this.labelKey] || obj.label;
590
- }
591
- }
592
- });
593
- values.forEach((item, index) => {
594
- let flag = true;
595
- for (let i = index + 1; i < values.length; i++) {
596
- if (values[i].indexOf(item) > -1) {
597
- flag = false;
598
- break;
599
- }
600
- }
601
- if (flag) {
602
- value.push(item);
603
- }
604
- });
605
- } else {
606
- value = [
607
- this.value
608
- .map((item, indexs) => {
609
- if (Array.isArray(item)) {
610
- return item
611
- .map((ele, index) => {
612
- return util.isObject(ele)
613
- ? ele[this.labelKey] ||
614
- ele.label ||
615
- this.getLabel(
616
- ele[this.valueKey] || ele.label,
617
- index
618
- )
619
- : this.getLabel(ele, index) || ele;
620
- })
621
- .join(this.symbol);
622
- }
623
- return util.isObject(item)
624
- ? item[this.labelKey] ||
625
- item.label ||
626
- this.getLabel(item[this.valueKey] || item.label, indexs)
627
- : this.getLabel(item, indexs) || item;
628
- })
629
- .join(this.separator)
630
- ];
631
- }
632
- }
633
- return h('es-select', {
634
- attrs: {
635
- ...this.$attrs,
636
- separator: this.separator,
637
- readonly: true,
638
- multiple: value.length > 1,
639
- value: value
640
- }
641
- });
642
- }
643
- if (!this.gangedNum) {
644
- if (this.ganged && this.value.length < this.getGanged) {
645
- this.gangedNum = this.getGanged;
646
- } else {
647
- let val = this.value.length
648
- ? this.value[this.value.length - 1]
649
- : null;
650
- if (
651
- val &&
652
- Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
653
- val.hasSub === false
654
- ) {
655
- this.gangedNum = this.value.length;
656
- } else {
657
- this.gangedNum = this.value.length + 1;
658
- }
659
- }
660
- }
661
- let doms = [];
662
- for (let i = 0; i < this.gangedNum; i++) {
663
- doms.push(
664
- h('es-select', {
665
- attrs: {
666
- ...this.$attrs,
667
- data: this.results[i]
668
- ? Array.isArray(this.results[0])
669
- ? this.results[i]
670
- : this.results
671
- : [],
672
- sysCode: this.integrality ? undefined : this.sysCode,
673
- url: this.integrality ? undefined : this.url,
674
- wait: this.ganged ? i <= this.value.length : true,
675
- param: Array.isArray(this.param)
676
- ? { ...this.param[i], ...this.wheres[i] }
677
- : { ...this.param, ...this.wheres[i] },
678
- disabled: this.disabled[i],
679
- multiple: this.multiples[i],
680
- height: this.height,
681
- value: this.values[i],
682
- valueType: this.valueType,
683
- valueKey: this.valueKey,
684
- labelKey: this.labelKey,
685
- filtrateKey: this.filtrateKey,
686
- filtrate: this.url
687
- ? this.integrality
688
- ? this.filtrates[i]
689
- : undefined
690
- : this.filtrates[i],
691
- placeholder: this.placeholder,
692
- parseData: this.parseData,
693
- defaultValue: i === 0 ? this.defaultValue : false
694
- },
695
- on: {
696
- change: (val) => {
697
- this.handeChange(val, i);
698
- },
699
- resetInputHeight: (val) => {
700
- this.height = val;
701
- }
702
- }
703
- })
704
- );
705
- }
706
- return h(
707
- 'div',
708
- {
709
- class: 'es-select-ganged',
710
- directives: [
711
- {
712
- name: 'show',
713
- value: this.display
714
- }
715
- ]
716
- },
717
- doms
718
- );
719
- } else {
720
- return '';
721
- }
722
- }
723
- };
724
- </script>
1
+ <script>
2
+ import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
3
+ import { debounce } from 'throttle-debounce';
4
+ import util from 'eoss-ui/src/utils/util';
5
+ export default {
6
+ name: 'EsSelectGanged',
7
+ componentName: 'EsSelectGanged',
8
+ inheritAttrs: false,
9
+ provide() {
10
+ return {
11
+ ganged: this
12
+ };
13
+ },
14
+ inject: {
15
+ esForm: {
16
+ default: ''
17
+ }
18
+ },
19
+ props: {
20
+ service: String,
21
+ method: {
22
+ type: String,
23
+ default: 'get'
24
+ },
25
+ //接口请求携带的参数
26
+ param: {
27
+ type: [Object, Array],
28
+ default() {
29
+ return {};
30
+ }
31
+ },
32
+ // 显示隐藏组件
33
+ display: {
34
+ type: Boolean,
35
+ default: true
36
+ },
37
+ // 是否不渲染组件
38
+ hide: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ placeholder: {
43
+ type: String,
44
+ default: '请选择'
45
+ },
46
+ valueType: {
47
+ type: String,
48
+ default: 'object',
49
+ validator: function (value) {
50
+ return ['string', 'object'].includes(value);
51
+ }
52
+ },
53
+ data: {
54
+ type: Array,
55
+ default() {
56
+ return [];
57
+ }
58
+ },
59
+ // 选择项远程地址
60
+ url: {
61
+ type: String,
62
+ default: ''
63
+ },
64
+ // 开启联动选择
65
+ ganged: {
66
+ type: Number,
67
+ default: 0
68
+ },
69
+ //是否多选
70
+ multiple: [Boolean, Array],
71
+ // 选择项的值字段
72
+ value: {
73
+ type: [String, Array],
74
+ default: ''
75
+ },
76
+ filtrate: [String, Number],
77
+ filtrateKey: {
78
+ type: String,
79
+ default: 'pid'
80
+ },
81
+ // 请求参数
82
+ queryKey: [Object, Array, String],
83
+ //选择项的值字段
84
+ valueKey: {
85
+ type: String,
86
+ default: 'value'
87
+ },
88
+ labelKey: {
89
+ type: String,
90
+ default: 'name'
91
+ },
92
+ sysCode: String,
93
+ integrality: {
94
+ type: Boolean,
95
+ default: false
96
+ },
97
+ separator: {
98
+ type: String,
99
+ default: '/'
100
+ },
101
+ symbol: {
102
+ type: String,
103
+ default: ','
104
+ },
105
+ readonly: Boolean,
106
+ plain: Boolean,
107
+ parseData: Function,
108
+ group: Boolean,
109
+ hasSub: {
110
+ type: String,
111
+ default: 'hasSub'
112
+ },
113
+ defaultValue: Boolean,
114
+ dataKey: String
115
+ },
116
+ data() {
117
+ return {
118
+ lists: [],
119
+ options: null,
120
+ disabled: [],
121
+ values: [],
122
+ filtrates: [this.filtrate],
123
+ wheres: [{}],
124
+ first: true,
125
+ height: undefined,
126
+ gangedNum: null,
127
+ canceled: false
128
+ };
129
+ },
130
+ computed: {
131
+ getGanged: {
132
+ get() {
133
+ if (this.ganged > 0) {
134
+ return this.ganged;
135
+ } else if (this.results.length > 0 && Array.isArray(this.results[0])) {
136
+ return this.results.length;
137
+ } else {
138
+ return 1;
139
+ }
140
+ },
141
+ set(val) {
142
+ return val;
143
+ }
144
+ },
145
+ multiples: {
146
+ get() {
147
+ if (!this.gangedNum) {
148
+ if (this.ganged && this.value.length <= this.getGanged) {
149
+ this.gangedNum = this.getGanged;
150
+ } else {
151
+ let val = this.value.length
152
+ ? this.value[this.value.length - 1]
153
+ : null;
154
+ if (
155
+ val &&
156
+ Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
157
+ val.hasSub === false
158
+ ) {
159
+ this.gangedNum = this.value.length;
160
+ } else {
161
+ this.gangedNum = this.value.length + 1;
162
+ }
163
+ }
164
+ }
165
+ let multiples = [];
166
+ if (this.multiple === undefined && this.value.length) {
167
+ multiples = this.value.map((item) => {
168
+ return Array.isArray(item);
169
+ });
170
+ } else if (Array.isArray(this.multiple) && this.multiple.length) {
171
+ if (this.multiple.length < this.gangedNum) {
172
+ for (let i = 0; i < this.gangedNum; i++) {
173
+ multiples.push(
174
+ this.multiple[i] == undefined
175
+ ? multiples[i - 1]
176
+ : this.multiple[i]
177
+ );
178
+ }
179
+ } else {
180
+ multiples = this.multiple;
181
+ }
182
+ } else {
183
+ for (let i = 0; i < this.gangedNum; i++) {
184
+ multiples.push(this.multiple);
185
+ }
186
+ }
187
+ return multiples;
188
+ },
189
+ set(val) {
190
+ return val;
191
+ }
192
+ },
193
+ results() {
194
+ if (this.integrality) {
195
+ return this.lists;
196
+ }
197
+ return this.data;
198
+ },
199
+ findCode() {
200
+ if (this.service) {
201
+ return `/${this.service}${getDictList}`;
202
+ }
203
+ return findSysCode;
204
+ }
205
+ },
206
+ watch: {
207
+ value: {
208
+ immediate: true,
209
+ deep: true,
210
+ handler(val) {
211
+ if (this.first) {
212
+ this.getValue();
213
+ if (val && (util.isObject(val) || val.length)) {
214
+ this.getChildren(this.results, this.values);
215
+ }
216
+ }
217
+ }
218
+ },
219
+ // 监听级联层数,便于动态修改级联数据
220
+ ganged: {
221
+ deep: true,
222
+ handler(val, oldVal) {
223
+ if (val !== oldVal) {
224
+ this.gangedNum = val;
225
+ // 当级联数增加时,重新执行handeChange,以便最后一层数据从倒数第二层的位置开始找
226
+ if (val > oldVal) {
227
+ let value = this.values[oldVal - 1];
228
+ this.handeChange(value, oldVal - 1);
229
+ } else {
230
+ let value = this.values[val - 1];
231
+ this.handeChange(value, val - 1);
232
+ }
233
+ }
234
+ }
235
+ }
236
+ },
237
+ beforeCreate() {
238
+ this.getData = debounce(500, () => {
239
+ this.getDatas();
240
+ });
241
+ },
242
+ created() {
243
+ this.getData();
244
+ },
245
+ mounted() {},
246
+ methods: {
247
+ getDatas() {
248
+ if (!this.integrality || !this.url) {
249
+ return false;
250
+ }
251
+ util
252
+ .ajax({
253
+ url: this.sysCode ? this.findCode : this.url,
254
+ method: this.method,
255
+ params: this.param,
256
+ data: this.param
257
+ })
258
+ .then((res) => {
259
+ this.canceled = false;
260
+ if (res.rCode === 0) {
261
+ this.lists = res.results;
262
+ this.getChildren(this.results, this.values);
263
+ if (sysCode || this.dataKey) {
264
+ this.esForm &&
265
+ this.esForm.setSysCodes(
266
+ sysCode || this.dataKey,
267
+ JSON.parse(JSON.stringify(this.lists))
268
+ );
269
+ store.set(sysCode, JSON.parse(JSON.stringify(this.lists)));
270
+ }
271
+ }
272
+ })
273
+ .catch((err) => {
274
+ if (err.message) {
275
+ if (err.message !== 'canceled') {
276
+ this.$message.error(err.message);
277
+ }
278
+ if (err.message === 'canceled' && sysCode) {
279
+ this.canceled = true;
280
+ }
281
+ }
282
+ });
283
+ },
284
+ getChildren(data, values) {
285
+ if (!this.gangedNum) {
286
+ if (
287
+ (this.ganged && this.value.length < this.getGanged) ||
288
+ Array.isArray(this.results[0])
289
+ ) {
290
+ this.gangedNum = this.getGanged;
291
+ } else {
292
+ let val = this.value.length
293
+ ? this.value[this.value.length - 1]
294
+ : null;
295
+ if (
296
+ val &&
297
+ Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
298
+ val.hasSub === false
299
+ ) {
300
+ this.gangedNum = this.value.length;
301
+ } else {
302
+ this.gangedNum = this.value.length + 1;
303
+ }
304
+ }
305
+ }
306
+ for (let i = 0; i < values.length; i++) {
307
+ if (i > 0) {
308
+ if (
309
+ (values[i] || values[i] == 0) &&
310
+ (util.isObject(values[i]) || values[i].length)
311
+ ) {
312
+ this.$set(this.disabled, i, false);
313
+ }
314
+ }
315
+ if (i < values.length - 1) {
316
+ if (
317
+ values[i] &&
318
+ Object.prototype.hasOwnProperty.call(values[i], 'multiple')
319
+ ) {
320
+ this.$set(this.multiples, i + 1, Boolean(this.values[i].multiple));
321
+ }
322
+ if (i + 1 <= values.length) {
323
+ this.$set(
324
+ this.filtrates,
325
+ i + 1,
326
+ this.multiples[i + 1]
327
+ ? Array.isArray(values[i])
328
+ ? values[i]
329
+ : [values[i]]
330
+ : values[i]
331
+ );
332
+ }
333
+
334
+ if (this.url && i + 1 <= values.length) {
335
+ let params = {};
336
+ if (this.queryKey !== undefined) {
337
+ if (typeof this.queryKey === 'string') {
338
+ if (Array.isArray(values[i])) {
339
+ params[this.queryKey] = values[i].map((item) => {
340
+ return item[this.queryKey];
341
+ });
342
+ } else {
343
+ params[this.queryKey] = values[i][this.queryKey];
344
+ }
345
+ } else {
346
+ for (let x in this.queryKey) {
347
+ if (Array.isArray(values[i])) {
348
+ params[x] = values[i].map((item) => {
349
+ return item[this.queryKey[x]];
350
+ });
351
+ } else {
352
+ params[x] = values[i][this.queryKey[x]];
353
+ }
354
+ }
355
+ }
356
+ }
357
+ this.$set(this.wheres, i + 1, params);
358
+ }
359
+ }
360
+ }
361
+ if (values.length && values.length < this.gangedNum) {
362
+ this.$set(this.disabled, values.length, false);
363
+ }
364
+ },
365
+ getValue() {
366
+ if (!this.gangedNum) {
367
+ if (
368
+ (this.ganged && this.value.length <= this.getGanged) ||
369
+ Array.isArray(this.results[0])
370
+ ) {
371
+ this.gangedNum = this.getGanged;
372
+ } else {
373
+ let val = this.value.length
374
+ ? this.value[this.value.length - 1]
375
+ : null;
376
+ if (
377
+ val &&
378
+ Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
379
+ val.hasSub === false
380
+ ) {
381
+ this.gangedNum = this.value.length;
382
+ } else {
383
+ this.gangedNum = this.value.length + 1;
384
+ }
385
+ }
386
+ }
387
+ if (
388
+ !this.ganged ||
389
+ (this.value.length < this.gangedNum - 1 && this.gangedNum > 0)
390
+ ) {
391
+ let val = this.value.length
392
+ ? JSON.parse(JSON.stringify(this.value))
393
+ : [];
394
+ let disabled = [];
395
+ for (let i = 0; i < this.gangedNum; i++) {
396
+ if (i > this.value.length - 1) {
397
+ val.push(this.multiples[i] ? [] : '');
398
+ }
399
+ disabled.push(i > this.value.length);
400
+ }
401
+ this.disabled = disabled;
402
+ this.values = val;
403
+ } else {
404
+ let disabled = [];
405
+ if (this.multiple) {
406
+ this.values = this.value.map((item, index) => {
407
+ return this.multiples[index]
408
+ ? Array.isArray(item)
409
+ ? item
410
+ : [item]
411
+ : item;
412
+ });
413
+ for (let i = 0; i < this.gangedNum; i++) {
414
+ disabled.push(
415
+ this.values[i] && this.values[i].length ? false : i > 0
416
+ );
417
+ }
418
+ } else {
419
+ for (let i = 0; i < this.gangedNum; i++) {
420
+ if (Array.isArray(this.value[i])) {
421
+ this.$set(this.multiples, i, true);
422
+ disabled.push(this.value[i].length ? false : i > 0);
423
+ } else {
424
+ this.$set(
425
+ this.multiples,
426
+ i,
427
+ util.isObject(this.value[i]) ? this.value[i].multiple : false
428
+ );
429
+ disabled.push(this.value[i] ? false : i > 0);
430
+ }
431
+ }
432
+ this.values = JSON.parse(JSON.stringify(this.value));
433
+ }
434
+ this.disabled = disabled;
435
+ }
436
+ },
437
+ handeChange(val, key) {
438
+ if (!this.gangedNum) {
439
+ if (this.ganged && this.value.length < this.getGanged) {
440
+ this.gangedNum = this.getGanged;
441
+ } else {
442
+ let val = this.value.length
443
+ ? this.value[this.value.length - 1]
444
+ : null;
445
+ if (
446
+ val &&
447
+ Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
448
+ val.hasSub === false
449
+ ) {
450
+ this.gangedNum = this.value.length;
451
+ } else {
452
+ this.gangedNum = this.value.length + 1;
453
+ }
454
+ }
455
+ }
456
+ if (key === this.gangedNum - 1 && val[this.hasSub]) {
457
+ this.gangedNum += 1;
458
+ } else if (val[this.hasSub] === false) {
459
+ this.gangedNum = key + 1;
460
+ }
461
+ this.first = false;
462
+ this.parentData = null;
463
+ if (this.url && key + 1 < this.gangedNum) {
464
+ this.parentData = val;
465
+ let params = {};
466
+ if (this.queryKey !== undefined) {
467
+ if (typeof this.queryKey === 'string') {
468
+ params[this.queryKey] = Array.isArray(val)
469
+ ? val.map((item) => {
470
+ return item[this.queryKey];
471
+ })
472
+ : val[this.queryKey];
473
+ } else {
474
+ for (let i in this.queryKey) {
475
+ params[i] = Array.isArray(val)
476
+ ? val.map((item) => {
477
+ return item[this.queryKey[i]];
478
+ })
479
+ : val[this.queryKey[i]];
480
+ }
481
+ }
482
+ } else {
483
+ params.id = Array.isArray(val)
484
+ ? val.map((item) => {
485
+ return item[this.valueKey];
486
+ })
487
+ : val[this.valueKey];
488
+ }
489
+ this.$set(this.wheres, key + 1, params);
490
+ }
491
+ this.$set(this.values, key, val);
492
+ if (key + 1 < this.gangedNum) {
493
+ }
494
+ for (let i = key + 1; i < this.gangedNum; i++) {
495
+ if (this.multiples[i - 1]) {
496
+ let newVal = [];
497
+ this.values[i - 1].forEach((element) => {
498
+ this.values[i].forEach((itemVal) => {
499
+ if (element[this.valueKey] === itemVal[this.filtrateKey]) {
500
+ newVal.push(itemVal);
501
+ }
502
+ });
503
+ });
504
+ this.$set(this.values, i, newVal);
505
+ }
506
+ if (
507
+ this.values[i - 1] &&
508
+ (util.isObject(this.values[i - 1]) || this.values[i - 1].length)
509
+ ) {
510
+ this.$set(this.disabled, i, false);
511
+ } else {
512
+ this.$set(this.disabled, i, true);
513
+ }
514
+ this.$set(this.filtrates, i, this.values[i - 1]);
515
+ if (!this.multiple) {
516
+ if (
517
+ util.isObject(val) &&
518
+ Object.prototype.hasOwnProperty.call(val, 'multiple')
519
+ ) {
520
+ this.$set(this.multiples, i, Boolean(val.multiple));
521
+ }
522
+ }
523
+ if (!this.multiples[i - 1] || val.length == 0) {
524
+ this.$set(this.values, i, this.multiples[i] ? [] : '');
525
+ }
526
+ }
527
+ if (key + 1 === this.gangedNum) {
528
+ this.$emit('input', this.values);
529
+ }
530
+ this.$emit('change', { value: val, index: key, data: this.values });
531
+ },
532
+ getLabel(res, index) {
533
+ let results = this.results;
534
+ if (Array.isArray(this.results[0])) {
535
+ results = this.results[index];
536
+ }
537
+ for (let i = 0; i < results.length; i++) {
538
+ let item = results[i];
539
+ if (item[this.valueKey] == res) {
540
+ return item;
541
+ }
542
+ if (
543
+ Object.prototype.hasOwnProperty.call(item, 'children') &&
544
+ item.children &&
545
+ item.children.length
546
+ ) {
547
+ return this.getLabel(item.children, res);
548
+ }
549
+ }
550
+ }
551
+ },
552
+ render(h) {
553
+ if (!this.hide) {
554
+ if (this.readonly) {
555
+ let value = [];
556
+ if (this.value) {
557
+ if (this.group) {
558
+ let path = {};
559
+ let values = [];
560
+ this.value.forEach((item, index) => {
561
+ if (Array.isArray(item)) {
562
+ item.forEach((ele) => {
563
+ let obj = ele;
564
+ if (!ele[this.filtrateKey]) {
565
+ obj = this.getLabel(ele[this.valueKey] || ele, index);
566
+ }
567
+ if (path[obj[this.filtrateKey]]) {
568
+ path[obj[this.valueKey]] =
569
+ path[obj[this.filtrateKey]] +
570
+ this.separator +
571
+ (obj[this.labelKey] || obj.label);
572
+ values.push(path[obj[this.valueKey]]);
573
+ } else {
574
+ path[obj[this.valueKey]] = obj[this.labelKey] || obj.label;
575
+ }
576
+ });
577
+ } else {
578
+ let obj = item;
579
+ if (!item[this.filtrateKey]) {
580
+ obj = this.getLabel(item[this.valueKey] || item, index);
581
+ }
582
+ if (path[obj[this.filtrateKey]]) {
583
+ path[obj[this.valueKey]] =
584
+ path[obj[this.filtrateKey]] +
585
+ this.separator +
586
+ (obj[this.labelKey] || obj.label);
587
+ values.push(path[obj[this.valueKey]]);
588
+ } else {
589
+ path[obj[this.valueKey]] = obj[this.labelKey] || obj.label;
590
+ }
591
+ }
592
+ });
593
+ values.forEach((item, index) => {
594
+ let flag = true;
595
+ for (let i = index + 1; i < values.length; i++) {
596
+ if (values[i].indexOf(item) > -1) {
597
+ flag = false;
598
+ break;
599
+ }
600
+ }
601
+ if (flag) {
602
+ value.push(item);
603
+ }
604
+ });
605
+ } else {
606
+ value = [
607
+ this.value
608
+ .map((item, indexs) => {
609
+ if (Array.isArray(item)) {
610
+ return item
611
+ .map((ele, index) => {
612
+ return util.isObject(ele)
613
+ ? ele[this.labelKey] ||
614
+ ele.label ||
615
+ this.getLabel(
616
+ ele[this.valueKey] || ele.label,
617
+ index
618
+ )
619
+ : this.getLabel(ele, index) || ele;
620
+ })
621
+ .join(this.symbol);
622
+ }
623
+ return util.isObject(item)
624
+ ? item[this.labelKey] ||
625
+ item.label ||
626
+ this.getLabel(item[this.valueKey] || item.label, indexs)
627
+ : this.getLabel(item, indexs) || item;
628
+ })
629
+ .join(this.separator)
630
+ ];
631
+ }
632
+ }
633
+ return h('es-select', {
634
+ attrs: {
635
+ ...this.$attrs,
636
+ separator: this.separator,
637
+ readonly: true,
638
+ multiple: value.length > 1,
639
+ value: value
640
+ }
641
+ });
642
+ }
643
+ if (!this.gangedNum) {
644
+ if (this.ganged && this.value.length < this.getGanged) {
645
+ this.gangedNum = this.getGanged;
646
+ } else {
647
+ let val = this.value.length
648
+ ? this.value[this.value.length - 1]
649
+ : null;
650
+ if (
651
+ val &&
652
+ Object.prototype.hasOwnProperty.call(val, 'hasSub') &&
653
+ val.hasSub === false
654
+ ) {
655
+ this.gangedNum = this.value.length;
656
+ } else {
657
+ this.gangedNum = this.value.length + 1;
658
+ }
659
+ }
660
+ }
661
+ let doms = [];
662
+ for (let i = 0; i < this.gangedNum; i++) {
663
+ doms.push(
664
+ h('es-select', {
665
+ attrs: {
666
+ ...this.$attrs,
667
+ data: this.results[i]
668
+ ? Array.isArray(this.results[0])
669
+ ? this.results[i]
670
+ : this.results
671
+ : [],
672
+ sysCode: this.integrality ? undefined : this.sysCode,
673
+ url: this.integrality ? undefined : this.url,
674
+ wait: this.ganged ? i <= this.value.length : true,
675
+ param: Array.isArray(this.param)
676
+ ? { ...this.param[i], ...this.wheres[i] }
677
+ : { ...this.param, ...this.wheres[i] },
678
+ disabled: this.disabled[i],
679
+ multiple: this.multiples[i],
680
+ height: this.height,
681
+ value: this.values[i],
682
+ valueType: this.valueType,
683
+ valueKey: this.valueKey,
684
+ labelKey: this.labelKey,
685
+ filtrateKey: this.filtrateKey,
686
+ filtrate: this.url
687
+ ? this.integrality
688
+ ? this.filtrates[i]
689
+ : undefined
690
+ : this.filtrates[i],
691
+ placeholder: this.placeholder,
692
+ parseData: this.parseData,
693
+ defaultValue: i === 0 ? this.defaultValue : false
694
+ },
695
+ on: {
696
+ change: (val) => {
697
+ this.handeChange(val, i);
698
+ },
699
+ resetInputHeight: (val) => {
700
+ this.height = val;
701
+ }
702
+ }
703
+ })
704
+ );
705
+ }
706
+ return h(
707
+ 'div',
708
+ {
709
+ class: 'es-select-ganged',
710
+ directives: [
711
+ {
712
+ name: 'show',
713
+ value: this.display
714
+ }
715
+ ]
716
+ },
717
+ doms
718
+ );
719
+ } else {
720
+ return '';
721
+ }
722
+ }
723
+ };
724
+ </script>