eoss-ui 0.5.13 → 0.5.14

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.js +2 -2
  2. package/lib/cascader.js +2 -2
  3. package/lib/checkbox-group.js +39 -21
  4. package/lib/data-table-form.js +3 -2
  5. package/lib/data-table.js +1204 -1516
  6. package/lib/date-picker.js +2 -2
  7. package/lib/dialog.js +9 -9
  8. package/lib/eoss-ui.common.js +1210 -1751
  9. package/lib/flow-list.js +2 -2
  10. package/lib/flow.js +7 -6
  11. package/lib/form.js +4 -9
  12. package/lib/icons.js +2 -2
  13. package/lib/index.js +1 -1
  14. package/lib/input-number.js +2 -2
  15. package/lib/input.js +2 -2
  16. package/lib/label.js +2 -2
  17. package/lib/layout.js +166 -152
  18. package/lib/main.js +6 -5
  19. package/lib/menu.js +2 -2
  20. package/lib/nav.js +9 -9
  21. package/lib/notify.js +2 -2
  22. package/lib/page.js +2 -2
  23. package/lib/pagination.js +2 -2
  24. package/lib/player.js +8 -8
  25. package/lib/qr-code.js +4 -4
  26. package/lib/radio-group.js +43 -21
  27. package/lib/retrial-auth.js +2 -2
  28. package/lib/select-ganged.js +25 -5
  29. package/lib/select.js +41 -18
  30. package/lib/selector-panel.js +6 -5
  31. package/lib/selector.js +4 -4
  32. package/lib/sizer.js +2 -2
  33. package/lib/steps.js +9 -9
  34. package/lib/switch.js +2 -2
  35. package/lib/table-form.js +2 -2
  36. package/lib/tabs-panel.js +2 -2
  37. package/lib/tabs.js +2 -2
  38. package/lib/theme-chalk/data-table.css +1 -1
  39. package/lib/theme-chalk/index.css +1 -1
  40. package/lib/tips.js +2 -2
  41. package/lib/toolbar.js +2 -2
  42. package/lib/tree-group.js +2 -2
  43. package/lib/tree.js +2 -2
  44. package/lib/upload.js +3 -3
  45. package/lib/wujie.js +2 -2
  46. package/lib/wxlogin.js +2 -2
  47. package/package.json +1 -1
  48. package/packages/checkbox-group/src/main.vue +20 -30
  49. package/packages/data-table/src/children.vue +4 -8
  50. package/packages/data-table/src/column.vue +522 -575
  51. package/packages/data-table/src/main.vue +95 -119
  52. package/packages/form/src/main.vue +2 -7
  53. package/packages/radio-group/src/main.vue +20 -30
  54. package/packages/select/src/main.vue +20 -29
  55. package/packages/select-ganged/src/main.vue +1 -3
  56. package/packages/theme-chalk/lib/data-table.css +1 -1
  57. package/packages/theme-chalk/lib/index.css +1 -1
  58. package/packages/theme-chalk/src/data-table.scss +2 -1
  59. package/src/index.js +1 -1
  60. package/packages/data-table/src/column copy.vue +0 -977
  61. package/packages/data-table/src/main copy.vue +0 -1325
  62. package/packages/data-table/src/mixins/table.js +0 -12
@@ -1,977 +0,0 @@
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>