n20-common-lib 1.3.40 → 1.3.41

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 (417) hide show
  1. package/README.md +2 -2
  2. package/g6.js +2 -2
  3. package/nstc-g6/assets/svg/addFile.svg +31 -31
  4. package/nstc-g6/assets/svg/deleteFile.svg +27 -27
  5. package/nstc-g6/assets/svg/filter.svg +15 -15
  6. package/nstc-g6/assets/svg/filterActive.svg +16 -16
  7. package/nstc-g6/assets/svg/hourglass.svg +18 -18
  8. package/nstc-g6/assets/svg/newsearch.svg +18 -18
  9. package/nstc-g6/assets/svg/searchActive.svg +18 -18
  10. package/nstc-g6/components/Calendar/index.js +8 -8
  11. package/nstc-g6/components/Calendar/src/basic/month-table.vue +129 -129
  12. package/nstc-g6/components/Calendar/src/basic/year-table.vue +126 -126
  13. package/nstc-g6/components/Calendar/src/main.vue +442 -442
  14. package/nstc-g6/components/DialogForm/index.js +8 -8
  15. package/nstc-g6/components/DialogForm/src/demo/index.vue +56 -56
  16. package/nstc-g6/components/DialogForm/src/main.vue +189 -189
  17. package/nstc-g6/components/Form/A_DEMO/component/originalForm.vue +280 -280
  18. package/nstc-g6/components/Form/A_DEMO/config/config_3.js +1222 -1222
  19. package/nstc-g6/components/Form/A_DEMO/index.vue +803 -803
  20. package/nstc-g6/components/Form/AutocompleteCustom/index.vue +72 -72
  21. package/nstc-g6/components/Form/BusinessSpecific/InputMultiple.vue +191 -191
  22. package/nstc-g6/components/Form/BusinessSpecific/InputWithUnit.vue +128 -128
  23. package/nstc-g6/components/Form/BusinessSpecific/SelectTreeDialog.vue +233 -233
  24. package/nstc-g6/components/Form/BusinessSpecific/readme.md +7 -7
  25. package/nstc-g6/components/Form/CascaderCustom/index.vue +101 -101
  26. package/nstc-g6/components/Form/CheckboxCustom/index.vue +84 -84
  27. package/nstc-g6/components/Form/Component.vue +661 -661
  28. package/nstc-g6/components/Form/ComponentSecond.vue +650 -650
  29. package/nstc-g6/components/Form/DatepickerCustom/index.vue +130 -130
  30. package/nstc-g6/components/Form/InputAndDialog/index.js +15 -15
  31. package/nstc-g6/components/Form/InputAndDialog/src/main.vue +394 -394
  32. package/nstc-g6/components/Form/InputCustom/demo/index.vue +65 -65
  33. package/nstc-g6/components/Form/InputCustom/index.vue +307 -307
  34. package/nstc-g6/components/Form/IntervalinputCustom/demo/index.vue +31 -31
  35. package/nstc-g6/components/Form/IntervalinputCustom/index.vue +118 -118
  36. package/nstc-g6/components/Form/Item.vue +330 -330
  37. package/nstc-g6/components/Form/ItemSecond.vue +269 -269
  38. package/nstc-g6/components/Form/List.vue +146 -146
  39. package/nstc-g6/components/Form/ListSecond.vue +130 -130
  40. package/nstc-g6/components/Form/RadioCustom/index.vue +73 -73
  41. package/nstc-g6/components/Form/SelectAccount/index.js +15 -15
  42. package/nstc-g6/components/Form/SelectAccount/src/demo/index.vue +57 -57
  43. package/nstc-g6/components/Form/SelectAccount/src/main.vue +282 -282
  44. package/nstc-g6/components/Form/SelectAndDialog/index.js +15 -15
  45. package/nstc-g6/components/Form/SelectAndDialog/src/main.vue +383 -383
  46. package/nstc-g6/components/Form/SelectCashFlow/index.js +15 -15
  47. package/nstc-g6/components/Form/SelectCashFlow/src/demo/index.vue +41 -41
  48. package/nstc-g6/components/Form/SelectCashFlow/src/main.vue +125 -125
  49. package/nstc-g6/components/Form/SelectCustom/demo/index.vue +82 -82
  50. package/nstc-g6/components/Form/SelectCustom/index.vue +488 -488
  51. package/nstc-g6/components/Form/SelectSubject/index.js +15 -15
  52. package/nstc-g6/components/Form/SelectSubject/src/demo/index.vue +84 -84
  53. package/nstc-g6/components/Form/SelectSubject/src/main.vue +181 -181
  54. package/nstc-g6/components/Form/SelectindialogCustom/demo/index.vue +188 -188
  55. package/nstc-g6/components/Form/SelectindialogCustom/index.vue +650 -650
  56. package/nstc-g6/components/Form/SelectindialogCustom/install.js +6 -6
  57. package/nstc-g6/components/Form/TableRadioCustom/demo/index.vue +53 -53
  58. package/nstc-g6/components/Form/TableRadioCustom/index.vue +183 -183
  59. package/nstc-g6/components/Form/TextCustom/index.vue +38 -38
  60. package/nstc-g6/components/Form/UploadCustom/demo/index.vue +31 -31
  61. package/nstc-g6/components/Form/UploadCustom/index.vue +506 -506
  62. package/nstc-g6/components/Form/configs.js +191 -191
  63. package/nstc-g6/components/Form/configsSecond.js +161 -161
  64. package/nstc-g6/components/Form/index.js +8 -8
  65. package/nstc-g6/components/Form/index.scss +29 -29
  66. package/nstc-g6/components/Form/payeePersonSelect/index.js +15 -15
  67. package/nstc-g6/components/Form/payeePersonSelect/src/demo/index.vue +163 -163
  68. package/nstc-g6/components/Form/payeePersonSelect/src/main.vue +184 -184
  69. package/nstc-g6/components/Form/readme.txt +4 -4
  70. package/nstc-g6/components/FormGroup/index.js +8 -8
  71. package/nstc-g6/components/FormGroup/src/demo/config.js +23 -23
  72. package/nstc-g6/components/FormGroup/src/demo/index.vue +85 -85
  73. package/nstc-g6/components/FormGroup/src/main.vue +639 -639
  74. package/nstc-g6/components/FormGroup/src/validate.js +22 -22
  75. package/nstc-g6/components/InputTag/InputTag.vue +269 -269
  76. package/nstc-g6/components/NstcApprovel/NstcApprovel.vue +24 -24
  77. package/nstc-g6/components/NstcBackToTop/NstcBackToTop.vue +150 -150
  78. package/nstc-g6/components/NstcBranchLazyLoad/NstcBranchLazyLoad.vue +123 -123
  79. package/nstc-g6/components/NstcCharts/NstcCharts.vue +162 -162
  80. package/nstc-g6/components/NstcCharts/define.js +74 -74
  81. package/nstc-g6/components/NstcCharts/mixins/resize.js +56 -56
  82. package/nstc-g6/components/NstcConfirm/NstcConfirm.vue +152 -152
  83. package/nstc-g6/components/NstcConfirm/index.js +24 -24
  84. package/nstc-g6/components/NstcDialog/NstcDialog.vue +184 -184
  85. package/nstc-g6/components/NstcDialogForm/NstcDialogForm.vue +175 -175
  86. package/nstc-g6/components/NstcDialogTable/NstcDialogTable.vue +280 -280
  87. package/nstc-g6/components/NstcDropdown/NstcDropdown.vue +52 -52
  88. package/nstc-g6/components/NstcDropdownTree/NstcDropdownTree.vue +396 -396
  89. package/nstc-g6/components/NstcElectronicFile/NstcElectronicFile.vue +591 -591
  90. package/nstc-g6/components/NstcExcelCustomImport/NstcExcelCustomImport.vue +475 -475
  91. package/nstc-g6/components/NstcExcelExport/NstcExcelExport.vue +145 -145
  92. package/nstc-g6/components/NstcExcelImport/NstcExcelImport.vue +1074 -1074
  93. package/nstc-g6/components/NstcExcelImportN/NstcExcelImportN.vue +1166 -1166
  94. package/nstc-g6/components/NstcExpandCollapse/NstcExpandCollapse.vue +130 -130
  95. package/nstc-g6/components/NstcExpandCollapse/index.scss +77 -77
  96. package/nstc-g6/components/NstcFileUpload/NstcFileUpload.vue +989 -989
  97. package/nstc-g6/components/NstcFileUpload/img/addFile.svg +31 -31
  98. package/nstc-g6/components/NstcFileUpload/img/delete.svg +23 -23
  99. package/nstc-g6/components/NstcFileUpload/img/deleteFile.svg +27 -27
  100. package/nstc-g6/components/NstcFileUpload/img/download.svg +23 -23
  101. package/nstc-g6/components/NstcFileUpload/img/inputUpload.svg +29 -29
  102. package/nstc-g6/components/NstcFileUpload/img/look-diabled.svg +23 -23
  103. package/nstc-g6/components/NstcFileUpload/img/look.svg +23 -23
  104. package/nstc-g6/components/NstcForm/A_DEMO/component/originalForm.vue +280 -280
  105. package/nstc-g6/components/NstcForm/A_DEMO/config/config_3.js +1222 -1222
  106. package/nstc-g6/components/NstcForm/A_DEMO/index.vue +796 -796
  107. package/nstc-g6/components/NstcForm/AutocompleteCustom/index.vue +68 -68
  108. package/nstc-g6/components/NstcForm/BusinessSpecific/InputMultiple.vue +189 -189
  109. package/nstc-g6/components/NstcForm/BusinessSpecific/InputWithUnit.vue +128 -128
  110. package/nstc-g6/components/NstcForm/BusinessSpecific/SelectTreeDialog.vue +233 -233
  111. package/nstc-g6/components/NstcForm/BusinessSpecific/readme.md +7 -7
  112. package/nstc-g6/components/NstcForm/CascaderCustom/index.vue +101 -101
  113. package/nstc-g6/components/NstcForm/CheckboxCustom/index.vue +84 -84
  114. package/nstc-g6/components/NstcForm/Component.vue +684 -684
  115. package/nstc-g6/components/NstcForm/ComponentSecond.vue +650 -650
  116. package/nstc-g6/components/NstcForm/DatepickerCustom/index.vue +130 -130
  117. package/nstc-g6/components/NstcForm/InputAndDialog/NstcInputAndDialog.vue +389 -389
  118. package/nstc-g6/components/NstcForm/InputCustom/index.vue +313 -313
  119. package/nstc-g6/components/NstcForm/IntervalInputCustom/index.vue +111 -111
  120. package/nstc-g6/components/NstcForm/Item.vue +327 -327
  121. package/nstc-g6/components/NstcForm/ItemSecond.vue +269 -269
  122. package/nstc-g6/components/NstcForm/List.vue +146 -146
  123. package/nstc-g6/components/NstcForm/ListSecond.vue +130 -130
  124. package/nstc-g6/components/NstcForm/RadioCustom/index.vue +73 -73
  125. package/nstc-g6/components/NstcForm/SelectAccount/NstcSelectAccount.vue +334 -334
  126. package/nstc-g6/components/NstcForm/SelectAndDialog/NstcSelectAndDialog.vue +377 -377
  127. package/nstc-g6/components/NstcForm/SelectCashFlow/NstcSelectCashFlow.vue +122 -122
  128. package/nstc-g6/components/NstcForm/SelectCustom/index.vue +460 -460
  129. package/nstc-g6/components/NstcForm/SelectSubject/NstcSelectSubject.vue +184 -184
  130. package/nstc-g6/components/NstcForm/SelectindialogCustom/index.vue +648 -648
  131. package/nstc-g6/components/NstcForm/TableRadioCustom/index.vue +183 -183
  132. package/nstc-g6/components/NstcForm/TextCustom/index.vue +38 -38
  133. package/nstc-g6/components/NstcForm/UploadCustom/index.vue +500 -500
  134. package/nstc-g6/components/NstcForm/configs.js +191 -191
  135. package/nstc-g6/components/NstcForm/configsSecond.js +161 -161
  136. package/nstc-g6/components/NstcForm/index.js +8 -8
  137. package/nstc-g6/components/NstcForm/index.scss +29 -29
  138. package/nstc-g6/components/NstcForm/payeePersonSelect/NstcPayeePerson.vue +187 -187
  139. package/nstc-g6/components/NstcForm/readme.txt +4 -4
  140. package/nstc-g6/components/NstcPagination/NstcPagination.vue +428 -428
  141. package/nstc-g6/components/NstcScreenFull/NstcScreenFull.vue +70 -70
  142. package/nstc-g6/components/NstcSelectTree/NstcSelectTree.vue +730 -730
  143. package/nstc-g6/components/NstcSelectTreeList/NstcSelectTreeList.vue +677 -677
  144. package/nstc-g6/components/NstcSticky/NstcSticky.vue +97 -97
  145. package/nstc-g6/components/NstcSvgIcon/NstcSvgIcon.vue +72 -72
  146. package/nstc-g6/components/NstcTab/NstcTab.vue +80 -80
  147. package/nstc-g6/components/NstcTabWithBadge/NstcTabWithBadge.vue +45 -45
  148. package/nstc-g6/components/NstcTabWithBadge/index.scss +31 -31
  149. package/nstc-g6/components/NstcTable/ElTableColumnCustom/index.vue +292 -292
  150. package/nstc-g6/components/NstcTable/NstcTable.vue +460 -460
  151. package/nstc-g6/components/NstcTableSet/NstcTableSet.vue +802 -802
  152. package/nstc-g6/components/NstcThemePicker/NstcThemePicker.vue +186 -186
  153. package/nstc-g6/components/NstcUploadCustomExcel/NstcUploadCustomExcel.vue +330 -330
  154. package/nstc-g6/components/NstcUploadExcel/NstcUploadExcel.vue +145 -145
  155. package/nstc-g6/components/NstcWorkBench/NstcWorkBench.vue +180 -180
  156. package/nstc-g6/components/Search/NstcSearch.vue +583 -583
  157. package/nstc-g6/components/Search/src/demo/index copy.vue +101 -101
  158. package/nstc-g6/components/Search/src/demo/index.vue +103 -103
  159. package/nstc-g6/components/Search/src/main copy.vue +607 -607
  160. package/nstc-g6/components/approvelTwo/main.vue +220 -220
  161. package/nstc-g6/components/approvelTwo/progress.vue +154 -154
  162. package/nstc-g6/directives/VCopy/index.js +59 -59
  163. package/nstc-g6/directives/VNstcNumber/index.js +14 -14
  164. package/nstc-g6/directives/VNstcNumber/temp.js +446 -446
  165. package/nstc-g6/index.js +193 -193
  166. package/nstc-g6/utils/auth.js +2 -2
  167. package/nstc-g6/utils/axios.js +2 -2
  168. package/nstc-g6/utils/dateAndValidator.js +649 -649
  169. package/nstc-g6/utils/debounce.js +40 -40
  170. package/nstc-g6/utils/parseTime.js +48 -48
  171. package/nstc-g6/utils/validate/index.js +6 -6
  172. package/nstc-g6/utils/vendor/Export2Excel.js +229 -229
  173. package/nstc-g6/utils/vendor/Export2Zip.js +24 -24
  174. package/nstc-g6/utils/vue-bus.js +4 -4
  175. package/package.json +116 -116
  176. package/src/_qiankun/index.js +113 -113
  177. package/src/_qiankun/postMessage.js +24 -24
  178. package/src/assets/.DS_Store +0 -0
  179. package/src/assets/css/_coreLib.scss +43 -43
  180. package/src/assets/css/alert.scss +28 -28
  181. package/src/assets/css/cl-anchor.scss +70 -32
  182. package/src/assets/css/cl-approve-card.scss +68 -68
  183. package/src/assets/css/cl-dialog.scss +113 -113
  184. package/src/assets/css/cl-drag-list.scss +24 -24
  185. package/src/assets/css/cl-empty.scss +10 -10
  186. package/src/assets/css/cl-expandable-pane.scss +37 -37
  187. package/src/assets/css/cl-expandable.scss +27 -27
  188. package/src/assets/css/cl-file-upload-table.scss +31 -31
  189. package/src/assets/css/cl-filter.scss +4 -4
  190. package/src/assets/css/cl-flow-step.scss +185 -185
  191. package/src/assets/css/cl-footer-box.scss +10 -10
  192. package/src/assets/css/cl-form-item.scss +725 -725
  193. package/src/assets/css/cl-general-card.scss +11 -11
  194. package/src/assets/css/cl-layout-aside.scss +92 -92
  195. package/src/assets/css/cl-layout-content.scss +16 -16
  196. package/src/assets/css/cl-layout-header.scss +89 -89
  197. package/src/assets/css/cl-layout-tabs.scss +87 -87
  198. package/src/assets/css/cl-layout.scss +97 -97
  199. package/src/assets/css/cl-login-temporary.scss +37 -37
  200. package/src/assets/css/cl-message.scss +159 -159
  201. package/src/assets/css/cl-more-tab.scss +98 -98
  202. package/src/assets/css/cl-nav-menu.scss +5 -5
  203. package/src/assets/css/cl-pagination.scss +130 -130
  204. package/src/assets/css/cl-secondary-tab.scss +53 -53
  205. package/src/assets/css/cl-showcolumn.scss +40 -40
  206. package/src/assets/css/cl-sifting.scss +51 -51
  207. package/src/assets/css/cl-statis.scss +54 -54
  208. package/src/assets/css/cl-step.scss +73 -73
  209. package/src/assets/css/cl-suspend.scss +19 -19
  210. package/src/assets/css/cl-tertiary-tab.scss +56 -56
  211. package/src/assets/css/cl-upload.scss +52 -52
  212. package/src/assets/css/cl-worn-pagination.scss +50 -50
  213. package/src/assets/css/el-button.scss +186 -186
  214. package/src/assets/css/el-table.scss +88 -88
  215. package/src/assets/css/element-variables.scss +1061 -1061
  216. package/src/assets/css/element.dev.scss +22 -22
  217. package/src/assets/css/font-icon.scss +26 -26
  218. package/src/assets/css/index.dev.scss +4 -4
  219. package/src/assets/css/index.scss +11 -11
  220. package/src/assets/css/normalize.scss +845 -845
  221. package/src/assets/css/plain-text.scss +36 -36
  222. package/src/assets/css/rootvar.scss +143 -143
  223. package/src/assets/css/select.scss +25 -25
  224. package/src/assets/css/title-pop.scss +23 -23
  225. package/src/assets/getJsonc.js +53 -53
  226. package/src/assets/iconFont/demo.css +539 -539
  227. package/src/assets/iconFont/demo_index.html +1614 -1614
  228. package/src/assets/iconFont/iconfont.css +263 -263
  229. package/src/assets/iconFont/iconfont.json +443 -443
  230. package/src/assets/realUrl.js +13 -13
  231. package/src/components/.DS_Store +0 -0
  232. package/src/components/Anchor/AnchorItem.vue +30 -30
  233. package/src/components/Anchor/index.vue +208 -185
  234. package/src/components/ApprovalButtons/index.vue +240 -240
  235. package/src/components/ApprovalCard/index.vue +132 -132
  236. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  237. package/src/components/ApprovalRecord/flowDialog.vue +47 -47
  238. package/src/components/ApprovalRecord/index.vue +63 -63
  239. package/src/components/Button/button-group.vue +148 -148
  240. package/src/components/Button/icon-group-button.vue +63 -63
  241. package/src/components/Button/index.vue +56 -56
  242. package/src/components/CascaderArea/index.vue +103 -103
  243. package/src/components/ChildRange/index.vue +169 -169
  244. package/src/components/ChildRange/style.scss +34 -34
  245. package/src/components/ContentLoading/index.vue +41 -41
  246. package/src/components/ContentNull/index.vue +19 -19
  247. package/src/components/DatePicker/index.vue +33 -33
  248. package/src/components/DatePicker/por.vue +171 -171
  249. package/src/components/Descriptions/index.vue +42 -42
  250. package/src/components/Dialog/index.vue +26 -26
  251. package/src/components/Dialog/indexO.vue +116 -116
  252. package/src/components/DragList/index.vue +75 -75
  253. package/src/components/ECharts/define.js +74 -74
  254. package/src/components/ECharts/index.vue +167 -167
  255. package/src/components/ECharts/mixins/resize.js +23 -23
  256. package/src/components/Empty/.DS_Store +0 -0
  257. package/src/components/Empty/img/.DS_Store +0 -0
  258. package/src/components/Empty/img/400.svg +101 -101
  259. package/src/components/Empty/img/401.svg +101 -101
  260. package/src/components/Empty/img/403.svg +101 -101
  261. package/src/components/Empty/img/405.svg +101 -101
  262. package/src/components/Empty/img/901.svg +95 -95
  263. package/src/components/Empty/img/902.svg +95 -95
  264. package/src/components/Empty/img/903.svg +95 -95
  265. package/src/components/Empty/img/904.svg +95 -95
  266. package/src/components/Empty/img/905.svg +95 -95
  267. package/src/components/Empty/img/906.svg +95 -95
  268. package/src/components/Empty/img/907.svg +95 -95
  269. package/src/components/Empty/img/abnormal.svg +108 -108
  270. package/src/components/Empty/img/dispose.svg +71 -71
  271. package/src/components/Empty/img/empty.svg +57 -57
  272. package/src/components/Empty/img/general.svg +58 -58
  273. package/src/components/Empty/img/lock.svg +57 -57
  274. package/src/components/Empty/img/network.svg +59 -59
  275. package/src/components/Empty/img/relevant.svg +68 -68
  276. package/src/components/Empty/img/search.svg +72 -72
  277. package/src/components/Empty/index.vue +147 -147
  278. package/src/components/EventBubble/demo/a.vue +29 -29
  279. package/src/components/EventBubble/demo/b.vue +12 -12
  280. package/src/components/EventBubble/demo/c.vue +18 -18
  281. package/src/components/EventBubble/index.vue +57 -57
  282. package/src/components/Expandable/index.vue +49 -49
  283. package/src/components/Expandable/main.vue +64 -64
  284. package/src/components/FileExportAsync/index.vue +191 -191
  285. package/src/components/FileImport/index.vue +108 -108
  286. package/src/components/FileUploadTable/index.vue +570 -570
  287. package/src/components/Filters/form-item-input.vue +185 -185
  288. package/src/components/Filters/index.vue +216 -216
  289. package/src/components/Filters/indexO.vue +106 -106
  290. package/src/components/FlowStep/index.vue +92 -92
  291. package/src/components/FooterBox/index.vue +21 -21
  292. package/src/components/GeneralCard/index.vue +15 -15
  293. package/src/components/InputNumber/index.vue +184 -184
  294. package/src/components/InputNumber/numberRange.vue +62 -62
  295. package/src/components/InputSearch/index.vue +75 -75
  296. package/src/components/Layout/.DS_Store +0 -0
  297. package/src/components/Layout/AsideNav/index.vue +120 -120
  298. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  299. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  300. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  301. package/src/components/Layout/HeaderWrap/index.vue +412 -412
  302. package/src/components/Layout/HeaderWrap/noticePop.vue +316 -316
  303. package/src/components/Layout/SubContent/index.vue +127 -127
  304. package/src/components/Layout/TabsNav/index.vue +169 -169
  305. package/src/components/Layout/index.vue +518 -518
  306. package/src/components/Layout/utils.js +12 -12
  307. package/src/components/LoginTemporary/form.vue +575 -575
  308. package/src/components/LoginTemporary/index.vue +193 -193
  309. package/src/components/LoginTemporary/qrcode.vue +90 -90
  310. package/src/components/LoginTemporary/retrievePw.vue +375 -375
  311. package/src/components/LoginTemporary/utils.js +73 -73
  312. package/src/components/MicroApp/index.js +67 -67
  313. package/src/components/MicroFrame/index.vue +95 -95
  314. package/src/components/MoreTab/index.vue +229 -229
  315. package/src/components/NavMenu/index.vue +60 -60
  316. package/src/components/PageHeader/index.vue +39 -39
  317. package/src/components/PageHeader/style.scss +44 -44
  318. package/src/components/PageLayout/page.vue +15 -15
  319. package/src/components/Pagination/index.vue +165 -165
  320. package/src/components/SecondaryTab/index.vue +57 -57
  321. package/src/components/SelectLazy/index.vue +75 -75
  322. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  323. package/src/components/SelectTree/index.vue +206 -206
  324. package/src/components/ShowColumn/index.vue +252 -252
  325. package/src/components/Sifting/index.vue +98 -98
  326. package/src/components/Stamp/index.vue +75 -75
  327. package/src/components/Statis/index.vue +111 -111
  328. package/src/components/Statis/statisItem.vue +60 -60
  329. package/src/components/Statis/statisPopover.vue +63 -63
  330. package/src/components/Step/index.vue +37 -37
  331. package/src/components/Suspend/index.vue +72 -72
  332. package/src/components/Table/ThSelectHeader.vue +128 -128
  333. package/src/components/Table/filters.js +60 -60
  334. package/src/components/Table/index.vue +136 -136
  335. package/src/components/Table/indexO.vue +149 -149
  336. package/src/components/TableOperateColumn/OperateBtns.vue +73 -73
  337. package/src/components/TableOperateColumn/index.vue +26 -26
  338. package/src/components/Task/index.vue +26 -26
  339. package/src/components/TertiaryTab/index.vue +62 -62
  340. package/src/components/TimePicker/index.vue +28 -28
  341. package/src/components/Upload/index.vue +280 -280
  342. package/src/components/Upload/uploadMsg.vue +114 -114
  343. package/src/components/WornPagination/index.vue +73 -73
  344. package/src/directives/VClickOutside/index.js +27 -27
  345. package/src/directives/VHas/index.js +58 -58
  346. package/src/directives/VMove/index.js +42 -42
  347. package/src/directives/VRuleKey/index.js +201 -201
  348. package/src/directives/VTitle/index.js +106 -106
  349. package/src/index.js +264 -264
  350. package/src/plugins/.DS_Store +0 -0
  351. package/src/plugins/CompatibleOld/index.js +11 -11
  352. package/src/plugins/Print/index.js +4 -4
  353. package/src/plugins/Print/print-js/.babelrc +12 -12
  354. package/src/plugins/Print/print-js/LICENSE +21 -21
  355. package/src/plugins/Print/print-js/README.md +98 -98
  356. package/src/plugins/Print/print-js/dist/print.css +96 -96
  357. package/src/plugins/Print/print-js/dist/print.js +990 -990
  358. package/src/plugins/Print/print-js/package.json +60 -60
  359. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  360. package/src/plugins/Print/print-js/src/index.js +10 -10
  361. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  362. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  363. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  364. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  365. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  366. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  367. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  368. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  369. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  370. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  371. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  372. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  373. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  374. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  375. package/src/plugins/Print/print.js +2 -2
  376. package/src/plugins/Print/print.scss +1 -1
  377. package/src/plugins/SetMenuTree/index.vue +41 -41
  378. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  379. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  380. package/src/plugins/SetMenuTree/utils.js +74 -74
  381. package/src/plugins/Sign/.DS_Store +0 -0
  382. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  383. package/src/plugins/Sign/bjca/XTXSAB.js +2395 -2395
  384. package/src/plugins/Sign/bjca/index.js +129 -129
  385. package/src/plugins/Sign/index.js +28 -28
  386. package/src/plugins/Sign/sign.js +64 -64
  387. package/src/plugins/setTabsForSub.js +2 -2
  388. package/src/utils/auth.js +56 -56
  389. package/src/utils/axios.js +205 -205
  390. package/src/utils/downloadBlob.js +19 -19
  391. package/src/utils/forEachs.js +16 -16
  392. package/src/utils/getScrollContainer.js +43 -43
  393. package/src/utils/handleTab.js +109 -109
  394. package/src/utils/i18n/cn2hk.json +1270 -1270
  395. package/src/utils/i18n/index.js +50 -50
  396. package/src/utils/list2tree.js +36 -36
  397. package/src/utils/mapper_aims.js +809 -809
  398. package/src/utils/msgboxPor.js +26 -26
  399. package/src/utils/print.js +161 -161
  400. package/src/utils/relaNo.js +72 -72
  401. package/src/utils/repairElementUI.js +169 -169
  402. package/src/utils/tableheaderFilterpanel.vue +248 -248
  403. package/src/utils/theme.config.js +22 -22
  404. package/src/utils/theme.js +31 -31
  405. package/src/utils/toExcel.js +95 -95
  406. package/src/utils/urlToGo.js +82 -82
  407. package/src/utils/xls2json.js +40 -40
  408. package/src/utils/xlsx2json.js +24 -24
  409. package/style/index.css +1 -1
  410. package/style/index.css.map +1 -1
  411. package/theme/blue.css +1 -1
  412. package/theme/green.css +1 -1
  413. package/theme/lightBlue.css +1 -1
  414. package/theme/orange.css +1 -1
  415. package/theme/purple.css +1 -1
  416. package/theme/red.css +1 -1
  417. package/theme/yellow.css +1 -1
@@ -1,570 +1,570 @@
1
- <template>
2
- <div class="file-upload-table">
3
- <!-- 查看附件信息 -->
4
- <template v-if="readonly">
5
- <div class="p-t-s p-b-s">
6
- <div class="flex-box flex-v flex-lr">
7
- <div><slot name="title"></slot></div>
8
- <slot v-if="tableData.length" name="down-btn">
9
- <el-button size="mini" plain @click="downRows">批量下载</el-button>
10
- </slot>
11
- </div>
12
- </div>
13
-
14
- <el-table
15
- :data="tableData"
16
- :row-key="keys.rowKey"
17
- @selection-change="(selection) => (selectionList = selection)"
18
- >
19
- <slot name="selection-column"
20
- ><el-table-column type="selection" width="50" align="center" />
21
- </slot>
22
- <el-table-column label="附件类型" :prop="keys.type">
23
- <template slot="header" slot-scope="scope">
24
- <slot name="type-header" :column="scope.column">附件类型</slot>
25
- </template>
26
- <template slot-scope="{ row }">
27
- <slot name="type" :row="row">{{
28
- row[keys.type] | typeFiter(typeOptions)
29
- }}</slot>
30
- </template>
31
- </el-table-column>
32
- <el-table-column label="附件名称" :prop="keys.name">
33
- <template slot="header" slot-scope="scope">
34
- <slot name="name-header" :column="scope.column">附件名称</slot>
35
- </template>
36
- <template slot-scope="{ row }">
37
- <slot name="name" :row="row">{{ row[keys.name] }}</slot>
38
- </template>
39
- </el-table-column>
40
- <el-table-column
41
- label="上传时间"
42
- :prop="keys.time"
43
- width="170"
44
- align="left"
45
- >
46
- <template slot="header" slot-scope="scope">
47
- <slot name="time-header" :column="scope.column">上传时间</slot>
48
- </template>
49
- <template slot-scope="{ row }">
50
- <slot name="time" :row="row">{{ row[keys.time] }}</slot>
51
- </template>
52
- </el-table-column>
53
- <el-table-column label="上传人" :prop="keys.user">
54
- <template slot="header" slot-scope="scope">
55
- <slot name="user-header" :column="scope.column">上传人</slot>
56
- </template>
57
- <template slot-scope="{ row }">
58
- <slot name="user" :row="row">{{ row[keys.user] }}</slot>
59
- </template>
60
- </el-table-column>
61
- <el-table-column label="操作" align="center" width="80" fixed="right">
62
- <template slot="header" slot-scope="scope">
63
- <slot name="handle-header" :column="scope.column">操作</slot>
64
- </template>
65
- <template slot-scope="{ row }">
66
- <slot name="handle" :row="row">
67
- <el-button
68
- type="text"
69
- icon="el-icon-view"
70
- @click="seeFile(row)"
71
- />
72
- <el-button
73
- type="text"
74
- icon="el-icon-download"
75
- :disabled="!row[keys.url]"
76
- @click="downFile(row)"
77
- />
78
- </slot>
79
- </template>
80
- </el-table-column>
81
- </el-table>
82
- </template>
83
- <!-- 上传附件 -->
84
- <template v-else>
85
- <div class="p-t-s p-b-s">
86
- <div class="flex-box flex-v flex-lr">
87
- <div><slot name="title"></slot></div>
88
- <div>
89
- <slot name="add-btn">
90
- <el-button type="primary" size="mini" @click="addRow"
91
- >新增</el-button
92
- >
93
- </slot>
94
- <slot v-if="showBatchUpload" name="batch-btn">
95
- <el-button size="mini" plain @click="visibleBatch = true"
96
- >批量上传</el-button
97
- >
98
- </slot>
99
- <slot v-if="tableData.length" name="down-btn">
100
- <el-button size="mini" plain @click="downRows">下载</el-button>
101
- </slot>
102
- <slot v-if="tableData.length" name="delete-btn">
103
- <el-button type="danger" plain size="mini" @click="deleteRows"
104
- >删除</el-button
105
- >
106
- </slot>
107
- </div>
108
- </div>
109
- </div>
110
-
111
- <el-table
112
- :data="tableData"
113
- :row-key="keys.rowKey"
114
- @selection-change="(selection) => (selectionList = selection)"
115
- >
116
- <slot name="selection-column"
117
- ><el-table-column type="selection" width="50" align="center" />
118
- </slot>
119
- <el-table-column label="附件类型" min-width="160">
120
- <template slot="header" slot-scope="scope">
121
- <slot name="type-header" :column="scope.column">附件类型</slot>
122
- </template>
123
- <template slot-scope="{ row }">
124
- <slot name="type" :row="row">
125
- <el-select
126
- v-model="row[keys.type]"
127
- :disabled="row['_typeDisabled']"
128
- placeholder="请选择"
129
- style="width: 100%"
130
- >
131
- <el-option
132
- v-for="item in typeOptions"
133
- :key="item.type"
134
- :disabled="item.disabled"
135
- :value="item.type"
136
- :label="item.label"
137
- />
138
- </el-select>
139
- </slot>
140
- </template>
141
- </el-table-column>
142
- <el-table-column label="附件名称" min-width="160">
143
- <template slot="header" slot-scope="scope">
144
- <slot name="name-header" :column="scope.column">附件名称</slot>
145
- </template>
146
- <template slot-scope="{ row }">
147
- <slot name="name" :row="row">
148
- <el-input v-model="row[keys.name]" placeholder="请输入" />
149
- </slot>
150
- </template>
151
- </el-table-column>
152
- <el-table-column label="附件上传" min-width="160">
153
- <template slot="header" slot-scope="scope">
154
- <slot name="upload-header" :column="scope.column">附件上传</slot>
155
- </template>
156
- <template slot-scope="{ row, $index }">
157
- <slot name="upload" :row="row" :$index="$index">
158
- <clUpload
159
- :ref="'upload' + $index"
160
- class="n20-upload-table-up"
161
- :file-name="row['_name'] || row[keys.name]"
162
- :data="row['_fileData']"
163
- :msg-type="null"
164
- :show-clear="false"
165
- :action="action"
166
- :headers="headers"
167
- :disabled="!row[keys.type]"
168
- :accept="row[keys.type] | acceptFilter(typeOptions, fileAccept)"
169
- :size="row[keys.type] | sizeFilter(typeOptions, fileSize)"
170
- :http-request="
171
- uploadHttpRequest
172
- ? (options) => uploadHttpRequest(options, row)
173
- : undefined
174
- "
175
- :before-upload="(file) => beforeUploadFn(file, row)"
176
- :on-progress="(event) => onProgressFn(event, row)"
177
- :on-success="
178
- (response, file, fileList) =>
179
- onSuccessFn(response, file, fileList, row)
180
- "
181
- :on-error="
182
- (err, file, fileList) =>
183
- errorFn(err, file, fileList, row, $index)
184
- "
185
- />
186
- </slot>
187
- </template>
188
- </el-table-column>
189
- <el-table-column
190
- label="上传时间"
191
- :prop="keys.time"
192
- width="170"
193
- align="left"
194
- >
195
- <template slot="header" slot-scope="scope">
196
- <slot name="time-header" :column="scope.column">上传时间</slot>
197
- </template>
198
- <template slot-scope="{ row }">
199
- <slot name="time" :row="row">{{ row[keys.time] }}</slot>
200
- </template>
201
- </el-table-column>
202
- <el-table-column label="上传人" :prop="keys.user" width="100">
203
- <template slot="header" slot-scope="scope">
204
- <slot name="user-header" :column="scope.column">上传人</slot>
205
- </template>
206
- <template slot-scope="{ row }">
207
- <slot name="user" :row="row">{{ row[keys.user] }}</slot>
208
- </template>
209
- </el-table-column>
210
- <el-table-column label="上传进度" width="220">
211
- <template slot="header" slot-scope="scope">
212
- <slot name="percent-header" :column="scope.column">上传进度</slot>
213
- </template>
214
- <template slot-scope="{ row, $index }">
215
- <slot name="percent" :row="row" :$index="$index">
216
- <div v-if="row['_percent'] >= 0" class="flex-box flex-v">
217
- <el-progress
218
- class="n20-upload-table-progress"
219
- :percentage="row['_percent']"
220
- :status="row['_status']"
221
- style="width: 140px"
222
- />
223
- <el-button
224
- v-if="row['_status'] === 'exception'"
225
- type="text"
226
- size="mini"
227
- style="width: 60px"
228
- @click="anewSubmitFn(row, $index)"
229
- >重新上传</el-button
230
- >
231
- <el-button
232
- v-else-if="row['_percent'] >= 0 && row['_percent'] < 100"
233
- type="text"
234
- size="mini"
235
- style="width: 60px"
236
- @click="abortFn(row, $index)"
237
- >取消</el-button
238
- >
239
- </div>
240
- </slot>
241
- </template>
242
- </el-table-column>
243
- <el-table-column label="操作" align="center" width="80" fixed="right">
244
- <template slot="header" slot-scope="scope">
245
- <slot name="handle-header" :column="scope.column">操作</slot>
246
- </template>
247
- <template slot-scope="{ row }">
248
- <slot name="handle" :row="row">
249
- <el-button
250
- type="text"
251
- icon="el-icon-view"
252
- :disabled="!row[keys.url]"
253
- @click="seeFile(row)"
254
- />
255
- </slot>
256
- </template>
257
- </el-table-column>
258
- </el-table>
259
- </template>
260
-
261
- <el-dialog
262
- v-drag
263
- class="p-a-0"
264
- title="附件预览"
265
- :visible.sync="visibleP"
266
- top="2vh"
267
- width="96%"
268
- append-to-body
269
- @close="closeSee"
270
- >
271
- <div
272
- v-if="imgType.test(previewName)"
273
- class="p-a flex-box flex-c flex-v"
274
- style="height: 82vh"
275
- >
276
- <img
277
- :src="previewUrl"
278
- :alt="previewName"
279
- style="max-width: 98%; max-height: 98%"
280
- />
281
- </div>
282
- <div v-else class="p-a" style="height: 82vh">
283
- <component
284
- :is="previewSameOrg ? 'object' : 'div'"
285
- :key="previewUrl"
286
- :data="previewUrl"
287
- style="width: 100%; height: 100%"
288
- >
289
- <div class="flex-column flex-c flex-v" style="height: 100%">
290
- <i
291
- class="el-icon-s-release"
292
- style="font-size: 60px; color: #999"
293
- ></i>
294
- <span style="margin-top: 16px">
295
- 不支持在线预览,请
296
- <a :href="previewUrl" :download="previewName || previewUrl"
297
- >下载</a
298
- >
299
- 到本地查看
300
- </span>
301
- </div>
302
- </component>
303
- </div>
304
- </el-dialog>
305
- <Dialog
306
- title="附件批量上传"
307
- :visible.sync="visibleBatch"
308
- top="5vh"
309
- width="692px"
310
- >
311
- <clUpload
312
- ref="upload-batch"
313
- class="n20-upload-drag"
314
- :msg-type="null"
315
- :show-clear="false"
316
- :drag="true"
317
- :auto-upload="false"
318
- :multiple="true"
319
- :action="action"
320
- :headers="headers"
321
- :accept="fileAccept"
322
- :http-request="uploadHttpRequest"
323
- :on-remove="(file) => $emit('on-remove', file)"
324
- :on-success="batchSuccess"
325
- >
326
- <template slot="trigger">
327
- <i class="drag-icon n20-icon-shangchuan"></i>
328
- <span class="drag-text">点击或将文件拖拽到这里上传</span>
329
- <span class="drag-tip">
330
- <slot>支持扩展名:.rar .zip .doc .docx .pdf .jpg...</slot>
331
- </span>
332
- </template>
333
- </clUpload>
334
- <div class="dialog-footer">
335
- <el-button type="primary" @click="batchUploadFn">确认</el-button>
336
- <el-button plain @click="visibleBatch = false">取消</el-button>
337
- </div>
338
- </Dialog>
339
- </div>
340
- </template>
341
-
342
- <script>
343
- import dayjs from 'dayjs'
344
- import axios from '../../utils/axios'
345
- import clUpload from '../Upload/index.vue'
346
- import Dialog from '../Dialog/index.vue'
347
- export default {
348
- name: 'FileUploadTable',
349
- components: {
350
- clUpload,
351
- Dialog
352
- },
353
- filters: {
354
- typeFiter(type, typeOptions) {
355
- return typeOptions.find((c) => c.type === type)?.label || ''
356
- },
357
- acceptFilter(type, typeOptions, fileAccept) {
358
- return typeOptions.find((c) => c.type === type)?.accept || fileAccept
359
- },
360
- sizeFilter(type, typeOptions, fileSize) {
361
- return typeOptions.find((c) => c.type === type)?.size || fileSize
362
- }
363
- },
364
- props: {
365
- readonly: {
366
- type: Boolean,
367
- default: false
368
- },
369
- action: {
370
- type: String,
371
- default: '/bems/1.0/attach'
372
- },
373
- headers: {
374
- type: Object,
375
- default: undefined
376
- },
377
- seePrefix: {
378
- type: String,
379
- default: undefined
380
- },
381
- seeTypes: {
382
- type: RegExp,
383
- default: () => /\.jpg|\.png|\.gif|\.svg|\.pdf$/i
384
- },
385
- tableData: {
386
- type: Array,
387
- default: () => []
388
- },
389
- dataPorp: {
390
- type: Object,
391
- default: () => ({})
392
- },
393
- showBatchUpload: {
394
- type: Boolean,
395
- default: false
396
- },
397
- uploadHttpRequest: {
398
- type: Function,
399
- default: undefined
400
- },
401
- getFileMethod: {
402
- type: Function,
403
- default: undefined
404
- }
405
- },
406
- data() {
407
- return {
408
- imgType: /\.jpg|\.png|\.gif|\.svg$/i,
409
- selectionList: [],
410
- fileAccept: this.dataPorp.fileAccept || undefined,
411
- fileSize: this.dataPorp.fileSize || undefined,
412
- typeOptions: this.dataPorp.typeOptions || [
413
- {
414
- type: '001',
415
- label: '信贷合同'
416
- },
417
- {
418
- type: '002',
419
- label: '贴现合同'
420
- },
421
- {
422
- type: '003',
423
- label: '其他合同'
424
- }
425
- ],
426
- keys: this.dataPorp.keys || {
427
- rowKey: 'id',
428
- type: 'type',
429
- name: 'name',
430
- url: 'url',
431
- time: 'time',
432
- user: 'user'
433
- },
434
- currFileList: [],
435
- visibleP: false,
436
- visibleBatch: false,
437
- previewUrl: undefined,
438
- previewName: undefined,
439
- previewSameOrg: false
440
- }
441
- },
442
- methods: {
443
- batchUploadFn() {
444
- let $uploadwrap = this.$refs['upload-batch']
445
- let $upload = $uploadwrap.$refs['upload']
446
- $upload.submit()
447
- },
448
- batchSuccess(response, file, fileList) {
449
- let row = {}
450
- this.tableData.splice(0, 0, row)
451
- this.$nextTick(() => {
452
- this.onSuccessFn(response, file, fileList, row)
453
- })
454
-
455
- if (fileList.every((f) => f.status === 'success')) {
456
- this.visibleBatch = false
457
- }
458
- },
459
- addRow() {
460
- this.$emit('add-row')
461
- },
462
- downRows() {
463
- this.$emit('down-rows', this.selectionList)
464
- },
465
- deleteRows() {
466
- this.$emit('delete-rows', this.selectionList)
467
- },
468
-
469
- async getFileInfo(row) {
470
- if (this.getFileMethod) {
471
- return await this.getFileMethod(row)
472
- }
473
-
474
- let _url = row[this.keys.url]
475
- this.seePrefix && (_url = this.seePrefix + _url)
476
- if (_url) {
477
- let blob = await axios.get(_url, {}, { responseType: 'blob' })
478
- let url = URL.createObjectURL(blob)
479
- let name = blob.name
480
- let sameOrg = this.seeTypes.test(name) || this.seeTypes.test(_url)
481
- return {
482
- url,
483
- name,
484
- sameOrg
485
- }
486
- } else {
487
- return {}
488
- }
489
- },
490
- async downFile(row) {
491
- let { url, name } = await this.getFileInfo(row)
492
- if (url) {
493
- let aDom = document.createElement('a')
494
- aDom.href = url
495
- aDom.download = name
496
- aDom.click()
497
-
498
- this.$nextTick(() => {
499
- aDom = undefined
500
- url && URL.revokeObjectURL(url)
501
- })
502
- }
503
- },
504
- async seeFile(row) {
505
- let { url, name, sameOrg } = await this.getFileInfo(row)
506
- if (url) {
507
- this.previewSameOrg = sameOrg
508
- this.previewUrl = url
509
- this.previewName = name
510
- this.visibleP = true
511
- }
512
- },
513
- closeSee() {
514
- this.previewUrl && URL.revokeObjectURL(this.previewUrl)
515
- },
516
- beforeUploadFn(file, row) {
517
- this.$set(row, '_percent', 0)
518
- this.$set(row, '_status', undefined)
519
-
520
- this.$emit('before-upload', file, row)
521
- },
522
- onProgressFn({ percent }, row) {
523
- this.$set(row, '_percent', percent <= 99 ? Math.round(percent) : 99)
524
- },
525
- onSuccessFn(response, file, fileList, row) {
526
- this.$set(row, '_name', file.name)
527
- this.$set(row, '_percent', 100)
528
-
529
- row[this.keys.time] = dayjs().format('YYYY-MM-DD HH:mm:ss')
530
-
531
- row[this.keys.url] = response.data
532
- if (!row[this.keys.name]) {
533
- row[this.keys.name] = file.name
534
- }
535
- this.$set(row, '_status', 'success')
536
-
537
- this.$emit('on-success', file, row)
538
- },
539
- errorFn(err, file, fileList, row, $index) {
540
- this.$set(row, '_status', 'exception')
541
-
542
- let clUpload = this.$refs['upload' + $index]
543
- /* 重置文件状态,并加入文件队列 */
544
- file.status = 'ready'
545
- clUpload.fileList = [file]
546
-
547
- this.$emit('on-error', file, row)
548
- },
549
- abortFn(row, $index) {
550
- this.$set(row, '_status', 'exception')
551
-
552
- let clUpload = this.$refs['upload' + $index]
553
- let elUpload = clUpload.$refs['upload']
554
- let uploadFiles = elUpload.uploadFiles
555
-
556
- /* 重置文件状态,并加入文件队列 */
557
- let file = uploadFiles[uploadFiles.length - 1]
558
- file.status = 'ready'
559
- clUpload.fileList = [file]
560
-
561
- elUpload.abort()
562
- },
563
- anewSubmitFn(row, $index) {
564
- this.$set(row, '_status', 'success')
565
-
566
- this.$refs['upload' + $index]?.$refs['upload']?.submit()
567
- }
568
- }
569
- }
570
- </script>
1
+ <template>
2
+ <div class="file-upload-table">
3
+ <!-- 查看附件信息 -->
4
+ <template v-if="readonly">
5
+ <div class="p-t-s p-b-s">
6
+ <div class="flex-box flex-v flex-lr">
7
+ <div><slot name="title"></slot></div>
8
+ <slot v-if="tableData.length" name="down-btn">
9
+ <el-button size="mini" plain @click="downRows">批量下载</el-button>
10
+ </slot>
11
+ </div>
12
+ </div>
13
+
14
+ <el-table
15
+ :data="tableData"
16
+ :row-key="keys.rowKey"
17
+ @selection-change="(selection) => (selectionList = selection)"
18
+ >
19
+ <slot name="selection-column"
20
+ ><el-table-column type="selection" width="50" align="center" />
21
+ </slot>
22
+ <el-table-column label="附件类型" :prop="keys.type">
23
+ <template slot="header" slot-scope="scope">
24
+ <slot name="type-header" :column="scope.column">附件类型</slot>
25
+ </template>
26
+ <template slot-scope="{ row }">
27
+ <slot name="type" :row="row">{{
28
+ row[keys.type] | typeFiter(typeOptions)
29
+ }}</slot>
30
+ </template>
31
+ </el-table-column>
32
+ <el-table-column label="附件名称" :prop="keys.name">
33
+ <template slot="header" slot-scope="scope">
34
+ <slot name="name-header" :column="scope.column">附件名称</slot>
35
+ </template>
36
+ <template slot-scope="{ row }">
37
+ <slot name="name" :row="row">{{ row[keys.name] }}</slot>
38
+ </template>
39
+ </el-table-column>
40
+ <el-table-column
41
+ label="上传时间"
42
+ :prop="keys.time"
43
+ width="170"
44
+ align="left"
45
+ >
46
+ <template slot="header" slot-scope="scope">
47
+ <slot name="time-header" :column="scope.column">上传时间</slot>
48
+ </template>
49
+ <template slot-scope="{ row }">
50
+ <slot name="time" :row="row">{{ row[keys.time] }}</slot>
51
+ </template>
52
+ </el-table-column>
53
+ <el-table-column label="上传人" :prop="keys.user">
54
+ <template slot="header" slot-scope="scope">
55
+ <slot name="user-header" :column="scope.column">上传人</slot>
56
+ </template>
57
+ <template slot-scope="{ row }">
58
+ <slot name="user" :row="row">{{ row[keys.user] }}</slot>
59
+ </template>
60
+ </el-table-column>
61
+ <el-table-column label="操作" align="center" width="80" fixed="right">
62
+ <template slot="header" slot-scope="scope">
63
+ <slot name="handle-header" :column="scope.column">操作</slot>
64
+ </template>
65
+ <template slot-scope="{ row }">
66
+ <slot name="handle" :row="row">
67
+ <el-button
68
+ type="text"
69
+ icon="el-icon-view"
70
+ @click="seeFile(row)"
71
+ />
72
+ <el-button
73
+ type="text"
74
+ icon="el-icon-download"
75
+ :disabled="!row[keys.url]"
76
+ @click="downFile(row)"
77
+ />
78
+ </slot>
79
+ </template>
80
+ </el-table-column>
81
+ </el-table>
82
+ </template>
83
+ <!-- 上传附件 -->
84
+ <template v-else>
85
+ <div class="p-t-s p-b-s">
86
+ <div class="flex-box flex-v flex-lr">
87
+ <div><slot name="title"></slot></div>
88
+ <div>
89
+ <slot name="add-btn">
90
+ <el-button type="primary" size="mini" @click="addRow"
91
+ >新增</el-button
92
+ >
93
+ </slot>
94
+ <slot v-if="showBatchUpload" name="batch-btn">
95
+ <el-button size="mini" plain @click="visibleBatch = true"
96
+ >批量上传</el-button
97
+ >
98
+ </slot>
99
+ <slot v-if="tableData.length" name="down-btn">
100
+ <el-button size="mini" plain @click="downRows">下载</el-button>
101
+ </slot>
102
+ <slot v-if="tableData.length" name="delete-btn">
103
+ <el-button type="danger" plain size="mini" @click="deleteRows"
104
+ >删除</el-button
105
+ >
106
+ </slot>
107
+ </div>
108
+ </div>
109
+ </div>
110
+
111
+ <el-table
112
+ :data="tableData"
113
+ :row-key="keys.rowKey"
114
+ @selection-change="(selection) => (selectionList = selection)"
115
+ >
116
+ <slot name="selection-column"
117
+ ><el-table-column type="selection" width="50" align="center" />
118
+ </slot>
119
+ <el-table-column label="附件类型" min-width="160">
120
+ <template slot="header" slot-scope="scope">
121
+ <slot name="type-header" :column="scope.column">附件类型</slot>
122
+ </template>
123
+ <template slot-scope="{ row }">
124
+ <slot name="type" :row="row">
125
+ <el-select
126
+ v-model="row[keys.type]"
127
+ :disabled="row['_typeDisabled']"
128
+ placeholder="请选择"
129
+ style="width: 100%"
130
+ >
131
+ <el-option
132
+ v-for="item in typeOptions"
133
+ :key="item.type"
134
+ :disabled="item.disabled"
135
+ :value="item.type"
136
+ :label="item.label"
137
+ />
138
+ </el-select>
139
+ </slot>
140
+ </template>
141
+ </el-table-column>
142
+ <el-table-column label="附件名称" min-width="160">
143
+ <template slot="header" slot-scope="scope">
144
+ <slot name="name-header" :column="scope.column">附件名称</slot>
145
+ </template>
146
+ <template slot-scope="{ row }">
147
+ <slot name="name" :row="row">
148
+ <el-input v-model="row[keys.name]" placeholder="请输入" />
149
+ </slot>
150
+ </template>
151
+ </el-table-column>
152
+ <el-table-column label="附件上传" min-width="160">
153
+ <template slot="header" slot-scope="scope">
154
+ <slot name="upload-header" :column="scope.column">附件上传</slot>
155
+ </template>
156
+ <template slot-scope="{ row, $index }">
157
+ <slot name="upload" :row="row" :$index="$index">
158
+ <clUpload
159
+ :ref="'upload' + $index"
160
+ class="n20-upload-table-up"
161
+ :file-name="row['_name'] || row[keys.name]"
162
+ :data="row['_fileData']"
163
+ :msg-type="null"
164
+ :show-clear="false"
165
+ :action="action"
166
+ :headers="headers"
167
+ :disabled="!row[keys.type]"
168
+ :accept="row[keys.type] | acceptFilter(typeOptions, fileAccept)"
169
+ :size="row[keys.type] | sizeFilter(typeOptions, fileSize)"
170
+ :http-request="
171
+ uploadHttpRequest
172
+ ? (options) => uploadHttpRequest(options, row)
173
+ : undefined
174
+ "
175
+ :before-upload="(file) => beforeUploadFn(file, row)"
176
+ :on-progress="(event) => onProgressFn(event, row)"
177
+ :on-success="
178
+ (response, file, fileList) =>
179
+ onSuccessFn(response, file, fileList, row)
180
+ "
181
+ :on-error="
182
+ (err, file, fileList) =>
183
+ errorFn(err, file, fileList, row, $index)
184
+ "
185
+ />
186
+ </slot>
187
+ </template>
188
+ </el-table-column>
189
+ <el-table-column
190
+ label="上传时间"
191
+ :prop="keys.time"
192
+ width="170"
193
+ align="left"
194
+ >
195
+ <template slot="header" slot-scope="scope">
196
+ <slot name="time-header" :column="scope.column">上传时间</slot>
197
+ </template>
198
+ <template slot-scope="{ row }">
199
+ <slot name="time" :row="row">{{ row[keys.time] }}</slot>
200
+ </template>
201
+ </el-table-column>
202
+ <el-table-column label="上传人" :prop="keys.user" width="100">
203
+ <template slot="header" slot-scope="scope">
204
+ <slot name="user-header" :column="scope.column">上传人</slot>
205
+ </template>
206
+ <template slot-scope="{ row }">
207
+ <slot name="user" :row="row">{{ row[keys.user] }}</slot>
208
+ </template>
209
+ </el-table-column>
210
+ <el-table-column label="上传进度" width="220">
211
+ <template slot="header" slot-scope="scope">
212
+ <slot name="percent-header" :column="scope.column">上传进度</slot>
213
+ </template>
214
+ <template slot-scope="{ row, $index }">
215
+ <slot name="percent" :row="row" :$index="$index">
216
+ <div v-if="row['_percent'] >= 0" class="flex-box flex-v">
217
+ <el-progress
218
+ class="n20-upload-table-progress"
219
+ :percentage="row['_percent']"
220
+ :status="row['_status']"
221
+ style="width: 140px"
222
+ />
223
+ <el-button
224
+ v-if="row['_status'] === 'exception'"
225
+ type="text"
226
+ size="mini"
227
+ style="width: 60px"
228
+ @click="anewSubmitFn(row, $index)"
229
+ >重新上传</el-button
230
+ >
231
+ <el-button
232
+ v-else-if="row['_percent'] >= 0 && row['_percent'] < 100"
233
+ type="text"
234
+ size="mini"
235
+ style="width: 60px"
236
+ @click="abortFn(row, $index)"
237
+ >取消</el-button
238
+ >
239
+ </div>
240
+ </slot>
241
+ </template>
242
+ </el-table-column>
243
+ <el-table-column label="操作" align="center" width="80" fixed="right">
244
+ <template slot="header" slot-scope="scope">
245
+ <slot name="handle-header" :column="scope.column">操作</slot>
246
+ </template>
247
+ <template slot-scope="{ row }">
248
+ <slot name="handle" :row="row">
249
+ <el-button
250
+ type="text"
251
+ icon="el-icon-view"
252
+ :disabled="!row[keys.url]"
253
+ @click="seeFile(row)"
254
+ />
255
+ </slot>
256
+ </template>
257
+ </el-table-column>
258
+ </el-table>
259
+ </template>
260
+
261
+ <el-dialog
262
+ v-drag
263
+ class="p-a-0"
264
+ title="附件预览"
265
+ :visible.sync="visibleP"
266
+ top="2vh"
267
+ width="96%"
268
+ append-to-body
269
+ @close="closeSee"
270
+ >
271
+ <div
272
+ v-if="imgType.test(previewName)"
273
+ class="p-a flex-box flex-c flex-v"
274
+ style="height: 82vh"
275
+ >
276
+ <img
277
+ :src="previewUrl"
278
+ :alt="previewName"
279
+ style="max-width: 98%; max-height: 98%"
280
+ />
281
+ </div>
282
+ <div v-else class="p-a" style="height: 82vh">
283
+ <component
284
+ :is="previewSameOrg ? 'object' : 'div'"
285
+ :key="previewUrl"
286
+ :data="previewUrl"
287
+ style="width: 100%; height: 100%"
288
+ >
289
+ <div class="flex-column flex-c flex-v" style="height: 100%">
290
+ <i
291
+ class="el-icon-s-release"
292
+ style="font-size: 60px; color: #999"
293
+ ></i>
294
+ <span style="margin-top: 16px">
295
+ 不支持在线预览,请
296
+ <a :href="previewUrl" :download="previewName || previewUrl"
297
+ >下载</a
298
+ >
299
+ 到本地查看
300
+ </span>
301
+ </div>
302
+ </component>
303
+ </div>
304
+ </el-dialog>
305
+ <Dialog
306
+ title="附件批量上传"
307
+ :visible.sync="visibleBatch"
308
+ top="5vh"
309
+ width="692px"
310
+ >
311
+ <clUpload
312
+ ref="upload-batch"
313
+ class="n20-upload-drag"
314
+ :msg-type="null"
315
+ :show-clear="false"
316
+ :drag="true"
317
+ :auto-upload="false"
318
+ :multiple="true"
319
+ :action="action"
320
+ :headers="headers"
321
+ :accept="fileAccept"
322
+ :http-request="uploadHttpRequest"
323
+ :on-remove="(file) => $emit('on-remove', file)"
324
+ :on-success="batchSuccess"
325
+ >
326
+ <template slot="trigger">
327
+ <i class="drag-icon n20-icon-shangchuan"></i>
328
+ <span class="drag-text">点击或将文件拖拽到这里上传</span>
329
+ <span class="drag-tip">
330
+ <slot>支持扩展名:.rar .zip .doc .docx .pdf .jpg...</slot>
331
+ </span>
332
+ </template>
333
+ </clUpload>
334
+ <div class="dialog-footer">
335
+ <el-button type="primary" @click="batchUploadFn">确认</el-button>
336
+ <el-button plain @click="visibleBatch = false">取消</el-button>
337
+ </div>
338
+ </Dialog>
339
+ </div>
340
+ </template>
341
+
342
+ <script>
343
+ import dayjs from 'dayjs'
344
+ import axios from '../../utils/axios'
345
+ import clUpload from '../Upload/index.vue'
346
+ import Dialog from '../Dialog/index.vue'
347
+ export default {
348
+ name: 'FileUploadTable',
349
+ components: {
350
+ clUpload,
351
+ Dialog
352
+ },
353
+ filters: {
354
+ typeFiter(type, typeOptions) {
355
+ return typeOptions.find((c) => c.type === type)?.label || ''
356
+ },
357
+ acceptFilter(type, typeOptions, fileAccept) {
358
+ return typeOptions.find((c) => c.type === type)?.accept || fileAccept
359
+ },
360
+ sizeFilter(type, typeOptions, fileSize) {
361
+ return typeOptions.find((c) => c.type === type)?.size || fileSize
362
+ }
363
+ },
364
+ props: {
365
+ readonly: {
366
+ type: Boolean,
367
+ default: false
368
+ },
369
+ action: {
370
+ type: String,
371
+ default: '/bems/1.0/attach'
372
+ },
373
+ headers: {
374
+ type: Object,
375
+ default: undefined
376
+ },
377
+ seePrefix: {
378
+ type: String,
379
+ default: undefined
380
+ },
381
+ seeTypes: {
382
+ type: RegExp,
383
+ default: () => /\.jpg|\.png|\.gif|\.svg|\.pdf$/i
384
+ },
385
+ tableData: {
386
+ type: Array,
387
+ default: () => []
388
+ },
389
+ dataPorp: {
390
+ type: Object,
391
+ default: () => ({})
392
+ },
393
+ showBatchUpload: {
394
+ type: Boolean,
395
+ default: false
396
+ },
397
+ uploadHttpRequest: {
398
+ type: Function,
399
+ default: undefined
400
+ },
401
+ getFileMethod: {
402
+ type: Function,
403
+ default: undefined
404
+ }
405
+ },
406
+ data() {
407
+ return {
408
+ imgType: /\.jpg|\.png|\.gif|\.svg$/i,
409
+ selectionList: [],
410
+ fileAccept: this.dataPorp.fileAccept || undefined,
411
+ fileSize: this.dataPorp.fileSize || undefined,
412
+ typeOptions: this.dataPorp.typeOptions || [
413
+ {
414
+ type: '001',
415
+ label: '信贷合同'
416
+ },
417
+ {
418
+ type: '002',
419
+ label: '贴现合同'
420
+ },
421
+ {
422
+ type: '003',
423
+ label: '其他合同'
424
+ }
425
+ ],
426
+ keys: this.dataPorp.keys || {
427
+ rowKey: 'id',
428
+ type: 'type',
429
+ name: 'name',
430
+ url: 'url',
431
+ time: 'time',
432
+ user: 'user'
433
+ },
434
+ currFileList: [],
435
+ visibleP: false,
436
+ visibleBatch: false,
437
+ previewUrl: undefined,
438
+ previewName: undefined,
439
+ previewSameOrg: false
440
+ }
441
+ },
442
+ methods: {
443
+ batchUploadFn() {
444
+ let $uploadwrap = this.$refs['upload-batch']
445
+ let $upload = $uploadwrap.$refs['upload']
446
+ $upload.submit()
447
+ },
448
+ batchSuccess(response, file, fileList) {
449
+ let row = {}
450
+ this.tableData.splice(0, 0, row)
451
+ this.$nextTick(() => {
452
+ this.onSuccessFn(response, file, fileList, row)
453
+ })
454
+
455
+ if (fileList.every((f) => f.status === 'success')) {
456
+ this.visibleBatch = false
457
+ }
458
+ },
459
+ addRow() {
460
+ this.$emit('add-row')
461
+ },
462
+ downRows() {
463
+ this.$emit('down-rows', this.selectionList)
464
+ },
465
+ deleteRows() {
466
+ this.$emit('delete-rows', this.selectionList)
467
+ },
468
+
469
+ async getFileInfo(row) {
470
+ if (this.getFileMethod) {
471
+ return await this.getFileMethod(row)
472
+ }
473
+
474
+ let _url = row[this.keys.url]
475
+ this.seePrefix && (_url = this.seePrefix + _url)
476
+ if (_url) {
477
+ let blob = await axios.get(_url, {}, { responseType: 'blob' })
478
+ let url = URL.createObjectURL(blob)
479
+ let name = blob.name
480
+ let sameOrg = this.seeTypes.test(name) || this.seeTypes.test(_url)
481
+ return {
482
+ url,
483
+ name,
484
+ sameOrg
485
+ }
486
+ } else {
487
+ return {}
488
+ }
489
+ },
490
+ async downFile(row) {
491
+ let { url, name } = await this.getFileInfo(row)
492
+ if (url) {
493
+ let aDom = document.createElement('a')
494
+ aDom.href = url
495
+ aDom.download = name
496
+ aDom.click()
497
+
498
+ this.$nextTick(() => {
499
+ aDom = undefined
500
+ url && URL.revokeObjectURL(url)
501
+ })
502
+ }
503
+ },
504
+ async seeFile(row) {
505
+ let { url, name, sameOrg } = await this.getFileInfo(row)
506
+ if (url) {
507
+ this.previewSameOrg = sameOrg
508
+ this.previewUrl = url
509
+ this.previewName = name
510
+ this.visibleP = true
511
+ }
512
+ },
513
+ closeSee() {
514
+ this.previewUrl && URL.revokeObjectURL(this.previewUrl)
515
+ },
516
+ beforeUploadFn(file, row) {
517
+ this.$set(row, '_percent', 0)
518
+ this.$set(row, '_status', undefined)
519
+
520
+ this.$emit('before-upload', file, row)
521
+ },
522
+ onProgressFn({ percent }, row) {
523
+ this.$set(row, '_percent', percent <= 99 ? Math.round(percent) : 99)
524
+ },
525
+ onSuccessFn(response, file, fileList, row) {
526
+ this.$set(row, '_name', file.name)
527
+ this.$set(row, '_percent', 100)
528
+
529
+ row[this.keys.time] = dayjs().format('YYYY-MM-DD HH:mm:ss')
530
+
531
+ row[this.keys.url] = response.data
532
+ if (!row[this.keys.name]) {
533
+ row[this.keys.name] = file.name
534
+ }
535
+ this.$set(row, '_status', 'success')
536
+
537
+ this.$emit('on-success', file, row)
538
+ },
539
+ errorFn(err, file, fileList, row, $index) {
540
+ this.$set(row, '_status', 'exception')
541
+
542
+ let clUpload = this.$refs['upload' + $index]
543
+ /* 重置文件状态,并加入文件队列 */
544
+ file.status = 'ready'
545
+ clUpload.fileList = [file]
546
+
547
+ this.$emit('on-error', file, row)
548
+ },
549
+ abortFn(row, $index) {
550
+ this.$set(row, '_status', 'exception')
551
+
552
+ let clUpload = this.$refs['upload' + $index]
553
+ let elUpload = clUpload.$refs['upload']
554
+ let uploadFiles = elUpload.uploadFiles
555
+
556
+ /* 重置文件状态,并加入文件队列 */
557
+ let file = uploadFiles[uploadFiles.length - 1]
558
+ file.status = 'ready'
559
+ clUpload.fileList = [file]
560
+
561
+ elUpload.abort()
562
+ },
563
+ anewSubmitFn(row, $index) {
564
+ this.$set(row, '_status', 'success')
565
+
566
+ this.$refs['upload' + $index]?.$refs['upload']?.submit()
567
+ }
568
+ }
569
+ }
570
+ </script>