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,1229 @@
1
+ <template>
2
+ <component
3
+ :is="tag"
4
+ ref="esTableForm"
5
+ class="es-data-table"
6
+ label-width="0"
7
+ v-loading="tableLoading"
8
+ :model="tag === 'div' ? '' : datas"
9
+ :element-loading-text="tableLoadingText"
10
+ >
11
+ <es-toolbar
12
+ v-if="showToolbar"
13
+ v-bind="{
14
+ contents: toolbars,
15
+ close: close,
16
+ callBack: resetHeight,
17
+ showFormBtn: showFormBtn,
18
+ searchValue: searchValue,
19
+ advanceValue: advanceValue
20
+ }"
21
+ v-on="{
22
+ click: handleClick,
23
+ search: hanleSearch,
24
+ submit: hanleSubmit,
25
+ tabs: handleTabs,
26
+ reset: hanleReset,
27
+ cancel: hanleCancel
28
+ }"
29
+ ></es-toolbar>
30
+ <p v-if="title" class="es-table-title" v-html="title"></p>
31
+ <div
32
+ style="styles"
33
+ class="es-data-table-content"
34
+ ref="esTableContent"
35
+ v-if="show"
36
+ >
37
+ <el-table
38
+ ref="oaTable"
39
+ v-bind="{
40
+ ...$attrs,
41
+ data: datas,
42
+ emptyText: text || emptyText,
43
+ showSummary: showTotal,
44
+ sumText: sumText || totalText,
45
+ totalRow: restotalRow || totalRow,
46
+ height: tableHeight !== 'auto' ? tableHeight : undefined,
47
+ border: border
48
+ }"
49
+ v-on="{
50
+ ...$listeners,
51
+ 'row-click': rowClick,
52
+ 'selection-change': selectionChange,
53
+ 'filter-column': handleFilterColumn
54
+ }"
55
+ :class="'es-table' + (theadBorder ? ' es-thead-border' : '')"
56
+ >
57
+ <slot name="prepend"></slot>
58
+ <slot></slot>
59
+ <el-table-column
60
+ v-if="checkbox"
61
+ v-bind="{
62
+ type: 'selection',
63
+ width: '55',
64
+ align: 'center',
65
+ fixed: 'left',
66
+ selectable: selectable,
67
+ reserveSelection: reserveSelection,
68
+ filterIcon: getIcon()
69
+ }"
70
+ ></el-table-column>
71
+ <el-table-column
72
+ v-if="numbers"
73
+ v-bind="{
74
+ type: 'index',
75
+ label: '序号',
76
+ width: '70',
77
+ align: 'center',
78
+ fixed: 'left',
79
+ index:
80
+ index === true
81
+ ? (config.pageNum - 1) * config.pageSize + 1
82
+ : index === false
83
+ ? 1
84
+ : index,
85
+ filterIcon: getIcon()
86
+ }"
87
+ ></el-table-column>
88
+ <template v-for="(items, indexs) in theads">
89
+ <template v-if="items.hide !== true">
90
+ <el-table-column
91
+ v-if="items.type === 'index'"
92
+ :key="indexs"
93
+ v-bind="{
94
+ type: 'index',
95
+ label: '序号',
96
+ width: '70',
97
+ align: 'center',
98
+ fixed: 'left',
99
+ index:
100
+ index === true
101
+ ? (config.pageNum - 1) * config.pageSize + 1
102
+ : index === false
103
+ ? 1
104
+ : index,
105
+ filterIcon: getIcon(),
106
+ ...items
107
+ }"
108
+ ></el-table-column>
109
+ <el-table-column
110
+ v-else-if="items.type === 'selection'"
111
+ :key="indexs"
112
+ v-bind="{
113
+ type: 'selection',
114
+ width: '55',
115
+ align: 'center',
116
+ fixed: 'left',
117
+ selectable: selectable,
118
+ reserveSelection: reserveSelection,
119
+ filterIcon: getIcon(),
120
+ ...items
121
+ }"
122
+ ></el-table-column>
123
+ <children
124
+ v-else
125
+ :key="indexs"
126
+ v-bind="{
127
+ name: name,
128
+ item: items,
129
+ width: items.width,
130
+ index: indexs,
131
+ readonly: readonly,
132
+ optionData: optionDatas,
133
+ form: form,
134
+ minWidth: minWidth,
135
+ filterIcon: getIcon(items.fixed),
136
+ children: items.children,
137
+ childHead: items.childHead
138
+ }"
139
+ v-on="{
140
+ handleClick: handleClick,
141
+ formBlur: formBlur,
142
+ formFocus: formFocus,
143
+ formChange: formChange
144
+ }"
145
+ ></children>
146
+ </template>
147
+ </template>
148
+ <slot name="append"></slot>
149
+ <el-table-column
150
+ v-if="editable && !readonly"
151
+ width="80"
152
+ type="handle"
153
+ align="center"
154
+ label="操作"
155
+ class="eoss-ui-eidt-column"
156
+ :total="false"
157
+ >
158
+ <template slot-scope="scope">
159
+ <el-button
160
+ v-if="!scope.row.cantAdd"
161
+ type="text"
162
+ @click="handleClickAddData(scope)"
163
+ >
164
+ <i class="el-icon-circle-plus-outline"></i>
165
+ </el-button>
166
+ <el-button
167
+ v-if="!scope.row.cantDelete"
168
+ type="text"
169
+ @click="handleClickDeleteData(scope)"
170
+ >
171
+ <i class="el-icon-remove-outline"></i>
172
+ </el-button>
173
+ </template>
174
+ </el-table-column>
175
+ </el-table>
176
+ <es-pagination
177
+ v-if="page"
178
+ v-bind="config"
179
+ class="es-table-page"
180
+ :style="{ 'text-align': page.position || 'center' }"
181
+ v-on="{
182
+ change: sizeChange,
183
+ current: currentChange,
184
+ prev: preClick,
185
+ next: nextClick
186
+ }"
187
+ ></es-pagination>
188
+ <slot name="dialog"></slot>
189
+ <slot name="other"></slot>
190
+ </div>
191
+ <sizer ref="sizer" :data="theads"></sizer>
192
+ </component>
193
+ </template>
194
+ <script>
195
+ import { findSysCode } from 'eoss-ui/src/config/api.js';
196
+ import children from './children.vue';
197
+ import sizer from './sizer.vue';
198
+ import util from 'eoss-ui/src/utils/util';
199
+ import bus from 'eoss-ui/src/utils/bus';
200
+ export default {
201
+ name: 'EsDataTable',
202
+ inheritAttrs: false,
203
+ components: {
204
+ [children.name]: children,
205
+ [sizer.name]: sizer
206
+ },
207
+ provide() {
208
+ return {
209
+ table: this,
210
+ tableReload: this.reload
211
+ };
212
+ },
213
+ inject: {
214
+ elForm: {
215
+ default: ''
216
+ },
217
+ injector: {
218
+ default: ''
219
+ }
220
+ },
221
+ props: {
222
+ loading: {
223
+ type: Boolean,
224
+ default: false
225
+ },
226
+ readonly: Boolean,
227
+ url: {
228
+ type: String,
229
+ default: ''
230
+ },
231
+ defaults: {
232
+ type: Boolean,
233
+ default: false
234
+ },
235
+ param: {
236
+ type: Object,
237
+ default() {
238
+ return {};
239
+ }
240
+ },
241
+ method: {
242
+ type: String,
243
+ default: 'get'
244
+ },
245
+ format: {
246
+ type: Boolean,
247
+ default: true
248
+ },
249
+ data: {
250
+ type: Array,
251
+ default() {
252
+ return [];
253
+ }
254
+ },
255
+ // 表格表单
256
+ form: {
257
+ type: Boolean,
258
+ default: false
259
+ },
260
+ name: String,
261
+ title: {
262
+ type: String,
263
+ default: ''
264
+ },
265
+ // 导出文件名
266
+ fileName: {
267
+ type: String,
268
+ default: ''
269
+ },
270
+ // 工具栏配置
271
+ toolbar: {
272
+ type: [Array, Boolean],
273
+ default: false
274
+ },
275
+ searchValue: Object,
276
+ advanceValue: Object,
277
+ // 是否开启序号
278
+ numbers: {
279
+ type: Boolean,
280
+ default: false
281
+ },
282
+ // 是否筛选列功能
283
+ filter: {
284
+ type: Boolean,
285
+ default: false
286
+ },
287
+ // 是否开启多选
288
+ checkbox: {
289
+ type: Boolean,
290
+ default: false
291
+ },
292
+ selectable: Function,
293
+ reserveSelection: Boolean,
294
+ // 默认选中,类型为Boolean时默认全(不)选
295
+ checked: {
296
+ type: [Boolean, Array],
297
+ default: false
298
+ },
299
+ sizer: {
300
+ type: Boolean,
301
+ default: true
302
+ },
303
+ // 无数据时显示的文本
304
+ text: {
305
+ type: String,
306
+ default: ''
307
+ },
308
+ // 无数据时显示的文本
309
+ emptyText: {
310
+ type: String,
311
+ default: ''
312
+ },
313
+ // 是否开启合计行区域
314
+ total: {
315
+ type: Boolean,
316
+ default: false
317
+ },
318
+ //本地数据总条数差值
319
+ lose: {
320
+ type: Number,
321
+ default: 0
322
+ },
323
+ // 合计行显示文本
324
+ totalText: {
325
+ type: String,
326
+ default: ''
327
+ },
328
+ showSummary: {
329
+ type: Boolean,
330
+ default: false
331
+ },
332
+ sumText: {
333
+ type: String,
334
+ default: ''
335
+ },
336
+ // 开启分页
337
+ page: {
338
+ type: [Boolean, Object],
339
+ default() {
340
+ return false;
341
+ }
342
+ },
343
+ // 渲染树形数据指定field
344
+ treeKey: {
345
+ type: String,
346
+ default: ''
347
+ },
348
+ // 单元格配置
349
+ thead: {
350
+ type: [Array, String],
351
+ default() {
352
+ return [];
353
+ }
354
+ },
355
+ optionData: Object,
356
+ // 开启数据增加删除按钮
357
+ editable: {
358
+ type: Boolean,
359
+ default: false
360
+ },
361
+ // 单元格点击事件
362
+ click: {
363
+ type: Boolean,
364
+ default: false
365
+ },
366
+ totalRow: {
367
+ type: Object,
368
+ default() {
369
+ return {};
370
+ }
371
+ },
372
+ parseData: Function,
373
+ close: Boolean,
374
+ full: {
375
+ type: Boolean,
376
+ default: true
377
+ },
378
+ height: [Number, String],
379
+ maxHeight: [Number, String],
380
+ response: Function,
381
+ minWidth: String,
382
+ border: {
383
+ type: Boolean,
384
+ default: false
385
+ },
386
+ theadBorder: {
387
+ type: Boolean,
388
+ default: true
389
+ },
390
+ checkboxParseData: Function,
391
+ checkboxParse: Object,
392
+ display: Boolean,
393
+ showFormBtn: {
394
+ type: Boolean,
395
+ default: true
396
+ },
397
+ index: {
398
+ type: [Boolean, Number],
399
+ default: 1
400
+ },
401
+ immediate: {
402
+ type: Boolean,
403
+ default: true
404
+ }
405
+ },
406
+ data() {
407
+ return {
408
+ theadData: [],
409
+ list: null,
410
+ tableLoading: this.loading,
411
+ tableLoadingText: '加载中...',
412
+ isFirsetCheck: false,
413
+ // 可修改表单的值
414
+ editValue: {},
415
+ restotalRow: null,
416
+ showTotal: false,
417
+ toolbars: [],
418
+ config: {
419
+ pageNum: 1,
420
+ pageSize: 20,
421
+ totalCount: 0
422
+ },
423
+ where: {},
424
+ wheres: {},
425
+ tableHeight: 'auto',
426
+ styles: {},
427
+ selected: null,
428
+ options: {},
429
+ icon: true,
430
+ show: true
431
+ };
432
+ },
433
+ computed: {
434
+ tag() {
435
+ return this.form && this.elForm == '' ? 'el-form' : 'div';
436
+ },
437
+ theads: {
438
+ get() {
439
+ return this.theadData.length ? this.theadData : this.thead;
440
+ },
441
+ set(val) {
442
+ return val;
443
+ }
444
+ },
445
+ datas: {
446
+ get() {
447
+ if (this.list) {
448
+ return this.list;
449
+ }
450
+ if (
451
+ this.page &&
452
+ this.data &&
453
+ this.data.length &&
454
+ this.config.totalCount < this.data.length + 1
455
+ ) {
456
+ this.config.totalCount = this.data.length - this.lose;
457
+ return this.data.filter((item, index) => {
458
+ return (
459
+ index > (this.config.pageNum - 1) * this.config.pageSize - 1 &&
460
+ index < this.config.pageNum * this.config.pageSize
461
+ );
462
+ });
463
+ }
464
+ return this.data;
465
+ },
466
+ set(val) {
467
+ return val;
468
+ }
469
+ },
470
+ showToolbar() {
471
+ if (this.readonly) {
472
+ return false;
473
+ }
474
+ if (typeof this.toolbar === 'boolean') {
475
+ if (this.toolbar) {
476
+ this.toolbars = [
477
+ {
478
+ type: 'search',
479
+ contents: [
480
+ {
481
+ type: 'text',
482
+ name: 'keyword',
483
+ placeholder: '请输入关键字'
484
+ }
485
+ ]
486
+ }
487
+ ];
488
+ }
489
+ return this.toolbar;
490
+ } else {
491
+ this.toolbars = this.toolbar;
492
+ return true;
493
+ }
494
+ },
495
+ optionDatas: {
496
+ get() {
497
+ return this.optionData
498
+ ? { ...this.optionData, ...this.options }
499
+ : this.options;
500
+ },
501
+ set(val) {
502
+ return val;
503
+ }
504
+ }
505
+ },
506
+ watch: {
507
+ checked(newVal) {
508
+ this.checkSelect(newVal);
509
+ },
510
+ thead: {
511
+ immediate: true,
512
+ handler(val) {
513
+ if (typeof val === 'string') {
514
+ this.getTheads();
515
+ }
516
+ }
517
+ },
518
+ theads: {
519
+ immediate: true,
520
+ handler(val) {
521
+ this.chekOpenTotalArea();
522
+ if (val && val.length) {
523
+ this.getOptions(val);
524
+ }
525
+ }
526
+ },
527
+ param: {
528
+ deep: true,
529
+ handler(val) {
530
+ this.getTableData();
531
+ }
532
+ },
533
+ page: {
534
+ immediate: true,
535
+ deep: true,
536
+ handler(val) {
537
+ this.config = util.extend({}, this.config, this.page);
538
+ }
539
+ },
540
+ height: {
541
+ immediate: true,
542
+ handler(val) {
543
+ if (val) {
544
+ this.tableHeight = val;
545
+ }
546
+ }
547
+ },
548
+ maxHeight: {
549
+ immediate: true,
550
+ handler(val) {
551
+ if (val && this.height === undefined) {
552
+ this.tableHeight = val;
553
+ }
554
+ }
555
+ },
556
+ display(val) {
557
+ if (val) {
558
+ this.resetHeight();
559
+ }
560
+ }
561
+ },
562
+ created() {
563
+ this.immediate && this.getTableData();
564
+ },
565
+ mounted() {
566
+ this.checkSelect(this.checked);
567
+ this.resetHeight();
568
+ },
569
+ methods: {
570
+ getIcon(res) {
571
+ if (
572
+ this.icon &&
573
+ res !== 'right' &&
574
+ !this.$slots.prepend &&
575
+ !this.$slots.append &&
576
+ !this.$slots.default &&
577
+ !this.form
578
+ ) {
579
+ this.icon = false;
580
+ return 'es-icon-biao';
581
+ }
582
+ return false;
583
+ },
584
+ getOptions(res) {
585
+ res.forEach(item => {
586
+ if (item.sysCode || item.url) {
587
+ let params = util.extend(
588
+ {},
589
+ item.sysCode ? { sysAppCode: item.sysCode } : {},
590
+ item.param ? item.param : {}
591
+ );
592
+ util
593
+ .ajax({
594
+ url: item.sysCode ? findSysCode : item.url,
595
+ method: this.method,
596
+ params: params,
597
+ data: params
598
+ })
599
+ .then(res => {
600
+ if (res.rCode === 0) {
601
+ if (item.type == 'ganged') {
602
+ this.$set(this.options, item.field || item.prop, [
603
+ JSON.parse(JSON.stringify(res.results))
604
+ ]);
605
+ } else {
606
+ this.$set(
607
+ this.options,
608
+ item.field || item.prop,
609
+ JSON.parse(JSON.stringify(res.results))
610
+ );
611
+ }
612
+ } else {
613
+ let msg = res.msg || '系统错误,请联系管理员!';
614
+ this.$message.error(msg);
615
+ }
616
+ })
617
+ .catch(err => {
618
+ if (err.message && err.message !== 'canceled') {
619
+ this.$message.error(err.message);
620
+ }
621
+ });
622
+ } else {
623
+ if (item.childHead && item.childHead.length) {
624
+ this.getOptions(item.childHead);
625
+ }
626
+ if (item.children && item.children.length) {
627
+ this.getOptions(item.children);
628
+ }
629
+ }
630
+ });
631
+ },
632
+ checkObject(item) {
633
+ return util.getObjectType(item) === 'object';
634
+ },
635
+ chekOpenTotalArea() {
636
+ if (this.total || this.showSummary) {
637
+ this.showTotal = true;
638
+ return;
639
+ }
640
+ const arr = JSON.parse(JSON.stringify(this.thead));
641
+ arr.forEach(item => {
642
+ if (item.total) {
643
+ this.showTotal = true;
644
+ }
645
+ });
646
+ },
647
+ rowClick(row, column, event) {
648
+ this.$emit('click', row, column, event);
649
+ this.$emit('row-click', row, column, event);
650
+ },
651
+ handleClickAddData(scope) {
652
+ const data = JSON.parse(JSON.stringify(scope.row));
653
+ const index = scope.$index + 1;
654
+ this.datas.splice(index, 0, data);
655
+ this.$emit('dataChange', 'add', data);
656
+ this.$emit('btnClick', {
657
+ event: 'addRow',
658
+ row: data,
659
+ index: index,
660
+ data: data
661
+ });
662
+ },
663
+ handleClickDeleteData(scope) {
664
+ const data = JSON.parse(JSON.stringify(scope.row));
665
+ const index = scope.$index;
666
+ this.datas.splice(index, 1);
667
+ this.$emit('dataChange', 'delete', data);
668
+ this.$emit('btnClick', {
669
+ event: 'deleteRow',
670
+ row: data,
671
+ index: index,
672
+ data: data
673
+ });
674
+ },
675
+ checkSelect(newVal) {
676
+ if (!this.isFirsetCheck && newVal) {
677
+ if (util.getObjectType(newVal) === 'array') {
678
+ newVal.forEach(row => {
679
+ this.$refs.oaTable.toggleRowSelection(row, true);
680
+ });
681
+ } else if (newVal === true) {
682
+ this.toggleAllSelection();
683
+ }
684
+ this.isFirsetCheck = true;
685
+ }
686
+ },
687
+ getTheads() {
688
+ util
689
+ .ajax({
690
+ url: this.thead,
691
+ method: this.method,
692
+ format: this.format,
693
+ params: this.param,
694
+ data: this.param
695
+ })
696
+ .then(res => {
697
+ if (res.rCode === 0) {
698
+ let results = res.results;
699
+ if (Array.isArray(results)) {
700
+ this.theadData = results;
701
+ } else {
702
+ this.theadData = results.theadData || [];
703
+ this.list = results.data || results.records || [];
704
+ this.config.totalCount =
705
+ results.count || results.total || results.totalCount;
706
+ }
707
+ } else {
708
+ this.theadData = [];
709
+ let msg = res.msg || '系统错误,请联系管理员!';
710
+ this.$message.error(msg);
711
+ }
712
+ this.$emit('success', res);
713
+ })
714
+ .catch(err => {
715
+ if (err.message && err.message !== 'canceled') {
716
+ this.$message.error(err.message);
717
+ }
718
+ });
719
+ },
720
+ getTableData(res) {
721
+ let where;
722
+ let first;
723
+ if (res) {
724
+ where = res.where;
725
+ first = res.first;
726
+ }
727
+ if (!this.url) {
728
+ return;
729
+ }
730
+ if (first !== false) {
731
+ this.config.pageNum = 1;
732
+ }
733
+ this.tableLoadingText = '加载中...';
734
+ let reqData = util.extend({}, this.param, {
735
+ pageNum: this.config.pageNum,
736
+ pageSize: this.config.pageSize
737
+ });
738
+ if (where) {
739
+ reqData = util.extend({}, reqData, where);
740
+ }
741
+ this.tableLoading = true;
742
+ util
743
+ .ajax({
744
+ url: this.url,
745
+ method: this.method,
746
+ format: this.format,
747
+ params: reqData,
748
+ data: reqData
749
+ })
750
+ .then(res => {
751
+ this.tableLoading = false;
752
+ if (res.rCode === 0 || res.status === 'success') {
753
+ let results =
754
+ this.parseData !== undefined
755
+ ? this.parseData(res.results || res.data || res)
756
+ : res.results || res.data;
757
+ this.list = results.data || results.records || results.list || [];
758
+ this.config.totalCount =
759
+ results.count || results.total || results.totalCount;
760
+ } else {
761
+ this.list = [];
762
+ let msg = res.msg || '系统错误,请联系管理员!';
763
+ this.$message.error(msg);
764
+ }
765
+ this.$emit('success', res);
766
+ })
767
+ .catch(err => {
768
+ if (err.message && err.message !== 'canceled') {
769
+ this.$message.error(err.message);
770
+ }
771
+ this.tableLoading = false;
772
+ });
773
+ },
774
+ selectionChange(data) {
775
+ this.selected = JSON.parse(JSON.stringify(data));
776
+ this.$emit('selection-change', data);
777
+ },
778
+ clearSelection() {
779
+ this.$refs.oaTable.clearSelection();
780
+ },
781
+ toggleRowSelection(row, selected) {
782
+ this.$refs.oaTable.toggleRowSelection(row, selected);
783
+ },
784
+ toggleAllSelection() {
785
+ this.$refs.oaTable.toggleAllSelection();
786
+ },
787
+ toggleRowExpansion(row, expanded) {
788
+ this.$refs.oaTable.toggleRowExpansion(row, expanded);
789
+ },
790
+ setCurrentRow(row) {
791
+ this.$refs.oaTable.setCurrentRow(row);
792
+ },
793
+
794
+ clearSort() {
795
+ this.$refs.oaTable.clearSort();
796
+ },
797
+ clearFilter(columnKey) {
798
+ this.$refs.oaTable.clearFilter(columnKey);
799
+ },
800
+ doLayout() {
801
+ this.$refs.oaTable.doLayout();
802
+ },
803
+ sort(prop, order) {
804
+ this.$refs.oaTable.sort(prop, order);
805
+ },
806
+ formBlur(data) {
807
+ this.$emit('blur', data, this.datas);
808
+ },
809
+ formFocus(data) {
810
+ this.$emit('focus', data, this.datas);
811
+ },
812
+ formChange(data) {
813
+ this.$emit('edit', data, this.datas);
814
+ this.$emit('change', data, this.datas);
815
+ },
816
+ handleAjax(handle, row) {
817
+ this.changeLoading(true, `${handle.text}中...`);
818
+ let params = handle.param || {};
819
+ if (handle.syncKeys) {
820
+ if (typeof handle.syncKeys === 'string') {
821
+ params[handle.syncKeys] = row[handle.syncKeys];
822
+ } else if (Array.isArray(handle.syncKeys)) {
823
+ for (let i in handle.syncKeys) {
824
+ if (Array.isArray(row)) {
825
+ let param = row.map(item => {
826
+ return item[handle.syncKeys[i]];
827
+ });
828
+ params[handle.syncKeys[i]] = param.join(',');
829
+ } else {
830
+ params[handle.syncKeys[i]] = row[handle.syncKeys[i]];
831
+ }
832
+ }
833
+ } else {
834
+ for (let i in handle.syncKeys) {
835
+ if (Array.isArray(row)) {
836
+ let param = row.map(item => {
837
+ return item[handle.syncKeys[i]];
838
+ });
839
+ params[i] = param.join(',');
840
+ } else {
841
+ params[i] = row[handle.syncKeys[i]];
842
+ }
843
+ }
844
+ }
845
+ } else {
846
+ if (Array.isArray(row)) {
847
+ let param = row.map(item => {
848
+ return item.id;
849
+ });
850
+ params.id = param.join(',');
851
+ } else {
852
+ params.id = row.id;
853
+ }
854
+ }
855
+ let keys = Object.keys(params);
856
+ util
857
+ .ajax({
858
+ url: handle.action,
859
+ data:
860
+ keys.length == 1 && handle.format === false
861
+ ? params[keys[0]].split(',')
862
+ : params,
863
+ params:
864
+ keys.length == 1 && handle.format === false
865
+ ? params[keys[0]].split(',')
866
+ : params,
867
+ method: handle.method,
868
+ format: handle.format
869
+ })
870
+ .then(res => {
871
+ this.changeLoading(false);
872
+ if (res.rCode === 0) {
873
+ this.$message({
874
+ message: `${handle.text}成功`,
875
+ duration: 2000,
876
+ type: 'success',
877
+ onClose: () => {
878
+ let first = Object.prototype.hasOwnProperty.call(
879
+ handle,
880
+ 'first'
881
+ )
882
+ ? handle.first
883
+ : false;
884
+ let reload = handle.reload || true;
885
+ if (reload) {
886
+ this.reload({}, first);
887
+ }
888
+ }
889
+ });
890
+ } else {
891
+ this.$message.error(
892
+ res.msg || `${handle.text}失败,请联系管理员!`
893
+ );
894
+ }
895
+ })
896
+ .catch(err => {
897
+ this.changeLoading(false);
898
+ if (err.message && err.message !== 'canceled') {
899
+ this.$message.error(err.message);
900
+ }
901
+ });
902
+ },
903
+ checkParse(data, parse) {
904
+ if (Array.isArray(data)) {
905
+ return data.map(items => {
906
+ let item = JSON.parse(JSON.stringify(items));
907
+ let obj = {};
908
+ for (let i in parse) {
909
+ obj[i] = item[parse[i]];
910
+ delete item[parse[i]];
911
+ }
912
+ return { ...obj, ...item };
913
+ });
914
+ }
915
+ let item = JSON.parse(JSON.stringify(data));
916
+ let obj = {};
917
+ for (let i in parse) {
918
+ obj[i] = item[parse[i]];
919
+ delete item[parse[i]];
920
+ }
921
+ return { ...obj, ...item };
922
+ },
923
+ handleClick(res) {
924
+ let { row, handle } = res;
925
+ let rows;
926
+ if (handle.checkbox) {
927
+ if (!this.selected || !this.selected.length) {
928
+ this.$alert('请选择数据', '提示', { type: 'warning' });
929
+ return;
930
+ } else {
931
+ row = this.selected;
932
+ }
933
+ }
934
+ if (this.checkboxParseData) {
935
+ rows = this.checkboxParseData(JSON.parse(JSON.stringify(row)));
936
+ } else if (this.checkboxParse) {
937
+ rows = this.checkParse(row, this.checkboxParse);
938
+ } else if (handle.checkboxParse) {
939
+ rows = this.checkParse(row, handle.checkboxParse);
940
+ } else if (row) {
941
+ rows = JSON.parse(JSON.stringify(row));
942
+ }
943
+ let thead = this.thead;
944
+ if (this.$refs.oaTable) {
945
+ thead = this.$refs.oaTable.getThead();
946
+ }
947
+ if (handle.action) {
948
+ let isConfirm = handle.confirm || true;
949
+ if (isConfirm) {
950
+ let msg = handle.field ? row[handle.field] : '';
951
+ this.$confirm(`确定要${handle.text}${msg}吗`, '提示', {
952
+ confirmButtonText: '确定',
953
+ cancelButtonText: '取消',
954
+ type: 'warning'
955
+ })
956
+ .then(() => {
957
+ this.handleAjax(handle, rows);
958
+ })
959
+ .catch(() => {});
960
+ } else {
961
+ this.handleAjax(handle, rows);
962
+ }
963
+ } else if (handle.event) {
964
+ if (typeof handle.event === 'function') {
965
+ handle.event({
966
+ ele: this,
967
+ thead: thead,
968
+ data: this.datas,
969
+ selected: rows,
970
+ ...res
971
+ });
972
+ } else if (
973
+ handle.event === 'add' ||
974
+ handle.event === 'edit' ||
975
+ handle.event === 'look'
976
+ ) {
977
+ let changes = {
978
+ event: handle.event,
979
+ title: handle.title || handle.text,
980
+ value: handle.event === 'add' ? {} : rows,
981
+ readonly: handle.event === 'look',
982
+ actionType: handle.actionType
983
+ ? handle.actionType
984
+ : handle.event === 'add'
985
+ ? 'save'
986
+ : 'update',
987
+ visible: true
988
+ };
989
+ if (handle.dialog) {
990
+ let dialog;
991
+ for (let i = 0; i < this.$children.length; i++) {
992
+ let child = this.$children[i];
993
+ if (child.$refs[handle.dialog]) {
994
+ dialog = child.$refs[handle.dialog];
995
+ break;
996
+ }
997
+ }
998
+ dialog.setAttrs(changes);
999
+ }
1000
+ this.injector && this.injector.handleChangeData(changes);
1001
+ if (handle.busEvent) {
1002
+ bus.$emit(handle.busEvent, changes);
1003
+ }
1004
+ }
1005
+ } else if (handle.changeData) {
1006
+ let changeData = {};
1007
+ if (Array.isArray(handle.changeData)) {
1008
+ handle.changeData.forEach(item => {
1009
+ if (util.isObject(item)) {
1010
+ for (let i in item) {
1011
+ if (typeof item[i] === 'boolean') {
1012
+ changeData[i] = item[i];
1013
+ } else {
1014
+ changeData[i] = handle[item[i]] || item[i];
1015
+ }
1016
+ }
1017
+ } else {
1018
+ changeData[item] =
1019
+ handle[item] || (Array.isArray(rows) ? rows : rows[item]);
1020
+ }
1021
+ });
1022
+ } else {
1023
+ for (let i in handle.changeData) {
1024
+ let item = handle.changeData[i];
1025
+ if (util.isObject(item)) {
1026
+ let obj = {};
1027
+ for (let e in item) {
1028
+ obj[e] =
1029
+ handle[item[e]] ||
1030
+ (Array.isArray(rows) ? rows : rows[item[e]]);
1031
+ }
1032
+ changeData[i] = obj;
1033
+ } else {
1034
+ if (typeof item === 'boolean') {
1035
+ changeData[i] = item;
1036
+ } else {
1037
+ changeData[i] =
1038
+ handle[item] || (Array.isArray(rows) ? rows : rows[item]);
1039
+ }
1040
+ }
1041
+ }
1042
+ }
1043
+ if (handle.actionType) {
1044
+ changeData['actionType'] = handle.actionType;
1045
+ }
1046
+ this.injector && this.injector.handleChangeData(changeData);
1047
+ if (handle.busEvent) {
1048
+ bus.$emit(handle.busEvent, changes);
1049
+ }
1050
+ } else {
1051
+ if (handle.exportXls) {
1052
+ let text = '操作';
1053
+ if (
1054
+ this.thead[this.thead.length - 1] &&
1055
+ this.thead[this.thead.length - 1].type === 'handle'
1056
+ ) {
1057
+ text = this.thead[this.thead.length - 1].title;
1058
+ }
1059
+ thead = thead.map(item => {
1060
+ return item.filter(ele => {
1061
+ return ele.label !== text && ele.label;
1062
+ });
1063
+ });
1064
+ util.exportXls({
1065
+ thead: thead,
1066
+ data: this.datas,
1067
+ name: this.fileName
1068
+ });
1069
+ }
1070
+ this.$emit('btnClick', res, this.datas, thead, rows);
1071
+ this.$emit('btn-click', res, this.datas, thead, rows);
1072
+ }
1073
+ },
1074
+ sizeChange(res) {
1075
+ this.config.pageSize = res;
1076
+ this.config.pageNum = 1;
1077
+ this.$emit('page-size-change', res);
1078
+ if (this.url) {
1079
+ this.getTableData({ where: this.wheres, first: false });
1080
+ }
1081
+ },
1082
+ currentChange(res) {
1083
+ this.config.pageNum = res;
1084
+ this.$emit('page-current-change', res);
1085
+ if (this.url) {
1086
+ this.getTableData({ where: this.wheres, first: false });
1087
+ }
1088
+ },
1089
+ preClick(res) {
1090
+ this.config.pageNum = res;
1091
+ this.$emit('prev', res);
1092
+ },
1093
+ nextClick(res) {
1094
+ this.config.pageNum = res;
1095
+ this.$emit('next', res);
1096
+ },
1097
+ hanleSearch(data) {
1098
+ this.wheres = data;
1099
+ if (this.url) {
1100
+ if (this.response !== undefined) {
1101
+ this.getTableData({
1102
+ where: this.response({
1103
+ type: 'search',
1104
+ data: JSON.parse(JSON.stringify(data))
1105
+ })
1106
+ });
1107
+ } else {
1108
+ this.getTableData({ where: this.wheres });
1109
+ }
1110
+ }
1111
+ this.$emit('search', data);
1112
+ },
1113
+ hanleReset() {
1114
+ if (this.url) {
1115
+ this.where = {};
1116
+ this.getTableData();
1117
+ }
1118
+ this.$emit('reset');
1119
+ },
1120
+ hanleSubmit({ data, show }) {
1121
+ this.wheres = data;
1122
+ if (this.url) {
1123
+ if (this.response !== undefined) {
1124
+ this.getTableData({
1125
+ where: this.response({
1126
+ type: 'filter',
1127
+ data: JSON.parse(JSON.stringify(data))
1128
+ })
1129
+ });
1130
+ } else {
1131
+ this.getTableData({ where: this.wheres });
1132
+ }
1133
+ }
1134
+ this.$emit('submit', { data, show });
1135
+ },
1136
+ hanleCancel() {
1137
+ if (this.url && JSON.stringify(this.wheres) !== '{}') {
1138
+ this.wheres = {};
1139
+ this.getTableData();
1140
+ }
1141
+ this.$emit('cancel');
1142
+ },
1143
+ handleTabs({ item, index }) {
1144
+ if (this.url) {
1145
+ this.getTableData({ where: item });
1146
+ }
1147
+ this.$emit('tabs', { item, index });
1148
+ },
1149
+ reload(obj, first = false) {
1150
+ if (obj && obj.config) {
1151
+ this.config = util.extend({}, this.config, obj.config);
1152
+ }
1153
+ if (this.url) {
1154
+ this.getTableData({ where: obj && obj.where ? obj.where : {}, first });
1155
+ }
1156
+ },
1157
+ resetHeight() {
1158
+ this.$nextTick(() => {
1159
+ if (this.full && !this.height && !this.maxHeight) {
1160
+ let height =
1161
+ this.$el.parentNode.offsetHeight -
1162
+ parseInt(util.getStyle(this.$el.parentNode, 'paddingTop'), 10) -
1163
+ parseInt(util.getStyle(this.$el.parentNode, 'paddingBottom'), 10);
1164
+ for (let i = 0; i < this.$el.parentNode.childNodes.length; i++) {
1165
+ let ele = this.$el.parentNode.childNodes[i];
1166
+ if (ele !== this.$el) {
1167
+ height -= ele.offsetHeight === undefined ? 0 : ele.offsetHeight;
1168
+ }
1169
+ }
1170
+ for (let i = 0; i < this.$el.childNodes.length; i++) {
1171
+ let ele = this.$el.childNodes[i];
1172
+ if (ele !== this.$refs.esTableContent) {
1173
+ height -= ele.offsetHeight === undefined ? 0 : ele.offsetHeight;
1174
+ }
1175
+ }
1176
+ this.styles = { height: height + 'px' };
1177
+ const loadingDom = this.$refs.esTableContent.querySelector(
1178
+ '.el-loading-mask'
1179
+ );
1180
+ for (
1181
+ let i = 0;
1182
+ i < this.$refs.esTableContent.childNodes.length;
1183
+ i++
1184
+ ) {
1185
+ let ele = this.$refs.esTableContent.childNodes[i];
1186
+ if (
1187
+ ele !== this.$refs.oaTable.$el &&
1188
+ (!loadingDom || ele !== loadingDom)
1189
+ ) {
1190
+ height -= ele.offsetHeight === undefined ? 0 : ele.offsetHeight;
1191
+ }
1192
+ }
1193
+ let pt = parseInt(
1194
+ util.getStyle(this.$refs.esTableContent, 'paddingTop'),
1195
+ 10
1196
+ );
1197
+ let pb = parseInt(
1198
+ util.getStyle(this.$refs.esTableContent, 'paddingBottom'),
1199
+ 10
1200
+ );
1201
+ this.tableHeight = height - pt - pb + (this.page ? 2 : 1) + 'px';
1202
+ }
1203
+ });
1204
+ },
1205
+ validate(callback) {
1206
+ let form = this.elForm || this.$refs.esTableForm;
1207
+ form.validate(valid => {
1208
+ callback(valid);
1209
+ });
1210
+ },
1211
+ changeLoading(show, text) {
1212
+ this.tableLoading = show;
1213
+ if (text) {
1214
+ this.tableLoadingText = text;
1215
+ }
1216
+ },
1217
+ handleFilterColumn() {
1218
+ this.$refs.sizer.show();
1219
+ },
1220
+ mergeThead(res) {
1221
+ this.theadData = res;
1222
+ this.icon = true;
1223
+ setTimeout(() => {
1224
+ this.show = true;
1225
+ }, 100);
1226
+ }
1227
+ }
1228
+ };
1229
+ </script>