eoss-ui 0.4.17 → 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 (92) 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 +144 -105
  11. package/lib/enterprise.js +2 -2
  12. package/lib/eoss-ui.common.js +1518 -671
  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 +187 -173
  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 +114 -113
  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 +97 -95
  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/flow.css +1 -1
  47. package/lib/theme-chalk/index.css +1 -1
  48. package/lib/theme-chalk/tree.css +1 -1
  49. package/lib/theme-chalk/upload.css +1 -1
  50. package/lib/tips.js +91 -91
  51. package/lib/toolbar.js +2 -2
  52. package/lib/tree-group.js +105 -95
  53. package/lib/tree.js +104 -94
  54. package/lib/upload.js +175 -125
  55. package/lib/wujie.js +90 -90
  56. package/lib/wxlogin.js +90 -90
  57. package/package.json +2 -2
  58. package/packages/data-table-form/src/checkbox.vue +101 -0
  59. package/packages/data-table-form/src/radio.vue +65 -0
  60. package/packages/data-table-form/src/table.vue +34 -6
  61. package/packages/data-table-form/src/tbody.vue +139 -25
  62. package/packages/dialog/src/main.vue +35 -4
  63. package/packages/flow/src/main.vue +103 -87
  64. package/packages/flow/src/selectUser.vue +13 -12
  65. package/packages/flow-group/src/main.vue +22 -13
  66. package/packages/form/src/main.vue +563 -470
  67. package/packages/login/src/main.vue +79 -34
  68. package/packages/main/src/main.vue +6 -6
  69. package/packages/select/src/main.vue +20 -20
  70. package/packages/selector/src/main.vue +9 -9
  71. package/packages/selector-panel/src/main.vue +27 -17
  72. package/packages/tabs/src/main.vue +20 -12
  73. package/packages/theme-chalk/lib/data-table-form.css +1 -1
  74. package/packages/theme-chalk/lib/flow.css +1 -1
  75. package/packages/theme-chalk/lib/index.css +1 -1
  76. package/packages/theme-chalk/lib/tree.css +1 -1
  77. package/packages/theme-chalk/lib/upload.css +1 -1
  78. package/packages/theme-chalk/src/data-table-form.scss +7 -6
  79. package/packages/theme-chalk/src/flow.scss +10 -20
  80. package/packages/theme-chalk/src/index.scss +0 -1
  81. package/packages/theme-chalk/src/tree.scss +1 -1
  82. package/packages/theme-chalk/src/upload.scss +10 -3
  83. package/packages/tree/src/main.vue +20 -13
  84. package/packages/tree-group/src/main.vue +7 -4
  85. package/packages/upload/src/main.vue +77 -20
  86. package/src/index.js +1 -4
  87. package/lib/ca-login.js +0 -326
  88. package/lib/theme-chalk/ca-login.css +0 -1
  89. package/packages/ca-login/index.js +0 -5
  90. package/packages/ca-login/src/main.vue +0 -62
  91. package/packages/theme-chalk/lib/ca-login.css +0 -1
  92. 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
  };
@@ -8,12 +8,15 @@
8
8
  :close-on-click-modal="shadeClose"
9
9
  :fullscreen="full"
10
10
  :drag="drag"
11
+ :modal-append-to-body="modalAppendToBody"
11
12
  v-bind="$attrs"
12
13
  v-on="$listeners"
13
14
  :class="{ 'is-middle': middle }"
14
15
  :append-to-body="appendToBody"
15
16
  :id="wujieName"
16
17
  :ref="wujieName"
18
+ @close="handleClosed"
19
+ @scale="handleScale"
17
20
  >
18
21
  <slot></slot>
19
22
  <template v-if="contents">
@@ -28,6 +31,7 @@
28
31
  attrs: ['events', 'visible', 'type', 'model']
29
32
  })
30
33
  "
34
+ :zoom="zoom"
31
35
  :model.sync="item.model"
32
36
  v-on="{ ...item.events }"
33
37
  ></es-form>
@@ -40,6 +44,7 @@
40
44
  attrs: ['events', 'visible', 'type']
41
45
  })
42
46
  "
47
+ :zoom="zoom"
43
48
  v-on="item.events"
44
49
  >
45
50
  <template v-if="item.dialog" slot="dialog">
@@ -83,6 +88,7 @@
83
88
  attrs: ['events', 'visible', 'type']
84
89
  })
85
90
  "
91
+ :zoom="zoom"
86
92
  v-on="{ ...item.events }"
87
93
  ></es-tree-group>
88
94
  <es-flow-group
@@ -106,6 +112,7 @@
106
112
  attrs: ['events', 'visible', 'type']
107
113
  })
108
114
  "
115
+ :zoom="zoom"
109
116
  v-on="{ ...item.events }"
110
117
  ></es-tabs>
111
118
  <es-dialog
@@ -156,6 +163,7 @@
156
163
  attrs: ['events', 'visible', 'type', 'model']
157
164
  })
158
165
  "
166
+ :zoom="zoom"
159
167
  :model.sync="contents.model"
160
168
  v-on="{ ...contents.events }"
161
169
  ></es-form>
@@ -167,6 +175,7 @@
167
175
  attrs: ['events', 'visible', 'type']
168
176
  })
169
177
  "
178
+ :zoom="zoom"
170
179
  v-on="contents.events"
171
180
  >
172
181
  <template v-if="contents.dialog" slot="dialog">
@@ -209,6 +218,7 @@
209
218
  attrs: ['events', 'visible', 'type']
210
219
  })
211
220
  "
221
+ :zoom="zoom"
212
222
  v-on="{ ...contents.events }"
213
223
  ></es-tree-group>
214
224
  <es-flow-group
@@ -219,6 +229,7 @@
219
229
  attrs: ['events', 'visible', 'type']
220
230
  })
221
231
  "
232
+ :zoom="zoom"
222
233
  v-on="{ ...contents.events }"
223
234
  ></es-flow-group>
224
235
  <es-tabs
@@ -230,6 +241,7 @@
230
241
  attrs: ['events', 'visible', 'type']
231
242
  })
232
243
  "
244
+ :zoom="zoom"
233
245
  v-on="{ ...contents.events }"
234
246
  ></es-tabs>
235
247
  <iframe
@@ -268,7 +280,8 @@ export default {
268
280
  inheritAttrs: false,
269
281
  provide() {
270
282
  return {
271
- esDialog: this
283
+ esDialog: this,
284
+ scale: this.zoom
272
285
  };
273
286
  },
274
287
  inject: {
@@ -307,6 +320,10 @@ export default {
307
320
  type: Boolean,
308
321
  default: true
309
322
  },
323
+ modalAppendToBody: {
324
+ type: Boolean,
325
+ default: true
326
+ },
310
327
  appendToBody: {
311
328
  type: [Boolean, String],
312
329
  default: true
@@ -325,7 +342,8 @@ export default {
325
342
  drag: {
326
343
  type: Boolean,
327
344
  default: true
328
- }
345
+ },
346
+ closeParent: Boolean
329
347
  },
330
348
  computed: {
331
349
  wujieName() {
@@ -357,7 +375,9 @@ export default {
357
375
  show: this.visible,
358
376
  defaultProps: {},
359
377
  wd: '',
360
- ht: ''
378
+ ht: '',
379
+ zoom: 1,
380
+ scale: {}
361
381
  };
362
382
  },
363
383
  created() {
@@ -376,7 +396,7 @@ export default {
376
396
  this.ht = this.height ? this.height : this.sizes[this.size]['height'];
377
397
  }
378
398
  if (this.busEvent) {
379
- mbus.$on(this.busEvent, async res => {
399
+ mbus.$on(this.busEvent, async (res) => {
380
400
  this.titles = res.title;
381
401
  this.handler && (await this.handler(res, this));
382
402
  this.handleShow();
@@ -425,6 +445,13 @@ export default {
425
445
  handleShow() {
426
446
  this.show = true;
427
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
+ },
428
455
  handleClose(reload = true) {
429
456
  this.$refs[this.wujieName].hide();
430
457
  if (this.isReload !== false && reload !== 0 && reload !== false) {
@@ -436,6 +463,10 @@ export default {
436
463
  }
437
464
  }
438
465
  }
466
+ },
467
+ handleScale(res) {
468
+ this.zoom = res;
469
+ this.$emit('scale', res);
439
470
  }
440
471
  }
441
472
  };