eoss-ui 0.6.50 → 0.6.52

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 (218) hide show
  1. package/lib/eoss-ui.common.js +577 -530
  2. package/lib/flow-list.js +110 -87
  3. package/lib/flow.js +306 -282
  4. package/lib/index.js +1 -1
  5. package/lib/main.js +132 -132
  6. package/lib/qr-code.js +13 -13
  7. package/lib/upload.js +6 -6
  8. package/package.json +159 -159
  9. package/packages/button/index.js +5 -5
  10. package/packages/button/src/main.vue +418 -418
  11. package/packages/button-group/index.js +5 -5
  12. package/packages/button-group/src/main.vue +298 -298
  13. package/packages/calendar/index.js +5 -5
  14. package/packages/card/index.js +5 -5
  15. package/packages/card/src/main.vue +156 -156
  16. package/packages/cascader/index.js +5 -5
  17. package/packages/cascader/src/main.vue +168 -168
  18. package/packages/checkbox-group/index.js +5 -5
  19. package/packages/checkbox-group/src/main.vue +333 -333
  20. package/packages/clients/index.js +5 -5
  21. package/packages/clients/src/main.vue +144 -144
  22. package/packages/data-table/index.js +5 -5
  23. package/packages/data-table/src/children.vue +39 -39
  24. package/packages/data-table/src/column.vue +989 -989
  25. package/packages/data-table/src/main.vue +1822 -1822
  26. package/packages/data-table/src/sizer.vue +195 -195
  27. package/packages/data-table-form/index.js +5 -5
  28. package/packages/data-table-form/src/checkbox.vue +101 -101
  29. package/packages/data-table-form/src/colgroup.vue +17 -17
  30. package/packages/data-table-form/src/main.vue +181 -181
  31. package/packages/data-table-form/src/radio.vue +65 -65
  32. package/packages/data-table-form/src/table.vue +233 -233
  33. package/packages/data-table-form/src/tbody.vue +336 -336
  34. package/packages/data-table-form/src/thead.vue +68 -68
  35. package/packages/date-picker/index.js +5 -5
  36. package/packages/date-picker/src/main.vue +236 -236
  37. package/packages/dialog/index.js +5 -5
  38. package/packages/enable-drag/index.js +5 -5
  39. package/packages/enterprise/index.js +5 -5
  40. package/packages/enterprise/src/main.vue +66 -66
  41. package/packages/error-page/index.js +5 -5
  42. package/packages/error-page/src/main.vue +44 -44
  43. package/packages/flow/index.js +5 -5
  44. package/packages/flow/src/component/CommonOpinions.vue +345 -345
  45. package/packages/flow/src/component/CustomPreset.vue +322 -322
  46. package/packages/flow/src/component/FileList.vue +99 -99
  47. package/packages/flow/src/component/Preset.vue +255 -255
  48. package/packages/flow/src/component/SendMsg.vue +229 -229
  49. package/packages/flow/src/component/TimeLimit.vue +190 -190
  50. package/packages/flow/src/component/taskUnionExamine.vue +611 -611
  51. package/packages/flow/src/form.vue +121 -121
  52. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  53. package/packages/flow/src/main.vue +3131 -3108
  54. package/packages/flow/src/processForm.vue +1031 -1031
  55. package/packages/flow/src/processReject.vue +293 -293
  56. package/packages/flow/src/reset.vue +902 -902
  57. package/packages/flow/src/startTaskRead.vue +597 -597
  58. package/packages/flow/src/supervise.vue +138 -138
  59. package/packages/flow/src/table.vue +58 -58
  60. package/packages/flow-group/index.js +5 -5
  61. package/packages/flow-group/src/main.vue +688 -688
  62. package/packages/flow-list/index.js +5 -5
  63. package/packages/flow-list/src/main.vue +1434 -1411
  64. package/packages/form/index.js +5 -5
  65. package/packages/form/src/main.vue +3583 -3583
  66. package/packages/form/src/table.vue +1426 -1426
  67. package/packages/handle-user/index.js +5 -5
  68. package/packages/handle-user/src/main.vue +138 -138
  69. package/packages/handler/index.js +5 -5
  70. package/packages/handler/src/main.vue +493 -493
  71. package/packages/icon/index.js +5 -5
  72. package/packages/icon/src/main.vue +101 -101
  73. package/packages/icons/index.js +5 -5
  74. package/packages/icons/src/main.vue +81 -81
  75. package/packages/input/index.js +5 -5
  76. package/packages/input/src/main.vue +356 -356
  77. package/packages/input-number/index.js +5 -5
  78. package/packages/input-number/src/main.vue +106 -106
  79. package/packages/label/index.js +5 -5
  80. package/packages/label/src/main.vue +457 -457
  81. package/packages/layout/index.js +5 -5
  82. package/packages/layout/src/item.vue +152 -152
  83. package/packages/layout/src/main.vue +31 -31
  84. package/packages/login/index.js +5 -5
  85. package/packages/login/src/main.vue +1935 -1935
  86. package/packages/login/src/resetPassword.vue +562 -562
  87. package/packages/main/index.js +5 -5
  88. package/packages/main/src/default/message.vue +249 -249
  89. package/packages/main/src/default/notice.vue +157 -157
  90. package/packages/main/src/default/userinfo.vue +503 -503
  91. package/packages/main/src/public/online.vue +89 -89
  92. package/packages/main/src/public/search.vue +461 -461
  93. package/packages/main/src/public/settings.vue +221 -221
  94. package/packages/main/src/simplicity/apps.vue +388 -388
  95. package/packages/main/src/simplicity/avatar.vue +82 -82
  96. package/packages/main/src/simplicity/handler.vue +259 -259
  97. package/packages/main/src/simplicity/index.vue +2064 -2064
  98. package/packages/main/src/simplicity/lists.vue +84 -84
  99. package/packages/main/src/simplicity/menu-list.vue +128 -128
  100. package/packages/main/src/simplicity/message.vue +259 -259
  101. package/packages/main/src/simplicity/notice.vue +190 -190
  102. package/packages/main/src/simplicity/router-page.vue +45 -45
  103. package/packages/main/src/simplicity/sub-menu.vue +241 -241
  104. package/packages/main/src/simplicity/user.vue +257 -257
  105. package/packages/main/src/simplicity/userinfo.vue +312 -312
  106. package/packages/menu/index.js +5 -5
  107. package/packages/menu/src/main.vue +536 -536
  108. package/packages/nav/index.js +5 -5
  109. package/packages/nav/src/main.vue +351 -351
  110. package/packages/notify/index.js +5 -5
  111. package/packages/notify/src/main.vue +538 -538
  112. package/packages/page/index.js +5 -5
  113. package/packages/page/src/main.vue +167 -167
  114. package/packages/pagination/index.js +5 -5
  115. package/packages/pagination/src/main.vue +96 -96
  116. package/packages/player/index.js +5 -5
  117. package/packages/player/src/main.vue +194 -194
  118. package/packages/qr-code/index.js +5 -5
  119. package/packages/qr-code/src/main.vue +170 -170
  120. package/packages/radio-group/index.js +6 -6
  121. package/packages/radio-group/src/main.vue +319 -319
  122. package/packages/retrial-auth/index.js +5 -5
  123. package/packages/retrial-auth/src/main.vue +280 -280
  124. package/packages/select/index.js +5 -5
  125. package/packages/select/src/main.vue +775 -775
  126. package/packages/select-ganged/index.js +5 -5
  127. package/packages/select-ganged/src/main.vue +724 -724
  128. package/packages/selector/index.js +5 -5
  129. package/packages/selector/src/main.vue +687 -687
  130. package/packages/selector-panel/index.js +5 -5
  131. package/packages/selector-panel/src/main.vue +1027 -1027
  132. package/packages/selector-panel/src/selection.vue +177 -177
  133. package/packages/selector-panel/src/tree.vue +129 -129
  134. package/packages/sizer/index.js +5 -5
  135. package/packages/sizer/src/main.vue +254 -254
  136. package/packages/steps/index.js +5 -5
  137. package/packages/steps/src/main.vue +181 -181
  138. package/packages/switch/index.js +5 -5
  139. package/packages/switch/src/main.vue +154 -154
  140. package/packages/table-form/index.js +5 -5
  141. package/packages/tabs/index.js +5 -5
  142. package/packages/tabs/src/main.vue +788 -788
  143. package/packages/tabs-panel/index.js +5 -5
  144. package/packages/tabs-panel/src/main.vue +29 -29
  145. package/packages/theme-chalk/src/base.scss +260 -260
  146. package/packages/theme-chalk/src/button-group.scss +175 -175
  147. package/packages/theme-chalk/src/button.scss +24 -24
  148. package/packages/theme-chalk/src/calendar.scss +113 -113
  149. package/packages/theme-chalk/src/card.scss +99 -99
  150. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  151. package/packages/theme-chalk/src/clients.scss +87 -87
  152. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  153. package/packages/theme-chalk/src/data-table.scss +293 -293
  154. package/packages/theme-chalk/src/date-picker.scss +7 -7
  155. package/packages/theme-chalk/src/dialog.scss +77 -77
  156. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  157. package/packages/theme-chalk/src/enterprise.scss +5 -5
  158. package/packages/theme-chalk/src/error-page.scss +18 -18
  159. package/packages/theme-chalk/src/flow-group.scss +110 -110
  160. package/packages/theme-chalk/src/flow-list.scss +36 -36
  161. package/packages/theme-chalk/src/flow.scss +335 -335
  162. package/packages/theme-chalk/src/form.scss +496 -496
  163. package/packages/theme-chalk/src/handle-user.scss +40 -40
  164. package/packages/theme-chalk/src/handler.scss +143 -143
  165. package/packages/theme-chalk/src/icon.scss +1789 -1789
  166. package/packages/theme-chalk/src/icons.scss +99 -99
  167. package/packages/theme-chalk/src/input.scss +9 -9
  168. package/packages/theme-chalk/src/label.scss +24 -24
  169. package/packages/theme-chalk/src/layout.scss +46 -46
  170. package/packages/theme-chalk/src/login.scss +969 -969
  171. package/packages/theme-chalk/src/main.scss +663 -663
  172. package/packages/theme-chalk/src/menu.scss +222 -222
  173. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  174. package/packages/theme-chalk/src/nav.scss +111 -111
  175. package/packages/theme-chalk/src/page.scss +3 -3
  176. package/packages/theme-chalk/src/pagination.scss +29 -29
  177. package/packages/theme-chalk/src/player.scss +9 -9
  178. package/packages/theme-chalk/src/qr-code.scss +17 -17
  179. package/packages/theme-chalk/src/radio-group.scss +9 -9
  180. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  181. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  182. package/packages/theme-chalk/src/select.scss +8 -8
  183. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  184. package/packages/theme-chalk/src/selector.scss +91 -91
  185. package/packages/theme-chalk/src/simplicity.scss +1265 -1265
  186. package/packages/theme-chalk/src/sizer.scss +36 -36
  187. package/packages/theme-chalk/src/steps.scss +88 -88
  188. package/packages/theme-chalk/src/switch.scss +3 -3
  189. package/packages/theme-chalk/src/table-form.scss +1 -1
  190. package/packages/theme-chalk/src/tabs.scss +87 -87
  191. package/packages/theme-chalk/src/tips.scss +7 -7
  192. package/packages/theme-chalk/src/toolbar.scss +179 -179
  193. package/packages/theme-chalk/src/tree-group.scss +72 -72
  194. package/packages/theme-chalk/src/tree.scss +165 -165
  195. package/packages/theme-chalk/src/upload.scss +167 -167
  196. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  197. package/packages/tips/index.js +5 -5
  198. package/packages/tips/src/main.vue +141 -141
  199. package/packages/toolbar/index.js +5 -5
  200. package/packages/toolbar/src/main.vue +430 -430
  201. package/packages/tree/index.js +5 -5
  202. package/packages/tree-group/index.js +5 -5
  203. package/packages/upload/index.js +5 -5
  204. package/packages/upload/src/main.vue +1339 -1335
  205. package/packages/upload/src/picture.js +15 -15
  206. package/packages/wujie/index.js +5 -5
  207. package/packages/wujie/src/main.vue +145 -145
  208. package/packages/wxlogin/index.js +5 -5
  209. package/packages/wxlogin/src/main.vue +128 -128
  210. package/src/config/api.js +281 -281
  211. package/src/config/image.js +2 -2
  212. package/src/index.js +1 -1
  213. package/src/utils/bus.js +3 -3
  214. package/src/utils/date-util.js +312 -312
  215. package/src/utils/http.js +50 -50
  216. package/src/utils/rules.js +18 -18
  217. package/src/utils/store.js +21 -21
  218. package/src/utils/webSocket.js +107 -107
@@ -1,336 +1,336 @@
1
- <template>
2
- <tbody class="es-data-form-body">
3
- <tr v-for="(items, indexs) in data" :key="indexs">
4
- <td class="numbers" v-if="numbers">{{ indexs + 1 }}</td>
5
- <td v-for="(item, index) in cols" :align="item.align">
6
- <template
7
- v-if="
8
- readonly ||
9
- items.canEdit === false ||
10
- (items.cantEditKey &&
11
- items.cantEditKey.indexOf(item.field || item.prop) > -1)
12
- "
13
- >
14
- <expand-dom
15
- v-if="item.render"
16
- :key="index"
17
- :item="item"
18
- :row="items"
19
- :render="item.render"
20
- ></expand-dom>
21
- <div
22
- class="cell"
23
- :class="{ 'is-textarea': item.type === 'textarea' }"
24
- :key="index"
25
- v-else
26
- >
27
- {{ getLabels(items, item) }}
28
- </div>
29
- </template>
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>
45
- <textarea
46
- v-else-if="item.type === 'textarea'"
47
- class="el-textarea__inner"
48
- v-model.lazy="items[item.field]"
49
- @blur="
50
- (event) => {
51
- handleBlur({ item: item, event: event, data: items });
52
- }
53
- "
54
- @focus="
55
- (event) => {
56
- handleFocus({
57
- item: item,
58
- event: event,
59
- data: items
60
- });
61
- }
62
- "
63
- @change="
64
- (value) => {
65
- handleChange({
66
- name: item.field || item.prop,
67
- value: value,
68
- data: items
69
- });
70
- }
71
- "
72
- ></textarea>
73
- <div v-else class="es-input-box">
74
- <div
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
- "
88
- >
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>
141
- </div>
142
- <input
143
- v-else
144
- class="el-input__inner"
145
- :readonly="item.type && item.type !== 'text'"
146
- v-model.lazy="items[item.field]"
147
- @click="
148
- (event) => {
149
- handeClick({ item: item, event: event, data: items });
150
- }
151
- "
152
- @blur="
153
- (event) => {
154
- handleBlur({ item: item, event: event, data: items });
155
- }
156
- "
157
- @focus="
158
- (event) => {
159
- handleFocus({
160
- item: item,
161
- event: event,
162
- data: items
163
- });
164
- }
165
- "
166
- @change="
167
- (value) => {
168
- handleChange({
169
- name: item.field || item.prop,
170
- value: value,
171
- data: items
172
- });
173
- }
174
- "
175
- />
176
- </div>
177
- </template>
178
- </td>
179
- </tr>
180
- </tbody>
181
- </template>
182
- <script>
183
- // import rules from 'eoss-ui/src/utils/rules.js';
184
- import util from 'eoss-ui/src/utils/util';
185
- import eoRadio from './radio.vue';
186
- import eoCheckbox from './checkbox.vue';
187
- export default {
188
- name: 'EoTbody',
189
- inject: ['eoTable'],
190
- components: {
191
- [eoRadio.name]: eoRadio,
192
- [eoCheckbox.name]: eoCheckbox,
193
- expandDom: {
194
- functional: true,
195
- props: {
196
- item: Object,
197
- row: Object,
198
- render: [Function, String]
199
- },
200
- render: (h, ctx) => {
201
- if (typeof ctx.props.render == 'string') {
202
- try {
203
- return util.toFunction(ctx.props.render)(h, params);
204
- } catch (error) {
205
- throw error;
206
- }
207
- }
208
- return ctx.props.render(h, ctx.props.item, ctx.props.row);
209
- }
210
- }
211
- },
212
- props: {
213
- numbers: Boolean,
214
- readonly: Boolean,
215
- cols: Array,
216
- data: Array,
217
- options: Object
218
- },
219
- methods: {
220
- handleBlur(data) {
221
- this.$emit('formBlur', data);
222
- this.$emit('form-blur', data);
223
- },
224
- handleFocus(data) {
225
- this.$emit('formFocus', data);
226
- this.$emit('form-focus', data);
227
- },
228
- handleChange(data) {
229
- this.$emit('formChange', data);
230
- this.$emit('form-change', data);
231
- },
232
- handeClick(res) {
233
- let { item, data, event } = res;
234
- let style = event.target.getBoundingClientRect();
235
- this.eoTable.setStyle(style, data, item.field || item.prop);
236
- let type =
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
- ? 'date'
250
- : item.type;
251
- this.eoTable.changeData(type, data[item.field || item.prop]);
252
- },
253
- getLabels(data, col, multiple) {
254
- let value = data[col.field || col.prop];
255
- if (col.label === false) {
256
- return Array.isArray(value) ? value.join(',') : value;
257
- }
258
- let option = this.options[col.field || col.prop];
259
- if (util.isObject(value)) {
260
- if (multiple) {
261
- return [value];
262
- }
263
- return (
264
- value[col.labelKey] ||
265
- value['name'] ||
266
- value['label'] ||
267
- value['showname']
268
- );
269
- } else if (Array.isArray(value)) {
270
- let label = value.map((item) => {
271
- if (util.isObject(item)) {
272
- if (multiple) {
273
- return item;
274
- }
275
- return (
276
- item[col.labelKey] || item.name || item.label || item.showname
277
- );
278
- } else {
279
- if (option) {
280
- let str = this.getLabel(item, option, col, multiple);
281
- if (str) {
282
- return str;
283
- }
284
- } else {
285
- return item;
286
- }
287
- }
288
- });
289
- return multiple ? label : label.join(',');
290
- } else {
291
- if (option) {
292
- return this.getLabel(value, option, col, multiple);
293
- } else {
294
- if (multiple) {
295
- return [value];
296
- }
297
- return value;
298
- }
299
- }
300
- },
301
- getLabel(value, option, col, multiple) {
302
- for (let i = 0; i < option.length; i++) {
303
- let item = option[i];
304
- if (value == item) {
305
- return value;
306
- }
307
- if (value == item[col.valueKey] || value == item.value) {
308
- if (multiple) {
309
- return item;
310
- }
311
- return item[col.labelKey] || item.name || item.label || item.showname;
312
- }
313
- }
314
- return '';
315
- },
316
- showLabel(res, labelKey) {
317
- return typeof res === 'string'
318
- ? res
319
- : res[labelKey] || res.name || res.label || res.showname;
320
- },
321
- handleDelete(data, col, index, res) {
322
- let value = data[col.field];
323
- value = value.filter((item) => {
324
- let target = util.isObject(item)
325
- ? item[col.labelKey] || item.name || item.label || item.showname
326
- : item;
327
- let val = util.isObject(res)
328
- ? res[col.labelKey] || res.name || res.label || res.showname
329
- : res;
330
- return target != val;
331
- });
332
- data[col.field] = value;
333
- }
334
- }
335
- };
336
- </script>
1
+ <template>
2
+ <tbody class="es-data-form-body">
3
+ <tr v-for="(items, indexs) in data" :key="indexs">
4
+ <td class="numbers" v-if="numbers">{{ indexs + 1 }}</td>
5
+ <td v-for="(item, index) in cols" :align="item.align">
6
+ <template
7
+ v-if="
8
+ readonly ||
9
+ items.canEdit === false ||
10
+ (items.cantEditKey &&
11
+ items.cantEditKey.indexOf(item.field || item.prop) > -1)
12
+ "
13
+ >
14
+ <expand-dom
15
+ v-if="item.render"
16
+ :key="index"
17
+ :item="item"
18
+ :row="items"
19
+ :render="item.render"
20
+ ></expand-dom>
21
+ <div
22
+ class="cell"
23
+ :class="{ 'is-textarea': item.type === 'textarea' }"
24
+ :key="index"
25
+ v-else
26
+ >
27
+ {{ getLabels(items, item) }}
28
+ </div>
29
+ </template>
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>
45
+ <textarea
46
+ v-else-if="item.type === 'textarea'"
47
+ class="el-textarea__inner"
48
+ v-model.lazy="items[item.field]"
49
+ @blur="
50
+ (event) => {
51
+ handleBlur({ item: item, event: event, data: items });
52
+ }
53
+ "
54
+ @focus="
55
+ (event) => {
56
+ handleFocus({
57
+ item: item,
58
+ event: event,
59
+ data: items
60
+ });
61
+ }
62
+ "
63
+ @change="
64
+ (value) => {
65
+ handleChange({
66
+ name: item.field || item.prop,
67
+ value: value,
68
+ data: items
69
+ });
70
+ }
71
+ "
72
+ ></textarea>
73
+ <div v-else class="es-input-box">
74
+ <div
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
+ "
88
+ >
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>
141
+ </div>
142
+ <input
143
+ v-else
144
+ class="el-input__inner"
145
+ :readonly="item.type && item.type !== 'text'"
146
+ v-model.lazy="items[item.field]"
147
+ @click="
148
+ (event) => {
149
+ handeClick({ item: item, event: event, data: items });
150
+ }
151
+ "
152
+ @blur="
153
+ (event) => {
154
+ handleBlur({ item: item, event: event, data: items });
155
+ }
156
+ "
157
+ @focus="
158
+ (event) => {
159
+ handleFocus({
160
+ item: item,
161
+ event: event,
162
+ data: items
163
+ });
164
+ }
165
+ "
166
+ @change="
167
+ (value) => {
168
+ handleChange({
169
+ name: item.field || item.prop,
170
+ value: value,
171
+ data: items
172
+ });
173
+ }
174
+ "
175
+ />
176
+ </div>
177
+ </template>
178
+ </td>
179
+ </tr>
180
+ </tbody>
181
+ </template>
182
+ <script>
183
+ // import rules from 'eoss-ui/src/utils/rules.js';
184
+ import util from 'eoss-ui/src/utils/util';
185
+ import eoRadio from './radio.vue';
186
+ import eoCheckbox from './checkbox.vue';
187
+ export default {
188
+ name: 'EoTbody',
189
+ inject: ['eoTable'],
190
+ components: {
191
+ [eoRadio.name]: eoRadio,
192
+ [eoCheckbox.name]: eoCheckbox,
193
+ expandDom: {
194
+ functional: true,
195
+ props: {
196
+ item: Object,
197
+ row: Object,
198
+ render: [Function, String]
199
+ },
200
+ render: (h, ctx) => {
201
+ if (typeof ctx.props.render == 'string') {
202
+ try {
203
+ return util.toFunction(ctx.props.render)(h, params);
204
+ } catch (error) {
205
+ throw error;
206
+ }
207
+ }
208
+ return ctx.props.render(h, ctx.props.item, ctx.props.row);
209
+ }
210
+ }
211
+ },
212
+ props: {
213
+ numbers: Boolean,
214
+ readonly: Boolean,
215
+ cols: Array,
216
+ data: Array,
217
+ options: Object
218
+ },
219
+ methods: {
220
+ handleBlur(data) {
221
+ this.$emit('formBlur', data);
222
+ this.$emit('form-blur', data);
223
+ },
224
+ handleFocus(data) {
225
+ this.$emit('formFocus', data);
226
+ this.$emit('form-focus', data);
227
+ },
228
+ handleChange(data) {
229
+ this.$emit('formChange', data);
230
+ this.$emit('form-change', data);
231
+ },
232
+ handeClick(res) {
233
+ let { item, data, event } = res;
234
+ let style = event.target.getBoundingClientRect();
235
+ this.eoTable.setStyle(style, data, item.field || item.prop);
236
+ let type =
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
+ ? 'date'
250
+ : item.type;
251
+ this.eoTable.changeData(type, data[item.field || item.prop]);
252
+ },
253
+ getLabels(data, col, multiple) {
254
+ let value = data[col.field || col.prop];
255
+ if (col.label === false) {
256
+ return Array.isArray(value) ? value.join(',') : value;
257
+ }
258
+ let option = this.options[col.field || col.prop];
259
+ if (util.isObject(value)) {
260
+ if (multiple) {
261
+ return [value];
262
+ }
263
+ return (
264
+ value[col.labelKey] ||
265
+ value['name'] ||
266
+ value['label'] ||
267
+ value['showname']
268
+ );
269
+ } else if (Array.isArray(value)) {
270
+ let label = value.map((item) => {
271
+ if (util.isObject(item)) {
272
+ if (multiple) {
273
+ return item;
274
+ }
275
+ return (
276
+ item[col.labelKey] || item.name || item.label || item.showname
277
+ );
278
+ } else {
279
+ if (option) {
280
+ let str = this.getLabel(item, option, col, multiple);
281
+ if (str) {
282
+ return str;
283
+ }
284
+ } else {
285
+ return item;
286
+ }
287
+ }
288
+ });
289
+ return multiple ? label : label.join(',');
290
+ } else {
291
+ if (option) {
292
+ return this.getLabel(value, option, col, multiple);
293
+ } else {
294
+ if (multiple) {
295
+ return [value];
296
+ }
297
+ return value;
298
+ }
299
+ }
300
+ },
301
+ getLabel(value, option, col, multiple) {
302
+ for (let i = 0; i < option.length; i++) {
303
+ let item = option[i];
304
+ if (value == item) {
305
+ return value;
306
+ }
307
+ if (value == item[col.valueKey] || value == item.value) {
308
+ if (multiple) {
309
+ return item;
310
+ }
311
+ return item[col.labelKey] || item.name || item.label || item.showname;
312
+ }
313
+ }
314
+ return '';
315
+ },
316
+ showLabel(res, labelKey) {
317
+ return typeof res === 'string'
318
+ ? res
319
+ : res[labelKey] || res.name || res.label || res.showname;
320
+ },
321
+ handleDelete(data, col, index, res) {
322
+ let value = data[col.field];
323
+ value = value.filter((item) => {
324
+ let target = util.isObject(item)
325
+ ? item[col.labelKey] || item.name || item.label || item.showname
326
+ : item;
327
+ let val = util.isObject(res)
328
+ ? res[col.labelKey] || res.name || res.label || res.showname
329
+ : res;
330
+ return target != val;
331
+ });
332
+ data[col.field] = value;
333
+ }
334
+ }
335
+ };
336
+ </script>