eoss-ui 0.4.18 → 0.4.19

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 (81) hide show
  1. package/lib/button-group.js +88 -88
  2. package/lib/button.js +90 -90
  3. package/lib/card.js +2 -2
  4. package/lib/cascader.js +2 -2
  5. package/lib/checkbox-group.js +89 -89
  6. package/lib/clients.js +2 -2
  7. package/lib/data-table-form.js +870 -198
  8. package/lib/data-table.js +91 -91
  9. package/lib/date-picker.js +90 -90
  10. package/lib/dialog.js +138 -105
  11. package/lib/enterprise.js +2 -2
  12. package/lib/eoss-ui.common.js +1456 -629
  13. package/lib/error-page.js +2 -2
  14. package/lib/flow-group.js +112 -95
  15. package/lib/flow-list.js +92 -92
  16. package/lib/flow.js +152 -146
  17. package/lib/form.js +183 -102
  18. package/lib/handle-user.js +91 -91
  19. package/lib/handler.js +91 -91
  20. package/lib/index.js +1 -1
  21. package/lib/input-number.js +90 -90
  22. package/lib/input.js +90 -90
  23. package/lib/label.js +2 -2
  24. package/lib/login.js +174 -131
  25. package/lib/main.js +111 -108
  26. package/lib/mainComp.js +107 -106
  27. package/lib/menu.js +2 -2
  28. package/lib/nav.js +90 -90
  29. package/lib/notify.js +95 -95
  30. package/lib/page.js +90 -90
  31. package/lib/pagination.js +2 -2
  32. package/lib/player.js +90 -90
  33. package/lib/qr-code.js +97 -97
  34. package/lib/radio-group.js +91 -91
  35. package/lib/select-ganged.js +90 -90
  36. package/lib/select.js +101 -101
  37. package/lib/selector-panel.js +115 -108
  38. package/lib/selector.js +91 -91
  39. package/lib/sizer.js +92 -92
  40. package/lib/steps.js +90 -90
  41. package/lib/switch.js +90 -90
  42. package/lib/table-form.js +97 -97
  43. package/lib/tabs-panel.js +2 -2
  44. package/lib/tabs.js +113 -94
  45. package/lib/theme-chalk/data-table-form.css +1 -1
  46. package/lib/theme-chalk/index.css +1 -1
  47. package/lib/tips.js +91 -91
  48. package/lib/toolbar.js +2 -2
  49. package/lib/tree-group.js +105 -95
  50. package/lib/tree.js +97 -93
  51. package/lib/upload.js +175 -125
  52. package/lib/wujie.js +90 -90
  53. package/lib/wxlogin.js +90 -90
  54. package/package.json +2 -2
  55. package/packages/data-table-form/src/checkbox.vue +101 -0
  56. package/packages/data-table-form/src/radio.vue +65 -0
  57. package/packages/data-table-form/src/table.vue +34 -6
  58. package/packages/data-table-form/src/tbody.vue +139 -25
  59. package/packages/dialog/src/main.vue +29 -3
  60. package/packages/flow/src/main.vue +103 -87
  61. package/packages/flow-group/src/main.vue +22 -13
  62. package/packages/form/src/main.vue +563 -470
  63. package/packages/login/src/main.vue +79 -34
  64. package/packages/main/src/main.vue +3 -1
  65. package/packages/select/src/main.vue +20 -20
  66. package/packages/selector-panel/src/main.vue +27 -17
  67. package/packages/tabs/src/main.vue +20 -12
  68. package/packages/theme-chalk/lib/data-table-form.css +1 -1
  69. package/packages/theme-chalk/lib/index.css +1 -1
  70. package/packages/theme-chalk/src/data-table-form.scss +7 -6
  71. package/packages/theme-chalk/src/index.scss +0 -1
  72. package/packages/tree/src/main.vue +4 -0
  73. package/packages/tree-group/src/main.vue +7 -4
  74. package/packages/upload/src/main.vue +77 -20
  75. package/src/index.js +1 -4
  76. package/lib/ca-login.js +0 -326
  77. package/lib/theme-chalk/ca-login.css +0 -1
  78. package/packages/ca-login/index.js +0 -5
  79. package/packages/ca-login/src/main.vue +0 -62
  80. package/packages/theme-chalk/lib/ca-login.css +0 -1
  81. package/packages/theme-chalk/src/ca-login.scss +0 -4
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <div class="el-radio-group">
3
+ <label
4
+ class="el-radio"
5
+ v-for="(item, index) in options"
6
+ :key="index"
7
+ @change="handeChange(item)"
8
+ >
9
+ <input type="radio" :name="_name" :checked="isChecked(item)" />{{
10
+ labelKey ? item[labelKey] : item.name || item.label
11
+ }}
12
+ </label>
13
+ </div>
14
+ </template>
15
+ <script>
16
+ export default {
17
+ name: 'EoRadio',
18
+ props: {
19
+ field: {
20
+ required: true,
21
+ type: String
22
+ },
23
+ prop: String,
24
+ index: Number,
25
+ labelKey: String,
26
+ valueKey: String,
27
+ data: {
28
+ type: Object,
29
+ default() {
30
+ return {};
31
+ }
32
+ },
33
+ options: {
34
+ type: Array,
35
+ default() {
36
+ return [];
37
+ }
38
+ },
39
+ value: {}
40
+ },
41
+ data() {
42
+ return {
43
+ _value: this.value
44
+ };
45
+ },
46
+ computed: {
47
+ _name() {
48
+ if (this.index !== undefined) {
49
+ return `${this.field || this.prop}[${this.index}]`;
50
+ }
51
+ return this.field || this.prop;
52
+ }
53
+ },
54
+ methods: {
55
+ isChecked(res) {
56
+ return this.valueKey
57
+ ? this.value == res[this.valueKey]
58
+ : this.value == res.value;
59
+ },
60
+ handeChange(res) {
61
+ this.$emit('input', this.valueKey ? res[this.valueKey] : res.value);
62
+ }
63
+ }
64
+ };
65
+ </script>
@@ -29,8 +29,25 @@
29
29
  ></es-pagination>
30
30
  <template v-if="types && options">
31
31
  <template v-for="(item, index) in types">
32
+ <es-dialog
33
+ v-if="item.type === 'selector' && selectorShow"
34
+ :title="item.title || '公用选择器'"
35
+ :visible.sync="selectorShow"
36
+ :css="false"
37
+ :append-to-body="true"
38
+ :close-on-click-modal="false"
39
+ class="es-selector-dialog"
40
+ >
41
+ <es-selector-panel
42
+ v-model="selectorValue"
43
+ v-bind="exclAttribute({ data: item, attrs: 'type' })"
44
+ width="100%"
45
+ height="100%"
46
+ @confirm="handleConfirm"
47
+ ></es-selector-panel>
48
+ </es-dialog>
32
49
  <es-select
33
- v-if="item.type === 'select' && selectShow"
50
+ v-else-if="item.type === 'select' && selectShow"
34
51
  class="es-data-table-form-handle"
35
52
  v-bind="exclAttribute({ data: item, attrs: 'width' })"
36
53
  v-model="selectValue"
@@ -39,8 +56,8 @@
39
56
  :data="options[item.field || item.prop]"
40
57
  @hide-menu="selectShow = false"
41
58
  @change="
42
- value => {
43
- handleChange('date', value);
59
+ (value) => {
60
+ handleChange('select', value);
44
61
  }
45
62
  "
46
63
  ></es-select>
@@ -59,7 +76,7 @@
59
76
  item.type == 'monthrange' ||
60
77
  item.type == 'quarter' ||
61
78
  item.type == 'halfyear') &&
62
- dateShow
79
+ dateShow
63
80
  "
64
81
  class="es-data-table-form-handle"
65
82
  v-bind="exclAttribute({ data: item, attrs: 'width' })"
@@ -68,7 +85,7 @@
68
85
  :style="style"
69
86
  @hidePicker="dateShow = false"
70
87
  @change="
71
- value => {
88
+ (value) => {
72
89
  handleChange('date', value);
73
90
  }
74
91
  "
@@ -127,7 +144,9 @@ export default {
127
144
  field: null,
128
145
  style: {},
129
146
  dateValue: '',
130
- dateShow: false
147
+ dateShow: false,
148
+ selectorShow: false,
149
+ selectorValue: ''
131
150
  };
132
151
  },
133
152
  watch: {
@@ -160,6 +179,10 @@ export default {
160
179
  this.dateValue = value;
161
180
  this.dateShow = true;
162
181
  break;
182
+ case 'selector':
183
+ this.selectorValue = value;
184
+ this.selectorShow = true;
185
+ break;
163
186
  }
164
187
  },
165
188
  setStyle(res, data, field) {
@@ -183,6 +206,11 @@ export default {
183
206
  break;
184
207
  }
185
208
  },
209
+ handleConfirm(res) {
210
+ this.selectorValue = '';
211
+ this.selectorShow = false;
212
+ this.target[this.field] = res;
213
+ },
186
214
  sizeChange() {},
187
215
  currentChange() {},
188
216
  preClick() {},
@@ -6,9 +6,9 @@
6
6
  <template
7
7
  v-if="
8
8
  readonly ||
9
- items.canEdit === false ||
10
- (items.cantEditKey &&
11
- items.cantEditKey.indexOf(item.field || item.prop) > -1)
9
+ items.canEdit === false ||
10
+ (items.cantEditKey &&
11
+ items.cantEditKey.indexOf(item.field || item.prop) > -1)
12
12
  "
13
13
  >
14
14
  <expand-dom
@@ -28,17 +28,31 @@
28
28
  </div>
29
29
  </template>
30
30
  <template v-else>
31
+ <eo-radio
32
+ v-if="item.type === 'radio'"
33
+ v-bind="item"
34
+ v-model="items[item.field || item.prop]"
35
+ :index="indexs"
36
+ :options="options[item.field || item.prop]"
37
+ ></eo-radio>
38
+ <eo-checkbox
39
+ v-if="item.type === 'checkbox'"
40
+ v-bind="item"
41
+ v-model="items[item.field || item.prop]"
42
+ :index="indexs"
43
+ :options="options[item.field || item.prop]"
44
+ ></eo-checkbox>
31
45
  <textarea
32
- v-if="item.type === 'textarea'"
46
+ v-else-if="item.type === 'textarea'"
33
47
  class="el-textarea__inner"
34
48
  v-model.lazy="items[item.field]"
35
49
  @blur="
36
- event => {
50
+ (event) => {
37
51
  handleBlur({ item: item, event: event, data: items });
38
52
  }
39
53
  "
40
54
  @focus="
41
- event => {
55
+ (event) => {
42
56
  handleFocus({
43
57
  item: item,
44
58
  event: event,
@@ -47,7 +61,7 @@
47
61
  }
48
62
  "
49
63
  @change="
50
- value => {
64
+ (value) => {
51
65
  handleChange({
52
66
  name: item.field || item.prop,
53
67
  value: value,
@@ -58,27 +72,90 @@
58
72
  ></textarea>
59
73
  <div v-else class="es-input-box">
60
74
  <div
61
- v-if="item.type === 'select'"
62
- class="el-input__inner input-label"
75
+ v-if="item.type === 'select' || item.type === 'selector'"
76
+ class="el-input__inner es-select"
77
+ :class="{
78
+ 'es-select-multiple':
79
+ item.type === 'select'
80
+ ? item.multiple
81
+ : item.multiple !== false
82
+ }"
83
+ @click="
84
+ (event) => {
85
+ handeClick({ item: item, event: event, data: items });
86
+ }
87
+ "
63
88
  >
64
- {{ getLabels(items, item) }}
89
+ <template
90
+ v-if="
91
+ item.type === 'select'
92
+ ? item.multiple
93
+ : item.multiple !== false
94
+ "
95
+ >
96
+ <template v-if="item.collapseTags">
97
+ <span class="el-tag el-tag--info el-tag--small el-tag--light">
98
+ <span class="el-select__tags-text">{{
99
+ showLabel(getLabels(items, item, true)[0], item.labelKey)
100
+ }}</span>
101
+ <i
102
+ class="el-tag__close el-icon-close"
103
+ @click.stop="
104
+ handleDelete(
105
+ items,
106
+ item,
107
+ 0,
108
+ getLabels(items, item, true)[0]
109
+ )
110
+ "
111
+ ></i
112
+ ></span>
113
+ <span
114
+ class="el-tag el-tag--info el-tag--small el-tag--light"
115
+ v-if="getLabels(items, item, true).length > 1"
116
+ >
117
+ <span class="el-select__tags-text"
118
+ >+ {{ getLabels(items, item, true).length - 1 }}</span
119
+ ></span
120
+ >
121
+ </template>
122
+ <template v-else>
123
+ <span
124
+ class="el-tag el-tag--info el-tag--small el-tag--light"
125
+ v-for="(ele, x) in getLabels(items, item, true)"
126
+ :key="x"
127
+ >
128
+ <span class="el-select__tags-text">{{
129
+ showLabel(ele, item.labelKey)
130
+ }}</span>
131
+ <i
132
+ class="el-tag__close el-icon-close"
133
+ @click.stop="handleDelete(items, item, x, ele)"
134
+ ></i>
135
+ </span>
136
+ </template>
137
+ </template>
138
+ <template v-else>
139
+ {{ getLabels(items, item) }}
140
+ </template>
65
141
  </div>
66
142
  <input
143
+ v-else
67
144
  class="el-input__inner"
68
145
  :readonly="item.type && item.type !== 'text'"
69
146
  v-model.lazy="items[item.field]"
70
147
  @click="
71
- event => {
148
+ (event) => {
72
149
  handeClick({ item: item, event: event, data: items });
73
150
  }
74
151
  "
75
152
  @blur="
76
- event => {
153
+ (event) => {
77
154
  handleBlur({ item: item, event: event, data: items });
78
155
  }
79
156
  "
80
157
  @focus="
81
- event => {
158
+ (event) => {
82
159
  handleFocus({
83
160
  item: item,
84
161
  event: event,
@@ -87,7 +164,7 @@
87
164
  }
88
165
  "
89
166
  @change="
90
- value => {
167
+ (value) => {
91
168
  handleChange({
92
169
  name: item.field || item.prop,
93
170
  value: value,
@@ -105,10 +182,14 @@
105
182
  <script>
106
183
  // import rules from 'eoss-ui/src/utils/rules.js';
107
184
  import util from 'eoss-ui/src/utils/util';
185
+ import eoRadio from './radio.vue';
186
+ import eoCheckbox from './checkbox.vue';
108
187
  export default {
109
188
  name: 'EoTbody',
110
189
  inject: ['eoTable'],
111
190
  components: {
191
+ [eoRadio.name]: eoRadio,
192
+ [eoCheckbox.name]: eoCheckbox,
112
193
  expandDom: {
113
194
  functional: true,
114
195
  props: {
@@ -166,25 +247,34 @@ export default {
166
247
  : item.type;
167
248
  this.eoTable.changeData(type, data[item.field || item.prop]);
168
249
  },
169
- getLabels(data, col) {
250
+ getLabels(data, col, multiple) {
170
251
  let value = data[col.field || col.prop];
171
252
  if (col.label === false) {
172
253
  return Array.isArray(value) ? value.join(',') : value;
173
254
  }
174
255
  let option = this.options[col.field || col.prop];
175
256
  if (util.isObject(value)) {
257
+ if (multiple) {
258
+ return [value];
259
+ }
176
260
  return (
177
- data[col.field][col.labelKey] ||
178
- data[col.field]['name'] ||
179
- data[col.field]['label']
261
+ value[col.labelKey] ||
262
+ value['name'] ||
263
+ value['label'] ||
264
+ value['showname']
180
265
  );
181
266
  } else if (Array.isArray(value)) {
182
- let label = value.map(item => {
267
+ let label = value.map((item) => {
183
268
  if (util.isObject(item)) {
184
- return item[col.labelKey] || item.name || item.label;
269
+ if (multiple) {
270
+ return item;
271
+ }
272
+ return (
273
+ item[col.labelKey] || item.name || item.label || item.showname
274
+ );
185
275
  } else {
186
276
  if (option) {
187
- let str = this.getLabel(item, option, col);
277
+ let str = this.getLabel(item, option, col, multiple);
188
278
  if (str) {
189
279
  return str;
190
280
  }
@@ -193,26 +283,50 @@ export default {
193
283
  }
194
284
  }
195
285
  });
196
- return label.join(',');
286
+ return multiple ? label : label.join(',');
197
287
  } else {
198
288
  if (option) {
199
- return this.getLabel(value, option, col);
289
+ return this.getLabel(value, option, col, multiple);
200
290
  } else {
291
+ if (multiple) {
292
+ return [value];
293
+ }
201
294
  return value;
202
295
  }
203
296
  }
204
297
  },
205
- getLabel(value, option, col) {
298
+ getLabel(value, option, col, multiple) {
206
299
  for (let i = 0; i < option.length; i++) {
207
300
  let item = option[i];
208
301
  if (value == item) {
209
302
  return value;
210
303
  }
211
304
  if (value == item[col.valueKey] || value == item.value) {
212
- return item[col.labelKey] || item.name || item.label;
305
+ if (multiple) {
306
+ return item;
307
+ }
308
+ return item[col.labelKey] || item.name || item.label || item.showname;
213
309
  }
214
310
  }
215
311
  return '';
312
+ },
313
+ showLabel(res, labelKey) {
314
+ return typeof res === 'string'
315
+ ? res
316
+ : res[labelKey] || res.name || res.label || res.showname;
317
+ },
318
+ handleDelete(data, col, index, res) {
319
+ let value = data[col.field];
320
+ value = value.filter((item) => {
321
+ let target = util.isObject(item)
322
+ ? item[col.labelKey] || item.name || item.label || item.showname
323
+ : item;
324
+ let val = util.isObject(res)
325
+ ? res[col.labelKey] || res.name || res.label || res.showname
326
+ : res;
327
+ return target != val;
328
+ });
329
+ data[col.field] = value;
216
330
  }
217
331
  }
218
332
  };
@@ -15,6 +15,8 @@
15
15
  :append-to-body="appendToBody"
16
16
  :id="wujieName"
17
17
  :ref="wujieName"
18
+ @close="handleClosed"
19
+ @scale="handleScale"
18
20
  >
19
21
  <slot></slot>
20
22
  <template v-if="contents">
@@ -29,6 +31,7 @@
29
31
  attrs: ['events', 'visible', 'type', 'model']
30
32
  })
31
33
  "
34
+ :zoom="zoom"
32
35
  :model.sync="item.model"
33
36
  v-on="{ ...item.events }"
34
37
  ></es-form>
@@ -41,6 +44,7 @@
41
44
  attrs: ['events', 'visible', 'type']
42
45
  })
43
46
  "
47
+ :zoom="zoom"
44
48
  v-on="item.events"
45
49
  >
46
50
  <template v-if="item.dialog" slot="dialog">
@@ -84,6 +88,7 @@
84
88
  attrs: ['events', 'visible', 'type']
85
89
  })
86
90
  "
91
+ :zoom="zoom"
87
92
  v-on="{ ...item.events }"
88
93
  ></es-tree-group>
89
94
  <es-flow-group
@@ -107,6 +112,7 @@
107
112
  attrs: ['events', 'visible', 'type']
108
113
  })
109
114
  "
115
+ :zoom="zoom"
110
116
  v-on="{ ...item.events }"
111
117
  ></es-tabs>
112
118
  <es-dialog
@@ -157,6 +163,7 @@
157
163
  attrs: ['events', 'visible', 'type', 'model']
158
164
  })
159
165
  "
166
+ :zoom="zoom"
160
167
  :model.sync="contents.model"
161
168
  v-on="{ ...contents.events }"
162
169
  ></es-form>
@@ -168,6 +175,7 @@
168
175
  attrs: ['events', 'visible', 'type']
169
176
  })
170
177
  "
178
+ :zoom="zoom"
171
179
  v-on="contents.events"
172
180
  >
173
181
  <template v-if="contents.dialog" slot="dialog">
@@ -210,6 +218,7 @@
210
218
  attrs: ['events', 'visible', 'type']
211
219
  })
212
220
  "
221
+ :zoom="zoom"
213
222
  v-on="{ ...contents.events }"
214
223
  ></es-tree-group>
215
224
  <es-flow-group
@@ -220,6 +229,7 @@
220
229
  attrs: ['events', 'visible', 'type']
221
230
  })
222
231
  "
232
+ :zoom="zoom"
223
233
  v-on="{ ...contents.events }"
224
234
  ></es-flow-group>
225
235
  <es-tabs
@@ -231,6 +241,7 @@
231
241
  attrs: ['events', 'visible', 'type']
232
242
  })
233
243
  "
244
+ :zoom="zoom"
234
245
  v-on="{ ...contents.events }"
235
246
  ></es-tabs>
236
247
  <iframe
@@ -269,7 +280,8 @@ export default {
269
280
  inheritAttrs: false,
270
281
  provide() {
271
282
  return {
272
- esDialog: this
283
+ esDialog: this,
284
+ scale: this.zoom
273
285
  };
274
286
  },
275
287
  inject: {
@@ -330,7 +342,8 @@ export default {
330
342
  drag: {
331
343
  type: Boolean,
332
344
  default: true
333
- }
345
+ },
346
+ closeParent: Boolean
334
347
  },
335
348
  computed: {
336
349
  wujieName() {
@@ -362,7 +375,9 @@ export default {
362
375
  show: this.visible,
363
376
  defaultProps: {},
364
377
  wd: '',
365
- ht: ''
378
+ ht: '',
379
+ zoom: 1,
380
+ scale: {}
366
381
  };
367
382
  },
368
383
  created() {
@@ -430,6 +445,13 @@ export default {
430
445
  handleShow() {
431
446
  this.show = true;
432
447
  },
448
+ handleClosed(res) {
449
+ this.show = false;
450
+ this.$emit('close', res, this);
451
+ if (this.closeParent && this.esDialog) {
452
+ this.esDialog.handleClosed(res);
453
+ }
454
+ },
433
455
  handleClose(reload = true) {
434
456
  this.$refs[this.wujieName].hide();
435
457
  if (this.isReload !== false && reload !== 0 && reload !== false) {
@@ -441,6 +463,10 @@ export default {
441
463
  }
442
464
  }
443
465
  }
466
+ },
467
+ handleScale(res) {
468
+ this.zoom = res;
469
+ this.$emit('scale', res);
444
470
  }
445
471
  }
446
472
  };