eoss-ui 0.6.84 → 0.6.86

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