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