eoss-ui 0.7.25 → 0.7.26

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 (253) hide show
  1. package/lib/calogin.js +233 -233
  2. package/lib/eoss-ui.common.js +968 -1010
  3. package/lib/flow-list.js +106 -88
  4. package/lib/flow.js +456 -524
  5. package/lib/index.js +1 -1
  6. package/lib/main.js +146 -141
  7. package/lib/menu.js +6 -3
  8. package/lib/qr-code.js +13 -13
  9. package/lib/theme-chalk/flow.css +1 -1
  10. package/lib/theme-chalk/index.css +1 -1
  11. package/lib/theme-chalk/main.css +1 -1
  12. package/lib/theme-chalk/menu.css +1 -1
  13. package/lib/theme-chalk/simplicity.css +1 -1
  14. package/package.json +160 -160
  15. package/packages/button/index.js +5 -5
  16. package/packages/button/src/main.vue +418 -418
  17. package/packages/button-group/index.js +5 -5
  18. package/packages/button-group/src/main.vue +346 -346
  19. package/packages/calendar/index.js +5 -5
  20. package/packages/calogin/index.js +5 -5
  21. package/packages/calogin/src/main.vue +412 -412
  22. package/packages/calogin/src/plugin.js +915 -915
  23. package/packages/card/index.js +5 -5
  24. package/packages/card/src/main.vue +156 -156
  25. package/packages/cascader/index.js +5 -5
  26. package/packages/cascader/src/main.vue +168 -168
  27. package/packages/checkbox-group/index.js +5 -5
  28. package/packages/checkbox-group/src/main.vue +333 -333
  29. package/packages/clients/index.js +5 -5
  30. package/packages/clients/src/main.vue +151 -151
  31. package/packages/data-table/index.js +5 -5
  32. package/packages/data-table/src/children.vue +39 -39
  33. package/packages/data-table/src/column.vue +988 -988
  34. package/packages/data-table/src/main.vue +1831 -1831
  35. package/packages/data-table/src/sizer.vue +195 -195
  36. package/packages/data-table-form/index.js +5 -5
  37. package/packages/data-table-form/src/checkbox.vue +101 -101
  38. package/packages/data-table-form/src/colgroup.vue +17 -17
  39. package/packages/data-table-form/src/main.vue +181 -181
  40. package/packages/data-table-form/src/radio.vue +65 -65
  41. package/packages/data-table-form/src/table.vue +233 -233
  42. package/packages/data-table-form/src/tbody.vue +336 -336
  43. package/packages/data-table-form/src/thead.vue +68 -68
  44. package/packages/date-picker/index.js +5 -5
  45. package/packages/date-picker/src/main.vue +236 -236
  46. package/packages/dialog/index.js +5 -5
  47. package/packages/enable-drag/index.js +5 -5
  48. package/packages/enterprise/index.js +5 -5
  49. package/packages/enterprise/src/main.vue +66 -66
  50. package/packages/error-page/index.js +5 -5
  51. package/packages/error-page/src/main.vue +44 -44
  52. package/packages/flow/index.js +5 -5
  53. package/packages/flow/src/component/Circulate.vue +413 -413
  54. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  55. package/packages/flow/src/component/CustomPreset.vue +322 -322
  56. package/packages/flow/src/component/FileList.vue +97 -97
  57. package/packages/flow/src/component/FreeCirculation.vue +240 -240
  58. package/packages/flow/src/component/Preset.vue +255 -255
  59. package/packages/flow/src/component/SendMsg.vue +242 -242
  60. package/packages/flow/src/component/TimeLimit.vue +190 -190
  61. package/packages/flow/src/component/taskUnionExamine.vue +755 -738
  62. package/packages/flow/src/form.vue +121 -121
  63. package/packages/flow/src/freeStartFlow.vue +2847 -2847
  64. package/packages/flow/src/main.vue +3854 -3843
  65. package/packages/flow/src/processForm.vue +1363 -1370
  66. package/packages/flow/src/processReject.vue +308 -308
  67. package/packages/flow/src/reset.vue +941 -941
  68. package/packages/flow/src/startTaskRead.vue +691 -691
  69. package/packages/flow/src/supervise.vue +159 -159
  70. package/packages/flow/src/table.vue +58 -58
  71. package/packages/flow-group/index.js +5 -5
  72. package/packages/flow-group/src/main.vue +717 -717
  73. package/packages/flow-list/index.js +5 -5
  74. package/packages/flow-list/src/main.vue +1787 -1770
  75. package/packages/form/index.js +5 -5
  76. package/packages/form/src/main.vue +3901 -3901
  77. package/packages/form/src/table.vue +1512 -1512
  78. package/packages/handle-user/index.js +5 -5
  79. package/packages/handle-user/src/main.vue +137 -137
  80. package/packages/handler/index.js +5 -5
  81. package/packages/handler/src/main.vue +496 -496
  82. package/packages/icon/index.js +5 -5
  83. package/packages/icon/src/main.vue +104 -104
  84. package/packages/icons/index.js +5 -5
  85. package/packages/icons/src/main.vue +81 -81
  86. package/packages/input/index.js +5 -5
  87. package/packages/input/src/main.vue +356 -356
  88. package/packages/input-number/index.js +5 -5
  89. package/packages/input-number/src/main.vue +106 -106
  90. package/packages/label/index.js +5 -5
  91. package/packages/label/src/main.vue +457 -457
  92. package/packages/layout/index.js +5 -5
  93. package/packages/layout/src/item.vue +152 -152
  94. package/packages/layout/src/main.vue +31 -31
  95. package/packages/login/index.js +5 -5
  96. package/packages/login/src/main.vue +2020 -2020
  97. package/packages/login/src/resetPassword.vue +557 -557
  98. package/packages/main/index.js +5 -5
  99. package/packages/main/src/default/message.vue +249 -249
  100. package/packages/main/src/default/notice.vue +157 -157
  101. package/packages/main/src/default/userinfo.vue +502 -502
  102. package/packages/main/src/public/online.vue +89 -89
  103. package/packages/main/src/public/search.vue +464 -464
  104. package/packages/main/src/public/settings.vue +221 -221
  105. package/packages/main/src/simplicity/apps.vue +388 -388
  106. package/packages/main/src/simplicity/avatar.vue +82 -82
  107. package/packages/main/src/simplicity/handler.vue +263 -263
  108. package/packages/main/src/simplicity/index.vue +2135 -2130
  109. package/packages/main/src/simplicity/lists.vue +84 -84
  110. package/packages/main/src/simplicity/menu-list.vue +135 -135
  111. package/packages/main/src/simplicity/message.vue +259 -259
  112. package/packages/main/src/simplicity/notice.vue +190 -190
  113. package/packages/main/src/simplicity/router-page.vue +45 -45
  114. package/packages/main/src/simplicity/sub-menu.vue +264 -264
  115. package/packages/main/src/simplicity/user.vue +259 -259
  116. package/packages/main/src/simplicity/userinfo.vue +398 -398
  117. package/packages/menu/index.js +5 -5
  118. package/packages/menu/src/main.vue +596 -584
  119. package/packages/nav/index.js +5 -5
  120. package/packages/nav/src/main.vue +351 -351
  121. package/packages/notify/index.js +5 -5
  122. package/packages/notify/src/main.vue +538 -538
  123. package/packages/page/index.js +5 -5
  124. package/packages/page/src/main.vue +167 -167
  125. package/packages/pagination/index.js +5 -5
  126. package/packages/pagination/src/main.vue +96 -96
  127. package/packages/player/index.js +5 -5
  128. package/packages/player/src/main.vue +194 -194
  129. package/packages/qr-code/index.js +5 -5
  130. package/packages/qr-code/src/main.vue +170 -170
  131. package/packages/radio-group/index.js +6 -6
  132. package/packages/radio-group/src/main.vue +319 -319
  133. package/packages/retrial-auth/index.js +5 -5
  134. package/packages/retrial-auth/src/main.vue +280 -280
  135. package/packages/select/index.js +5 -5
  136. package/packages/select/src/main.vue +782 -782
  137. package/packages/select-ganged/index.js +5 -5
  138. package/packages/select-ganged/src/main.vue +724 -724
  139. package/packages/selector/index.js +5 -5
  140. package/packages/selector/src/main.vue +761 -761
  141. package/packages/selector-panel/index.js +5 -5
  142. package/packages/selector-panel/src/main.vue +1027 -1027
  143. package/packages/selector-panel/src/selection.vue +170 -170
  144. package/packages/selector-panel/src/tree.vue +129 -129
  145. package/packages/sizer/index.js +5 -5
  146. package/packages/sizer/src/main.vue +254 -254
  147. package/packages/steps/index.js +5 -5
  148. package/packages/steps/src/main.vue +181 -181
  149. package/packages/switch/index.js +5 -5
  150. package/packages/switch/src/main.vue +170 -170
  151. package/packages/table-form/index.js +5 -5
  152. package/packages/tabs/index.js +5 -5
  153. package/packages/tabs/src/main.vue +788 -788
  154. package/packages/tabs-panel/index.js +5 -5
  155. package/packages/tabs-panel/src/main.vue +29 -29
  156. package/packages/theme-chalk/lib/flow.css +1 -1
  157. package/packages/theme-chalk/lib/index.css +1 -1
  158. package/packages/theme-chalk/lib/main.css +1 -1
  159. package/packages/theme-chalk/lib/menu.css +1 -1
  160. package/packages/theme-chalk/lib/simplicity.css +1 -1
  161. package/packages/theme-chalk/src/base.scss +261 -261
  162. package/packages/theme-chalk/src/button-group.scss +176 -176
  163. package/packages/theme-chalk/src/button.scss +24 -24
  164. package/packages/theme-chalk/src/calendar.scss +113 -113
  165. package/packages/theme-chalk/src/card.scss +99 -99
  166. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  167. package/packages/theme-chalk/src/clients.scss +87 -87
  168. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  169. package/packages/theme-chalk/src/data-table.scss +293 -293
  170. package/packages/theme-chalk/src/date-picker.scss +7 -7
  171. package/packages/theme-chalk/src/dialog.scss +77 -77
  172. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  173. package/packages/theme-chalk/src/enterprise.scss +5 -5
  174. package/packages/theme-chalk/src/error-page.scss +18 -18
  175. package/packages/theme-chalk/src/flow-group.scss +110 -110
  176. package/packages/theme-chalk/src/flow-list.scss +39 -39
  177. package/packages/theme-chalk/src/flow.scss +351 -351
  178. package/packages/theme-chalk/src/form.scss +501 -501
  179. package/packages/theme-chalk/src/handle-user.scss +40 -40
  180. package/packages/theme-chalk/src/handler.scss +148 -148
  181. package/packages/theme-chalk/src/icon.scss +1817 -1817
  182. package/packages/theme-chalk/src/icons.scss +99 -99
  183. package/packages/theme-chalk/src/input.scss +9 -9
  184. package/packages/theme-chalk/src/label.scss +24 -24
  185. package/packages/theme-chalk/src/layout.scss +46 -46
  186. package/packages/theme-chalk/src/login.scss +987 -987
  187. package/packages/theme-chalk/src/main.scss +663 -663
  188. package/packages/theme-chalk/src/menu.scss +224 -222
  189. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  190. package/packages/theme-chalk/src/nav.scss +111 -111
  191. package/packages/theme-chalk/src/page.scss +3 -3
  192. package/packages/theme-chalk/src/pagination.scss +29 -29
  193. package/packages/theme-chalk/src/player.scss +9 -9
  194. package/packages/theme-chalk/src/qr-code.scss +17 -17
  195. package/packages/theme-chalk/src/radio-group.scss +9 -9
  196. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  197. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  198. package/packages/theme-chalk/src/select.scss +8 -8
  199. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  200. package/packages/theme-chalk/src/selector.scss +92 -92
  201. package/packages/theme-chalk/src/simplicity.scss +1370 -1366
  202. package/packages/theme-chalk/src/sizer.scss +36 -36
  203. package/packages/theme-chalk/src/steps.scss +88 -88
  204. package/packages/theme-chalk/src/switch.scss +3 -3
  205. package/packages/theme-chalk/src/table-form.scss +1 -1
  206. package/packages/theme-chalk/src/tabs.scss +87 -87
  207. package/packages/theme-chalk/src/tips.scss +7 -7
  208. package/packages/theme-chalk/src/toolbar.scss +179 -179
  209. package/packages/theme-chalk/src/tree-group.scss +72 -72
  210. package/packages/theme-chalk/src/tree.scss +165 -165
  211. package/packages/theme-chalk/src/upload.scss +172 -172
  212. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  213. package/packages/tips/index.js +5 -5
  214. package/packages/tips/src/main.vue +141 -141
  215. package/packages/toolbar/index.js +5 -5
  216. package/packages/toolbar/src/main.vue +430 -430
  217. package/packages/tree/index.js +5 -5
  218. package/packages/tree-group/index.js +5 -5
  219. package/packages/upload/index.js +5 -5
  220. package/packages/upload/src/main.vue +1343 -1343
  221. package/packages/upload/src/picture.js +15 -15
  222. package/packages/wujie/index.js +5 -5
  223. package/packages/wujie/src/main.vue +145 -145
  224. package/packages/wxlogin/index.js +5 -5
  225. package/packages/wxlogin/src/main.vue +128 -128
  226. package/src/config/api.js +315 -315
  227. package/src/config/image.js +2 -2
  228. package/src/index.js +163 -163
  229. package/src/utils/bus.js +3 -3
  230. package/src/utils/date-util.js +312 -312
  231. package/src/utils/http.js +50 -50
  232. package/src/utils/rules.js +18 -18
  233. package/src/utils/store.js +21 -21
  234. package/src/utils/webSocket.js +107 -107
  235. package/packages/.DS_Store +0 -0
  236. package/packages/calogin/.DS_Store +0 -0
  237. package/packages/date-picker/.DS_Store +0 -0
  238. package/packages/date-picker/src/.DS_Store +0 -0
  239. package/packages/flow/.DS_Store +0 -0
  240. package/packages/flow/src/.DS_Store +0 -0
  241. package/packages/flow-list/.DS_Store +0 -0
  242. package/packages/form/.DS_Store +0 -0
  243. package/packages/login/.DS_Store +0 -0
  244. package/packages/main/.DS_Store +0 -0
  245. package/packages/main/src/.DS_Store +0 -0
  246. package/packages/menu/.DS_Store +0 -0
  247. package/packages/select/.DS_Store +0 -0
  248. package/packages/selector/.DS_Store +0 -0
  249. package/packages/selector-panel/.DS_Store +0 -0
  250. package/packages/theme-chalk/src/.DS_Store +0 -0
  251. package/packages/upload/.DS_Store +0 -0
  252. package/src/.DS_Store +0 -0
  253. package/src/utils/.DS_Store +0 -0
@@ -1,988 +1,988 @@
1
- <template>
2
- <el-table-column v-bind="config" :key="field">
3
- <slot> </slot>
4
- <template slot-scope="scope">
5
- <template v-if="isForm && !isReadOnly(scope)">
6
- <el-form-item
7
- v-if="!(type === 'handle' && !scope.row.hideHandle)"
8
- :name="name"
9
- :prop="field || prop"
10
- :rules="isNotRule(scope) ? [] : rules"
11
- :index="scope.$index"
12
- >
13
- <component
14
- v-if="getType(scope.row.formConfigs, 'component')"
15
- :is="tag"
16
- v-bind="getOptions(scope.row.formConfigs)"
17
- v-model="scope.row[field || prop]"
18
- :data="getData(scope.row.formOptions)"
19
- @blur="
20
- (event) => {
21
- handleBlur({
22
- item: config,
23
- event: event,
24
- data: scope.row,
25
- scope: scope
26
- });
27
- }
28
- "
29
- @focus="
30
- (event) => {
31
- handleFocus({
32
- item: config,
33
- event: event,
34
- data: scope.row,
35
- scope: scope
36
- });
37
- }
38
- "
39
- @change="
40
- (value) => {
41
- handleChange({
42
- item: config,
43
- name: field || prop,
44
- value: value,
45
- data: scope.row,
46
- scope: scope
47
- });
48
- }
49
- "
50
- ></component>
51
- <es-select
52
- v-else-if="getType(scope.row.formConfigs, 'select')"
53
- v-bind="getOptions(scope.row.formConfigs)"
54
- v-model="scope.row[field || prop]"
55
- :data="getData(scope.row.formOptions)"
56
- @blur="
57
- (event) => {
58
- handleBlur({
59
- item: config,
60
- event: event,
61
- data: scope.row,
62
- scope: scope
63
- });
64
- }
65
- "
66
- @focus="
67
- (event) => {
68
- handleFocus({
69
- item: config,
70
- event: event,
71
- data: scope.row,
72
- scope: scope
73
- });
74
- }
75
- "
76
- @change="
77
- (value) => {
78
- handleChange({
79
- item: config,
80
- name: field || prop,
81
- value: value,
82
- data: scope.row,
83
- scope: scope
84
- });
85
- }
86
- "
87
- >
88
- </es-select>
89
- <es-cascader
90
- v-else-if="getType(scope.row.formConfigs, 'cascader')"
91
- v-bind="getOptions(scope.row.formConfigs)"
92
- v-model="scope.row[field || prop]"
93
- :data="getData(scope.row.formOptions)"
94
- @blur="
95
- (event) => {
96
- handleBlur({
97
- item: config,
98
- event: event,
99
- data: scope.row,
100
- scope: scope
101
- });
102
- }
103
- "
104
- @focus="
105
- (event) => {
106
- handleFocus({
107
- item: config,
108
- event: event,
109
- data: scope.row,
110
- scope: scope
111
- });
112
- }
113
- "
114
- @change="
115
- (value) => {
116
- handleChange({
117
- item: config,
118
- name: field || prop,
119
- value: value,
120
- data: scope.row,
121
- scope: scope
122
- });
123
- }
124
- "
125
- >
126
- </es-cascader>
127
- <es-select-ganged
128
- v-else-if="getType(scope.row.formConfigs, 'ganged')"
129
- v-bind="getOptions(scope.row.formConfigs)"
130
- v-model="scope.row[field || prop]"
131
- :data="init(getData(scope.row.formOptions), config)"
132
- @change="
133
- (value) => {
134
- handleChange({
135
- name: field || prop,
136
- value: value,
137
- data: scope.row,
138
- item: item
139
- });
140
- }
141
- "
142
- >
143
- </es-select-ganged>
144
- <es-radio-group
145
- v-else-if="getType(scope.row.formConfigs, 'radio')"
146
- v-bind="getOptions(scope.row.formConfigs)"
147
- v-model="scope.row[field || prop]"
148
- :data="getData(scope.row.formOptions)"
149
- @change="
150
- (value) => {
151
- handleChange({
152
- item: config,
153
- name: field || prop,
154
- value: value,
155
- data: scope.row
156
- });
157
- }
158
- "
159
- >
160
- </es-radio-group>
161
- <es-checkbox-group
162
- v-else-if="getType(scope.row.formConfigs, 'checkbox')"
163
- v-bind="getOptions(scope.row.formConfigs)"
164
- v-model="scope.row[field || prop]"
165
- :data="getData(scope.row.formOptions)"
166
- @change="
167
- (value) => {
168
- handleChange({
169
- item: config,
170
- name: field || prop,
171
- value: value,
172
- data: scope.row
173
- });
174
- }
175
- "
176
- >
177
- </es-checkbox-group>
178
- <es-switch
179
- v-else-if="getType(scope.row.formConfigs, 'switch')"
180
- v-bind="getOptions(scope.row.formConfigs)"
181
- v-model="scope.row[field || prop]"
182
- :data="getData(scope.row.formOptions)"
183
- @change="
184
- (value) => {
185
- handleChange({
186
- item: config,
187
- name: field || prop,
188
- value: value,
189
- data: scope.row
190
- });
191
- }
192
- "
193
- >
194
- </es-switch>
195
- <es-date-picker
196
- v-else-if="
197
- config.date ||
198
- getType(scope.row.formConfigs, [
199
- 'date',
200
- 'year',
201
- 'month',
202
- 'date',
203
- 'dates',
204
- 'week',
205
- 'datetime',
206
- 'datetimerange',
207
- 'daterange',
208
- 'monthrange',
209
- 'quarter',
210
- 'halfyear'
211
- ])
212
- "
213
- v-bind="getOptions(scope.row.formConfigs)"
214
- v-model="scope.row[field || prop]"
215
- :type="type"
216
- @blur="
217
- (event) => {
218
- handleBlur({
219
- item: config,
220
- event: event,
221
- data: scope.row,
222
- scope: scope
223
- });
224
- }
225
- "
226
- @focus="
227
- (event) => {
228
- handleFocus({
229
- item: config,
230
- event: event,
231
- data: scope.row,
232
- scope: scope
233
- });
234
- }
235
- "
236
- @change="
237
- (value) => {
238
- handleChange({
239
- item: config,
240
- name: field || prop,
241
- value: value,
242
- data: scope.row,
243
- scope: scope
244
- });
245
- }
246
- "
247
- >
248
- </es-date-picker>
249
- <es-input-number
250
- v-else-if="getType(scope.row.formConfigs, 'number')"
251
- v-bind="getOptions(scope.row.formConfigs)"
252
- v-model="scope.row[field || prop]"
253
- @blur="
254
- (event) => {
255
- handleBlur({
256
- item: config,
257
- event: event,
258
- data: scope.row,
259
- scope: scope
260
- });
261
- }
262
- "
263
- @focus="
264
- (event) => {
265
- handleFocus({
266
- item: config,
267
- event: event,
268
- data: scope.row,
269
- scope: scope
270
- });
271
- }
272
- "
273
- @change="
274
- (value) => {
275
- handleChange({
276
- item: config,
277
- name: field || prop,
278
- value: value,
279
- data: scope.row,
280
- scope: scope
281
- });
282
- }
283
- "
284
- >
285
- </es-input-number>
286
- <es-selector
287
- v-else-if="getType(scope.row.formConfigs, 'selector')"
288
- v-bind="getOptions(scope.row.formConfigs)"
289
- v-model="scope.row[field || prop]"
290
- v-on="
291
- exclAttribute({
292
- data: events,
293
- attrs: 'change'
294
- })
295
- "
296
- @change="
297
- (value) => {
298
- handleChange({
299
- item: config,
300
- name: field || prop,
301
- value: value,
302
- data: scope.row
303
- });
304
- }
305
- "
306
- >
307
- </es-selector>
308
- <template
309
- v-else-if="
310
- getType(scope.row.formConfigs, ['text', 'input', 'textarea'])
311
- "
312
- >
313
- <template v-if="config.lazy">
314
- <input
315
- v-if="getType(scope.row.formConfigs, ['text', 'input'])"
316
- class="el-input__inner"
317
- v-bind="getOptions(scope.row.formConfigs)"
318
- v-model.lazy="scope.row[field]"
319
- @blur="
320
- (event) => {
321
- handleBlur({
322
- item: config,
323
- event: event,
324
- data: scope.row,
325
- scope: scope
326
- });
327
- }
328
- "
329
- @focus="
330
- (event) => {
331
- handleFocus({
332
- item: config,
333
- event: event,
334
- data: scope.row,
335
- scope: scope
336
- });
337
- }
338
- "
339
- @change="
340
- (value) => {
341
- handleChange({
342
- item: config,
343
- name: field || prop,
344
- value: value,
345
- data: scope.row,
346
- scope: scope
347
- });
348
- }
349
- "
350
- />
351
- <textarea
352
- v-else
353
- class="el-textarea__inner"
354
- v-bind="getOptions(scope.row.formConfigs)"
355
- v-model.lazy="scope.row[field]"
356
- @blur="
357
- (event) => {
358
- handleBlur({
359
- item: config,
360
- event: event,
361
- data: scope.row,
362
- scope: scope
363
- });
364
- }
365
- "
366
- @focus="
367
- (event) => {
368
- handleFocus({
369
- item: config,
370
- event: event,
371
- data: scope.row,
372
- scope: scope
373
- });
374
- }
375
- "
376
- @change="
377
- (value) => {
378
- handleChange({
379
- item: config,
380
- name: field || prop,
381
- value: value,
382
- data: scope.row,
383
- scope: scope
384
- });
385
- }
386
- "
387
- ></textarea>
388
- </template>
389
- <es-input
390
- v-else
391
- v-bind="getOptions(scope.row.formConfigs)"
392
- :type="type"
393
- :scope="scope"
394
- v-model="scope.row[field || prop]"
395
- @blur="
396
- (event) => {
397
- handleBlur({
398
- item: config,
399
- event: event,
400
- data: scope.row,
401
- scope: scope
402
- });
403
- }
404
- "
405
- @focus="
406
- (event) => {
407
- handleFocus({
408
- item: config,
409
- event: event,
410
- data: scope.row,
411
- scope: scope
412
- });
413
- }
414
- "
415
- @change="
416
- (value) => {
417
- handleChange({
418
- item: config,
419
- name: field || prop,
420
- value: value,
421
- data: scope.row,
422
- scope: scope
423
- });
424
- }
425
- "
426
- >
427
- </es-input>
428
- </template>
429
- </el-form-item>
430
- </template>
431
- <expand-dom
432
- v-else-if="render"
433
- :column="config"
434
- :row="scope.row"
435
- :render="render"
436
- :index="indexs"
437
- :options="optionDatas"
438
- >
439
- </expand-dom>
440
- <template v-else-if="dateFormat">
441
- {{ formatDate(scope.row[field || prop], dateFormat) }}
442
- </template>
443
- <span
444
- v-else-if="type === 'textarea'"
445
- v-html="format(scope.row, true)"
446
- :style="styles ? styles[scope.row[prop]] : {}"
447
- ></span>
448
- <span v-else :style="styles ? styles[scope.row[prop]] : {}" v-html="format(scope.row)"></span>
449
- <!-- {{ format(scope.row) }} -->
450
- <es-button-group
451
- v-if="type === 'handle' && !scope.row.hideHandle"
452
- v-bind="
453
- exclAttribute({
454
- data: config,
455
- attrs: ['contents', 'events', 'type', 'width', 'template', 'title']
456
- })
457
- "
458
- stop
459
- :mode="mode"
460
- :contents="contents || events"
461
- :data="scope"
462
- @handleClick="handleClick"
463
- v-model="btnWidth"
464
- ></es-button-group>
465
- </template>
466
- </el-table-column>
467
- </template>
468
-
469
- <script type="text/babel">
470
- import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
471
- import util from 'eoss-ui/src/utils/util';
472
- export default {
473
- name: 'Column',
474
- components: {
475
- expandDom: {
476
- functional: true,
477
- props: {
478
- row: Object,
479
- render: [Function, String],
480
- index: Number,
481
- column: {
482
- type: Object,
483
- default: null
484
- },
485
- options: Object
486
- },
487
- render: (h, ctx) => {
488
- const params = {
489
- row: ctx.props.row,
490
- index: ctx.props.index
491
- };
492
- if (ctx.props.column) {
493
- params.column = ctx.props.column;
494
- }
495
- if (typeof ctx.props.render == 'string') {
496
- try {
497
- return util.toFunction(ctx.props.render)(
498
- h,
499
- params,
500
- ctx.props.options
501
- );
502
- } catch (error) {
503
- throw error;
504
- }
505
- }
506
- return ctx.props.render(h, params, ctx.props.options);
507
- }
508
- }
509
- },
510
- inject: {
511
- elForm: {
512
- default: ''
513
- },
514
- tableReload: {
515
- default: ''
516
- },
517
- table: {
518
- default: ''
519
- }
520
- },
521
- props: {
522
- tag: String,
523
- mode: String,
524
- service: String,
525
- form: Boolean,
526
- readonly: Boolean,
527
- name: String,
528
- filterIcon: [Boolean, String],
529
- title: String,
530
- label: String,
531
- labelKey: String,
532
- valueKey: String,
533
- field: String,
534
- prop: String,
535
- sortable: [Boolean, String],
536
- sort: [Boolean, String],
537
- className: String,
538
- labelClassName: String,
539
- type: String,
540
- required: Boolean,
541
- width: [Number, String],
542
- minWidth: [Number, String],
543
- hide: Boolean,
544
- showOverflowTooltip: [Boolean, Number],
545
- render: [Function, String],
546
- contents: Array,
547
- events: [Array, Object],
548
- dateFormat: String,
549
- dateValue: {
550
- type: String,
551
- default: ''
552
- },
553
- styles: [Array, Object],
554
- sysCode: String,
555
- valueToString: Boolean,
556
- symbol: String,
557
- rules: [Array, Object],
558
- method: String,
559
- indexs: {
560
- type: Number,
561
- default: null
562
- },
563
- data: [Object, Array],
564
- optionData: {
565
- type: Object,
566
- default() {
567
- return {};
568
- }
569
- }
570
- },
571
- watch: {
572
- optionData: {
573
- deep: true,
574
- handler(val) {
575
- this.optionDatas = val;
576
- }
577
- },
578
- width: {
579
- immediate: true,
580
- handler(val) {
581
- if (val) {
582
- this.btnWidth = parseInt(val, 10) + 'px';
583
- }
584
- }
585
- }
586
- },
587
- computed: {
588
- config() {
589
- let config = {
590
- label: this.label || this.title,
591
- width: this.btnWidth || this.width
592
- };
593
- if (this.type === 'expand') {
594
- config = { type: this.type, ...config, ...this.$attrs };
595
- return config;
596
- }
597
- let required = this.required;
598
- if (this.rules && !required) {
599
- if (Array.isArray(this.rules)) {
600
- this.rules.map((item) => {
601
- if (item.required) {
602
- required = item.required;
603
- }
604
- });
605
- } else if (this.rules.required) {
606
- required = this.rules.required;
607
- }
608
- }
609
- if (this.type === 'handle') {
610
- config.sort = true;
611
- config.outside = false;
612
- }
613
- return {
614
- ...config,
615
- filterIcon: this.icon,
616
- sortable: this.sortable || this.sort,
617
- minWidth: this.minWidth || this.table.minWidth,
618
- className: [
619
- this.className ? this.className : '',
620
- this.type ? ' es-table-' + this.type + '-box' : '',
621
- this.showOverflowTooltip ? ' es-text-ellipsis' : ''
622
- ].join(' '),
623
- labelClassName: [
624
- this.labelClassName ? this.labelClassName : '',
625
- required ? 'es-required' : ''
626
- ].join(' '),
627
- showOverflowTooltip: this.showOverflowTooltip,
628
- prop: this.field || this.prop,
629
- field: this.field,
630
- ...this.$attrs
631
- };
632
- },
633
- formOption() {
634
- let config = {
635
- labelKey: this.sysCode
636
- ? this.service
637
- ? 'label'
638
- : 'shortName'
639
- : this.labelKey,
640
- valueKey: this.sysCode
641
- ? this.service
642
- ? 'value'
643
- : 'cciValue'
644
- : this.valueKey,
645
- rules: this.rules,
646
- events: this.events,
647
- ...this.$attrs
648
- };
649
- return config;
650
- },
651
- icon() {
652
- if (this.filterIcon === true) {
653
- return 'es-icon-biao';
654
- }
655
- return false;
656
- },
657
- isForm() {
658
- let type = this.type ? this.type.toLowerCase() : '';
659
- let flag =
660
- (this.form &&
661
- [
662
- 'input',
663
- 'text',
664
- 'textarea',
665
- 'checkbox',
666
- 'radio',
667
- 'select',
668
- 'handle',
669
- 'date',
670
- 'year',
671
- 'month',
672
- 'date',
673
- 'dates',
674
- 'week',
675
- 'datetime',
676
- 'datetimerange',
677
- 'daterange',
678
- 'monthrange',
679
- 'quarter',
680
- 'halfyear',
681
- 'switch',
682
- 'selector',
683
- 'ganged',
684
- 'number'
685
- ].indexOf(type) > -1) ||
686
- ['space', 'slot'].indexOf(type) > -1;
687
- return flag;
688
- },
689
- option() {
690
- const field = this.field || this.prop;
691
- return this.data ? this.data : this.optionDatas[this.sysCode || field];
692
- },
693
- findCode() {
694
- if (this.service) {
695
- return `/${this.service}${getDictList}`;
696
- }
697
- return findSysCode;
698
- }
699
- },
700
- data() {
701
- return {
702
- btnWidth: '',
703
- searchs: [],
704
- optionDatas: this.optionData
705
- };
706
- },
707
- mounted() {},
708
- methods: {
709
- init(data, value, item) {
710
- if (data && value) {
711
- if (Array.isArray(value) && value.length) {
712
- if (item.url || this.sysCode) {
713
- value.forEach(async (val, index) => {
714
- if (
715
- val.hasSub == false ||
716
- this.searchs.indexOf(val[this.valueKey] || val.value) > -1
717
- ) {
718
- return;
719
- }
720
- this.searchs.push(val[this.valueKey] || val.value);
721
- if ((item.ganged && index < item.ganged - 1) || val.hasSub) {
722
- let option = data[index + 1];
723
- let lists = [];
724
- if (option) {
725
- let v = val[this.valueKey] || val.value;
726
- lists = option.filter((list) => {
727
- return list[item.filtrateKey] == v;
728
- });
729
- }
730
- if (lists.length == 0) {
731
- let queryKey = item.queryKey;
732
- let param = {};
733
- if (queryKey) {
734
- for (let i in queryKey) {
735
- param[i] = val[queryKey[i]];
736
- }
737
- }
738
- let params = util.extend(
739
- true,
740
- this.sysCode
741
- ? { sysAppCode: this.sysCode, code: sysCode }
742
- : {},
743
- item.param ? item.param : {},
744
- param
745
- );
746
- await util
747
- .ajax({
748
- url: this.sysCode ? this.findCode : item.url,
749
- method: this.method,
750
- params: params,
751
- data: params
752
- })
753
- .then((res) => {
754
- if (res.rCode === 0) {
755
- let options = JSON.parse(JSON.stringify(data));
756
- if (options[index + 1]) {
757
- this.$set(
758
- data,
759
- index + 1,
760
- options[index + 1].concat(
761
- JSON.parse(JSON.stringify(res.results))
762
- )
763
- );
764
- } else {
765
- this.$set(
766
- data,
767
- index + 1,
768
- JSON.parse(JSON.stringify(res.results))
769
- );
770
- }
771
- } else {
772
- let msg = res.msg || '系统错误,请联系管理员!';
773
- this.$message.error(msg);
774
- }
775
- })
776
- .catch((err) => {
777
- if (err.message && err.message !== 'canceled') {
778
- this.$message.error(err.message);
779
- }
780
- });
781
- }
782
- }
783
- });
784
- }
785
- }
786
- }
787
- return data;
788
- },
789
- getType(config, types) {
790
- let type =
791
- config && config[this.field || this.prop]
792
- ? config[this.field || this.prop]['type'] ||
793
- config[this.field || this.prop]
794
- : this.type;
795
- return Array.isArray(types) ? types.includes(type) : type == types;
796
- },
797
- getOptions(config) {
798
- let option = config && config[this.field || this.prop];
799
- return option && typeof option == 'object'
800
- ? { ...this.formOption, ...option }
801
- : this.formOption;
802
- },
803
- getData(res) {
804
- return res && res[this.field || this.prop]
805
- ? res[this.field || this.prop]
806
- : this.option;
807
- },
808
- exclAttribute({ data, attrs }) {
809
- return util.exclAttribute({ data, attrs });
810
- },
811
- format(rows, flag) {
812
- const field = this.field || this.prop;
813
- let data = this.option;
814
- let str = '';
815
- if (util.isObject(rows[field])) {
816
- str =
817
- rows[field][this.labelKey] ||
818
- rows[field]['name'] ||
819
- rows[field]['label'] ||
820
- rows[field]['shortName'];
821
- } else if (Array.isArray(rows[field])) {
822
- const vals = rows[field].map((item) => {
823
- if (util.isObject(item)) {
824
- return (
825
- item[this.labelKey] ||
826
- item['name'] ||
827
- item['label'] ||
828
- item['shortName']
829
- );
830
- } else {
831
- if (data && data.length && util.isObject(data[0])) {
832
- return this.getLabel(data, item);
833
- }
834
- return item;
835
- }
836
- });
837
- str = vals.join(this.symbol ? this.symbol : '-');
838
- } else {
839
- if (this.valueToString) {
840
- const vals = rows[field].split(',').map((item) => {
841
- if (data && data.length && util.isObject(data[0])) {
842
- return this.getLabel(data, item);
843
- }
844
- return item;
845
- });
846
- str = vals.join(this.symbol ? this.symbol : '-');
847
- } else {
848
- if (data && data.length && util.isObject(data[0])) {
849
- str = this.getLabel(data, rows[field]);
850
- } else {
851
- str = rows[field];
852
- }
853
- }
854
- }
855
- if (str && flag) {
856
- str = str.replace(RegExp('\\n', 'g'), '<br/>');
857
- str = str.replace(RegExp(' ', 'g'), '&nbsp;');
858
- }
859
- return str;
860
- },
861
- getLabel(obj, val) {
862
- for (let i = 0; i < obj.length; i++) {
863
- let item = obj[i];
864
- let value = item[this.valueKey || 'cciValue'] || item['value'];
865
- if (value == val) {
866
- return (
867
- item[this.labelKey] ||
868
- item['name'] ||
869
- item['label'] ||
870
- item['shortName']
871
- );
872
- } else if (item.children && item.children.length) {
873
- return this.getLabel(item.children, val);
874
- }
875
- }
876
- },
877
- isReadOnly(scope) {
878
- return (
879
- scope.row.canEdit === false ||
880
- this.readonly ||
881
- this.$attrs.editable === false ||
882
- (scope.row.cantEditKey &&
883
- scope.row.cantEditKey.indexOf(this.field || this.prop) > -1)
884
- );
885
- },
886
- isNotRule(scope) {
887
- if (
888
- scope.row.canRule === false ||
889
- (scope.row.notRules &&
890
- scope.row.notRules.indexOf(this.field || this.prop) > -1)
891
- ) {
892
- this.elForm && this.elForm.clearValidate(this.field || this.prop);
893
- return true;
894
- }
895
- return false;
896
- },
897
- handleBlur(data) {
898
- this.events && this.events.blur && this.events.blur(data);
899
- this.$emit('formBlur', data);
900
- this.$emit('form-blur', data);
901
- },
902
- handleFocus(data) {
903
- this.events && this.events.focus && this.events.focus(data);
904
- this.$emit('formFocus', data);
905
- this.$emit('form-focus', data);
906
- },
907
- handleChange(datas) {
908
- let { item, name, data } = datas;
909
- if (
910
- item &&
911
- ((data.formConfigs && data.formConfigs[name] == 'ganged') ||
912
- this.type == 'ganged')
913
- ) {
914
- let { index, value } = datas.value;
915
- if (
916
- (item.url || this.sysCode) &&
917
- ((item.ganged && index > item.ganged - 1) || value.hasSub)
918
- ) {
919
- let filte = value[this.valueKey] || value.value;
920
- let datas = [];
921
- if (this.optionDatas[this.field || this.prop][index + 1]) {
922
- datas = this.optionDatas[this.field || this.prop][index + 1].filter(
923
- (items) => {
924
- return filte == items[item.filtrateKey];
925
- }
926
- );
927
- }
928
- if (datas.length == 0) {
929
- let queryKey = item.queryKey;
930
- let param = {};
931
- if (queryKey) {
932
- for (let i in queryKey) {
933
- param[i] = value[queryKey[i]];
934
- }
935
- }
936
- let params = util.extend(
937
- true,
938
- this.sysCode ? { sysAppCode: this.sysCode, code: sysCode } : {},
939
- item.param ? item.param : {},
940
- param
941
- );
942
- util
943
- .ajax({
944
- url: this.sysCode ? this.findCode : item.url,
945
- method: this.method,
946
- params: params,
947
- data: params
948
- })
949
- .then((res) => {
950
- if (res.rCode === 0) {
951
- let options = JSON.parse(
952
- JSON.stringify(this.optionDatas[this.sysCode])
953
- );
954
- if (options[index + 1]) {
955
- options[index + 1] = options[index + 1].concat(
956
- JSON.parse(JSON.stringify(res.results))
957
- );
958
- } else {
959
- options.push(JSON.parse(JSON.stringify(res.results)));
960
- }
961
- this.$set(this.optionDatas, this.sysCode, options);
962
- } else {
963
- let msg = res.msg || '系统错误,请联系管理员!';
964
- this.$message.error(msg);
965
- }
966
- })
967
- .catch((err) => {
968
- if (err.message && err.message !== 'canceled') {
969
- this.$message.error(err.message);
970
- }
971
- });
972
- }
973
- }
974
- }
975
- this.events && this.events.change && this.events.change(datas);
976
- this.$emit('formChange', datas);
977
- this.$emit('form-change', datas);
978
- },
979
- handleClick(data) {
980
- this.$emit('handleClick', data);
981
- this.$emit('handle-click', data);
982
- },
983
- formatDate(date, fmt) {
984
- return date ? util.formatDate(date, fmt) : this.dateValue;
985
- }
986
- }
987
- };
988
- </script>
1
+ <template>
2
+ <el-table-column v-bind="config" :key="field">
3
+ <slot> </slot>
4
+ <template slot-scope="scope">
5
+ <template v-if="isForm && !isReadOnly(scope)">
6
+ <el-form-item
7
+ v-if="!(type === 'handle' && !scope.row.hideHandle)"
8
+ :name="name"
9
+ :prop="field || prop"
10
+ :rules="isNotRule(scope) ? [] : rules"
11
+ :index="scope.$index"
12
+ >
13
+ <component
14
+ v-if="getType(scope.row.formConfigs, 'component')"
15
+ :is="tag"
16
+ v-bind="getOptions(scope.row.formConfigs)"
17
+ v-model="scope.row[field || prop]"
18
+ :data="getData(scope.row.formOptions)"
19
+ @blur="
20
+ (event) => {
21
+ handleBlur({
22
+ item: config,
23
+ event: event,
24
+ data: scope.row,
25
+ scope: scope
26
+ });
27
+ }
28
+ "
29
+ @focus="
30
+ (event) => {
31
+ handleFocus({
32
+ item: config,
33
+ event: event,
34
+ data: scope.row,
35
+ scope: scope
36
+ });
37
+ }
38
+ "
39
+ @change="
40
+ (value) => {
41
+ handleChange({
42
+ item: config,
43
+ name: field || prop,
44
+ value: value,
45
+ data: scope.row,
46
+ scope: scope
47
+ });
48
+ }
49
+ "
50
+ ></component>
51
+ <es-select
52
+ v-else-if="getType(scope.row.formConfigs, 'select')"
53
+ v-bind="getOptions(scope.row.formConfigs)"
54
+ v-model="scope.row[field || prop]"
55
+ :data="getData(scope.row.formOptions)"
56
+ @blur="
57
+ (event) => {
58
+ handleBlur({
59
+ item: config,
60
+ event: event,
61
+ data: scope.row,
62
+ scope: scope
63
+ });
64
+ }
65
+ "
66
+ @focus="
67
+ (event) => {
68
+ handleFocus({
69
+ item: config,
70
+ event: event,
71
+ data: scope.row,
72
+ scope: scope
73
+ });
74
+ }
75
+ "
76
+ @change="
77
+ (value) => {
78
+ handleChange({
79
+ item: config,
80
+ name: field || prop,
81
+ value: value,
82
+ data: scope.row,
83
+ scope: scope
84
+ });
85
+ }
86
+ "
87
+ >
88
+ </es-select>
89
+ <es-cascader
90
+ v-else-if="getType(scope.row.formConfigs, 'cascader')"
91
+ v-bind="getOptions(scope.row.formConfigs)"
92
+ v-model="scope.row[field || prop]"
93
+ :data="getData(scope.row.formOptions)"
94
+ @blur="
95
+ (event) => {
96
+ handleBlur({
97
+ item: config,
98
+ event: event,
99
+ data: scope.row,
100
+ scope: scope
101
+ });
102
+ }
103
+ "
104
+ @focus="
105
+ (event) => {
106
+ handleFocus({
107
+ item: config,
108
+ event: event,
109
+ data: scope.row,
110
+ scope: scope
111
+ });
112
+ }
113
+ "
114
+ @change="
115
+ (value) => {
116
+ handleChange({
117
+ item: config,
118
+ name: field || prop,
119
+ value: value,
120
+ data: scope.row,
121
+ scope: scope
122
+ });
123
+ }
124
+ "
125
+ >
126
+ </es-cascader>
127
+ <es-select-ganged
128
+ v-else-if="getType(scope.row.formConfigs, 'ganged')"
129
+ v-bind="getOptions(scope.row.formConfigs)"
130
+ v-model="scope.row[field || prop]"
131
+ :data="init(getData(scope.row.formOptions), config)"
132
+ @change="
133
+ (value) => {
134
+ handleChange({
135
+ name: field || prop,
136
+ value: value,
137
+ data: scope.row,
138
+ item: item
139
+ });
140
+ }
141
+ "
142
+ >
143
+ </es-select-ganged>
144
+ <es-radio-group
145
+ v-else-if="getType(scope.row.formConfigs, 'radio')"
146
+ v-bind="getOptions(scope.row.formConfigs)"
147
+ v-model="scope.row[field || prop]"
148
+ :data="getData(scope.row.formOptions)"
149
+ @change="
150
+ (value) => {
151
+ handleChange({
152
+ item: config,
153
+ name: field || prop,
154
+ value: value,
155
+ data: scope.row
156
+ });
157
+ }
158
+ "
159
+ >
160
+ </es-radio-group>
161
+ <es-checkbox-group
162
+ v-else-if="getType(scope.row.formConfigs, 'checkbox')"
163
+ v-bind="getOptions(scope.row.formConfigs)"
164
+ v-model="scope.row[field || prop]"
165
+ :data="getData(scope.row.formOptions)"
166
+ @change="
167
+ (value) => {
168
+ handleChange({
169
+ item: config,
170
+ name: field || prop,
171
+ value: value,
172
+ data: scope.row
173
+ });
174
+ }
175
+ "
176
+ >
177
+ </es-checkbox-group>
178
+ <es-switch
179
+ v-else-if="getType(scope.row.formConfigs, 'switch')"
180
+ v-bind="getOptions(scope.row.formConfigs)"
181
+ v-model="scope.row[field || prop]"
182
+ :data="getData(scope.row.formOptions)"
183
+ @change="
184
+ (value) => {
185
+ handleChange({
186
+ item: config,
187
+ name: field || prop,
188
+ value: value,
189
+ data: scope.row
190
+ });
191
+ }
192
+ "
193
+ >
194
+ </es-switch>
195
+ <es-date-picker
196
+ v-else-if="
197
+ config.date ||
198
+ getType(scope.row.formConfigs, [
199
+ 'date',
200
+ 'year',
201
+ 'month',
202
+ 'date',
203
+ 'dates',
204
+ 'week',
205
+ 'datetime',
206
+ 'datetimerange',
207
+ 'daterange',
208
+ 'monthrange',
209
+ 'quarter',
210
+ 'halfyear'
211
+ ])
212
+ "
213
+ v-bind="getOptions(scope.row.formConfigs)"
214
+ v-model="scope.row[field || prop]"
215
+ :type="type"
216
+ @blur="
217
+ (event) => {
218
+ handleBlur({
219
+ item: config,
220
+ event: event,
221
+ data: scope.row,
222
+ scope: scope
223
+ });
224
+ }
225
+ "
226
+ @focus="
227
+ (event) => {
228
+ handleFocus({
229
+ item: config,
230
+ event: event,
231
+ data: scope.row,
232
+ scope: scope
233
+ });
234
+ }
235
+ "
236
+ @change="
237
+ (value) => {
238
+ handleChange({
239
+ item: config,
240
+ name: field || prop,
241
+ value: value,
242
+ data: scope.row,
243
+ scope: scope
244
+ });
245
+ }
246
+ "
247
+ >
248
+ </es-date-picker>
249
+ <es-input-number
250
+ v-else-if="getType(scope.row.formConfigs, 'number')"
251
+ v-bind="getOptions(scope.row.formConfigs)"
252
+ v-model="scope.row[field || prop]"
253
+ @blur="
254
+ (event) => {
255
+ handleBlur({
256
+ item: config,
257
+ event: event,
258
+ data: scope.row,
259
+ scope: scope
260
+ });
261
+ }
262
+ "
263
+ @focus="
264
+ (event) => {
265
+ handleFocus({
266
+ item: config,
267
+ event: event,
268
+ data: scope.row,
269
+ scope: scope
270
+ });
271
+ }
272
+ "
273
+ @change="
274
+ (value) => {
275
+ handleChange({
276
+ item: config,
277
+ name: field || prop,
278
+ value: value,
279
+ data: scope.row,
280
+ scope: scope
281
+ });
282
+ }
283
+ "
284
+ >
285
+ </es-input-number>
286
+ <es-selector
287
+ v-else-if="getType(scope.row.formConfigs, 'selector')"
288
+ v-bind="getOptions(scope.row.formConfigs)"
289
+ v-model="scope.row[field || prop]"
290
+ v-on="
291
+ exclAttribute({
292
+ data: events,
293
+ attrs: 'change'
294
+ })
295
+ "
296
+ @change="
297
+ (value) => {
298
+ handleChange({
299
+ item: config,
300
+ name: field || prop,
301
+ value: value,
302
+ data: scope.row
303
+ });
304
+ }
305
+ "
306
+ >
307
+ </es-selector>
308
+ <template
309
+ v-else-if="
310
+ getType(scope.row.formConfigs, ['text', 'input', 'textarea'])
311
+ "
312
+ >
313
+ <template v-if="config.lazy">
314
+ <input
315
+ v-if="getType(scope.row.formConfigs, ['text', 'input'])"
316
+ class="el-input__inner"
317
+ v-bind="getOptions(scope.row.formConfigs)"
318
+ v-model.lazy="scope.row[field]"
319
+ @blur="
320
+ (event) => {
321
+ handleBlur({
322
+ item: config,
323
+ event: event,
324
+ data: scope.row,
325
+ scope: scope
326
+ });
327
+ }
328
+ "
329
+ @focus="
330
+ (event) => {
331
+ handleFocus({
332
+ item: config,
333
+ event: event,
334
+ data: scope.row,
335
+ scope: scope
336
+ });
337
+ }
338
+ "
339
+ @change="
340
+ (value) => {
341
+ handleChange({
342
+ item: config,
343
+ name: field || prop,
344
+ value: value,
345
+ data: scope.row,
346
+ scope: scope
347
+ });
348
+ }
349
+ "
350
+ />
351
+ <textarea
352
+ v-else
353
+ class="el-textarea__inner"
354
+ v-bind="getOptions(scope.row.formConfigs)"
355
+ v-model.lazy="scope.row[field]"
356
+ @blur="
357
+ (event) => {
358
+ handleBlur({
359
+ item: config,
360
+ event: event,
361
+ data: scope.row,
362
+ scope: scope
363
+ });
364
+ }
365
+ "
366
+ @focus="
367
+ (event) => {
368
+ handleFocus({
369
+ item: config,
370
+ event: event,
371
+ data: scope.row,
372
+ scope: scope
373
+ });
374
+ }
375
+ "
376
+ @change="
377
+ (value) => {
378
+ handleChange({
379
+ item: config,
380
+ name: field || prop,
381
+ value: value,
382
+ data: scope.row,
383
+ scope: scope
384
+ });
385
+ }
386
+ "
387
+ ></textarea>
388
+ </template>
389
+ <es-input
390
+ v-else
391
+ v-bind="getOptions(scope.row.formConfigs)"
392
+ :type="type"
393
+ :scope="scope"
394
+ v-model="scope.row[field || prop]"
395
+ @blur="
396
+ (event) => {
397
+ handleBlur({
398
+ item: config,
399
+ event: event,
400
+ data: scope.row,
401
+ scope: scope
402
+ });
403
+ }
404
+ "
405
+ @focus="
406
+ (event) => {
407
+ handleFocus({
408
+ item: config,
409
+ event: event,
410
+ data: scope.row,
411
+ scope: scope
412
+ });
413
+ }
414
+ "
415
+ @change="
416
+ (value) => {
417
+ handleChange({
418
+ item: config,
419
+ name: field || prop,
420
+ value: value,
421
+ data: scope.row,
422
+ scope: scope
423
+ });
424
+ }
425
+ "
426
+ >
427
+ </es-input>
428
+ </template>
429
+ </el-form-item>
430
+ </template>
431
+ <expand-dom
432
+ v-else-if="render"
433
+ :column="config"
434
+ :row="scope.row"
435
+ :render="render"
436
+ :index="indexs"
437
+ :options="optionDatas"
438
+ >
439
+ </expand-dom>
440
+ <template v-else-if="dateFormat">
441
+ {{ formatDate(scope.row[field || prop], dateFormat) }}
442
+ </template>
443
+ <span
444
+ v-else-if="type === 'textarea'"
445
+ v-html="format(scope.row, true)"
446
+ :style="styles ? styles[scope.row[prop]] : {}"
447
+ ></span>
448
+ <span v-else :style="styles ? styles[scope.row[prop]] : {}" v-html="format(scope.row)"></span>
449
+ <!-- {{ format(scope.row) }} -->
450
+ <es-button-group
451
+ v-if="type === 'handle' && !scope.row.hideHandle"
452
+ v-bind="
453
+ exclAttribute({
454
+ data: config,
455
+ attrs: ['contents', 'events', 'type', 'width', 'template', 'title']
456
+ })
457
+ "
458
+ stop
459
+ :mode="mode"
460
+ :contents="contents || events"
461
+ :data="scope"
462
+ @handleClick="handleClick"
463
+ v-model="btnWidth"
464
+ ></es-button-group>
465
+ </template>
466
+ </el-table-column>
467
+ </template>
468
+
469
+ <script type="text/babel">
470
+ import { findSysCode, getDictList } from 'eoss-ui/src/config/api.js';
471
+ import util from 'eoss-ui/src/utils/util';
472
+ export default {
473
+ name: 'Column',
474
+ components: {
475
+ expandDom: {
476
+ functional: true,
477
+ props: {
478
+ row: Object,
479
+ render: [Function, String],
480
+ index: Number,
481
+ column: {
482
+ type: Object,
483
+ default: null
484
+ },
485
+ options: Object
486
+ },
487
+ render: (h, ctx) => {
488
+ const params = {
489
+ row: ctx.props.row,
490
+ index: ctx.props.index
491
+ };
492
+ if (ctx.props.column) {
493
+ params.column = ctx.props.column;
494
+ }
495
+ if (typeof ctx.props.render == 'string') {
496
+ try {
497
+ return util.toFunction(ctx.props.render)(
498
+ h,
499
+ params,
500
+ ctx.props.options
501
+ );
502
+ } catch (error) {
503
+ throw error;
504
+ }
505
+ }
506
+ return ctx.props.render(h, params, ctx.props.options);
507
+ }
508
+ }
509
+ },
510
+ inject: {
511
+ elForm: {
512
+ default: ''
513
+ },
514
+ tableReload: {
515
+ default: ''
516
+ },
517
+ table: {
518
+ default: ''
519
+ }
520
+ },
521
+ props: {
522
+ tag: String,
523
+ mode: String,
524
+ service: String,
525
+ form: Boolean,
526
+ readonly: Boolean,
527
+ name: String,
528
+ filterIcon: [Boolean, String],
529
+ title: String,
530
+ label: String,
531
+ labelKey: String,
532
+ valueKey: String,
533
+ field: String,
534
+ prop: String,
535
+ sortable: [Boolean, String],
536
+ sort: [Boolean, String],
537
+ className: String,
538
+ labelClassName: String,
539
+ type: String,
540
+ required: Boolean,
541
+ width: [Number, String],
542
+ minWidth: [Number, String],
543
+ hide: Boolean,
544
+ showOverflowTooltip: [Boolean, Number],
545
+ render: [Function, String],
546
+ contents: Array,
547
+ events: [Array, Object],
548
+ dateFormat: String,
549
+ dateValue: {
550
+ type: String,
551
+ default: ''
552
+ },
553
+ styles: [Array, Object],
554
+ sysCode: String,
555
+ valueToString: Boolean,
556
+ symbol: String,
557
+ rules: [Array, Object],
558
+ method: String,
559
+ indexs: {
560
+ type: Number,
561
+ default: null
562
+ },
563
+ data: [Object, Array],
564
+ optionData: {
565
+ type: Object,
566
+ default() {
567
+ return {};
568
+ }
569
+ }
570
+ },
571
+ watch: {
572
+ optionData: {
573
+ deep: true,
574
+ handler(val) {
575
+ this.optionDatas = val;
576
+ }
577
+ },
578
+ width: {
579
+ immediate: true,
580
+ handler(val) {
581
+ if (val) {
582
+ this.btnWidth = parseInt(val, 10) + 'px';
583
+ }
584
+ }
585
+ }
586
+ },
587
+ computed: {
588
+ config() {
589
+ let config = {
590
+ label: this.label || this.title,
591
+ width: this.btnWidth || this.width
592
+ };
593
+ if (this.type === 'expand') {
594
+ config = { type: this.type, ...config, ...this.$attrs };
595
+ return config;
596
+ }
597
+ let required = this.required;
598
+ if (this.rules && !required) {
599
+ if (Array.isArray(this.rules)) {
600
+ this.rules.map((item) => {
601
+ if (item.required) {
602
+ required = item.required;
603
+ }
604
+ });
605
+ } else if (this.rules.required) {
606
+ required = this.rules.required;
607
+ }
608
+ }
609
+ if (this.type === 'handle') {
610
+ config.sort = true;
611
+ config.outside = false;
612
+ }
613
+ return {
614
+ ...config,
615
+ filterIcon: this.icon,
616
+ sortable: this.sortable || this.sort,
617
+ minWidth: this.minWidth || this.table.minWidth,
618
+ className: [
619
+ this.className ? this.className : '',
620
+ this.type ? ' es-table-' + this.type + '-box' : '',
621
+ this.showOverflowTooltip ? ' es-text-ellipsis' : ''
622
+ ].join(' '),
623
+ labelClassName: [
624
+ this.labelClassName ? this.labelClassName : '',
625
+ required ? 'es-required' : ''
626
+ ].join(' '),
627
+ showOverflowTooltip: this.showOverflowTooltip,
628
+ prop: this.field || this.prop,
629
+ field: this.field,
630
+ ...this.$attrs
631
+ };
632
+ },
633
+ formOption() {
634
+ let config = {
635
+ labelKey: this.sysCode
636
+ ? this.service
637
+ ? 'label'
638
+ : 'shortName'
639
+ : this.labelKey,
640
+ valueKey: this.sysCode
641
+ ? this.service
642
+ ? 'value'
643
+ : 'cciValue'
644
+ : this.valueKey,
645
+ rules: this.rules,
646
+ events: this.events,
647
+ ...this.$attrs
648
+ };
649
+ return config;
650
+ },
651
+ icon() {
652
+ if (this.filterIcon === true) {
653
+ return 'es-icon-biao';
654
+ }
655
+ return false;
656
+ },
657
+ isForm() {
658
+ let type = this.type ? this.type.toLowerCase() : '';
659
+ let flag =
660
+ (this.form &&
661
+ [
662
+ 'input',
663
+ 'text',
664
+ 'textarea',
665
+ 'checkbox',
666
+ 'radio',
667
+ 'select',
668
+ 'handle',
669
+ 'date',
670
+ 'year',
671
+ 'month',
672
+ 'date',
673
+ 'dates',
674
+ 'week',
675
+ 'datetime',
676
+ 'datetimerange',
677
+ 'daterange',
678
+ 'monthrange',
679
+ 'quarter',
680
+ 'halfyear',
681
+ 'switch',
682
+ 'selector',
683
+ 'ganged',
684
+ 'number'
685
+ ].indexOf(type) > -1) ||
686
+ ['space', 'slot'].indexOf(type) > -1;
687
+ return flag;
688
+ },
689
+ option() {
690
+ const field = this.field || this.prop;
691
+ return this.data ? this.data : this.optionDatas[this.sysCode || field];
692
+ },
693
+ findCode() {
694
+ if (this.service) {
695
+ return `/${this.service}${getDictList}`;
696
+ }
697
+ return findSysCode;
698
+ }
699
+ },
700
+ data() {
701
+ return {
702
+ btnWidth: '',
703
+ searchs: [],
704
+ optionDatas: this.optionData
705
+ };
706
+ },
707
+ mounted() {},
708
+ methods: {
709
+ init(data, value, item) {
710
+ if (data && value) {
711
+ if (Array.isArray(value) && value.length) {
712
+ if (item.url || this.sysCode) {
713
+ value.forEach(async (val, index) => {
714
+ if (
715
+ val.hasSub == false ||
716
+ this.searchs.indexOf(val[this.valueKey] || val.value) > -1
717
+ ) {
718
+ return;
719
+ }
720
+ this.searchs.push(val[this.valueKey] || val.value);
721
+ if ((item.ganged && index < item.ganged - 1) || val.hasSub) {
722
+ let option = data[index + 1];
723
+ let lists = [];
724
+ if (option) {
725
+ let v = val[this.valueKey] || val.value;
726
+ lists = option.filter((list) => {
727
+ return list[item.filtrateKey] == v;
728
+ });
729
+ }
730
+ if (lists.length == 0) {
731
+ let queryKey = item.queryKey;
732
+ let param = {};
733
+ if (queryKey) {
734
+ for (let i in queryKey) {
735
+ param[i] = val[queryKey[i]];
736
+ }
737
+ }
738
+ let params = util.extend(
739
+ true,
740
+ this.sysCode
741
+ ? { sysAppCode: this.sysCode, code: sysCode }
742
+ : {},
743
+ item.param ? item.param : {},
744
+ param
745
+ );
746
+ await util
747
+ .ajax({
748
+ url: this.sysCode ? this.findCode : item.url,
749
+ method: this.method,
750
+ params: params,
751
+ data: params
752
+ })
753
+ .then((res) => {
754
+ if (res.rCode === 0) {
755
+ let options = JSON.parse(JSON.stringify(data));
756
+ if (options[index + 1]) {
757
+ this.$set(
758
+ data,
759
+ index + 1,
760
+ options[index + 1].concat(
761
+ JSON.parse(JSON.stringify(res.results))
762
+ )
763
+ );
764
+ } else {
765
+ this.$set(
766
+ data,
767
+ index + 1,
768
+ JSON.parse(JSON.stringify(res.results))
769
+ );
770
+ }
771
+ } else {
772
+ let msg = res.msg || '系统错误,请联系管理员!';
773
+ this.$message.error(msg);
774
+ }
775
+ })
776
+ .catch((err) => {
777
+ if (err.message && err.message !== 'canceled') {
778
+ this.$message.error(err.message);
779
+ }
780
+ });
781
+ }
782
+ }
783
+ });
784
+ }
785
+ }
786
+ }
787
+ return data;
788
+ },
789
+ getType(config, types) {
790
+ let type =
791
+ config && config[this.field || this.prop]
792
+ ? config[this.field || this.prop]['type'] ||
793
+ config[this.field || this.prop]
794
+ : this.type;
795
+ return Array.isArray(types) ? types.includes(type) : type == types;
796
+ },
797
+ getOptions(config) {
798
+ let option = config && config[this.field || this.prop];
799
+ return option && typeof option == 'object'
800
+ ? { ...this.formOption, ...option }
801
+ : this.formOption;
802
+ },
803
+ getData(res) {
804
+ return res && res[this.field || this.prop]
805
+ ? res[this.field || this.prop]
806
+ : this.option;
807
+ },
808
+ exclAttribute({ data, attrs }) {
809
+ return util.exclAttribute({ data, attrs });
810
+ },
811
+ format(rows, flag) {
812
+ const field = this.field || this.prop;
813
+ let data = this.option;
814
+ let str = '';
815
+ if (util.isObject(rows[field])) {
816
+ str =
817
+ rows[field][this.labelKey] ||
818
+ rows[field]['name'] ||
819
+ rows[field]['label'] ||
820
+ rows[field]['shortName'];
821
+ } else if (Array.isArray(rows[field])) {
822
+ const vals = rows[field].map((item) => {
823
+ if (util.isObject(item)) {
824
+ return (
825
+ item[this.labelKey] ||
826
+ item['name'] ||
827
+ item['label'] ||
828
+ item['shortName']
829
+ );
830
+ } else {
831
+ if (data && data.length && util.isObject(data[0])) {
832
+ return this.getLabel(data, item);
833
+ }
834
+ return item;
835
+ }
836
+ });
837
+ str = vals.join(this.symbol ? this.symbol : '-');
838
+ } else {
839
+ if (this.valueToString) {
840
+ const vals = rows[field].split(',').map((item) => {
841
+ if (data && data.length && util.isObject(data[0])) {
842
+ return this.getLabel(data, item);
843
+ }
844
+ return item;
845
+ });
846
+ str = vals.join(this.symbol ? this.symbol : '-');
847
+ } else {
848
+ if (data && data.length && util.isObject(data[0])) {
849
+ str = this.getLabel(data, rows[field]);
850
+ } else {
851
+ str = rows[field];
852
+ }
853
+ }
854
+ }
855
+ if (str && flag) {
856
+ str = str.replace(RegExp('\\n', 'g'), '<br/>');
857
+ str = str.replace(RegExp(' ', 'g'), '&nbsp;');
858
+ }
859
+ return str;
860
+ },
861
+ getLabel(obj, val) {
862
+ for (let i = 0; i < obj.length; i++) {
863
+ let item = obj[i];
864
+ let value = item[this.valueKey || 'cciValue'] || item['value'];
865
+ if (value == val) {
866
+ return (
867
+ item[this.labelKey] ||
868
+ item['name'] ||
869
+ item['label'] ||
870
+ item['shortName']
871
+ );
872
+ } else if (item.children && item.children.length) {
873
+ return this.getLabel(item.children, val);
874
+ }
875
+ }
876
+ },
877
+ isReadOnly(scope) {
878
+ return (
879
+ scope.row.canEdit === false ||
880
+ this.readonly ||
881
+ this.$attrs.editable === false ||
882
+ (scope.row.cantEditKey &&
883
+ scope.row.cantEditKey.indexOf(this.field || this.prop) > -1)
884
+ );
885
+ },
886
+ isNotRule(scope) {
887
+ if (
888
+ scope.row.canRule === false ||
889
+ (scope.row.notRules &&
890
+ scope.row.notRules.indexOf(this.field || this.prop) > -1)
891
+ ) {
892
+ this.elForm && this.elForm.clearValidate(this.field || this.prop);
893
+ return true;
894
+ }
895
+ return false;
896
+ },
897
+ handleBlur(data) {
898
+ this.events && this.events.blur && this.events.blur(data);
899
+ this.$emit('formBlur', data);
900
+ this.$emit('form-blur', data);
901
+ },
902
+ handleFocus(data) {
903
+ this.events && this.events.focus && this.events.focus(data);
904
+ this.$emit('formFocus', data);
905
+ this.$emit('form-focus', data);
906
+ },
907
+ handleChange(datas) {
908
+ let { item, name, data } = datas;
909
+ if (
910
+ item &&
911
+ ((data.formConfigs && data.formConfigs[name] == 'ganged') ||
912
+ this.type == 'ganged')
913
+ ) {
914
+ let { index, value } = datas.value;
915
+ if (
916
+ (item.url || this.sysCode) &&
917
+ ((item.ganged && index > item.ganged - 1) || value.hasSub)
918
+ ) {
919
+ let filte = value[this.valueKey] || value.value;
920
+ let datas = [];
921
+ if (this.optionDatas[this.field || this.prop][index + 1]) {
922
+ datas = this.optionDatas[this.field || this.prop][index + 1].filter(
923
+ (items) => {
924
+ return filte == items[item.filtrateKey];
925
+ }
926
+ );
927
+ }
928
+ if (datas.length == 0) {
929
+ let queryKey = item.queryKey;
930
+ let param = {};
931
+ if (queryKey) {
932
+ for (let i in queryKey) {
933
+ param[i] = value[queryKey[i]];
934
+ }
935
+ }
936
+ let params = util.extend(
937
+ true,
938
+ this.sysCode ? { sysAppCode: this.sysCode, code: sysCode } : {},
939
+ item.param ? item.param : {},
940
+ param
941
+ );
942
+ util
943
+ .ajax({
944
+ url: this.sysCode ? this.findCode : item.url,
945
+ method: this.method,
946
+ params: params,
947
+ data: params
948
+ })
949
+ .then((res) => {
950
+ if (res.rCode === 0) {
951
+ let options = JSON.parse(
952
+ JSON.stringify(this.optionDatas[this.sysCode])
953
+ );
954
+ if (options[index + 1]) {
955
+ options[index + 1] = options[index + 1].concat(
956
+ JSON.parse(JSON.stringify(res.results))
957
+ );
958
+ } else {
959
+ options.push(JSON.parse(JSON.stringify(res.results)));
960
+ }
961
+ this.$set(this.optionDatas, this.sysCode, options);
962
+ } else {
963
+ let msg = res.msg || '系统错误,请联系管理员!';
964
+ this.$message.error(msg);
965
+ }
966
+ })
967
+ .catch((err) => {
968
+ if (err.message && err.message !== 'canceled') {
969
+ this.$message.error(err.message);
970
+ }
971
+ });
972
+ }
973
+ }
974
+ }
975
+ this.events && this.events.change && this.events.change(datas);
976
+ this.$emit('formChange', datas);
977
+ this.$emit('form-change', datas);
978
+ },
979
+ handleClick(data) {
980
+ this.$emit('handleClick', data);
981
+ this.$emit('handle-click', data);
982
+ },
983
+ formatDate(date, fmt) {
984
+ return date ? util.formatDate(date, fmt) : this.dateValue;
985
+ }
986
+ }
987
+ };
988
+ </script>