eoss-ui 0.5.12 → 0.5.13

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