eoss-ui 0.7.50 → 0.7.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 (270) hide show
  1. package/lib/calogin.js +233 -233
  2. package/lib/eoss-ui.common.js +749 -749
  3. package/lib/flow-list.js +81 -81
  4. package/lib/flow.js +280 -280
  5. package/lib/icons.js +1 -1
  6. package/lib/index.js +1 -1
  7. package/lib/main.js +140 -140
  8. package/lib/qr-code.js +13 -13
  9. package/lib/theme-chalk/base.css +1 -1
  10. package/lib/theme-chalk/data-table.css +1 -1
  11. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  12. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  13. package/lib/theme-chalk/icon.css +1 -1
  14. package/lib/theme-chalk/index.css +1 -1
  15. package/lib/theme-chalk/main.css +1 -1
  16. package/lib/theme-chalk/menu.css +1 -1
  17. package/lib/theme-chalk/simplicity.css +1 -1
  18. package/lib/theme-chalk/sizer.css +1 -1
  19. package/lib/theme-chalk/upload.css +1 -1
  20. package/package.json +160 -160
  21. package/packages/.DS_Store +0 -0
  22. package/packages/button/index.js +5 -5
  23. package/packages/button/src/main.vue +418 -418
  24. package/packages/button-group/index.js +5 -5
  25. package/packages/button-group/src/main.vue +346 -346
  26. package/packages/calendar/index.js +5 -5
  27. package/packages/calogin/.DS_Store +0 -0
  28. package/packages/calogin/index.js +5 -5
  29. package/packages/calogin/src/main.vue +412 -412
  30. package/packages/calogin/src/plugin.js +915 -915
  31. package/packages/card/index.js +5 -5
  32. package/packages/card/src/main.vue +156 -156
  33. package/packages/cascader/index.js +5 -5
  34. package/packages/cascader/src/main.vue +168 -168
  35. package/packages/checkbox-group/index.js +5 -5
  36. package/packages/checkbox-group/src/main.vue +333 -333
  37. package/packages/clients/index.js +5 -5
  38. package/packages/clients/src/main.vue +151 -151
  39. package/packages/data-table/index.js +5 -5
  40. package/packages/data-table/src/children.vue +39 -39
  41. package/packages/data-table/src/column.vue +992 -992
  42. package/packages/data-table/src/main.vue +1840 -1840
  43. package/packages/data-table/src/sizer.vue +195 -195
  44. package/packages/data-table-form/index.js +5 -5
  45. package/packages/data-table-form/src/checkbox.vue +101 -101
  46. package/packages/data-table-form/src/colgroup.vue +17 -17
  47. package/packages/data-table-form/src/main.vue +181 -181
  48. package/packages/data-table-form/src/radio.vue +65 -65
  49. package/packages/data-table-form/src/table.vue +233 -233
  50. package/packages/data-table-form/src/tbody.vue +336 -336
  51. package/packages/data-table-form/src/thead.vue +68 -68
  52. package/packages/date-picker/.DS_Store +0 -0
  53. package/packages/date-picker/index.js +5 -5
  54. package/packages/date-picker/src/.DS_Store +0 -0
  55. package/packages/date-picker/src/main.vue +236 -236
  56. package/packages/dialog/.DS_Store +0 -0
  57. package/packages/dialog/index.js +5 -5
  58. package/packages/enable-drag/index.js +5 -5
  59. package/packages/enterprise/index.js +5 -5
  60. package/packages/enterprise/src/main.vue +66 -66
  61. package/packages/error-page/index.js +5 -5
  62. package/packages/error-page/src/main.vue +44 -44
  63. package/packages/flow/.DS_Store +0 -0
  64. package/packages/flow/index.js +5 -5
  65. package/packages/flow/src/.DS_Store +0 -0
  66. package/packages/flow/src/component/Circulate.vue +413 -413
  67. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  68. package/packages/flow/src/component/CustomPreset.vue +322 -322
  69. package/packages/flow/src/component/FileList.vue +97 -97
  70. package/packages/flow/src/component/FreeCirculation.vue +240 -240
  71. package/packages/flow/src/component/Preset.vue +255 -255
  72. package/packages/flow/src/component/SendMsg.vue +242 -242
  73. package/packages/flow/src/component/TimeLimit.vue +190 -190
  74. package/packages/flow/src/component/taskUnionExamine.vue +756 -756
  75. package/packages/flow/src/form.vue +121 -121
  76. package/packages/flow/src/freeStartFlow.vue +2846 -2846
  77. package/packages/flow/src/main.vue +3879 -3879
  78. package/packages/flow/src/processForm.vue +1365 -1365
  79. package/packages/flow/src/processReject.vue +309 -309
  80. package/packages/flow/src/reset.vue +942 -942
  81. package/packages/flow/src/startTaskRead.vue +692 -692
  82. package/packages/flow/src/supervise.vue +159 -159
  83. package/packages/flow/src/table.vue +58 -58
  84. package/packages/flow-group/index.js +5 -5
  85. package/packages/flow-group/src/main.vue +717 -717
  86. package/packages/flow-list/.DS_Store +0 -0
  87. package/packages/flow-list/index.js +5 -5
  88. package/packages/flow-list/src/main.vue +1787 -1787
  89. package/packages/form/.DS_Store +0 -0
  90. package/packages/form/index.js +5 -5
  91. package/packages/form/src/main.vue +3901 -3901
  92. package/packages/form/src/table.vue +1512 -1512
  93. package/packages/handle-user/index.js +5 -5
  94. package/packages/handle-user/src/main.vue +137 -137
  95. package/packages/handler/index.js +5 -5
  96. package/packages/handler/src/main.vue +496 -496
  97. package/packages/icon/.DS_Store +0 -0
  98. package/packages/icon/index.js +5 -5
  99. package/packages/icon/src/main.vue +104 -104
  100. package/packages/icons/index.js +5 -5
  101. package/packages/icons/src/icon.json +1 -1
  102. package/packages/icons/src/main.vue +81 -81
  103. package/packages/input/index.js +5 -5
  104. package/packages/input/src/main.vue +356 -356
  105. package/packages/input-number/index.js +5 -5
  106. package/packages/input-number/src/main.vue +106 -106
  107. package/packages/label/index.js +5 -5
  108. package/packages/label/src/main.vue +457 -457
  109. package/packages/layout/index.js +5 -5
  110. package/packages/layout/src/item.vue +152 -152
  111. package/packages/layout/src/main.vue +31 -31
  112. package/packages/login/.DS_Store +0 -0
  113. package/packages/login/index.js +5 -5
  114. package/packages/login/src/main.vue +2082 -2082
  115. package/packages/login/src/resetPassword.vue +557 -557
  116. package/packages/main/.DS_Store +0 -0
  117. package/packages/main/index.js +5 -5
  118. package/packages/main/src/.DS_Store +0 -0
  119. package/packages/main/src/default/message.vue +249 -249
  120. package/packages/main/src/default/notice.vue +157 -157
  121. package/packages/main/src/default/userinfo.vue +503 -503
  122. package/packages/main/src/public/online.vue +89 -89
  123. package/packages/main/src/public/search.vue +464 -464
  124. package/packages/main/src/public/settings.vue +227 -227
  125. package/packages/main/src/simplicity/apps.vue +388 -388
  126. package/packages/main/src/simplicity/avatar.vue +82 -82
  127. package/packages/main/src/simplicity/handler.vue +160 -160
  128. package/packages/main/src/simplicity/index.vue +2277 -2277
  129. package/packages/main/src/simplicity/lists.vue +84 -84
  130. package/packages/main/src/simplicity/menu-list.vue +135 -135
  131. package/packages/main/src/simplicity/message.vue +293 -293
  132. package/packages/main/src/simplicity/notice.vue +222 -222
  133. package/packages/main/src/simplicity/router-page.vue +45 -45
  134. package/packages/main/src/simplicity/sub-menu.vue +274 -274
  135. package/packages/main/src/simplicity/user.vue +259 -259
  136. package/packages/main/src/simplicity/userinfo.vue +401 -401
  137. package/packages/menu/.DS_Store +0 -0
  138. package/packages/menu/index.js +5 -5
  139. package/packages/menu/src/main.vue +595 -595
  140. package/packages/nav/index.js +5 -5
  141. package/packages/nav/src/main.vue +351 -351
  142. package/packages/notify/index.js +5 -5
  143. package/packages/notify/src/main.vue +538 -538
  144. package/packages/page/index.js +5 -5
  145. package/packages/page/src/main.vue +167 -167
  146. package/packages/pagination/index.js +5 -5
  147. package/packages/pagination/src/main.vue +96 -96
  148. package/packages/player/index.js +5 -5
  149. package/packages/player/src/main.vue +194 -194
  150. package/packages/qr-code/index.js +5 -5
  151. package/packages/qr-code/src/main.vue +170 -170
  152. package/packages/radio-group/index.js +6 -6
  153. package/packages/radio-group/src/main.vue +319 -319
  154. package/packages/retrial-auth/index.js +5 -5
  155. package/packages/retrial-auth/src/main.vue +280 -280
  156. package/packages/select/.DS_Store +0 -0
  157. package/packages/select/index.js +5 -5
  158. package/packages/select/src/main.vue +782 -782
  159. package/packages/select-ganged/index.js +5 -5
  160. package/packages/select-ganged/src/main.vue +724 -724
  161. package/packages/selector/.DS_Store +0 -0
  162. package/packages/selector/index.js +5 -5
  163. package/packages/selector/src/main.vue +761 -761
  164. package/packages/selector-panel/.DS_Store +0 -0
  165. package/packages/selector-panel/index.js +5 -5
  166. package/packages/selector-panel/src/main.vue +1027 -1027
  167. package/packages/selector-panel/src/selection.vue +170 -170
  168. package/packages/selector-panel/src/tree.vue +129 -129
  169. package/packages/sizer/index.js +5 -5
  170. package/packages/sizer/src/main.vue +254 -254
  171. package/packages/steps/index.js +5 -5
  172. package/packages/steps/src/main.vue +181 -181
  173. package/packages/switch/index.js +5 -5
  174. package/packages/switch/src/main.vue +170 -170
  175. package/packages/table-form/index.js +5 -5
  176. package/packages/tabs/index.js +5 -5
  177. package/packages/tabs/src/main.vue +788 -788
  178. package/packages/tabs-panel/index.js +5 -5
  179. package/packages/tabs-panel/src/main.vue +29 -29
  180. package/packages/theme-chalk/lib/base.css +1 -1
  181. package/packages/theme-chalk/lib/data-table.css +1 -1
  182. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  183. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  184. package/packages/theme-chalk/lib/icon.css +1 -1
  185. package/packages/theme-chalk/lib/index.css +1 -1
  186. package/packages/theme-chalk/lib/main.css +1 -1
  187. package/packages/theme-chalk/lib/menu.css +1 -1
  188. package/packages/theme-chalk/lib/simplicity.css +1 -1
  189. package/packages/theme-chalk/lib/sizer.css +1 -1
  190. package/packages/theme-chalk/lib/upload.css +1 -1
  191. package/packages/theme-chalk/src/.DS_Store +0 -0
  192. package/packages/theme-chalk/src/base.scss +261 -261
  193. package/packages/theme-chalk/src/button-group.scss +176 -176
  194. package/packages/theme-chalk/src/button.scss +24 -24
  195. package/packages/theme-chalk/src/calendar.scss +113 -113
  196. package/packages/theme-chalk/src/card.scss +99 -99
  197. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  198. package/packages/theme-chalk/src/clients.scss +87 -87
  199. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  200. package/packages/theme-chalk/src/data-table.scss +297 -293
  201. package/packages/theme-chalk/src/date-picker.scss +7 -7
  202. package/packages/theme-chalk/src/dialog.scss +77 -77
  203. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  204. package/packages/theme-chalk/src/enterprise.scss +5 -5
  205. package/packages/theme-chalk/src/error-page.scss +18 -18
  206. package/packages/theme-chalk/src/flow-group.scss +110 -110
  207. package/packages/theme-chalk/src/flow-list.scss +39 -39
  208. package/packages/theme-chalk/src/flow.scss +351 -351
  209. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  210. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  211. package/packages/theme-chalk/src/form.scss +501 -501
  212. package/packages/theme-chalk/src/handle-user.scss +40 -40
  213. package/packages/theme-chalk/src/handler.scss +148 -148
  214. package/packages/theme-chalk/src/icon.scss +1456 -1436
  215. package/packages/theme-chalk/src/icons.scss +99 -99
  216. package/packages/theme-chalk/src/input.scss +9 -9
  217. package/packages/theme-chalk/src/label.scss +24 -24
  218. package/packages/theme-chalk/src/layout.scss +46 -46
  219. package/packages/theme-chalk/src/login.scss +1006 -1006
  220. package/packages/theme-chalk/src/main.scss +663 -663
  221. package/packages/theme-chalk/src/menu.scss +224 -224
  222. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  223. package/packages/theme-chalk/src/nav.scss +111 -111
  224. package/packages/theme-chalk/src/page.scss +3 -3
  225. package/packages/theme-chalk/src/pagination.scss +29 -29
  226. package/packages/theme-chalk/src/player.scss +9 -9
  227. package/packages/theme-chalk/src/qr-code.scss +17 -17
  228. package/packages/theme-chalk/src/radio-group.scss +9 -9
  229. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  230. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  231. package/packages/theme-chalk/src/select.scss +8 -8
  232. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  233. package/packages/theme-chalk/src/selector.scss +114 -114
  234. package/packages/theme-chalk/src/simplicity.scss +1395 -1381
  235. package/packages/theme-chalk/src/sizer.scss +36 -36
  236. package/packages/theme-chalk/src/steps.scss +88 -88
  237. package/packages/theme-chalk/src/switch.scss +3 -3
  238. package/packages/theme-chalk/src/table-form.scss +1 -1
  239. package/packages/theme-chalk/src/tabs.scss +87 -87
  240. package/packages/theme-chalk/src/tips.scss +7 -7
  241. package/packages/theme-chalk/src/toolbar.scss +179 -179
  242. package/packages/theme-chalk/src/tree-group.scss +72 -72
  243. package/packages/theme-chalk/src/tree.scss +165 -165
  244. package/packages/theme-chalk/src/upload.scss +172 -172
  245. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  246. package/packages/tips/index.js +5 -5
  247. package/packages/tips/src/main.vue +141 -141
  248. package/packages/toolbar/index.js +5 -5
  249. package/packages/toolbar/src/main.vue +430 -430
  250. package/packages/tree/index.js +5 -5
  251. package/packages/tree-group/index.js +5 -5
  252. package/packages/upload/.DS_Store +0 -0
  253. package/packages/upload/index.js +5 -5
  254. package/packages/upload/src/main.vue +1344 -1344
  255. package/packages/upload/src/picture.js +15 -15
  256. package/packages/wujie/index.js +5 -5
  257. package/packages/wujie/src/main.vue +145 -145
  258. package/packages/wxlogin/index.js +5 -5
  259. package/packages/wxlogin/src/main.vue +128 -128
  260. package/src/.DS_Store +0 -0
  261. package/src/config/api.js +315 -315
  262. package/src/config/image.js +2 -2
  263. package/src/index.js +163 -163
  264. package/src/utils/.DS_Store +0 -0
  265. package/src/utils/bus.js +3 -3
  266. package/src/utils/date-util.js +312 -312
  267. package/src/utils/http.js +50 -50
  268. package/src/utils/rules.js +18 -18
  269. package/src/utils/store.js +21 -21
  270. package/src/utils/webSocket.js +107 -107
@@ -1,1512 +1,1512 @@
1
- <template>
2
- <div>
3
- <table
4
- class="es-table-form"
5
- border="1"
6
- cellspacing="0"
7
- cellpadding="0"
8
- v-if="content.length"
9
- >
10
- <colgroup>
11
- <template v-for="(item, index) in cols">
12
- <col :width="labelWidth" :key="'label' + index" />
13
- <col :width="item" :key="index" />
14
- </template>
15
- </colgroup>
16
- <caption v-if="caption" class="es-table-caption">
17
- {{
18
- caption
19
- }}
20
- </caption>
21
- <tbody>
22
- <tr v-for="(items, indexs) in content" :key="indexs">
23
- <template v-for="(item, index) in items">
24
- <td
25
- v-if="item.type === 'caption'"
26
- :colspan="col * 2"
27
- :key="index"
28
- class="es-table-td-caption"
29
- >
30
- <div class="es-table-caption">{{ item.text }}</div>
31
- </td>
32
- <td
33
- v-else-if="item.type === 'table'"
34
- :colspan="col * 2"
35
- :key="index"
36
- class="es-table-form-data"
37
- >
38
- <es-data-table-form
39
- v-if="item.lazy"
40
- class="es-form-table-data"
41
- :data="model[item.name]"
42
- :full="false"
43
- v-bind="item"
44
- :readonly="
45
- item.readonly !== undefined ? item.readonly : readonly
46
- "
47
- @blur="
48
- (val, data) => {
49
- handleBlur(item, val, data);
50
- }
51
- "
52
- @focus="
53
- (val, data) => {
54
- handleFocus(item, val, data);
55
- }
56
- "
57
- @edit="
58
- (val, data) => {
59
- handleChange(item, val, data);
60
- }
61
- "
62
- @btnClick="handleClick"
63
- @dataChange="handleDataChange"
64
- >
65
- </es-data-table-form>
66
- <es-data-table
67
- v-else
68
- class="es-form-item-table"
69
- ref="dataTable"
70
- :data="model[item.name]"
71
- :full="false"
72
- v-bind="
73
- handleExclAttribute({
74
- data: item,
75
- attrs: ['value', 'events']
76
- })
77
- "
78
- v-on="item.events"
79
- :readonly="
80
- item.readonly !== undefined ? item.readonly : readonly
81
- "
82
- @blur="
83
- (val, data) => {
84
- handleBlur(item, val, data);
85
- }
86
- "
87
- @focus="
88
- (val, data) => {
89
- handleFocus(item, val, data);
90
- }
91
- "
92
- @edit="
93
- (val, data) => {
94
- handleChange(item, val, data);
95
- }
96
- "
97
- @btnClick="handleClick"
98
- @dataChange="handleDataChange"
99
- >
100
- </es-data-table>
101
- </td>
102
- <template v-else>
103
- <td
104
- v-if="item.label !== false && item.hide !== true"
105
- class="es-table-form-label"
106
- :class="{
107
- 'es-align-middle': item.labelRow,
108
- 'is-required':
109
- item.rules && item.rules.required && !hideRequiredAsterisk,
110
- 'required-after': after
111
- }"
112
- :key="'label' + index"
113
- :align="item.type === 'label' ? item.align : ''"
114
- :colspan="
115
- item.labelCol
116
- ? item.labelCol
117
- : item.type === 'label'
118
- ? item.colspan
119
- : ''
120
- "
121
- :rowspan="item.labelRow"
122
- >
123
- <es-label
124
- v-if="item.showLabel !== false && item.label"
125
- v-bind="getLabel(item.label)"
126
- ></es-label>
127
- </td>
128
- <td
129
- v-if="
130
- item.type !== 'label' &&
131
- !(item.type === 'empty' && item.labelRow) &&
132
- item.hide !== true
133
- "
134
- :align="
135
- item.type === 'label' || item.type === 'empty'
136
- ? item.align
137
- : ''
138
- "
139
- :class="
140
- item.type === 'label' || item.type === 'empty'
141
- ? 'es-table-form-label'
142
- : item.disabled
143
- ? 'es-table-form-item td-disabled'
144
- : 'es-table-form-item'
145
- "
146
- :key="index"
147
- :colspan="
148
- item.colspan
149
- ? item.colspan
150
- : item.colspan !== false && items.length < col
151
- ? col * 2 - items.length
152
- : item.label === false
153
- ? 2
154
- : ''
155
- "
156
- :rowspan="item.rowspan"
157
- >
158
- <expand-dom
159
- v-if="item.render"
160
- :item="item"
161
- :model="models"
162
- :render="item.render"
163
- ></expand-dom>
164
- <template v-else>
165
- <es-label
166
- v-if="
167
- (item.type === 'label' || item.type === 'empty') &&
168
- !item.hide
169
- "
170
- :contents="item.text"
171
- v-bind="{
172
- event: item.event,
173
- events: item.events
174
- }"
175
- ></es-label>
176
- <el-form-item
177
- v-else-if="!item.hide"
178
- label-width="0"
179
- :prop="item.name"
180
- :rules="getRules(item)"
181
- :class="{
182
- 'es-form-item-inline': item.inline
183
- }"
184
- >
185
- <es-input-number
186
- v-if="item.type == 'number'"
187
- v-bind="
188
- handleExclAttribute({
189
- data: item,
190
- attrs: 'label'
191
- })
192
- "
193
- v-model="model[item.name]"
194
- :plain="item.plain"
195
- :readonly="
196
- item.readonly !== undefined ? item.readonly : readonly
197
- "
198
- @blur="
199
- (event) => {
200
- handleBlur(item, event);
201
- }
202
- "
203
- @focus="
204
- (event) => {
205
- handleFocus(item, event);
206
- }
207
- "
208
- @change="
209
- (val) => {
210
- handleChange(item, val);
211
- }
212
- "
213
- ></es-input-number>
214
- <es-radio-group
215
- v-else-if="item.type == 'radio'"
216
- v-bind="
217
- handleExclAttribute({
218
- data: item,
219
- attrs: 'label'
220
- })
221
- "
222
- v-model="model[item.name]"
223
- :plain="item.plain"
224
- :readonly="
225
- item.readonly !== undefined ? item.readonly : readonly
226
- "
227
- @change="
228
- (val) => {
229
- handleChange(item, val);
230
- }
231
- "
232
- ></es-radio-group>
233
- <es-checkbox-group
234
- v-else-if="item.type == 'checkbox'"
235
- v-bind="
236
- handleExclAttribute({
237
- data: item,
238
- attrs: 'label'
239
- })
240
- "
241
- v-model="model[item.name]"
242
- :plain="item.plain"
243
- :readonly="
244
- item.readonly !== undefined ? item.readonly : readonly
245
- "
246
- @change="
247
- (val) => {
248
- handleChange(item, val);
249
- }
250
- "
251
- ></es-checkbox-group>
252
- <es-select
253
- v-else-if="item.type == 'select'"
254
- v-bind="
255
- handleExclAttribute({
256
- data: item,
257
- attrs: 'label'
258
- })
259
- "
260
- v-model="model[item.name]"
261
- :plain="item.plain"
262
- :readonly="
263
- item.readonly !== undefined ? item.readonly : readonly
264
- "
265
- @blur="
266
- (event) => {
267
- handleBlur(item, event);
268
- }
269
- "
270
- @focus="
271
- (event) => {
272
- handleFocus(item, event);
273
- }
274
- "
275
- @change="
276
- (val) => {
277
- handleChange(item, val);
278
- }
279
- "
280
- ></es-select>
281
- <es-cascader
282
- v-else-if="item.type == 'cascader'"
283
- v-bind="
284
- handleExclAttribute({
285
- data: item,
286
- attrs: 'label'
287
- })
288
- "
289
- v-model="model[item.name]"
290
- :plain="item.plain || item.name === undefined"
291
- :readonly="
292
- item.readonly !== undefined ? item.readonly : readonly
293
- "
294
- @blur="
295
- (event) => {
296
- handleBlur(item, event);
297
- }
298
- "
299
- @focus="
300
- (event) => {
301
- handleFocus(item, event);
302
- }
303
- "
304
- @change="
305
- (val) => {
306
- handleChange(item, val);
307
- }
308
- "
309
- >
310
- </es-cascader>
311
- <es-select-ganged
312
- v-else-if="
313
- item.type == 'ganged' ||
314
- (item.type == 'select' && item.ganged)
315
- "
316
- v-bind="
317
- handleExclAttribute({
318
- data: item,
319
- attrs: 'label'
320
- })
321
- "
322
- v-model="model[item.name]"
323
- :plain="item.plain"
324
- :readonly="
325
- item.readonly !== undefined ? item.readonly : readonly
326
- "
327
- @change="
328
- (val) => {
329
- handleChange(item, val);
330
- }
331
- "
332
- ></es-select-ganged>
333
- <es-switch
334
- v-else-if="item.type == 'switch'"
335
- v-bind="
336
- handleExclAttribute({
337
- data: item,
338
- attrs: 'label'
339
- })
340
- "
341
- v-model="model[item.name]"
342
- :plain="item.plain"
343
- :readonly="
344
- item.readonly !== undefined ? item.readonly : readonly
345
- "
346
- @change="
347
- (val) => {
348
- handleChange(item, val);
349
- }
350
- "
351
- ></es-switch>
352
- <es-date-picker
353
- v-else-if="
354
- item.date ||
355
- [
356
- 'date',
357
- 'year',
358
- 'month',
359
- 'date',
360
- 'dates',
361
- 'week',
362
- 'datetime',
363
- 'datetimerange',
364
- 'daterange',
365
- 'monthrange',
366
- 'quarter',
367
- 'halfyear'
368
- ].includes(item.type)
369
- "
370
- v-bind="
371
- handleExclAttribute({
372
- data: item,
373
- attrs: 'label'
374
- })
375
- "
376
- v-model="model[item.name]"
377
- :plain="item.plain"
378
- :readonly="
379
- item.readonly !== undefined ? item.readonly : readonly
380
- "
381
- @blur="
382
- (event) => {
383
- handleBlur(item, event);
384
- }
385
- "
386
- @focus="
387
- (event) => {
388
- handleFocus(item, event);
389
- }
390
- "
391
- @change="
392
- (val) => {
393
- handleChange(item, val);
394
- }
395
- "
396
- ></es-date-picker>
397
- <es-upload
398
- v-bind="
399
- handleExclAttribute({
400
- data: item,
401
- attrs: ['value', 'ownId']
402
- })
403
- "
404
- :ownId="item.ownId || models.id"
405
- v-model="model[item.name]"
406
- v-else-if="
407
- item.type == 'attachment' || item.type == 'upload'
408
- "
409
- :readonly="
410
- item.readonly !== undefined ? item.readonly : readonly
411
- "
412
- :rules="item.rules"
413
- btnSize="small"
414
- @change="
415
- (val) => {
416
- handleChange(item, val);
417
- }
418
- "
419
- @getFilesAmount="$emit('getFilesAmount', $event)"
420
- ></es-upload>
421
- <es-selector
422
- v-bind="
423
- handleExclAttribute({
424
- data: item,
425
- attrs: 'label'
426
- })
427
- "
428
- v-model="model[item.name]"
429
- v-else-if="item.type == 'selector'"
430
- :readonly="
431
- item.readonly !== undefined ? item.readonly : readonly
432
- "
433
- :plain="item.plain"
434
- v-on="
435
- handleExclAttribute({
436
- data: item.events,
437
- attrs: 'change'
438
- })
439
- "
440
- @change="
441
- (val) => {
442
- handleChange(item, val);
443
- }
444
- "
445
- ></es-selector>
446
- <es-icons
447
- v-else-if="item.type === 'icon'"
448
- v-bind="
449
- handleExclAttribute({
450
- data: item,
451
- attrs: ['value']
452
- })
453
- "
454
- v-model="models[item.name]"
455
- :plain="item.plain || item.name === undefined"
456
- :readonly="
457
- item.readonly !== undefined ? item.readonly : readonly
458
- "
459
- @change="
460
- (val) => {
461
- handleChange(item, val);
462
- }
463
- "
464
- ></es-icons>
465
- <component
466
- v-else-if="item.type === 'component'"
467
- v-model="models[item.name]"
468
- v-bind="
469
- handleExclAttribute({
470
- data: item,
471
- attrs: ['value', 'label']
472
- })
473
- "
474
- v-on="item.events"
475
- ></component>
476
- <es-input
477
- v-else
478
- v-bind="
479
- handleExclAttribute({
480
- data: item,
481
- attrs: 'label'
482
- })
483
- "
484
- v-model="model[item.name]"
485
- :plain="item.plain"
486
- :readonly="
487
- item.readonly !== undefined ? item.readonly : readonly
488
- "
489
- @blur="
490
- (event) => {
491
- handleBlur(item, event);
492
- }
493
- "
494
- @focus="
495
- (event) => {
496
- handleFocus(item, event);
497
- }
498
- "
499
- @change="
500
- (val) => {
501
- handleChange(item, val);
502
- }
503
- "
504
- @input="
505
- (val) => {
506
- handleInput(item, val);
507
- }
508
- "
509
- @clear="
510
- () => {
511
- handleClear(item);
512
- }
513
- "
514
- >
515
- <template v-if="item.prefix" slot="prefix">
516
- <expand-dom
517
- v-if="item.render"
518
- :item="item"
519
- :model="models"
520
- :render="item.render"
521
- ></expand-dom>
522
- </template>
523
- <template v-if="item.suffix" slot="suffix">
524
- <expand-dom
525
- v-if="item.render"
526
- :item="item"
527
- :model="models"
528
- :render="item.render"
529
- ></expand-dom>
530
- </template>
531
- <template v-if="item.prepend" slot="prepend">
532
- <expand-dom
533
- v-if="item.render"
534
- :item="item"
535
- :model="models"
536
- :render="item.render"
537
- ></expand-dom>
538
- </template>
539
- <template v-if="item.append" slot="append">
540
- <expand-dom
541
- v-if="item.render"
542
- :item="item"
543
- :model="models"
544
- :render="item.render"
545
- ></expand-dom>
546
- </template>
547
- </es-input>
548
- <template v-if="item.inline">
549
- <template v-if="Array.isArray(item.inline)">
550
- <template v-for="(inline, k) in item.inline">
551
- <es-button
552
- v-if="inline.type == 'button' && !inline.hide"
553
- class="es-button-inline"
554
- :key="k"
555
- :disabled="isDisabled || inline.disabled"
556
- v-bind="
557
- handleExclAttribute({
558
- data: inline,
559
- attrs: ['disabled', 'type']
560
- })
561
- "
562
- @click="handleClick(inline)"
563
- ></es-button>
564
- <div
565
- v-else-if="!inline.hide"
566
- class="es-form-inline es-form-item-inline"
567
- :key="k"
568
- >
569
- <div class="es-range" v-if="inline.range !== false">
570
-
571
- </div>
572
- <el-form-item
573
- label-width="0"
574
- :prop="inline.name"
575
- :rules="getRules(inline)"
576
- >
577
- <es-input-number
578
- v-if="inline.type == 'number'"
579
- v-bind="
580
- handleExclAttribute({
581
- data: inline,
582
- attrs: ['value']
583
- })
584
- "
585
- v-model="models[inline.name]"
586
- :plain="
587
- inline.plain || inline.name === undefined
588
- "
589
- :readonly="
590
- inline.readonly !== undefined
591
- ? inline.readonly
592
- : item.readonly !== undefined
593
- ? item.readonly
594
- : readonly
595
- "
596
- @blur="
597
- (event) => {
598
- handleBlur(inline, event);
599
- }
600
- "
601
- @focus="
602
- (event) => {
603
- handleFocus(inline, event);
604
- }
605
- "
606
- @change="
607
- (val) => {
608
- handleChange(inline, val);
609
- }
610
- "
611
- ></es-input-number>
612
- <es-select
613
- v-else-if="inline.type == 'select'"
614
- v-bind="
615
- handleExclAttribute({
616
- data: inline,
617
- attrs: ['value']
618
- })
619
- "
620
- v-model="models[inline.name]"
621
- :plain="
622
- inline.plain || inline.name === undefined
623
- "
624
- :readonly="
625
- inline.readonly !== undefined
626
- ? inline.readonly
627
- : item.readonly !== undefined
628
- ? item.readonly
629
- : readonly
630
- "
631
- @blur="
632
- (event) => {
633
- handleBlur(inline, event);
634
- }
635
- "
636
- @focus="
637
- (event) => {
638
- handleFocus(inline, event);
639
- }
640
- "
641
- @change="
642
- (val) => {
643
- handleChange(inline, val);
644
- }
645
- "
646
- ></es-select>
647
- <es-cascader
648
- v-else-if="inline.type == 'cascader'"
649
- v-bind="
650
- handleExclAttribute({
651
- data: inline,
652
- attrs: ['value']
653
- })
654
- "
655
- v-model="models[inline.name]"
656
- :plain="
657
- inline.plain || inline.name === undefined
658
- "
659
- :readonly="
660
- inline.readonly !== undefined
661
- ? inline.readonly
662
- : item.readonly !== undefined
663
- ? item.readonly
664
- : readonly
665
- "
666
- @blur="
667
- (event) => {
668
- handleBlur(inline, event);
669
- }
670
- "
671
- @focus="
672
- (event) => {
673
- handleFocus(inline, event);
674
- }
675
- "
676
- @change="
677
- (val) => {
678
- handleChange(inline, val);
679
- }
680
- "
681
- >
682
- </es-cascader>
683
- <es-date-picker
684
- v-else-if="
685
- inline.date ||
686
- [
687
- 'date',
688
- 'year',
689
- 'month',
690
- 'date',
691
- 'dates',
692
- 'week',
693
- 'datetime',
694
- 'datetimerange',
695
- 'daterange',
696
- 'monthrange',
697
- 'quarter',
698
- 'halfyear'
699
- ].includes(inline.type)
700
- "
701
- v-bind="
702
- handleExclAttribute({
703
- data: inline,
704
- attrs: ['value']
705
- })
706
- "
707
- v-model="models[inline.name]"
708
- :plain="
709
- inline.plain || inline.name === undefined
710
- "
711
- :readonly="
712
- inline.readonly !== undefined
713
- ? inline.readonly
714
- : item.readonly !== undefined
715
- ? item.readonly
716
- : readonly
717
- "
718
- @blur="
719
- (event) => {
720
- handleBlur(inline, event);
721
- }
722
- "
723
- @focus="
724
- (event) => {
725
- handleFocus(inline, event);
726
- }
727
- "
728
- @change="
729
- (val) => {
730
- handleChange(inline, val);
731
- }
732
- "
733
- ></es-date-picker>
734
- <template
735
- v-else-if="
736
- inline.type == 'image' || inline.type == 'img'
737
- "
738
- >
739
- <img
740
- v-if="inline.url || inline.src"
741
- v-bind="
742
- handleExclAttribute({
743
- data: inline,
744
- attrs: ['value']
745
- })
746
- "
747
- height="100%"
748
- :src="inline.url || inline.src"
749
- @click="inline.event"
750
- />
751
- </template>
752
- <es-icons
753
- v-else-if="inline.type === 'icon'"
754
- v-bind="
755
- handleExclAttribute({
756
- data: inline,
757
- attrs: ['value']
758
- })
759
- "
760
- v-model="models[inline.name]"
761
- :plain="
762
- inline.plain || inline.name === undefined
763
- "
764
- :readonly="
765
- inline.readonly !== undefined
766
- ? inline.readonly
767
- : item.readonly !== undefined
768
- ? item.readonly
769
- : readonly
770
- "
771
- @change="
772
- (val) => {
773
- handleChange(inline, val);
774
- }
775
- "
776
- ></es-icons>
777
- <component
778
- v-else-if="inline.type === 'component'"
779
- v-model="models[inline.name]"
780
- v-bind="
781
- handleExclAttribute({
782
- data: inline,
783
- attrs: ['value', 'label']
784
- })
785
- "
786
- v-on="inline.events"
787
- ></component>
788
- <es-input
789
- v-else
790
- v-bind="
791
- handleExclAttribute({
792
- data: inline,
793
- attrs: ['value']
794
- })
795
- "
796
- v-model="models[inline.name]"
797
- :plain="
798
- inline.plain || inline.name === undefined
799
- "
800
- :readonly="
801
- inline.readonly !== undefined
802
- ? inline.readonly
803
- : item.readonly !== undefined
804
- ? item.readonly
805
- : readonly
806
- "
807
- @blur="
808
- (event) => {
809
- handleBlur(inline, event);
810
- }
811
- "
812
- @focus="
813
- (event) => {
814
- handleFocus(inline, event);
815
- }
816
- "
817
- @input="
818
- (val) => {
819
- handleInput(inline, val);
820
- }
821
- "
822
- @clear="handleClear(inline)"
823
- @change="
824
- (val) => {
825
- handleChange(inline, val);
826
- }
827
- "
828
- ></es-input>
829
- </el-form-item>
830
- </div>
831
- </template>
832
- </template>
833
- <template v-else-if="!item.inline.hide">
834
- <div
835
- class="es-range"
836
- v-if="item.inline.range !== false"
837
- >
838
-
839
- </div>
840
- <el-form-item
841
- label-width="0"
842
- :prop="item.inline.name"
843
- :rules="getRules(item.inline)"
844
- >
845
- <es-input-number
846
- v-if="item.inline.type == 'number'"
847
- v-bind="item.inline"
848
- v-model="models[item.inline.name]"
849
- :plain="
850
- item.inline.plain ||
851
- item.inline.name === undefined
852
- "
853
- :readonly="
854
- item.inline.readonly !== undefined
855
- ? item.inline.readonly
856
- : item.readonly !== undefined
857
- ? item.readonly
858
- : readonly
859
- "
860
- @blur="
861
- (event) => {
862
- handleBlur(item.inline, event);
863
- }
864
- "
865
- @focus="
866
- (event) => {
867
- handleFocus(item.inline, event);
868
- }
869
- "
870
- @change="
871
- (val) => {
872
- handleChange(item.inline, val);
873
- }
874
- "
875
- ></es-input-number>
876
- <es-select
877
- v-else-if="item.inline.type == 'select'"
878
- v-bind="
879
- handleExclAttribute({
880
- data: item,
881
- attrs: 'label'
882
- })
883
- "
884
- v-model="models[item.inline.name]"
885
- :plain="
886
- item.inline.plain ||
887
- item.inline.name === undefined
888
- "
889
- :readonly="
890
- item.inline.readonly !== undefined
891
- ? item.inline.readonly
892
- : item.readonly !== undefined
893
- ? item.readonly
894
- : readonly
895
- "
896
- @blur="
897
- (event) => {
898
- handleBlur(item.inline, event);
899
- }
900
- "
901
- @focus="
902
- (event) => {
903
- handleFocus(item.inline, event);
904
- }
905
- "
906
- @change="
907
- (val) => {
908
- handleChange(item.inline, val);
909
- }
910
- "
911
- ></es-select>
912
- <es-cascader
913
- v-else-if="item.inline.type == 'cascader'"
914
- v-bind="
915
- handleExclAttribute({
916
- data: item,
917
- attrs: 'label'
918
- })
919
- "
920
- v-model="models[item.inline.name]"
921
- :plain="
922
- item.inline.plain ||
923
- item.inline.name === undefined
924
- "
925
- :readonly="
926
- item.inline.readonly !== undefined
927
- ? item.inline.readonly
928
- : item.readonly !== undefined
929
- ? item.readonly
930
- : readonly
931
- "
932
- @blur="
933
- (event) => {
934
- handleBlur(item.inline, event);
935
- }
936
- "
937
- @focus="
938
- (event) => {
939
- handleFocus(item.inline, event);
940
- }
941
- "
942
- @change="
943
- (val) => {
944
- handleChange(item.inline, val);
945
- }
946
- "
947
- >
948
- </es-cascader>
949
- <es-date-picker
950
- v-else-if="
951
- item.inline.date ||
952
- [
953
- 'date',
954
- 'year',
955
- 'month',
956
- 'date',
957
- 'dates',
958
- 'week',
959
- 'datetime',
960
- 'datetimerange',
961
- 'daterange',
962
- 'monthrange',
963
- 'quarter',
964
- 'halfyear'
965
- ].includes(item.inline.type)
966
- "
967
- v-bind="item.inline"
968
- v-model="models[item.inline.name]"
969
- :plain="
970
- item.inline.plain ||
971
- item.inline.name === undefined
972
- "
973
- :readonly="
974
- item.inline.readonly !== undefined
975
- ? item.inline.readonly
976
- : item.readonly !== undefined
977
- ? item.readonly
978
- : readonly
979
- "
980
- @blur="
981
- (event) => {
982
- handleBlur(item.inline, event);
983
- }
984
- "
985
- @focus="
986
- (event) => {
987
- handleFocus(item.inline, event);
988
- }
989
- "
990
- @change="
991
- (val) => {
992
- handleChange(item.inline, val);
993
- }
994
- "
995
- ></es-date-picker>
996
- <es-icons
997
- v-else-if="item.inline.type === 'icon'"
998
- v-bind="
999
- handleExclAttribute({
1000
- data: item.inline,
1001
- attrs: ['value']
1002
- })
1003
- "
1004
- v-model="models[item.inline.name]"
1005
- :plain="
1006
- item.inline.plain ||
1007
- item.inline.name === undefined
1008
- "
1009
- :readonly="
1010
- item.inline.readonly !== undefined
1011
- ? item.inline.readonly
1012
- : item.readonly !== undefined
1013
- ? item.readonly
1014
- : readonly
1015
- "
1016
- @change="
1017
- (val) => {
1018
- handleChange(item.inline, val);
1019
- }
1020
- "
1021
- ></es-icons>
1022
- <component
1023
- v-else-if="item.inline.type === 'component'"
1024
- v-model="models[item.inline.name]"
1025
- v-bind="
1026
- handleExclAttribute({
1027
- data: item.inline,
1028
- attrs: ['value', 'label']
1029
- })
1030
- "
1031
- v-on="item.inline.events"
1032
- ></component>
1033
- <es-input
1034
- v-else
1035
- v-bind="item.inline"
1036
- v-model="models[item.inline.name]"
1037
- :plain="
1038
- item.inline.plain ||
1039
- item.inline.name === undefined
1040
- "
1041
- :readonly="
1042
- item.inline.readonly !== undefined
1043
- ? item.inline.readonly
1044
- : item.readonly !== undefined
1045
- ? item.readonly
1046
- : readonly
1047
- "
1048
- @blur="
1049
- (event) => {
1050
- handleBlur(item.inline, event);
1051
- }
1052
- "
1053
- @focus="
1054
- (event) => {
1055
- handleFocus(item.inline, event);
1056
- }
1057
- "
1058
- @change="
1059
- (val) => {
1060
- handleChange(item.inline, val);
1061
- }
1062
- "
1063
- @input="
1064
- (val) => {
1065
- handleInput(item.inline, val);
1066
- }
1067
- "
1068
- @clear="
1069
- () => {
1070
- handleClear(item.inline);
1071
- }
1072
- "
1073
- >
1074
- <template v-if="item.inline.prefix" slot="prefix">
1075
- <expand-dom
1076
- v-if="item.inline.render"
1077
- :item="item"
1078
- :model="models"
1079
- :render="item.inline.render"
1080
- ></expand-dom>
1081
- </template>
1082
- <template slot="suffix" v-if="item.inline.suffix">
1083
- <expand-dom
1084
- v-if="item.inline.render"
1085
- :item="item"
1086
- :model="models"
1087
- :render="item.inline.render"
1088
- ></expand-dom>
1089
- </template>
1090
- <template v-if="item.inline.prepend" slot="prepend">
1091
- <expand-dom
1092
- v-if="item.inline.render"
1093
- :item="item"
1094
- :model="models"
1095
- :render="item.inline.render"
1096
- ></expand-dom>
1097
- </template>
1098
- <template v-if="item.inline.append" slot="append">
1099
- <expand-dom
1100
- v-if="item.inline.render"
1101
- :item="item"
1102
- :model="models"
1103
- :render="item.inline.render"
1104
- ></expand-dom>
1105
- </template>
1106
- </es-input>
1107
- </el-form-item>
1108
- </template>
1109
- </template>
1110
- </el-form-item>
1111
- </template>
1112
- </td>
1113
- </template>
1114
- </template>
1115
- </tr>
1116
- </tbody>
1117
- </table>
1118
- <template v-for="(item, index) in table">
1119
- <es-data-table-form
1120
- v-if="item.lazy"
1121
- :key="index"
1122
- class="es-form-item-table"
1123
- :data="model[item.name]"
1124
- :full="false"
1125
- v-bind="item"
1126
- :readonly="item.readonly !== undefined ? item.readonly : readonly"
1127
- @blur="
1128
- (val, data) => {
1129
- handleBlur(item, val, data);
1130
- }
1131
- "
1132
- @focus="
1133
- (val, data) => {
1134
- handleFocus(item, val, data);
1135
- }
1136
- "
1137
- @edit="
1138
- (val, data) => {
1139
- handleChange(item, val, data);
1140
- }
1141
- "
1142
- @btnClick="handleClick"
1143
- @dataChange="handleDataChange"
1144
- >
1145
- </es-data-table-form>
1146
- <es-data-table
1147
- v-else
1148
- :key="index"
1149
- class="es-form-item-table"
1150
- ref="dataTable"
1151
- :data="model[item.name]"
1152
- :full="false"
1153
- v-bind="
1154
- handleExclAttribute({
1155
- data: item,
1156
- attrs: ['value', 'events']
1157
- })
1158
- "
1159
- v-on="item.events"
1160
- :readonly="item.readonly !== undefined ? item.readonly : readonly"
1161
- @blur="
1162
- (val, data) => {
1163
- handleBlur(item, val, data);
1164
- }
1165
- "
1166
- @focus="
1167
- (val, data) => {
1168
- handleFocus(item, val, data);
1169
- }
1170
- "
1171
- @edit="
1172
- (val, data) => {
1173
- handleChange(item, val, data);
1174
- }
1175
- "
1176
- @btnClick="handleClick"
1177
- @dataChange="handleDataChange"
1178
- >
1179
- </es-data-table>
1180
- </template>
1181
- </div>
1182
- </template>
1183
- <script>
1184
- import rules from 'eoss-ui/src/utils/rules.js';
1185
- import util from 'eoss-ui/src/utils/util';
1186
- export default {
1187
- name: 'EsTableForm',
1188
- components: {
1189
- expandDom: {
1190
- functional: true,
1191
- props: {
1192
- item: Object,
1193
- model: Object,
1194
- render: [Function, String]
1195
- },
1196
- render: (h, ctx) => {
1197
- if (typeof ctx.props.render == 'string') {
1198
- try {
1199
- return util.toFunction(ctx.props.render)(h, params);
1200
- } catch (error) {
1201
- throw error;
1202
- }
1203
- }
1204
- return ctx.props.render(h, ctx.props.item, ctx.props.model);
1205
- }
1206
- }
1207
- },
1208
- inject: {
1209
- scale: {
1210
- default: ''
1211
- },
1212
- esForm: {
1213
- default: ''
1214
- }
1215
- },
1216
- props: {
1217
- model: {
1218
- type: Object,
1219
- default() {
1220
- return {};
1221
- }
1222
- },
1223
- disabled: Boolean,
1224
- span: Number,
1225
- contents: {
1226
- type: Array,
1227
- default() {
1228
- return [];
1229
- }
1230
- },
1231
- hideRequiredAsterisk: {
1232
- type: Boolean,
1233
- default: false
1234
- },
1235
- after: {
1236
- type: Boolean,
1237
- default: true
1238
- },
1239
- labelWidth: {
1240
- type: [Number, String],
1241
- default: 120
1242
- },
1243
- readonly: Boolean,
1244
- tableAfter: {
1245
- type: Boolean,
1246
- default: true
1247
- },
1248
- caption: String,
1249
- widths: Array,
1250
- thead: Array,
1251
- zoom: false
1252
- },
1253
- computed: {
1254
- content() {
1255
- let content = [];
1256
- let items = [];
1257
- let n = 0;
1258
- let table = [];
1259
- let formList;
1260
- if (this.tableAfter) {
1261
- formList = this.contents.filter((items) => {
1262
- if (Array.isArray(items)) {
1263
- return items.filter((item) => {
1264
- if (item.type === 'table' && item.after !== false) {
1265
- table.push(item);
1266
- }
1267
- return item.type !== 'table' || item.after === false;
1268
- });
1269
- }
1270
- if (items.type === 'table' && items.after !== false) {
1271
- table.push(items);
1272
- }
1273
- return items.type !== 'table' || items.after === false;
1274
- });
1275
- this.table = table;
1276
- } else {
1277
- formList = this.contents;
1278
- }
1279
- if (Array.isArray(formList[0])) {
1280
- return formList;
1281
- } else {
1282
- const contents = formList.filter((item) => {
1283
- if (!item.hide) {
1284
- return item;
1285
- }
1286
- });
1287
- contents.forEach((item, index) => {
1288
- let i = (index - n) % this.col;
1289
- let cover = false;
1290
- if (i == 0) {
1291
- items = [];
1292
- }
1293
- if (
1294
- (item.colspan && item.colspan > 1) ||
1295
- item.col === 12 ||
1296
- item.col === 0 ||
1297
- item.type === 'table' ||
1298
- item.type === 'caption'
1299
- ) {
1300
- cover = true;
1301
- n++;
1302
- }
1303
- if (cover) {
1304
- if (items.length) {
1305
- content.push(items);
1306
- content.push([item]);
1307
- items = [];
1308
- } else {
1309
- content.push([item]);
1310
- }
1311
- } else {
1312
- if (i < this.col) {
1313
- items.push(item);
1314
- }
1315
- if (i + 1 === this.col) {
1316
- content.push(items);
1317
- }
1318
- }
1319
- });
1320
- return content;
1321
- }
1322
- },
1323
- models: {
1324
- get() {
1325
- return this.model;
1326
- },
1327
- set(val) {
1328
- return val;
1329
- }
1330
- },
1331
- isDisabled() {
1332
- return this.disabled || (this.esForm || {}).disabled;
1333
- }
1334
- },
1335
- watch: {
1336
- scale: {
1337
- deep: true,
1338
- handler(val) {
1339
- this.getWidth();
1340
- }
1341
- },
1342
- zoom: {
1343
- handler(val) {
1344
- this.getWidth();
1345
- }
1346
- }
1347
- },
1348
- data() {
1349
- return {
1350
- col: this.span ? this.span : 2,
1351
- cols: [],
1352
- table: [],
1353
- required: false
1354
- };
1355
- },
1356
- created() {},
1357
- mounted() {
1358
- this.getWidth();
1359
- },
1360
- methods: {
1361
- getLabel(res) {
1362
- return typeof res === 'string'
1363
- ? { contents: res }
1364
- : { ...res, plain: res.plain || res.name === undefined };
1365
- },
1366
- getRules(res) {
1367
- if (res.rules && !res.hide) {
1368
- if (Array.isArray(res.rules)) {
1369
- return res.rules.map((item) => {
1370
- if (item.required) {
1371
- this.required = item.required;
1372
- }
1373
- if (rules[item.type]) {
1374
- return {
1375
- pattern: rules[item.type]['pattern'],
1376
- message: item.message
1377
- ? item.message
1378
- : rules[item.type]['message'],
1379
- trigger: item.trigger
1380
- ? item.trigger
1381
- : res.fetchSuggestions ||
1382
- res.url ||
1383
- (res.data && res.data.length)
1384
- ? 'change'
1385
- : 'blur'
1386
- };
1387
- }
1388
- return item;
1389
- });
1390
- }
1391
- if (rules[res.rules.type]) {
1392
- return {
1393
- pattern: rules[res.rules.type]['pattern'],
1394
- message: res.rules.message
1395
- ? res.rules.message
1396
- : rules[res.rules.type]['message'],
1397
- trigger: res.rules.trigger
1398
- ? res.rules.trigger
1399
- : res.fetchSuggestions || res.url || (res.data && res.data.length)
1400
- ? 'change'
1401
- : 'blur'
1402
- };
1403
- }
1404
- if (res.rules.required) {
1405
- this.required = res.rules.required;
1406
- }
1407
- return res.rules;
1408
- }
1409
- return undefined;
1410
- },
1411
- getWidth() {
1412
- this.$nextTick(() => {
1413
- this.nextTickd();
1414
- });
1415
- },
1416
- nextTickd() {
1417
- let widths = [];
1418
- let surplus = 0;
1419
- let divisor = this.col;
1420
- const parentWidth =
1421
- this.$el.clientWidth -
1422
- (parseFloat(this.$el.style.paddingLeft) || 0) -
1423
- (parseFloat(this.$el.style.paddingRight) || 0);
1424
- let getWidth = this.$refs.dataTable
1425
- ? this.$refs.dataTable.$el
1426
- ? this.$refs.dataTable.$el.offsetWidth
1427
- : this.$refs.dataTable[0].$el.offsetWidth
1428
- : parentWidth;
1429
- if (getWidth < parentWidth) {
1430
- getWidth = parentWidth;
1431
- }
1432
- let allWidth = getWidth - parseInt(this.labelWidth, 10) * this.col;
1433
- if (this.widths && this.widths.length === this.col) {
1434
- this.widths.forEach((item) => {
1435
- let num = parseInt(item, 10);
1436
- if (item && num) {
1437
- allWidth -= item ? num : 0;
1438
- divisor--;
1439
- }
1440
- });
1441
- }
1442
- let width = allWidth / divisor;
1443
- if (width - Math.floor(width) > 0) {
1444
- surplus =
1445
- (getWidth - parseInt(this.labelWidth, 10) * this.col) % this.col;
1446
- }
1447
- if (this.col > 1) {
1448
- for (let i = 0; i < this.col; i++) {
1449
- if (this.widths && this.widths[i]) {
1450
- widths.push(parseInt(this.widths[i], 10) + 'px');
1451
- } else if (i < surplus) {
1452
- widths.push(Math.floor(width) + 1 + 'px');
1453
- } else {
1454
- widths.push(Math.floor(width) + 'px');
1455
- }
1456
- }
1457
- } else {
1458
- widths = [''];
1459
- }
1460
- this.cols = widths;
1461
- },
1462
- handleClick(res) {
1463
- if (res.event && typeof res.event === 'function') {
1464
- res.event(res);
1465
- }
1466
- this.$emit('btnClick', res, this.models);
1467
- this.$emit('btn-click', res, this.models);
1468
- },
1469
- handleChange(res, value, data) {
1470
- if (res.events && res.events.change) {
1471
- res.events.change(res, value, data);
1472
- } else {
1473
- this.$emit('change', res, value, data);
1474
- }
1475
- },
1476
- handleInput(res, value, data) {
1477
- this.$emit('input', res, value, data);
1478
- },
1479
- handleFocus(res, value, data) {
1480
- if (res.events && res.events.focus) {
1481
- res.events.focus(res, value, data);
1482
- } else {
1483
- this.$emit('focus', res, value, data);
1484
- }
1485
- },
1486
- handleBlur(res, value, data) {
1487
- if (res.events && res.events.blur) {
1488
- res.events.blur(res, value, data);
1489
- } else {
1490
- this.$emit('blur', res, value, data);
1491
- }
1492
- },
1493
- handleClear(res, value) {
1494
- this.$emit('clear', res, value);
1495
- },
1496
- handleDataChange(res, data) {
1497
- if (res.events && res.events.dataChange) {
1498
- res.events.dataChange(res, value, data);
1499
- } else {
1500
- this.$emit('dataChange', res, data);
1501
- this.$emit('data-change', res, data);
1502
- }
1503
- },
1504
- handleExclAttribute({ data, attrs }) {
1505
- return util.exclAttribute({
1506
- data: data,
1507
- attrs: attrs
1508
- });
1509
- }
1510
- }
1511
- };
1512
- </script>
1
+ <template>
2
+ <div>
3
+ <table
4
+ class="es-table-form"
5
+ border="1"
6
+ cellspacing="0"
7
+ cellpadding="0"
8
+ v-if="content.length"
9
+ >
10
+ <colgroup>
11
+ <template v-for="(item, index) in cols">
12
+ <col :width="labelWidth" :key="'label' + index" />
13
+ <col :width="item" :key="index" />
14
+ </template>
15
+ </colgroup>
16
+ <caption v-if="caption" class="es-table-caption">
17
+ {{
18
+ caption
19
+ }}
20
+ </caption>
21
+ <tbody>
22
+ <tr v-for="(items, indexs) in content" :key="indexs">
23
+ <template v-for="(item, index) in items">
24
+ <td
25
+ v-if="item.type === 'caption'"
26
+ :colspan="col * 2"
27
+ :key="index"
28
+ class="es-table-td-caption"
29
+ >
30
+ <div class="es-table-caption">{{ item.text }}</div>
31
+ </td>
32
+ <td
33
+ v-else-if="item.type === 'table'"
34
+ :colspan="col * 2"
35
+ :key="index"
36
+ class="es-table-form-data"
37
+ >
38
+ <es-data-table-form
39
+ v-if="item.lazy"
40
+ class="es-form-table-data"
41
+ :data="model[item.name]"
42
+ :full="false"
43
+ v-bind="item"
44
+ :readonly="
45
+ item.readonly !== undefined ? item.readonly : readonly
46
+ "
47
+ @blur="
48
+ (val, data) => {
49
+ handleBlur(item, val, data);
50
+ }
51
+ "
52
+ @focus="
53
+ (val, data) => {
54
+ handleFocus(item, val, data);
55
+ }
56
+ "
57
+ @edit="
58
+ (val, data) => {
59
+ handleChange(item, val, data);
60
+ }
61
+ "
62
+ @btnClick="handleClick"
63
+ @dataChange="handleDataChange"
64
+ >
65
+ </es-data-table-form>
66
+ <es-data-table
67
+ v-else
68
+ class="es-form-item-table"
69
+ ref="dataTable"
70
+ :data="model[item.name]"
71
+ :full="false"
72
+ v-bind="
73
+ handleExclAttribute({
74
+ data: item,
75
+ attrs: ['value', 'events']
76
+ })
77
+ "
78
+ v-on="item.events"
79
+ :readonly="
80
+ item.readonly !== undefined ? item.readonly : readonly
81
+ "
82
+ @blur="
83
+ (val, data) => {
84
+ handleBlur(item, val, data);
85
+ }
86
+ "
87
+ @focus="
88
+ (val, data) => {
89
+ handleFocus(item, val, data);
90
+ }
91
+ "
92
+ @edit="
93
+ (val, data) => {
94
+ handleChange(item, val, data);
95
+ }
96
+ "
97
+ @btnClick="handleClick"
98
+ @dataChange="handleDataChange"
99
+ >
100
+ </es-data-table>
101
+ </td>
102
+ <template v-else>
103
+ <td
104
+ v-if="item.label !== false && item.hide !== true"
105
+ class="es-table-form-label"
106
+ :class="{
107
+ 'es-align-middle': item.labelRow,
108
+ 'is-required':
109
+ item.rules && item.rules.required && !hideRequiredAsterisk,
110
+ 'required-after': after
111
+ }"
112
+ :key="'label' + index"
113
+ :align="item.type === 'label' ? item.align : ''"
114
+ :colspan="
115
+ item.labelCol
116
+ ? item.labelCol
117
+ : item.type === 'label'
118
+ ? item.colspan
119
+ : ''
120
+ "
121
+ :rowspan="item.labelRow"
122
+ >
123
+ <es-label
124
+ v-if="item.showLabel !== false && item.label"
125
+ v-bind="getLabel(item.label)"
126
+ ></es-label>
127
+ </td>
128
+ <td
129
+ v-if="
130
+ item.type !== 'label' &&
131
+ !(item.type === 'empty' && item.labelRow) &&
132
+ item.hide !== true
133
+ "
134
+ :align="
135
+ item.type === 'label' || item.type === 'empty'
136
+ ? item.align
137
+ : ''
138
+ "
139
+ :class="
140
+ item.type === 'label' || item.type === 'empty'
141
+ ? 'es-table-form-label'
142
+ : item.disabled
143
+ ? 'es-table-form-item td-disabled'
144
+ : 'es-table-form-item'
145
+ "
146
+ :key="index"
147
+ :colspan="
148
+ item.colspan
149
+ ? item.colspan
150
+ : item.colspan !== false && items.length < col
151
+ ? col * 2 - items.length
152
+ : item.label === false
153
+ ? 2
154
+ : ''
155
+ "
156
+ :rowspan="item.rowspan"
157
+ >
158
+ <expand-dom
159
+ v-if="item.render"
160
+ :item="item"
161
+ :model="models"
162
+ :render="item.render"
163
+ ></expand-dom>
164
+ <template v-else>
165
+ <es-label
166
+ v-if="
167
+ (item.type === 'label' || item.type === 'empty') &&
168
+ !item.hide
169
+ "
170
+ :contents="item.text"
171
+ v-bind="{
172
+ event: item.event,
173
+ events: item.events
174
+ }"
175
+ ></es-label>
176
+ <el-form-item
177
+ v-else-if="!item.hide"
178
+ label-width="0"
179
+ :prop="item.name"
180
+ :rules="getRules(item)"
181
+ :class="{
182
+ 'es-form-item-inline': item.inline
183
+ }"
184
+ >
185
+ <es-input-number
186
+ v-if="item.type == 'number'"
187
+ v-bind="
188
+ handleExclAttribute({
189
+ data: item,
190
+ attrs: 'label'
191
+ })
192
+ "
193
+ v-model="model[item.name]"
194
+ :plain="item.plain"
195
+ :readonly="
196
+ item.readonly !== undefined ? item.readonly : readonly
197
+ "
198
+ @blur="
199
+ (event) => {
200
+ handleBlur(item, event);
201
+ }
202
+ "
203
+ @focus="
204
+ (event) => {
205
+ handleFocus(item, event);
206
+ }
207
+ "
208
+ @change="
209
+ (val) => {
210
+ handleChange(item, val);
211
+ }
212
+ "
213
+ ></es-input-number>
214
+ <es-radio-group
215
+ v-else-if="item.type == 'radio'"
216
+ v-bind="
217
+ handleExclAttribute({
218
+ data: item,
219
+ attrs: 'label'
220
+ })
221
+ "
222
+ v-model="model[item.name]"
223
+ :plain="item.plain"
224
+ :readonly="
225
+ item.readonly !== undefined ? item.readonly : readonly
226
+ "
227
+ @change="
228
+ (val) => {
229
+ handleChange(item, val);
230
+ }
231
+ "
232
+ ></es-radio-group>
233
+ <es-checkbox-group
234
+ v-else-if="item.type == 'checkbox'"
235
+ v-bind="
236
+ handleExclAttribute({
237
+ data: item,
238
+ attrs: 'label'
239
+ })
240
+ "
241
+ v-model="model[item.name]"
242
+ :plain="item.plain"
243
+ :readonly="
244
+ item.readonly !== undefined ? item.readonly : readonly
245
+ "
246
+ @change="
247
+ (val) => {
248
+ handleChange(item, val);
249
+ }
250
+ "
251
+ ></es-checkbox-group>
252
+ <es-select
253
+ v-else-if="item.type == 'select'"
254
+ v-bind="
255
+ handleExclAttribute({
256
+ data: item,
257
+ attrs: 'label'
258
+ })
259
+ "
260
+ v-model="model[item.name]"
261
+ :plain="item.plain"
262
+ :readonly="
263
+ item.readonly !== undefined ? item.readonly : readonly
264
+ "
265
+ @blur="
266
+ (event) => {
267
+ handleBlur(item, event);
268
+ }
269
+ "
270
+ @focus="
271
+ (event) => {
272
+ handleFocus(item, event);
273
+ }
274
+ "
275
+ @change="
276
+ (val) => {
277
+ handleChange(item, val);
278
+ }
279
+ "
280
+ ></es-select>
281
+ <es-cascader
282
+ v-else-if="item.type == 'cascader'"
283
+ v-bind="
284
+ handleExclAttribute({
285
+ data: item,
286
+ attrs: 'label'
287
+ })
288
+ "
289
+ v-model="model[item.name]"
290
+ :plain="item.plain || item.name === undefined"
291
+ :readonly="
292
+ item.readonly !== undefined ? item.readonly : readonly
293
+ "
294
+ @blur="
295
+ (event) => {
296
+ handleBlur(item, event);
297
+ }
298
+ "
299
+ @focus="
300
+ (event) => {
301
+ handleFocus(item, event);
302
+ }
303
+ "
304
+ @change="
305
+ (val) => {
306
+ handleChange(item, val);
307
+ }
308
+ "
309
+ >
310
+ </es-cascader>
311
+ <es-select-ganged
312
+ v-else-if="
313
+ item.type == 'ganged' ||
314
+ (item.type == 'select' && item.ganged)
315
+ "
316
+ v-bind="
317
+ handleExclAttribute({
318
+ data: item,
319
+ attrs: 'label'
320
+ })
321
+ "
322
+ v-model="model[item.name]"
323
+ :plain="item.plain"
324
+ :readonly="
325
+ item.readonly !== undefined ? item.readonly : readonly
326
+ "
327
+ @change="
328
+ (val) => {
329
+ handleChange(item, val);
330
+ }
331
+ "
332
+ ></es-select-ganged>
333
+ <es-switch
334
+ v-else-if="item.type == 'switch'"
335
+ v-bind="
336
+ handleExclAttribute({
337
+ data: item,
338
+ attrs: 'label'
339
+ })
340
+ "
341
+ v-model="model[item.name]"
342
+ :plain="item.plain"
343
+ :readonly="
344
+ item.readonly !== undefined ? item.readonly : readonly
345
+ "
346
+ @change="
347
+ (val) => {
348
+ handleChange(item, val);
349
+ }
350
+ "
351
+ ></es-switch>
352
+ <es-date-picker
353
+ v-else-if="
354
+ item.date ||
355
+ [
356
+ 'date',
357
+ 'year',
358
+ 'month',
359
+ 'date',
360
+ 'dates',
361
+ 'week',
362
+ 'datetime',
363
+ 'datetimerange',
364
+ 'daterange',
365
+ 'monthrange',
366
+ 'quarter',
367
+ 'halfyear'
368
+ ].includes(item.type)
369
+ "
370
+ v-bind="
371
+ handleExclAttribute({
372
+ data: item,
373
+ attrs: 'label'
374
+ })
375
+ "
376
+ v-model="model[item.name]"
377
+ :plain="item.plain"
378
+ :readonly="
379
+ item.readonly !== undefined ? item.readonly : readonly
380
+ "
381
+ @blur="
382
+ (event) => {
383
+ handleBlur(item, event);
384
+ }
385
+ "
386
+ @focus="
387
+ (event) => {
388
+ handleFocus(item, event);
389
+ }
390
+ "
391
+ @change="
392
+ (val) => {
393
+ handleChange(item, val);
394
+ }
395
+ "
396
+ ></es-date-picker>
397
+ <es-upload
398
+ v-bind="
399
+ handleExclAttribute({
400
+ data: item,
401
+ attrs: ['value', 'ownId']
402
+ })
403
+ "
404
+ :ownId="item.ownId || models.id"
405
+ v-model="model[item.name]"
406
+ v-else-if="
407
+ item.type == 'attachment' || item.type == 'upload'
408
+ "
409
+ :readonly="
410
+ item.readonly !== undefined ? item.readonly : readonly
411
+ "
412
+ :rules="item.rules"
413
+ btnSize="small"
414
+ @change="
415
+ (val) => {
416
+ handleChange(item, val);
417
+ }
418
+ "
419
+ @getFilesAmount="$emit('getFilesAmount', $event)"
420
+ ></es-upload>
421
+ <es-selector
422
+ v-bind="
423
+ handleExclAttribute({
424
+ data: item,
425
+ attrs: 'label'
426
+ })
427
+ "
428
+ v-model="model[item.name]"
429
+ v-else-if="item.type == 'selector'"
430
+ :readonly="
431
+ item.readonly !== undefined ? item.readonly : readonly
432
+ "
433
+ :plain="item.plain"
434
+ v-on="
435
+ handleExclAttribute({
436
+ data: item.events,
437
+ attrs: 'change'
438
+ })
439
+ "
440
+ @change="
441
+ (val) => {
442
+ handleChange(item, val);
443
+ }
444
+ "
445
+ ></es-selector>
446
+ <es-icons
447
+ v-else-if="item.type === 'icon'"
448
+ v-bind="
449
+ handleExclAttribute({
450
+ data: item,
451
+ attrs: ['value']
452
+ })
453
+ "
454
+ v-model="models[item.name]"
455
+ :plain="item.plain || item.name === undefined"
456
+ :readonly="
457
+ item.readonly !== undefined ? item.readonly : readonly
458
+ "
459
+ @change="
460
+ (val) => {
461
+ handleChange(item, val);
462
+ }
463
+ "
464
+ ></es-icons>
465
+ <component
466
+ v-else-if="item.type === 'component'"
467
+ v-model="models[item.name]"
468
+ v-bind="
469
+ handleExclAttribute({
470
+ data: item,
471
+ attrs: ['value', 'label']
472
+ })
473
+ "
474
+ v-on="item.events"
475
+ ></component>
476
+ <es-input
477
+ v-else
478
+ v-bind="
479
+ handleExclAttribute({
480
+ data: item,
481
+ attrs: 'label'
482
+ })
483
+ "
484
+ v-model="model[item.name]"
485
+ :plain="item.plain"
486
+ :readonly="
487
+ item.readonly !== undefined ? item.readonly : readonly
488
+ "
489
+ @blur="
490
+ (event) => {
491
+ handleBlur(item, event);
492
+ }
493
+ "
494
+ @focus="
495
+ (event) => {
496
+ handleFocus(item, event);
497
+ }
498
+ "
499
+ @change="
500
+ (val) => {
501
+ handleChange(item, val);
502
+ }
503
+ "
504
+ @input="
505
+ (val) => {
506
+ handleInput(item, val);
507
+ }
508
+ "
509
+ @clear="
510
+ () => {
511
+ handleClear(item);
512
+ }
513
+ "
514
+ >
515
+ <template v-if="item.prefix" slot="prefix">
516
+ <expand-dom
517
+ v-if="item.render"
518
+ :item="item"
519
+ :model="models"
520
+ :render="item.render"
521
+ ></expand-dom>
522
+ </template>
523
+ <template v-if="item.suffix" slot="suffix">
524
+ <expand-dom
525
+ v-if="item.render"
526
+ :item="item"
527
+ :model="models"
528
+ :render="item.render"
529
+ ></expand-dom>
530
+ </template>
531
+ <template v-if="item.prepend" slot="prepend">
532
+ <expand-dom
533
+ v-if="item.render"
534
+ :item="item"
535
+ :model="models"
536
+ :render="item.render"
537
+ ></expand-dom>
538
+ </template>
539
+ <template v-if="item.append" slot="append">
540
+ <expand-dom
541
+ v-if="item.render"
542
+ :item="item"
543
+ :model="models"
544
+ :render="item.render"
545
+ ></expand-dom>
546
+ </template>
547
+ </es-input>
548
+ <template v-if="item.inline">
549
+ <template v-if="Array.isArray(item.inline)">
550
+ <template v-for="(inline, k) in item.inline">
551
+ <es-button
552
+ v-if="inline.type == 'button' && !inline.hide"
553
+ class="es-button-inline"
554
+ :key="k"
555
+ :disabled="isDisabled || inline.disabled"
556
+ v-bind="
557
+ handleExclAttribute({
558
+ data: inline,
559
+ attrs: ['disabled', 'type']
560
+ })
561
+ "
562
+ @click="handleClick(inline)"
563
+ ></es-button>
564
+ <div
565
+ v-else-if="!inline.hide"
566
+ class="es-form-inline es-form-item-inline"
567
+ :key="k"
568
+ >
569
+ <div class="es-range" v-if="inline.range !== false">
570
+
571
+ </div>
572
+ <el-form-item
573
+ label-width="0"
574
+ :prop="inline.name"
575
+ :rules="getRules(inline)"
576
+ >
577
+ <es-input-number
578
+ v-if="inline.type == 'number'"
579
+ v-bind="
580
+ handleExclAttribute({
581
+ data: inline,
582
+ attrs: ['value']
583
+ })
584
+ "
585
+ v-model="models[inline.name]"
586
+ :plain="
587
+ inline.plain || inline.name === undefined
588
+ "
589
+ :readonly="
590
+ inline.readonly !== undefined
591
+ ? inline.readonly
592
+ : item.readonly !== undefined
593
+ ? item.readonly
594
+ : readonly
595
+ "
596
+ @blur="
597
+ (event) => {
598
+ handleBlur(inline, event);
599
+ }
600
+ "
601
+ @focus="
602
+ (event) => {
603
+ handleFocus(inline, event);
604
+ }
605
+ "
606
+ @change="
607
+ (val) => {
608
+ handleChange(inline, val);
609
+ }
610
+ "
611
+ ></es-input-number>
612
+ <es-select
613
+ v-else-if="inline.type == 'select'"
614
+ v-bind="
615
+ handleExclAttribute({
616
+ data: inline,
617
+ attrs: ['value']
618
+ })
619
+ "
620
+ v-model="models[inline.name]"
621
+ :plain="
622
+ inline.plain || inline.name === undefined
623
+ "
624
+ :readonly="
625
+ inline.readonly !== undefined
626
+ ? inline.readonly
627
+ : item.readonly !== undefined
628
+ ? item.readonly
629
+ : readonly
630
+ "
631
+ @blur="
632
+ (event) => {
633
+ handleBlur(inline, event);
634
+ }
635
+ "
636
+ @focus="
637
+ (event) => {
638
+ handleFocus(inline, event);
639
+ }
640
+ "
641
+ @change="
642
+ (val) => {
643
+ handleChange(inline, val);
644
+ }
645
+ "
646
+ ></es-select>
647
+ <es-cascader
648
+ v-else-if="inline.type == 'cascader'"
649
+ v-bind="
650
+ handleExclAttribute({
651
+ data: inline,
652
+ attrs: ['value']
653
+ })
654
+ "
655
+ v-model="models[inline.name]"
656
+ :plain="
657
+ inline.plain || inline.name === undefined
658
+ "
659
+ :readonly="
660
+ inline.readonly !== undefined
661
+ ? inline.readonly
662
+ : item.readonly !== undefined
663
+ ? item.readonly
664
+ : readonly
665
+ "
666
+ @blur="
667
+ (event) => {
668
+ handleBlur(inline, event);
669
+ }
670
+ "
671
+ @focus="
672
+ (event) => {
673
+ handleFocus(inline, event);
674
+ }
675
+ "
676
+ @change="
677
+ (val) => {
678
+ handleChange(inline, val);
679
+ }
680
+ "
681
+ >
682
+ </es-cascader>
683
+ <es-date-picker
684
+ v-else-if="
685
+ inline.date ||
686
+ [
687
+ 'date',
688
+ 'year',
689
+ 'month',
690
+ 'date',
691
+ 'dates',
692
+ 'week',
693
+ 'datetime',
694
+ 'datetimerange',
695
+ 'daterange',
696
+ 'monthrange',
697
+ 'quarter',
698
+ 'halfyear'
699
+ ].includes(inline.type)
700
+ "
701
+ v-bind="
702
+ handleExclAttribute({
703
+ data: inline,
704
+ attrs: ['value']
705
+ })
706
+ "
707
+ v-model="models[inline.name]"
708
+ :plain="
709
+ inline.plain || inline.name === undefined
710
+ "
711
+ :readonly="
712
+ inline.readonly !== undefined
713
+ ? inline.readonly
714
+ : item.readonly !== undefined
715
+ ? item.readonly
716
+ : readonly
717
+ "
718
+ @blur="
719
+ (event) => {
720
+ handleBlur(inline, event);
721
+ }
722
+ "
723
+ @focus="
724
+ (event) => {
725
+ handleFocus(inline, event);
726
+ }
727
+ "
728
+ @change="
729
+ (val) => {
730
+ handleChange(inline, val);
731
+ }
732
+ "
733
+ ></es-date-picker>
734
+ <template
735
+ v-else-if="
736
+ inline.type == 'image' || inline.type == 'img'
737
+ "
738
+ >
739
+ <img
740
+ v-if="inline.url || inline.src"
741
+ v-bind="
742
+ handleExclAttribute({
743
+ data: inline,
744
+ attrs: ['value']
745
+ })
746
+ "
747
+ height="100%"
748
+ :src="inline.url || inline.src"
749
+ @click="inline.event"
750
+ />
751
+ </template>
752
+ <es-icons
753
+ v-else-if="inline.type === 'icon'"
754
+ v-bind="
755
+ handleExclAttribute({
756
+ data: inline,
757
+ attrs: ['value']
758
+ })
759
+ "
760
+ v-model="models[inline.name]"
761
+ :plain="
762
+ inline.plain || inline.name === undefined
763
+ "
764
+ :readonly="
765
+ inline.readonly !== undefined
766
+ ? inline.readonly
767
+ : item.readonly !== undefined
768
+ ? item.readonly
769
+ : readonly
770
+ "
771
+ @change="
772
+ (val) => {
773
+ handleChange(inline, val);
774
+ }
775
+ "
776
+ ></es-icons>
777
+ <component
778
+ v-else-if="inline.type === 'component'"
779
+ v-model="models[inline.name]"
780
+ v-bind="
781
+ handleExclAttribute({
782
+ data: inline,
783
+ attrs: ['value', 'label']
784
+ })
785
+ "
786
+ v-on="inline.events"
787
+ ></component>
788
+ <es-input
789
+ v-else
790
+ v-bind="
791
+ handleExclAttribute({
792
+ data: inline,
793
+ attrs: ['value']
794
+ })
795
+ "
796
+ v-model="models[inline.name]"
797
+ :plain="
798
+ inline.plain || inline.name === undefined
799
+ "
800
+ :readonly="
801
+ inline.readonly !== undefined
802
+ ? inline.readonly
803
+ : item.readonly !== undefined
804
+ ? item.readonly
805
+ : readonly
806
+ "
807
+ @blur="
808
+ (event) => {
809
+ handleBlur(inline, event);
810
+ }
811
+ "
812
+ @focus="
813
+ (event) => {
814
+ handleFocus(inline, event);
815
+ }
816
+ "
817
+ @input="
818
+ (val) => {
819
+ handleInput(inline, val);
820
+ }
821
+ "
822
+ @clear="handleClear(inline)"
823
+ @change="
824
+ (val) => {
825
+ handleChange(inline, val);
826
+ }
827
+ "
828
+ ></es-input>
829
+ </el-form-item>
830
+ </div>
831
+ </template>
832
+ </template>
833
+ <template v-else-if="!item.inline.hide">
834
+ <div
835
+ class="es-range"
836
+ v-if="item.inline.range !== false"
837
+ >
838
+
839
+ </div>
840
+ <el-form-item
841
+ label-width="0"
842
+ :prop="item.inline.name"
843
+ :rules="getRules(item.inline)"
844
+ >
845
+ <es-input-number
846
+ v-if="item.inline.type == 'number'"
847
+ v-bind="item.inline"
848
+ v-model="models[item.inline.name]"
849
+ :plain="
850
+ item.inline.plain ||
851
+ item.inline.name === undefined
852
+ "
853
+ :readonly="
854
+ item.inline.readonly !== undefined
855
+ ? item.inline.readonly
856
+ : item.readonly !== undefined
857
+ ? item.readonly
858
+ : readonly
859
+ "
860
+ @blur="
861
+ (event) => {
862
+ handleBlur(item.inline, event);
863
+ }
864
+ "
865
+ @focus="
866
+ (event) => {
867
+ handleFocus(item.inline, event);
868
+ }
869
+ "
870
+ @change="
871
+ (val) => {
872
+ handleChange(item.inline, val);
873
+ }
874
+ "
875
+ ></es-input-number>
876
+ <es-select
877
+ v-else-if="item.inline.type == 'select'"
878
+ v-bind="
879
+ handleExclAttribute({
880
+ data: item,
881
+ attrs: 'label'
882
+ })
883
+ "
884
+ v-model="models[item.inline.name]"
885
+ :plain="
886
+ item.inline.plain ||
887
+ item.inline.name === undefined
888
+ "
889
+ :readonly="
890
+ item.inline.readonly !== undefined
891
+ ? item.inline.readonly
892
+ : item.readonly !== undefined
893
+ ? item.readonly
894
+ : readonly
895
+ "
896
+ @blur="
897
+ (event) => {
898
+ handleBlur(item.inline, event);
899
+ }
900
+ "
901
+ @focus="
902
+ (event) => {
903
+ handleFocus(item.inline, event);
904
+ }
905
+ "
906
+ @change="
907
+ (val) => {
908
+ handleChange(item.inline, val);
909
+ }
910
+ "
911
+ ></es-select>
912
+ <es-cascader
913
+ v-else-if="item.inline.type == 'cascader'"
914
+ v-bind="
915
+ handleExclAttribute({
916
+ data: item,
917
+ attrs: 'label'
918
+ })
919
+ "
920
+ v-model="models[item.inline.name]"
921
+ :plain="
922
+ item.inline.plain ||
923
+ item.inline.name === undefined
924
+ "
925
+ :readonly="
926
+ item.inline.readonly !== undefined
927
+ ? item.inline.readonly
928
+ : item.readonly !== undefined
929
+ ? item.readonly
930
+ : readonly
931
+ "
932
+ @blur="
933
+ (event) => {
934
+ handleBlur(item.inline, event);
935
+ }
936
+ "
937
+ @focus="
938
+ (event) => {
939
+ handleFocus(item.inline, event);
940
+ }
941
+ "
942
+ @change="
943
+ (val) => {
944
+ handleChange(item.inline, val);
945
+ }
946
+ "
947
+ >
948
+ </es-cascader>
949
+ <es-date-picker
950
+ v-else-if="
951
+ item.inline.date ||
952
+ [
953
+ 'date',
954
+ 'year',
955
+ 'month',
956
+ 'date',
957
+ 'dates',
958
+ 'week',
959
+ 'datetime',
960
+ 'datetimerange',
961
+ 'daterange',
962
+ 'monthrange',
963
+ 'quarter',
964
+ 'halfyear'
965
+ ].includes(item.inline.type)
966
+ "
967
+ v-bind="item.inline"
968
+ v-model="models[item.inline.name]"
969
+ :plain="
970
+ item.inline.plain ||
971
+ item.inline.name === undefined
972
+ "
973
+ :readonly="
974
+ item.inline.readonly !== undefined
975
+ ? item.inline.readonly
976
+ : item.readonly !== undefined
977
+ ? item.readonly
978
+ : readonly
979
+ "
980
+ @blur="
981
+ (event) => {
982
+ handleBlur(item.inline, event);
983
+ }
984
+ "
985
+ @focus="
986
+ (event) => {
987
+ handleFocus(item.inline, event);
988
+ }
989
+ "
990
+ @change="
991
+ (val) => {
992
+ handleChange(item.inline, val);
993
+ }
994
+ "
995
+ ></es-date-picker>
996
+ <es-icons
997
+ v-else-if="item.inline.type === 'icon'"
998
+ v-bind="
999
+ handleExclAttribute({
1000
+ data: item.inline,
1001
+ attrs: ['value']
1002
+ })
1003
+ "
1004
+ v-model="models[item.inline.name]"
1005
+ :plain="
1006
+ item.inline.plain ||
1007
+ item.inline.name === undefined
1008
+ "
1009
+ :readonly="
1010
+ item.inline.readonly !== undefined
1011
+ ? item.inline.readonly
1012
+ : item.readonly !== undefined
1013
+ ? item.readonly
1014
+ : readonly
1015
+ "
1016
+ @change="
1017
+ (val) => {
1018
+ handleChange(item.inline, val);
1019
+ }
1020
+ "
1021
+ ></es-icons>
1022
+ <component
1023
+ v-else-if="item.inline.type === 'component'"
1024
+ v-model="models[item.inline.name]"
1025
+ v-bind="
1026
+ handleExclAttribute({
1027
+ data: item.inline,
1028
+ attrs: ['value', 'label']
1029
+ })
1030
+ "
1031
+ v-on="item.inline.events"
1032
+ ></component>
1033
+ <es-input
1034
+ v-else
1035
+ v-bind="item.inline"
1036
+ v-model="models[item.inline.name]"
1037
+ :plain="
1038
+ item.inline.plain ||
1039
+ item.inline.name === undefined
1040
+ "
1041
+ :readonly="
1042
+ item.inline.readonly !== undefined
1043
+ ? item.inline.readonly
1044
+ : item.readonly !== undefined
1045
+ ? item.readonly
1046
+ : readonly
1047
+ "
1048
+ @blur="
1049
+ (event) => {
1050
+ handleBlur(item.inline, event);
1051
+ }
1052
+ "
1053
+ @focus="
1054
+ (event) => {
1055
+ handleFocus(item.inline, event);
1056
+ }
1057
+ "
1058
+ @change="
1059
+ (val) => {
1060
+ handleChange(item.inline, val);
1061
+ }
1062
+ "
1063
+ @input="
1064
+ (val) => {
1065
+ handleInput(item.inline, val);
1066
+ }
1067
+ "
1068
+ @clear="
1069
+ () => {
1070
+ handleClear(item.inline);
1071
+ }
1072
+ "
1073
+ >
1074
+ <template v-if="item.inline.prefix" slot="prefix">
1075
+ <expand-dom
1076
+ v-if="item.inline.render"
1077
+ :item="item"
1078
+ :model="models"
1079
+ :render="item.inline.render"
1080
+ ></expand-dom>
1081
+ </template>
1082
+ <template slot="suffix" v-if="item.inline.suffix">
1083
+ <expand-dom
1084
+ v-if="item.inline.render"
1085
+ :item="item"
1086
+ :model="models"
1087
+ :render="item.inline.render"
1088
+ ></expand-dom>
1089
+ </template>
1090
+ <template v-if="item.inline.prepend" slot="prepend">
1091
+ <expand-dom
1092
+ v-if="item.inline.render"
1093
+ :item="item"
1094
+ :model="models"
1095
+ :render="item.inline.render"
1096
+ ></expand-dom>
1097
+ </template>
1098
+ <template v-if="item.inline.append" slot="append">
1099
+ <expand-dom
1100
+ v-if="item.inline.render"
1101
+ :item="item"
1102
+ :model="models"
1103
+ :render="item.inline.render"
1104
+ ></expand-dom>
1105
+ </template>
1106
+ </es-input>
1107
+ </el-form-item>
1108
+ </template>
1109
+ </template>
1110
+ </el-form-item>
1111
+ </template>
1112
+ </td>
1113
+ </template>
1114
+ </template>
1115
+ </tr>
1116
+ </tbody>
1117
+ </table>
1118
+ <template v-for="(item, index) in table">
1119
+ <es-data-table-form
1120
+ v-if="item.lazy"
1121
+ :key="index"
1122
+ class="es-form-item-table"
1123
+ :data="model[item.name]"
1124
+ :full="false"
1125
+ v-bind="item"
1126
+ :readonly="item.readonly !== undefined ? item.readonly : readonly"
1127
+ @blur="
1128
+ (val, data) => {
1129
+ handleBlur(item, val, data);
1130
+ }
1131
+ "
1132
+ @focus="
1133
+ (val, data) => {
1134
+ handleFocus(item, val, data);
1135
+ }
1136
+ "
1137
+ @edit="
1138
+ (val, data) => {
1139
+ handleChange(item, val, data);
1140
+ }
1141
+ "
1142
+ @btnClick="handleClick"
1143
+ @dataChange="handleDataChange"
1144
+ >
1145
+ </es-data-table-form>
1146
+ <es-data-table
1147
+ v-else
1148
+ :key="index"
1149
+ class="es-form-item-table"
1150
+ ref="dataTable"
1151
+ :data="model[item.name]"
1152
+ :full="false"
1153
+ v-bind="
1154
+ handleExclAttribute({
1155
+ data: item,
1156
+ attrs: ['value', 'events']
1157
+ })
1158
+ "
1159
+ v-on="item.events"
1160
+ :readonly="item.readonly !== undefined ? item.readonly : readonly"
1161
+ @blur="
1162
+ (val, data) => {
1163
+ handleBlur(item, val, data);
1164
+ }
1165
+ "
1166
+ @focus="
1167
+ (val, data) => {
1168
+ handleFocus(item, val, data);
1169
+ }
1170
+ "
1171
+ @edit="
1172
+ (val, data) => {
1173
+ handleChange(item, val, data);
1174
+ }
1175
+ "
1176
+ @btnClick="handleClick"
1177
+ @dataChange="handleDataChange"
1178
+ >
1179
+ </es-data-table>
1180
+ </template>
1181
+ </div>
1182
+ </template>
1183
+ <script>
1184
+ import rules from 'eoss-ui/src/utils/rules.js';
1185
+ import util from 'eoss-ui/src/utils/util';
1186
+ export default {
1187
+ name: 'EsTableForm',
1188
+ components: {
1189
+ expandDom: {
1190
+ functional: true,
1191
+ props: {
1192
+ item: Object,
1193
+ model: Object,
1194
+ render: [Function, String]
1195
+ },
1196
+ render: (h, ctx) => {
1197
+ if (typeof ctx.props.render == 'string') {
1198
+ try {
1199
+ return util.toFunction(ctx.props.render)(h, params);
1200
+ } catch (error) {
1201
+ throw error;
1202
+ }
1203
+ }
1204
+ return ctx.props.render(h, ctx.props.item, ctx.props.model);
1205
+ }
1206
+ }
1207
+ },
1208
+ inject: {
1209
+ scale: {
1210
+ default: ''
1211
+ },
1212
+ esForm: {
1213
+ default: ''
1214
+ }
1215
+ },
1216
+ props: {
1217
+ model: {
1218
+ type: Object,
1219
+ default() {
1220
+ return {};
1221
+ }
1222
+ },
1223
+ disabled: Boolean,
1224
+ span: Number,
1225
+ contents: {
1226
+ type: Array,
1227
+ default() {
1228
+ return [];
1229
+ }
1230
+ },
1231
+ hideRequiredAsterisk: {
1232
+ type: Boolean,
1233
+ default: false
1234
+ },
1235
+ after: {
1236
+ type: Boolean,
1237
+ default: true
1238
+ },
1239
+ labelWidth: {
1240
+ type: [Number, String],
1241
+ default: 120
1242
+ },
1243
+ readonly: Boolean,
1244
+ tableAfter: {
1245
+ type: Boolean,
1246
+ default: true
1247
+ },
1248
+ caption: String,
1249
+ widths: Array,
1250
+ thead: Array,
1251
+ zoom: false
1252
+ },
1253
+ computed: {
1254
+ content() {
1255
+ let content = [];
1256
+ let items = [];
1257
+ let n = 0;
1258
+ let table = [];
1259
+ let formList;
1260
+ if (this.tableAfter) {
1261
+ formList = this.contents.filter((items) => {
1262
+ if (Array.isArray(items)) {
1263
+ return items.filter((item) => {
1264
+ if (item.type === 'table' && item.after !== false) {
1265
+ table.push(item);
1266
+ }
1267
+ return item.type !== 'table' || item.after === false;
1268
+ });
1269
+ }
1270
+ if (items.type === 'table' && items.after !== false) {
1271
+ table.push(items);
1272
+ }
1273
+ return items.type !== 'table' || items.after === false;
1274
+ });
1275
+ this.table = table;
1276
+ } else {
1277
+ formList = this.contents;
1278
+ }
1279
+ if (Array.isArray(formList[0])) {
1280
+ return formList;
1281
+ } else {
1282
+ const contents = formList.filter((item) => {
1283
+ if (!item.hide) {
1284
+ return item;
1285
+ }
1286
+ });
1287
+ contents.forEach((item, index) => {
1288
+ let i = (index - n) % this.col;
1289
+ let cover = false;
1290
+ if (i == 0) {
1291
+ items = [];
1292
+ }
1293
+ if (
1294
+ (item.colspan && item.colspan > 1) ||
1295
+ item.col === 12 ||
1296
+ item.col === 0 ||
1297
+ item.type === 'table' ||
1298
+ item.type === 'caption'
1299
+ ) {
1300
+ cover = true;
1301
+ n++;
1302
+ }
1303
+ if (cover) {
1304
+ if (items.length) {
1305
+ content.push(items);
1306
+ content.push([item]);
1307
+ items = [];
1308
+ } else {
1309
+ content.push([item]);
1310
+ }
1311
+ } else {
1312
+ if (i < this.col) {
1313
+ items.push(item);
1314
+ }
1315
+ if (i + 1 === this.col) {
1316
+ content.push(items);
1317
+ }
1318
+ }
1319
+ });
1320
+ return content;
1321
+ }
1322
+ },
1323
+ models: {
1324
+ get() {
1325
+ return this.model;
1326
+ },
1327
+ set(val) {
1328
+ return val;
1329
+ }
1330
+ },
1331
+ isDisabled() {
1332
+ return this.disabled || (this.esForm || {}).disabled;
1333
+ }
1334
+ },
1335
+ watch: {
1336
+ scale: {
1337
+ deep: true,
1338
+ handler(val) {
1339
+ this.getWidth();
1340
+ }
1341
+ },
1342
+ zoom: {
1343
+ handler(val) {
1344
+ this.getWidth();
1345
+ }
1346
+ }
1347
+ },
1348
+ data() {
1349
+ return {
1350
+ col: this.span ? this.span : 2,
1351
+ cols: [],
1352
+ table: [],
1353
+ required: false
1354
+ };
1355
+ },
1356
+ created() {},
1357
+ mounted() {
1358
+ this.getWidth();
1359
+ },
1360
+ methods: {
1361
+ getLabel(res) {
1362
+ return typeof res === 'string'
1363
+ ? { contents: res }
1364
+ : { ...res, plain: res.plain || res.name === undefined };
1365
+ },
1366
+ getRules(res) {
1367
+ if (res.rules && !res.hide) {
1368
+ if (Array.isArray(res.rules)) {
1369
+ return res.rules.map((item) => {
1370
+ if (item.required) {
1371
+ this.required = item.required;
1372
+ }
1373
+ if (rules[item.type]) {
1374
+ return {
1375
+ pattern: rules[item.type]['pattern'],
1376
+ message: item.message
1377
+ ? item.message
1378
+ : rules[item.type]['message'],
1379
+ trigger: item.trigger
1380
+ ? item.trigger
1381
+ : res.fetchSuggestions ||
1382
+ res.url ||
1383
+ (res.data && res.data.length)
1384
+ ? 'change'
1385
+ : 'blur'
1386
+ };
1387
+ }
1388
+ return item;
1389
+ });
1390
+ }
1391
+ if (rules[res.rules.type]) {
1392
+ return {
1393
+ pattern: rules[res.rules.type]['pattern'],
1394
+ message: res.rules.message
1395
+ ? res.rules.message
1396
+ : rules[res.rules.type]['message'],
1397
+ trigger: res.rules.trigger
1398
+ ? res.rules.trigger
1399
+ : res.fetchSuggestions || res.url || (res.data && res.data.length)
1400
+ ? 'change'
1401
+ : 'blur'
1402
+ };
1403
+ }
1404
+ if (res.rules.required) {
1405
+ this.required = res.rules.required;
1406
+ }
1407
+ return res.rules;
1408
+ }
1409
+ return undefined;
1410
+ },
1411
+ getWidth() {
1412
+ this.$nextTick(() => {
1413
+ this.nextTickd();
1414
+ });
1415
+ },
1416
+ nextTickd() {
1417
+ let widths = [];
1418
+ let surplus = 0;
1419
+ let divisor = this.col;
1420
+ const parentWidth =
1421
+ this.$el.clientWidth -
1422
+ (parseFloat(this.$el.style.paddingLeft) || 0) -
1423
+ (parseFloat(this.$el.style.paddingRight) || 0);
1424
+ let getWidth = this.$refs.dataTable
1425
+ ? this.$refs.dataTable.$el
1426
+ ? this.$refs.dataTable.$el.offsetWidth
1427
+ : this.$refs.dataTable[0].$el.offsetWidth
1428
+ : parentWidth;
1429
+ if (getWidth < parentWidth) {
1430
+ getWidth = parentWidth;
1431
+ }
1432
+ let allWidth = getWidth - parseInt(this.labelWidth, 10) * this.col;
1433
+ if (this.widths && this.widths.length === this.col) {
1434
+ this.widths.forEach((item) => {
1435
+ let num = parseInt(item, 10);
1436
+ if (item && num) {
1437
+ allWidth -= item ? num : 0;
1438
+ divisor--;
1439
+ }
1440
+ });
1441
+ }
1442
+ let width = allWidth / divisor;
1443
+ if (width - Math.floor(width) > 0) {
1444
+ surplus =
1445
+ (getWidth - parseInt(this.labelWidth, 10) * this.col) % this.col;
1446
+ }
1447
+ if (this.col > 1) {
1448
+ for (let i = 0; i < this.col; i++) {
1449
+ if (this.widths && this.widths[i]) {
1450
+ widths.push(parseInt(this.widths[i], 10) + 'px');
1451
+ } else if (i < surplus) {
1452
+ widths.push(Math.floor(width) + 1 + 'px');
1453
+ } else {
1454
+ widths.push(Math.floor(width) + 'px');
1455
+ }
1456
+ }
1457
+ } else {
1458
+ widths = [''];
1459
+ }
1460
+ this.cols = widths;
1461
+ },
1462
+ handleClick(res) {
1463
+ if (res.event && typeof res.event === 'function') {
1464
+ res.event(res);
1465
+ }
1466
+ this.$emit('btnClick', res, this.models);
1467
+ this.$emit('btn-click', res, this.models);
1468
+ },
1469
+ handleChange(res, value, data) {
1470
+ if (res.events && res.events.change) {
1471
+ res.events.change(res, value, data);
1472
+ } else {
1473
+ this.$emit('change', res, value, data);
1474
+ }
1475
+ },
1476
+ handleInput(res, value, data) {
1477
+ this.$emit('input', res, value, data);
1478
+ },
1479
+ handleFocus(res, value, data) {
1480
+ if (res.events && res.events.focus) {
1481
+ res.events.focus(res, value, data);
1482
+ } else {
1483
+ this.$emit('focus', res, value, data);
1484
+ }
1485
+ },
1486
+ handleBlur(res, value, data) {
1487
+ if (res.events && res.events.blur) {
1488
+ res.events.blur(res, value, data);
1489
+ } else {
1490
+ this.$emit('blur', res, value, data);
1491
+ }
1492
+ },
1493
+ handleClear(res, value) {
1494
+ this.$emit('clear', res, value);
1495
+ },
1496
+ handleDataChange(res, data) {
1497
+ if (res.events && res.events.dataChange) {
1498
+ res.events.dataChange(res, value, data);
1499
+ } else {
1500
+ this.$emit('dataChange', res, data);
1501
+ this.$emit('data-change', res, data);
1502
+ }
1503
+ },
1504
+ handleExclAttribute({ data, attrs }) {
1505
+ return util.exclAttribute({
1506
+ data: data,
1507
+ attrs: attrs
1508
+ });
1509
+ }
1510
+ }
1511
+ };
1512
+ </script>