eoss-ui 0.5.13 → 0.5.15

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