eoss-ui 0.3.97

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 (378) hide show
  1. package/CHANGELOG.md +929 -0
  2. package/README.md +30 -0
  3. package/lib/button-group.js +2857 -0
  4. package/lib/button.js +2884 -0
  5. package/lib/card.js +603 -0
  6. package/lib/cascader.js +373 -0
  7. package/lib/checkbox-group.js +3099 -0
  8. package/lib/clients.js +375 -0
  9. package/lib/config/api.js +205 -0
  10. package/lib/data-table-form.js +3848 -0
  11. package/lib/data-table.js +6315 -0
  12. package/lib/date-picker.js +2821 -0
  13. package/lib/dialog.js +3730 -0
  14. package/lib/enterprise.js +372 -0
  15. package/lib/eoss-ui.common.js +65365 -0
  16. package/lib/error-page.js +293 -0
  17. package/lib/flow-group.js +4200 -0
  18. package/lib/flow-list.js +4350 -0
  19. package/lib/flow.js +12893 -0
  20. package/lib/form.js +15635 -0
  21. package/lib/handle-user.js +2900 -0
  22. package/lib/handler.js +3118 -0
  23. package/lib/index.js +1 -0
  24. package/lib/input-number.js +2743 -0
  25. package/lib/input.js +2935 -0
  26. package/lib/label.js +411 -0
  27. package/lib/login.js +5048 -0
  28. package/lib/main.js +5816 -0
  29. package/lib/mainComp.js +6530 -0
  30. package/lib/menu.js +529 -0
  31. package/lib/nav.js +3048 -0
  32. package/lib/notify.js +1079 -0
  33. package/lib/page.js +3036 -0
  34. package/lib/pagination.js +354 -0
  35. package/lib/player.js +2904 -0
  36. package/lib/qr-code.js +2860 -0
  37. package/lib/radio-group.js +3091 -0
  38. package/lib/select-ganged.js +3242 -0
  39. package/lib/select.js +3295 -0
  40. package/lib/selector-panel.js +4425 -0
  41. package/lib/selector.js +3722 -0
  42. package/lib/sizer.js +3067 -0
  43. package/lib/steps.js +2943 -0
  44. package/lib/switch.js +2784 -0
  45. package/lib/table-form.js +6211 -0
  46. package/lib/tabs-panel.js +274 -0
  47. package/lib/tabs.js +4988 -0
  48. package/lib/theme-chalk/base.css +1 -0
  49. package/lib/theme-chalk/button-group.css +1 -0
  50. package/lib/theme-chalk/button.css +0 -0
  51. package/lib/theme-chalk/card.css +1 -0
  52. package/lib/theme-chalk/cascader.css +0 -0
  53. package/lib/theme-chalk/checkbox-group.css +1 -0
  54. package/lib/theme-chalk/clients.css +1 -0
  55. package/lib/theme-chalk/data-table-form.css +1 -0
  56. package/lib/theme-chalk/data-table.css +1 -0
  57. package/lib/theme-chalk/date-picker.css +1 -0
  58. package/lib/theme-chalk/dialog.css +1 -0
  59. package/lib/theme-chalk/enterprise.css +1 -0
  60. package/lib/theme-chalk/error-page.css +1 -0
  61. package/lib/theme-chalk/flow-chart.css +0 -0
  62. package/lib/theme-chalk/flow-group.css +1 -0
  63. package/lib/theme-chalk/flow-list.css +1 -0
  64. package/lib/theme-chalk/flow.css +1 -0
  65. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  66. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  67. package/lib/theme-chalk/form.css +1 -0
  68. package/lib/theme-chalk/handle-user.css +1 -0
  69. package/lib/theme-chalk/handler.css +1 -0
  70. package/lib/theme-chalk/icon.css +1 -0
  71. package/lib/theme-chalk/index.css +1 -0
  72. package/lib/theme-chalk/input-number.css +0 -0
  73. package/lib/theme-chalk/input.css +1 -0
  74. package/lib/theme-chalk/label.css +1 -0
  75. package/lib/theme-chalk/login.css +1 -0
  76. package/lib/theme-chalk/main.css +1 -0
  77. package/lib/theme-chalk/mainComp.css +0 -0
  78. package/lib/theme-chalk/menu.css +1 -0
  79. package/lib/theme-chalk/nav.css +1 -0
  80. package/lib/theme-chalk/notify.css +0 -0
  81. package/lib/theme-chalk/page.css +1 -0
  82. package/lib/theme-chalk/pagination.css +1 -0
  83. package/lib/theme-chalk/player.css +1 -0
  84. package/lib/theme-chalk/qr-code.css +1 -0
  85. package/lib/theme-chalk/radio-group.css +1 -0
  86. package/lib/theme-chalk/radio.css +1 -0
  87. package/lib/theme-chalk/select-ganged.css +1 -0
  88. package/lib/theme-chalk/select.css +0 -0
  89. package/lib/theme-chalk/selector-panel.css +1 -0
  90. package/lib/theme-chalk/selector.css +1 -0
  91. package/lib/theme-chalk/sizer.css +1 -0
  92. package/lib/theme-chalk/steps.css +1 -0
  93. package/lib/theme-chalk/switch.css +1 -0
  94. package/lib/theme-chalk/table-form.css +0 -0
  95. package/lib/theme-chalk/tabs-panel.css +0 -0
  96. package/lib/theme-chalk/tabs.css +1 -0
  97. package/lib/theme-chalk/tips.css +1 -0
  98. package/lib/theme-chalk/toolbar.css +1 -0
  99. package/lib/theme-chalk/tree-group.css +1 -0
  100. package/lib/theme-chalk/tree.css +1 -0
  101. package/lib/theme-chalk/upload.css +1 -0
  102. package/lib/theme-chalk/wujie.css +0 -0
  103. package/lib/theme-chalk/wxlogin.css +1 -0
  104. package/lib/tips.js +2830 -0
  105. package/lib/toolbar.js +531 -0
  106. package/lib/tree-group.js +3373 -0
  107. package/lib/tree.js +3482 -0
  108. package/lib/upload.js +3913 -0
  109. package/lib/utils/bus.js +9 -0
  110. package/lib/utils/date-util.js +318 -0
  111. package/lib/utils/http.js +58 -0
  112. package/lib/utils/rules.js +19 -0
  113. package/lib/utils/store.js +22 -0
  114. package/lib/utils/util.js +2056 -0
  115. package/lib/wujie.js +2845 -0
  116. package/lib/wxlogin.js +2799 -0
  117. package/package.json +151 -0
  118. package/packages/button/index.js +5 -0
  119. package/packages/button/src/main.vue +264 -0
  120. package/packages/button-group/index.js +5 -0
  121. package/packages/button-group/src/main.vue +130 -0
  122. package/packages/card/index.js +5 -0
  123. package/packages/card/src/main.vue +144 -0
  124. package/packages/cascader/index.js +5 -0
  125. package/packages/cascader/src/main.vue +144 -0
  126. package/packages/checkbox-group/index.js +5 -0
  127. package/packages/checkbox-group/src/main.vue +285 -0
  128. package/packages/clients/index.js +5 -0
  129. package/packages/clients/src/main.vue +50 -0
  130. package/packages/data-table/index.js +5 -0
  131. package/packages/data-table/src/children.vue +40 -0
  132. package/packages/data-table/src/column.vue +796 -0
  133. package/packages/data-table/src/main copy.vue +1383 -0
  134. package/packages/data-table/src/main.vue +1229 -0
  135. package/packages/data-table/src/mixins/table.js +12 -0
  136. package/packages/data-table/src/sizer.vue +160 -0
  137. package/packages/data-table-form/index.js +5 -0
  138. package/packages/data-table-form/src/colgroup.vue +17 -0
  139. package/packages/data-table-form/src/main.vue +167 -0
  140. package/packages/data-table-form/src/table.vue +192 -0
  141. package/packages/data-table-form/src/tbody.vue +219 -0
  142. package/packages/data-table-form/src/thead.vue +68 -0
  143. package/packages/date-picker/index.js +5 -0
  144. package/packages/date-picker/src/main.vue +185 -0
  145. package/packages/dialog/index.js +5 -0
  146. package/packages/dialog/src/main.vue +442 -0
  147. package/packages/enterprise/index.js +5 -0
  148. package/packages/enterprise/src/main.vue +66 -0
  149. package/packages/error-page/index.js +5 -0
  150. package/packages/error-page/src/main.vue +44 -0
  151. package/packages/flow/index.js +5 -0
  152. package/packages/flow/src/component/CommonOpinions.vue +290 -0
  153. package/packages/flow/src/component/CustomPreset.vue +311 -0
  154. package/packages/flow/src/component/FileList.vue +97 -0
  155. package/packages/flow/src/component/Preset.vue +253 -0
  156. package/packages/flow/src/component/SendMsg.vue +221 -0
  157. package/packages/flow/src/component/TimeLimit.vue +190 -0
  158. package/packages/flow/src/component/taskUnionExamine.vue +507 -0
  159. package/packages/flow/src/form.vue +120 -0
  160. package/packages/flow/src/main.vue +2107 -0
  161. package/packages/flow/src/processForm.vue +866 -0
  162. package/packages/flow/src/processReject.vue +262 -0
  163. package/packages/flow/src/selectUser.vue +425 -0
  164. package/packages/flow/src/startTaskRead.vue +556 -0
  165. package/packages/flow/src/table.vue +51 -0
  166. package/packages/flow-group/index.js +5 -0
  167. package/packages/flow-group/src/main.vue +540 -0
  168. package/packages/flow-list/index.js +5 -0
  169. package/packages/flow-list/src/flow-table.vue +445 -0
  170. package/packages/flow-list/src/main.vue +456 -0
  171. package/packages/form/index.js +5 -0
  172. package/packages/form/src/main.vue +4429 -0
  173. package/packages/form/src/table.vue +1196 -0
  174. package/packages/handle-user/index.js +5 -0
  175. package/packages/handle-user/src/main.vue +122 -0
  176. package/packages/handler/index.js +5 -0
  177. package/packages/handler/src/main.vue +306 -0
  178. package/packages/input/index.js +5 -0
  179. package/packages/input/src/main.vue +307 -0
  180. package/packages/input-number/index.js +5 -0
  181. package/packages/input-number/src/main.vue +106 -0
  182. package/packages/label/index.js +5 -0
  183. package/packages/label/src/main.vue +208 -0
  184. package/packages/login/index.js +5 -0
  185. package/packages/login/src/main.vue +1193 -0
  186. package/packages/login/src/resetPassword.vue +332 -0
  187. package/packages/main/index.js +5 -0
  188. package/packages/main/src/main.vue +1496 -0
  189. package/packages/main/src/message.vue +239 -0
  190. package/packages/main/src/notice.vue +145 -0
  191. package/packages/main/src/settings.vue +105 -0
  192. package/packages/main/src/userinfo.vue +430 -0
  193. package/packages/mainComp/index.js +5 -0
  194. package/packages/mainComp/src/async-component/index.vue +85 -0
  195. package/packages/mainComp/src/main.vue +1934 -0
  196. package/packages/mainComp/src/message.vue +239 -0
  197. package/packages/mainComp/src/notice.vue +152 -0
  198. package/packages/mainComp/src/settings.vue +105 -0
  199. package/packages/mainComp/src/userinfo.vue +423 -0
  200. package/packages/menu/index.js +5 -0
  201. package/packages/menu/src/main.vue +401 -0
  202. package/packages/nav/index.js +5 -0
  203. package/packages/nav/src/main.vue +250 -0
  204. package/packages/notify/index.js +5 -0
  205. package/packages/notify/src/main.vue +538 -0
  206. package/packages/page/index.js +5 -0
  207. package/packages/page/src/main.vue +167 -0
  208. package/packages/pagination/index.js +5 -0
  209. package/packages/pagination/src/main.vue +77 -0
  210. package/packages/player/index.js +5 -0
  211. package/packages/player/src/main.vue +194 -0
  212. package/packages/qr-code/index.js +5 -0
  213. package/packages/qr-code/src/main.vue +154 -0
  214. package/packages/radio/index.js +5 -0
  215. package/packages/radio/src/main.vue +259 -0
  216. package/packages/radio-group/index.js +6 -0
  217. package/packages/radio-group/src/main.vue +267 -0
  218. package/packages/select/index.js +5 -0
  219. package/packages/select/src/main.vue +683 -0
  220. package/packages/select-ganged/index.js +5 -0
  221. package/packages/select-ganged/src/main.vue +686 -0
  222. package/packages/selector/index.js +5 -0
  223. package/packages/selector/src/main.vue +588 -0
  224. package/packages/selector-panel/index.js +5 -0
  225. package/packages/selector-panel/src/main.vue +968 -0
  226. package/packages/selector-panel/src/selection.vue +142 -0
  227. package/packages/selector-panel/src/tree.vue +129 -0
  228. package/packages/sizer/index.js +5 -0
  229. package/packages/sizer/src/main.vue +254 -0
  230. package/packages/steps/index.js +5 -0
  231. package/packages/steps/src/main.vue +175 -0
  232. package/packages/switch/index.js +5 -0
  233. package/packages/switch/src/main.vue +154 -0
  234. package/packages/table-form/index.js +5 -0
  235. package/packages/tabs/index.js +5 -0
  236. package/packages/tabs/src/main.vue +749 -0
  237. package/packages/tabs-panel/index.js +5 -0
  238. package/packages/tabs-panel/src/main.vue +18 -0
  239. package/packages/theme-chalk/README.md +33 -0
  240. package/packages/theme-chalk/lib/base.css +1 -0
  241. package/packages/theme-chalk/lib/button-group.css +1 -0
  242. package/packages/theme-chalk/lib/button.css +0 -0
  243. package/packages/theme-chalk/lib/card.css +1 -0
  244. package/packages/theme-chalk/lib/cascader.css +0 -0
  245. package/packages/theme-chalk/lib/checkbox-group.css +1 -0
  246. package/packages/theme-chalk/lib/clients.css +1 -0
  247. package/packages/theme-chalk/lib/data-table-form.css +1 -0
  248. package/packages/theme-chalk/lib/data-table.css +1 -0
  249. package/packages/theme-chalk/lib/date-picker.css +1 -0
  250. package/packages/theme-chalk/lib/dialog.css +1 -0
  251. package/packages/theme-chalk/lib/enterprise.css +1 -0
  252. package/packages/theme-chalk/lib/error-page.css +1 -0
  253. package/packages/theme-chalk/lib/flow-chart.css +0 -0
  254. package/packages/theme-chalk/lib/flow-group.css +1 -0
  255. package/packages/theme-chalk/lib/flow-list.css +1 -0
  256. package/packages/theme-chalk/lib/flow.css +1 -0
  257. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  258. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  259. package/packages/theme-chalk/lib/form.css +1 -0
  260. package/packages/theme-chalk/lib/handle-user.css +1 -0
  261. package/packages/theme-chalk/lib/handler.css +1 -0
  262. package/packages/theme-chalk/lib/icon.css +1 -0
  263. package/packages/theme-chalk/lib/index.css +1 -0
  264. package/packages/theme-chalk/lib/input-number.css +0 -0
  265. package/packages/theme-chalk/lib/input.css +1 -0
  266. package/packages/theme-chalk/lib/label.css +1 -0
  267. package/packages/theme-chalk/lib/login.css +1 -0
  268. package/packages/theme-chalk/lib/main.css +1 -0
  269. package/packages/theme-chalk/lib/mainComp.css +0 -0
  270. package/packages/theme-chalk/lib/menu.css +1 -0
  271. package/packages/theme-chalk/lib/nav.css +1 -0
  272. package/packages/theme-chalk/lib/notify.css +0 -0
  273. package/packages/theme-chalk/lib/page.css +1 -0
  274. package/packages/theme-chalk/lib/pagination.css +1 -0
  275. package/packages/theme-chalk/lib/player.css +1 -0
  276. package/packages/theme-chalk/lib/qr-code.css +1 -0
  277. package/packages/theme-chalk/lib/radio-group.css +1 -0
  278. package/packages/theme-chalk/lib/radio.css +1 -0
  279. package/packages/theme-chalk/lib/select-ganged.css +1 -0
  280. package/packages/theme-chalk/lib/select.css +0 -0
  281. package/packages/theme-chalk/lib/selector-panel.css +1 -0
  282. package/packages/theme-chalk/lib/selector.css +1 -0
  283. package/packages/theme-chalk/lib/sizer.css +1 -0
  284. package/packages/theme-chalk/lib/steps.css +1 -0
  285. package/packages/theme-chalk/lib/switch.css +1 -0
  286. package/packages/theme-chalk/lib/table-form.css +0 -0
  287. package/packages/theme-chalk/lib/tabs-panel.css +0 -0
  288. package/packages/theme-chalk/lib/tabs.css +1 -0
  289. package/packages/theme-chalk/lib/tips.css +1 -0
  290. package/packages/theme-chalk/lib/toolbar.css +1 -0
  291. package/packages/theme-chalk/lib/tree-group.css +1 -0
  292. package/packages/theme-chalk/lib/tree.css +1 -0
  293. package/packages/theme-chalk/lib/upload.css +1 -0
  294. package/packages/theme-chalk/lib/wujie.css +0 -0
  295. package/packages/theme-chalk/lib/wxlogin.css +1 -0
  296. package/packages/theme-chalk/package.json +35 -0
  297. package/packages/theme-chalk/src/base.scss +165 -0
  298. package/packages/theme-chalk/src/button-group.scss +9 -0
  299. package/packages/theme-chalk/src/button.scss +0 -0
  300. package/packages/theme-chalk/src/card.scss +55 -0
  301. package/packages/theme-chalk/src/cascader.scss +0 -0
  302. package/packages/theme-chalk/src/checkbox-group.scss +8 -0
  303. package/packages/theme-chalk/src/clients.scss +72 -0
  304. package/packages/theme-chalk/src/common/var.scss +1516 -0
  305. package/packages/theme-chalk/src/data-table-form.scss +55 -0
  306. package/packages/theme-chalk/src/data-table.scss +202 -0
  307. package/packages/theme-chalk/src/date-picker.scss +8 -0
  308. package/packages/theme-chalk/src/dialog.scss +52 -0
  309. package/packages/theme-chalk/src/enterprise.scss +5 -0
  310. package/packages/theme-chalk/src/error-page.scss +18 -0
  311. package/packages/theme-chalk/src/flow-chart.scss +0 -0
  312. package/packages/theme-chalk/src/flow-group.scss +101 -0
  313. package/packages/theme-chalk/src/flow-list.scss +41 -0
  314. package/packages/theme-chalk/src/flow.scss +285 -0
  315. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  316. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  317. package/packages/theme-chalk/src/form.scss +451 -0
  318. package/packages/theme-chalk/src/handle-user.scss +40 -0
  319. package/packages/theme-chalk/src/handler.scss +131 -0
  320. package/packages/theme-chalk/src/icon.scss +1714 -0
  321. package/packages/theme-chalk/src/index.scss +50 -0
  322. package/packages/theme-chalk/src/input-number.scss +0 -0
  323. package/packages/theme-chalk/src/input.scss +3 -0
  324. package/packages/theme-chalk/src/label.scss +24 -0
  325. package/packages/theme-chalk/src/login.scss +490 -0
  326. package/packages/theme-chalk/src/main.scss +483 -0
  327. package/packages/theme-chalk/src/mainComp.scss +0 -0
  328. package/packages/theme-chalk/src/menu.scss +201 -0
  329. package/packages/theme-chalk/src/mixins/color.scss +117 -0
  330. package/packages/theme-chalk/src/mixins/mixins.scss +25 -0
  331. package/packages/theme-chalk/src/nav.scss +73 -0
  332. package/packages/theme-chalk/src/notify.scss +0 -0
  333. package/packages/theme-chalk/src/page.scss +3 -0
  334. package/packages/theme-chalk/src/pagination.scss +14 -0
  335. package/packages/theme-chalk/src/player.scss +9 -0
  336. package/packages/theme-chalk/src/qr-code.scss +17 -0
  337. package/packages/theme-chalk/src/radio-group.scss +9 -0
  338. package/packages/theme-chalk/src/radio.scss +3 -0
  339. package/packages/theme-chalk/src/select-ganged.scss +9 -0
  340. package/packages/theme-chalk/src/select.scss +0 -0
  341. package/packages/theme-chalk/src/selector-panel.scss +203 -0
  342. package/packages/theme-chalk/src/selector.scss +85 -0
  343. package/packages/theme-chalk/src/sizer.scss +36 -0
  344. package/packages/theme-chalk/src/steps.scss +88 -0
  345. package/packages/theme-chalk/src/switch.scss +3 -0
  346. package/packages/theme-chalk/src/table-form.scss +1 -0
  347. package/packages/theme-chalk/src/tabs-panel.scss +0 -0
  348. package/packages/theme-chalk/src/tabs.scss +91 -0
  349. package/packages/theme-chalk/src/tips.scss +7 -0
  350. package/packages/theme-chalk/src/toolbar.scss +121 -0
  351. package/packages/theme-chalk/src/tree-group.scss +64 -0
  352. package/packages/theme-chalk/src/tree.scss +140 -0
  353. package/packages/theme-chalk/src/upload.scss +131 -0
  354. package/packages/theme-chalk/src/wujie.scss +0 -0
  355. package/packages/theme-chalk/src/wxlogin.scss +3 -0
  356. package/packages/tips/index.js +5 -0
  357. package/packages/tips/src/main.vue +126 -0
  358. package/packages/toolbar/index.js +5 -0
  359. package/packages/toolbar/src/main.vue +377 -0
  360. package/packages/tree/index.js +5 -0
  361. package/packages/tree/src/main.vue +636 -0
  362. package/packages/tree-group/index.js +5 -0
  363. package/packages/tree-group/src/main.vue +435 -0
  364. package/packages/upload/index.js +5 -0
  365. package/packages/upload/src/main.vue +1033 -0
  366. package/packages/upload/src/picture.js +15 -0
  367. package/packages/wujie/index.js +5 -0
  368. package/packages/wujie/src/main.vue +137 -0
  369. package/packages/wxlogin/index.js +5 -0
  370. package/packages/wxlogin/src/main.vue +110 -0
  371. package/src/config/api.js +211 -0
  372. package/src/index.js +167 -0
  373. package/src/utils/bus.js +3 -0
  374. package/src/utils/date-util.js +312 -0
  375. package/src/utils/http.js +50 -0
  376. package/src/utils/rules.js +18 -0
  377. package/src/utils/store.js +21 -0
  378. package/src/utils/util.js +2105 -0
@@ -0,0 +1,1196 @@
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
+ class="es-table-td-caption"
28
+ >
29
+ <div class="es-table-caption">{{ item.text }}</div>
30
+ </td>
31
+ <td
32
+ v-else-if="item.type === 'table'"
33
+ :colspan="col * 2"
34
+ class="es-table-form-data"
35
+ >
36
+ <es-data-table-form
37
+ v-if="item.lazy"
38
+ class="es-form-table-data"
39
+ :data="model[item.name]"
40
+ :full="false"
41
+ v-bind="item"
42
+ :readonly="readonly ? readonly : item.readonly"
43
+ @blur="
44
+ (val, data) => {
45
+ handleBlur(item, val, data);
46
+ }
47
+ "
48
+ @focus="
49
+ (val, data) => {
50
+ handleFocus(item, val, data);
51
+ }
52
+ "
53
+ @edit="
54
+ (val, data) => {
55
+ handleChange(item, val, data);
56
+ }
57
+ "
58
+ @btnClick="handleClick"
59
+ @dataChange="handleDataChange"
60
+ >
61
+ </es-data-table-form>
62
+ <es-data-table
63
+ v-else
64
+ class="es-form-item-table"
65
+ ref="dataTable"
66
+ :data="model[item.name]"
67
+ :full="false"
68
+ v-bind="
69
+ handleExclAttribute({
70
+ data: item,
71
+ attrs: ['value', 'events']
72
+ })
73
+ "
74
+ v-on="item.events"
75
+ :readonly="readonly ? readonly : item.readonly"
76
+ @blur="
77
+ (val, data) => {
78
+ handleBlur(item, val, data);
79
+ }
80
+ "
81
+ @focus="
82
+ (val, data) => {
83
+ handleFocus(item, val, data);
84
+ }
85
+ "
86
+ @edit="
87
+ (val, data) => {
88
+ handleChange(item, val, data);
89
+ }
90
+ "
91
+ @btnClick="handleClick"
92
+ @dataChange="handleDataChange"
93
+ >
94
+ </es-data-table>
95
+ </td>
96
+ <template v-else>
97
+ <td
98
+ v-if="item.label !== false"
99
+ class="es-table-form-label"
100
+ :class="{ 'es-align-middle': item.labelRow }"
101
+ :key="'label' + index"
102
+ :align="item.type === 'label' ? item.align : ''"
103
+ :colspan="
104
+ item.labelCol
105
+ ? item.labelCol
106
+ : item.type === 'label'
107
+ ? item.colspan
108
+ : ''
109
+ "
110
+ :rowspan="item.labelRow"
111
+ >
112
+ <es-label
113
+ :contents="item.label"
114
+ :plain="item.plain"
115
+ :rules="item.rules"
116
+ v-if="item.type !== 'table'"
117
+ ></es-label>
118
+ </td>
119
+ <td
120
+ v-if="
121
+ item.type !== 'label' &&
122
+ !(item.type === 'empty' && item.labelRow)
123
+ "
124
+ :align="
125
+ item.type === 'label' || item.type === 'empty'
126
+ ? item.align
127
+ : ''
128
+ "
129
+ :class="
130
+ item.type === 'label' || item.type === 'empty'
131
+ ? 'es-table-form-label'
132
+ : 'es-table-form-item'
133
+ "
134
+ :key="index"
135
+ :colspan="
136
+ item.colspan
137
+ ? item.colspan
138
+ : item.colspan !== false && items.length < col
139
+ ? col * 2 - items.length
140
+ : item.label === false
141
+ ? 2
142
+ : ''
143
+ "
144
+ :rowspan="item.rowspan"
145
+ >
146
+ <expand-dom
147
+ v-if="item.render"
148
+ :item="item"
149
+ :model="models"
150
+ :render="item.render"
151
+ ></expand-dom>
152
+ <template v-else>
153
+ <es-label
154
+ v-if="item.type === 'label' || item.type === 'empty'"
155
+ :contents="item.text"
156
+ ></es-label>
157
+ <el-form-item
158
+ v-else
159
+ label-width="0"
160
+ :prop="item.name"
161
+ :rules="getRules(item)"
162
+ :class="{
163
+ 'es-form-item-inline': item.inline
164
+ }"
165
+ >
166
+ <es-input-number
167
+ v-if="item.type == 'number'"
168
+ v-bind="
169
+ handleExclAttribute({
170
+ data: item,
171
+ attrs: 'label'
172
+ })
173
+ "
174
+ v-model="model[item.name]"
175
+ :plain="item.plain"
176
+ :readonly="readonly ? readonly : item.readonly"
177
+ @blur="
178
+ event => {
179
+ handleBlur(item, event);
180
+ }
181
+ "
182
+ @focus="
183
+ event => {
184
+ handleFocus(item, event);
185
+ }
186
+ "
187
+ @change="
188
+ val => {
189
+ handleChange(item, val);
190
+ }
191
+ "
192
+ ></es-input-number>
193
+ <es-radio-group
194
+ v-else-if="item.type == 'radio'"
195
+ v-bind="
196
+ handleExclAttribute({
197
+ data: item,
198
+ attrs: 'label'
199
+ })
200
+ "
201
+ v-model="model[item.name]"
202
+ :plain="item.plain"
203
+ :readonly="readonly ? readonly : item.readonly"
204
+ @change="
205
+ val => {
206
+ handleChange(item, val);
207
+ }
208
+ "
209
+ ></es-radio-group>
210
+ <es-checkbox-group
211
+ v-else-if="item.type == 'checkbox'"
212
+ v-bind="
213
+ handleExclAttribute({
214
+ data: item,
215
+ attrs: 'label'
216
+ })
217
+ "
218
+ v-model="model[item.name]"
219
+ :plain="item.plain"
220
+ :readonly="readonly ? readonly : item.readonly"
221
+ @change="
222
+ val => {
223
+ handleChange(item, val);
224
+ }
225
+ "
226
+ ></es-checkbox-group>
227
+ <es-select
228
+ v-else-if="item.type == 'select'"
229
+ v-bind="
230
+ handleExclAttribute({
231
+ data: item,
232
+ attrs: 'label'
233
+ })
234
+ "
235
+ v-model="model[item.name]"
236
+ :plain="item.plain"
237
+ :readonly="readonly ? readonly : item.readonly"
238
+ @blur="
239
+ event => {
240
+ handleBlur(item, event);
241
+ }
242
+ "
243
+ @focus="
244
+ event => {
245
+ handleFocus(item, event);
246
+ }
247
+ "
248
+ @change="
249
+ val => {
250
+ handleChange(item, val);
251
+ }
252
+ "
253
+ ></es-select>
254
+ <es-cascader
255
+ v-else-if="item.type == 'cascader'"
256
+ v-bind="
257
+ handleExclAttribute({
258
+ data: item,
259
+ attrs: 'label'
260
+ })
261
+ "
262
+ v-model="model[item.name]"
263
+ :plain="item.plain || item.name === undefined"
264
+ :readonly="readonly ? readonly : item.readonly"
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
+ >
281
+ </es-cascader>
282
+ <es-select-ganged
283
+ v-else-if="
284
+ item.type == 'ganged' ||
285
+ (item.type == 'select' && item.ganged)
286
+ "
287
+ v-bind="
288
+ handleExclAttribute({
289
+ data: item,
290
+ attrs: 'label'
291
+ })
292
+ "
293
+ v-model="model[item.name]"
294
+ :plain="item.plain"
295
+ :readonly="readonly ? readonly : item.readonly"
296
+ @change="
297
+ val => {
298
+ handleChange(item, val);
299
+ }
300
+ "
301
+ ></es-select-ganged>
302
+ <es-switch
303
+ v-else-if="item.type == 'switch'"
304
+ v-bind="
305
+ handleExclAttribute({
306
+ data: item,
307
+ attrs: 'label'
308
+ })
309
+ "
310
+ v-model="model[item.name]"
311
+ :plain="item.plain"
312
+ :readonly="readonly ? readonly : item.readonly"
313
+ @change="
314
+ val => {
315
+ handleChange(item, val);
316
+ }
317
+ "
318
+ ></es-switch>
319
+ <es-date-picker
320
+ v-else-if="
321
+ item.date ||
322
+ item.type == 'date' ||
323
+ item.type == 'year' ||
324
+ item.type == 'month' ||
325
+ item.type == 'date' ||
326
+ item.type == 'dates' ||
327
+ item.type == 'week' ||
328
+ item.type == 'datetime' ||
329
+ item.type == 'datetimerange' ||
330
+ item.type == 'daterange' ||
331
+ item.type == 'monthrange' ||
332
+ item.type == 'quarter' ||
333
+ item.type == 'halfyear'
334
+ "
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="readonly ? readonly : item.readonly"
344
+ @blur="
345
+ event => {
346
+ handleBlur(item, event);
347
+ }
348
+ "
349
+ @focus="
350
+ event => {
351
+ handleFocus(item, event);
352
+ }
353
+ "
354
+ @change="
355
+ val => {
356
+ handleChange(item, val);
357
+ }
358
+ "
359
+ ></es-date-picker>
360
+ <es-upload
361
+ v-bind="
362
+ handleExclAttribute({
363
+ data: item,
364
+ attrs: ['value', 'ownId']
365
+ })
366
+ "
367
+ :ownId="item.ownId || models.id"
368
+ v-model="model[item.name]"
369
+ v-else-if="
370
+ item.type == 'attachment' || item.type == 'upload'
371
+ "
372
+ :readonly="readonly ? readonly : item.readonly"
373
+ :rules="item.rules"
374
+ btnSize="small"
375
+ @change="
376
+ val => {
377
+ handleChange(item, val);
378
+ }
379
+ "
380
+ ></es-upload>
381
+ <es-selector
382
+ v-bind="
383
+ handleExclAttribute({
384
+ data: item,
385
+ attrs: 'label'
386
+ })
387
+ "
388
+ v-model="model[item.name]"
389
+ v-else-if="item.type == 'selector'"
390
+ :readonly="readonly ? readonly : item.readonly"
391
+ :plain="item.plain"
392
+ @change="
393
+ val => {
394
+ handleChange(item, val);
395
+ }
396
+ "
397
+ ></es-selector>
398
+ <es-input
399
+ v-else
400
+ v-bind="
401
+ handleExclAttribute({
402
+ data: item,
403
+ attrs: 'label'
404
+ })
405
+ "
406
+ v-model="model[item.name]"
407
+ :plain="item.plain"
408
+ :readonly="readonly ? readonly : item.readonly"
409
+ @blur="
410
+ event => {
411
+ handleBlur(item, event);
412
+ }
413
+ "
414
+ @focus="
415
+ event => {
416
+ handleFocus(item, event);
417
+ }
418
+ "
419
+ @change="
420
+ val => {
421
+ handleChange(item, val);
422
+ }
423
+ "
424
+ @input="
425
+ val => {
426
+ handleInput(item, val);
427
+ }
428
+ "
429
+ @clear="
430
+ () => {
431
+ handleClear(item);
432
+ }
433
+ "
434
+ >
435
+ <template v-if="item.prefix" slot="prefix">
436
+ <expand-dom
437
+ v-if="item.render"
438
+ :item="item"
439
+ :model="models"
440
+ :render="item.render"
441
+ ></expand-dom>
442
+ </template>
443
+ <template v-if="item.suffix" slot="suffix">
444
+ <expand-dom
445
+ v-if="item.render"
446
+ :item="item"
447
+ :model="models"
448
+ :render="item.render"
449
+ ></expand-dom>
450
+ </template>
451
+ <template v-if="item.prepend" slot="prepend">
452
+ <expand-dom
453
+ v-if="item.render"
454
+ :item="item"
455
+ :model="models"
456
+ :render="item.render"
457
+ ></expand-dom>
458
+ </template>
459
+ <template v-if="item.append" slot="append">
460
+ <expand-dom
461
+ v-if="item.render"
462
+ :item="item"
463
+ :model="models"
464
+ :render="item.render"
465
+ ></expand-dom>
466
+ </template>
467
+ </es-input>
468
+ <template v-if="item.inline">
469
+ <template v-if="Array.isArray(item.inline)">
470
+ <div
471
+ class="es-form-inline"
472
+ v-for="(inline, k) in item.inline"
473
+ :key="k"
474
+ >
475
+ <div class="es-range" v-if="inline.range !== false">
476
+
477
+ </div>
478
+ <es-input-number
479
+ v-if="inline.type == 'number'"
480
+ v-bind="
481
+ handleExclAttribute({
482
+ data: inline,
483
+ attrs: ['value']
484
+ })
485
+ "
486
+ v-model="models[inline.name]"
487
+ :plain="inline.plain || inline.name === undefined"
488
+ :readonly="readonly ? readonly : inline.readonly"
489
+ @blur="
490
+ event => {
491
+ handleBlur(inline, event);
492
+ }
493
+ "
494
+ @focus="
495
+ event => {
496
+ handleFocus(inline, event);
497
+ }
498
+ "
499
+ @change="
500
+ val => {
501
+ handleChange(inline, val);
502
+ }
503
+ "
504
+ ></es-input-number>
505
+ <es-select
506
+ v-else-if="inline.type == 'select'"
507
+ v-bind="
508
+ handleExclAttribute({
509
+ data: inline,
510
+ attrs: ['value']
511
+ })
512
+ "
513
+ v-model="models[inline.name]"
514
+ :plain="inline.plain || inline.name === undefined"
515
+ :readonly="readonly ? readonly : inline.readonly"
516
+ @blur="
517
+ event => {
518
+ handleBlur(inline, event);
519
+ }
520
+ "
521
+ @focus="
522
+ event => {
523
+ handleFocus(inline, event);
524
+ }
525
+ "
526
+ @change="
527
+ val => {
528
+ handleChange(inline, val);
529
+ }
530
+ "
531
+ ></es-select>
532
+ <es-cascader
533
+ v-else-if="inline.type == 'cascader'"
534
+ v-bind="
535
+ handleExclAttribute({
536
+ data: inline,
537
+ attrs: ['value']
538
+ })
539
+ "
540
+ v-model="models[inline.name]"
541
+ :plain="inline.plain || inline.name === undefined"
542
+ :readonly="readonly ? readonly : inline.readonly"
543
+ @blur="
544
+ event => {
545
+ handleBlur(inline, event);
546
+ }
547
+ "
548
+ @focus="
549
+ event => {
550
+ handleFocus(inline, event);
551
+ }
552
+ "
553
+ @change="
554
+ val => {
555
+ handleChange(inline, val);
556
+ }
557
+ "
558
+ >
559
+ </es-cascader>
560
+ <es-date-picker
561
+ v-else-if="
562
+ inline.date ||
563
+ inline.type == 'date' ||
564
+ inline.type == 'year' ||
565
+ inline.type == 'month' ||
566
+ inline.type == 'date' ||
567
+ inline.type == 'dates' ||
568
+ inline.type == 'week' ||
569
+ inline.type == 'datetime' ||
570
+ inline.type == 'datetimerange' ||
571
+ inline.type == 'daterange' ||
572
+ inline.type == 'monthrange' ||
573
+ inline.type == 'quarter' ||
574
+ inline.type == 'halfyear'
575
+ "
576
+ v-bind="
577
+ handleExclAttribute({
578
+ data: inline,
579
+ attrs: ['value']
580
+ })
581
+ "
582
+ v-model="models[inline.name]"
583
+ :plain="inline.plain || inline.name === undefined"
584
+ :readonly="readonly ? readonly : inline.readonly"
585
+ @blur="
586
+ event => {
587
+ handleBlur(inline, event);
588
+ }
589
+ "
590
+ @focus="
591
+ event => {
592
+ handleFocus(inline, event);
593
+ }
594
+ "
595
+ @change="
596
+ val => {
597
+ handleChange(inline, val);
598
+ }
599
+ "
600
+ ></es-date-picker>
601
+ <template
602
+ v-else-if="
603
+ inline.type == 'image' || inline.type == 'img'
604
+ "
605
+ >
606
+ <img
607
+ v-if="inline.url || inline.src"
608
+ v-bind="
609
+ handleExclAttribute({
610
+ data: inline,
611
+ attrs: ['value']
612
+ })
613
+ "
614
+ height="100%"
615
+ :src="inline.url || inline.src"
616
+ @click="inline.event"
617
+ />
618
+ </template>
619
+ <es-input
620
+ v-else
621
+ v-bind="
622
+ handleExclAttribute({
623
+ data: inline,
624
+ attrs: ['value']
625
+ })
626
+ "
627
+ v-model="models[inline.name]"
628
+ :plain="inline.plain || inline.name === undefined"
629
+ :readonly="readonly ? readonly : inline.readonly"
630
+ @blur="
631
+ event => {
632
+ handleBlur(inline, event);
633
+ }
634
+ "
635
+ @focus="
636
+ event => {
637
+ handleFocus(inline, event);
638
+ }
639
+ "
640
+ @input="
641
+ val => {
642
+ handleInput(inline, val);
643
+ }
644
+ "
645
+ @clear="handleClear(inline)"
646
+ @change="
647
+ val => {
648
+ handleChange(inline, val);
649
+ }
650
+ "
651
+ ></es-input>
652
+ </div>
653
+ </template>
654
+ <template v-else>
655
+ <div
656
+ class="es-range"
657
+ v-if="item.inline.range !== false"
658
+ >
659
+
660
+ </div>
661
+ <es-input-number
662
+ v-if="item.inline.type == 'number'"
663
+ v-bind="item.inline"
664
+ v-model="models[item.inline.name]"
665
+ :plain="
666
+ item.inline.plain || item.inline.name === undefined
667
+ "
668
+ :readonly="readonly ? readonly : item.inline.readonly"
669
+ @blur="
670
+ event => {
671
+ handleBlur(item.inline, event);
672
+ }
673
+ "
674
+ @focus="
675
+ event => {
676
+ handleFocus(item.inline, event);
677
+ }
678
+ "
679
+ @change="
680
+ val => {
681
+ handleChange(item.inline, val);
682
+ }
683
+ "
684
+ ></es-input-number>
685
+ <es-select
686
+ v-else-if="item.inline.type == 'select'"
687
+ v-bind="
688
+ handleExclAttribute({
689
+ data: item,
690
+ attrs: 'label'
691
+ })
692
+ "
693
+ v-model="models[item.inline.name]"
694
+ :plain="
695
+ item.inline.plain || item.inline.name === undefined
696
+ "
697
+ :readonly="readonly ? readonly : item.inline.readonly"
698
+ @blur="
699
+ event => {
700
+ handleBlur(item.inline, event);
701
+ }
702
+ "
703
+ @focus="
704
+ event => {
705
+ handleFocus(item.inline, event);
706
+ }
707
+ "
708
+ @change="
709
+ val => {
710
+ handleChange(item.inline, val);
711
+ }
712
+ "
713
+ ></es-select>
714
+ <es-cascader
715
+ v-else-if="item.inline.type == 'cascader'"
716
+ v-bind="
717
+ handleExclAttribute({
718
+ data: item,
719
+ attrs: 'label'
720
+ })
721
+ "
722
+ v-model="models[item.inline.name]"
723
+ :plain="
724
+ item.inline.plain || item.inline.name === undefined
725
+ "
726
+ :readonly="readonly ? readonly : item.inline.readonly"
727
+ @blur="
728
+ event => {
729
+ handleBlur(item.inline, event);
730
+ }
731
+ "
732
+ @focus="
733
+ event => {
734
+ handleFocus(item.inline, event);
735
+ }
736
+ "
737
+ @change="
738
+ val => {
739
+ handleChange(item.inline, val);
740
+ }
741
+ "
742
+ >
743
+ </es-cascader>
744
+ <es-date-picker
745
+ v-else-if="
746
+ item.inline.date ||
747
+ item.inline.type == 'date' ||
748
+ item.inline.type == 'year' ||
749
+ item.inline.type == 'month' ||
750
+ item.inline.type == 'date' ||
751
+ item.inline.type == 'dates' ||
752
+ item.inline.type == 'week' ||
753
+ item.inline.type == 'datetime' ||
754
+ item.inline.type == 'datetimerange' ||
755
+ item.inline.type == 'daterange' ||
756
+ item.inline.type == 'monthrange' ||
757
+ item.inline.type == 'quarter' ||
758
+ item.inline.type == 'halfyear'
759
+ "
760
+ v-bind="item.inline"
761
+ v-model="models[item.inline.name]"
762
+ :plain="
763
+ item.inline.plain || item.inline.name === undefined
764
+ "
765
+ :readonly="readonly ? readonly : item.inline.readonly"
766
+ @blur="
767
+ event => {
768
+ handleBlur(item.inline, event);
769
+ }
770
+ "
771
+ @focus="
772
+ event => {
773
+ handleFocus(item.inline, event);
774
+ }
775
+ "
776
+ @change="
777
+ val => {
778
+ handleChange(item.inline, val);
779
+ }
780
+ "
781
+ ></es-date-picker>
782
+ <es-input
783
+ v-else
784
+ v-bind="item.inline"
785
+ v-model="models[item.inline.name]"
786
+ :plain="
787
+ item.inline.plain || item.inline.name === undefined
788
+ "
789
+ :readonly="readonly ? readonly : item.inline.readonly"
790
+ @blur="
791
+ event => {
792
+ handleBlur(item.inline, event);
793
+ }
794
+ "
795
+ @focus="
796
+ event => {
797
+ handleFocus(item.inline, event);
798
+ }
799
+ "
800
+ @change="
801
+ val => {
802
+ handleChange(item.inline, val);
803
+ }
804
+ "
805
+ @input="
806
+ val => {
807
+ handleInput(item.inline, val);
808
+ }
809
+ "
810
+ @clear="
811
+ () => {
812
+ handleClear(item.inline);
813
+ }
814
+ "
815
+ >
816
+ <template v-if="item.inline.prefix" slot="prefix">
817
+ <expand-dom
818
+ v-if="item.inline.render"
819
+ :item="item"
820
+ :model="models"
821
+ :render="item.inline.render"
822
+ ></expand-dom>
823
+ </template>
824
+ <template slot="suffix" v-if="item.inline.suffix">
825
+ <expand-dom
826
+ v-if="item.inline.render"
827
+ :item="item"
828
+ :model="models"
829
+ :render="item.inline.render"
830
+ ></expand-dom>
831
+ </template>
832
+ <template v-if="item.inline.prepend" slot="prepend">
833
+ <expand-dom
834
+ v-if="item.inline.render"
835
+ :item="item"
836
+ :model="models"
837
+ :render="item.inline.render"
838
+ ></expand-dom>
839
+ </template>
840
+ <template v-if="item.inline.append" slot="append">
841
+ <expand-dom
842
+ v-if="item.inline.render"
843
+ :item="item"
844
+ :model="models"
845
+ :render="item.inline.render"
846
+ ></expand-dom>
847
+ </template>
848
+ </es-input>
849
+ </template>
850
+ </template>
851
+ </el-form-item>
852
+ </template>
853
+ </td>
854
+ </template>
855
+ </template>
856
+ </tr>
857
+ </tbody>
858
+ </table>
859
+ <template v-for="(item, index) in table">
860
+ <es-data-table-form
861
+ v-if="item.lazy"
862
+ class="es-form-item-table"
863
+ :data="model[item.name]"
864
+ :full="false"
865
+ v-bind="item"
866
+ :readonly="readonly ? readonly : item.readonly"
867
+ @blur="
868
+ (val, data) => {
869
+ handleBlur(item, val, data);
870
+ }
871
+ "
872
+ @focus="
873
+ (val, data) => {
874
+ handleFocus(item, val, data);
875
+ }
876
+ "
877
+ @edit="
878
+ (val, data) => {
879
+ handleChange(item, val, data);
880
+ }
881
+ "
882
+ @btnClick="handleClick"
883
+ @dataChange="handleDataChange"
884
+ >
885
+ </es-data-table-form>
886
+ <es-data-table
887
+ v-else
888
+ class="es-form-item-table"
889
+ ref="dataTable"
890
+ :data="model[item.name]"
891
+ :full="false"
892
+ v-bind="
893
+ handleExclAttribute({
894
+ data: item,
895
+ attrs: ['value', 'events']
896
+ })
897
+ "
898
+ v-on="item.events"
899
+ :readonly="readonly ? readonly : item.readonly"
900
+ @blur="
901
+ (val, data) => {
902
+ handleBlur(item, val, data);
903
+ }
904
+ "
905
+ @focus="
906
+ (val, data) => {
907
+ handleFocus(item, val, data);
908
+ }
909
+ "
910
+ @edit="
911
+ (val, data) => {
912
+ handleChange(item, val, data);
913
+ }
914
+ "
915
+ @btnClick="handleClick"
916
+ @dataChange="handleDataChange"
917
+ >
918
+ </es-data-table>
919
+ </template>
920
+ </div>
921
+ </template>
922
+ <script>
923
+ import rules from 'eoss-ui/src/utils/rules.js';
924
+ import util from 'eoss-ui/src/utils/util';
925
+ export default {
926
+ name: 'EsTableForm',
927
+ components: {
928
+ expandDom: {
929
+ functional: true,
930
+ props: {
931
+ item: Object,
932
+ model: Object,
933
+ render: [Function, String]
934
+ },
935
+ render: (h, ctx) => {
936
+ if (typeof ctx.props.render == 'string') {
937
+ try {
938
+ return util.toFunction(ctx.props.render)(h, params);
939
+ } catch (error) {
940
+ throw error;
941
+ }
942
+ }
943
+ return ctx.props.render(h, ctx.props.item, ctx.props.model);
944
+ }
945
+ }
946
+ },
947
+ props: {
948
+ model: {
949
+ type: Object,
950
+ default() {
951
+ return {};
952
+ }
953
+ },
954
+ span: Number,
955
+ contents: {
956
+ type: Array,
957
+ default() {
958
+ return [];
959
+ }
960
+ },
961
+ labelWidth: {
962
+ type: [Number, String],
963
+ default: 120
964
+ },
965
+ readonly: Boolean,
966
+ tableAfter: {
967
+ type: Boolean,
968
+ default: true
969
+ },
970
+ caption: String,
971
+ widths: Array,
972
+ thead: Array
973
+ },
974
+ computed: {
975
+ content() {
976
+ let content = [];
977
+ let items = [];
978
+ let n = 0;
979
+ let table = [];
980
+ let formList;
981
+ if (this.tableAfter) {
982
+ formList = this.contents.filter(items => {
983
+ if (Array.isArray(items)) {
984
+ return items.filter(item => {
985
+ if (item.type === 'table' && item.after !== false) {
986
+ table.push(item);
987
+ }
988
+ return item.type !== 'table' || item.after === false;
989
+ });
990
+ }
991
+ if (items.type === 'table' && items.after !== false) {
992
+ table.push(items);
993
+ }
994
+ return items.type !== 'table' || items.after === false;
995
+ });
996
+ this.table = table;
997
+ } else {
998
+ formList = this.contents;
999
+ }
1000
+ if (Array.isArray(formList[0])) {
1001
+ return formList;
1002
+ } else {
1003
+ const contents = formList.filter(item => {
1004
+ if (!item.hide) {
1005
+ return item;
1006
+ }
1007
+ });
1008
+ contents.forEach((item, index) => {
1009
+ let i = (index - n) % this.col;
1010
+ let cover = false;
1011
+ if (i == 0) {
1012
+ items = [];
1013
+ }
1014
+ if (
1015
+ (item.colspan && item.colspan > 1) ||
1016
+ item.col === 12 ||
1017
+ item.col === 0 ||
1018
+ item.type === 'table' ||
1019
+ item.type === 'caption'
1020
+ ) {
1021
+ cover = true;
1022
+ n++;
1023
+ }
1024
+ if (cover) {
1025
+ if (items.length) {
1026
+ content.push(items);
1027
+ content.push([item]);
1028
+ items = [];
1029
+ } else {
1030
+ content.push([item]);
1031
+ }
1032
+ } else {
1033
+ if (i < this.col) {
1034
+ items.push(item);
1035
+ }
1036
+ if (i + 1 === this.col) {
1037
+ content.push(items);
1038
+ }
1039
+ }
1040
+ });
1041
+ return content;
1042
+ }
1043
+ },
1044
+ models: {
1045
+ get() {
1046
+ return this.model;
1047
+ },
1048
+ set(val) {
1049
+ return val;
1050
+ }
1051
+ }
1052
+ },
1053
+ data() {
1054
+ return {
1055
+ col: this.span ? this.span : 2,
1056
+ cols: [],
1057
+ table: []
1058
+ };
1059
+ },
1060
+ created() {},
1061
+ mounted() {
1062
+ this.getWidth();
1063
+ },
1064
+ methods: {
1065
+ getRules(res) {
1066
+ if (res.rules && !res.hide) {
1067
+ if (Array.isArray(res.rules)) {
1068
+ return res.rules.map(item => {
1069
+ if (rules[item.type]) {
1070
+ return {
1071
+ pattern: rules[item.type]['pattern'],
1072
+ message: item.message
1073
+ ? item.message
1074
+ : rules[item.type]['message'],
1075
+ trigger: item.trigger
1076
+ ? item.trigger
1077
+ : res.fetchSuggestions ||
1078
+ res.url ||
1079
+ (res.data && res.data.length)
1080
+ ? 'change'
1081
+ : 'blur'
1082
+ };
1083
+ }
1084
+ return item;
1085
+ });
1086
+ }
1087
+ if (rules[res.rules.type]) {
1088
+ return {
1089
+ pattern: rules[res.rules.type]['pattern'],
1090
+ message: res.rules.message
1091
+ ? res.rules.message
1092
+ : rules[res.rules.type]['message'],
1093
+ trigger: res.rules.trigger
1094
+ ? res.rules.trigger
1095
+ : res.fetchSuggestions || res.url || (res.data && res.data.length)
1096
+ ? 'change'
1097
+ : 'blur'
1098
+ };
1099
+ }
1100
+ return res.rules;
1101
+ }
1102
+ return undefined;
1103
+ },
1104
+ getWidth() {
1105
+ this.$nextTick(() => {
1106
+ this.nextTickd();
1107
+ });
1108
+ },
1109
+ nextTickd() {
1110
+ let widths = [];
1111
+ let surplus = 0;
1112
+ let divisor = this.col;
1113
+ let getWidth = this.$refs.dataTable
1114
+ ? this.$refs.dataTable.$el
1115
+ ? this.$refs.dataTable.$el.offsetWidth
1116
+ : this.$refs.dataTable[0].$el.offsetWidth
1117
+ : this.$parent.$el.offsetWidth;
1118
+ if (getWidth < this.$parent.$el.offsetWidth) {
1119
+ getWidth = this.$parent.$el.offsetWidth;
1120
+ }
1121
+ let allWidth = getWidth - parseInt(this.labelWidth, 10) * this.col;
1122
+ if (this.widths && this.widths.length === this.col) {
1123
+ this.widths.forEach(item => {
1124
+ let num = parseInt(item, 10);
1125
+ if (item && num) {
1126
+ allWidth -= item ? num : 0;
1127
+ divisor--;
1128
+ }
1129
+ });
1130
+ }
1131
+ let width = allWidth / divisor;
1132
+ if (width - Math.floor(width) > 0) {
1133
+ surplus =
1134
+ (getWidth - parseInt(this.labelWidth, 10) * this.col) % this.col;
1135
+ }
1136
+ if (this.col > 1) {
1137
+ for (let i = 0; i < this.col; i++) {
1138
+ if (this.widths && this.widths[i]) {
1139
+ widths.push(parseInt(this.widths[i], 10) + 'px');
1140
+ } else if (i < surplus) {
1141
+ widths.push(Math.floor(width) + 1 + 'px');
1142
+ } else {
1143
+ widths.push(Math.floor(width) + 'px');
1144
+ }
1145
+ }
1146
+ } else {
1147
+ widths = [''];
1148
+ }
1149
+ this.cols = widths;
1150
+ },
1151
+ handleClick(res) {
1152
+ this.$emit('click', res, this.models);
1153
+ },
1154
+ handleChange(res, value, data) {
1155
+ if (res.events && res.events.change) {
1156
+ res.events.change(res, value, data);
1157
+ } else {
1158
+ this.$emit('change', res, value, data);
1159
+ }
1160
+ },
1161
+ handleInput(res, value, data) {
1162
+ this.$emit('input', res, value, data);
1163
+ },
1164
+ handleFocus(res, value, data) {
1165
+ if (res.events && res.events.focus) {
1166
+ res.events.focus(res, value, data);
1167
+ } else {
1168
+ this.$emit('focus', res, value, data);
1169
+ }
1170
+ },
1171
+ handleBlur(res, value, data) {
1172
+ if (res.events && res.events.blur) {
1173
+ res.events.blur(res, value, data);
1174
+ } else {
1175
+ this.$emit('blur', res, value, data);
1176
+ }
1177
+ },
1178
+ handleClear(res, value) {
1179
+ this.$emit('clear', res, value);
1180
+ },
1181
+ handleDataChange(res, data) {
1182
+ if (res.events && res.events.dataChange) {
1183
+ res.events.dataChange(res, value, data);
1184
+ } else {
1185
+ this.$emit('dataChange', res, data);
1186
+ }
1187
+ },
1188
+ handleExclAttribute({ data, attrs }) {
1189
+ return util.exclAttribute({
1190
+ data: data,
1191
+ attrs: attrs
1192
+ });
1193
+ }
1194
+ }
1195
+ };
1196
+ </script>