n20-common-lib 1.3.13 → 1.3.16

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 (404) 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 -314
  119. package/nstc-g6/components/NstcForm/IntervalInputCustom/index.vue +111 -116
  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 -729
  143. package/nstc-g6/components/NstcSelectTreeList/NstcSelectTreeList.vue +677 -676
  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 -801
  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 +176 -176
  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 +114 -111
  176. package/src/_qiankun/index.js +113 -113
  177. package/src/_qiankun/postMessage.js +48 -48
  178. package/src/assets/css/_coreLib.scss +44 -44
  179. package/src/assets/css/alert.scss +31 -31
  180. package/src/assets/css/cl-anchor.scss +32 -32
  181. package/src/assets/css/cl-approve-card.scss +67 -67
  182. package/src/assets/css/cl-dialog.scss +113 -113
  183. package/src/assets/css/cl-drag-list.scss +24 -24
  184. package/src/assets/css/cl-empty.scss +10 -10
  185. package/src/assets/css/cl-expandable-pane.scss +37 -37
  186. package/src/assets/css/cl-expandable.scss +26 -26
  187. package/src/assets/css/cl-file-upload-table.scss +31 -31
  188. package/src/assets/css/cl-filter.scss +4 -4
  189. package/src/assets/css/cl-flow-step.scss +185 -185
  190. package/src/assets/css/cl-footer-box.scss +10 -10
  191. package/src/assets/css/cl-form-item.scss +705 -705
  192. package/src/assets/css/cl-general-card.scss +11 -11
  193. package/src/assets/css/cl-layout-aside.scss +92 -92
  194. package/src/assets/css/cl-layout-content.scss +16 -16
  195. package/src/assets/css/cl-layout-header.scss +73 -73
  196. package/src/assets/css/cl-layout-tabs.scss +87 -87
  197. package/src/assets/css/cl-layout.scss +97 -97
  198. package/src/assets/css/cl-login-temporary.scss +37 -37
  199. package/src/assets/css/cl-message.scss +159 -159
  200. package/src/assets/css/cl-more-tab.scss +98 -98
  201. package/src/assets/css/cl-nav-menu.scss +5 -5
  202. package/src/assets/css/cl-pagination.scss +130 -130
  203. package/src/assets/css/cl-secondary-tab.scss +53 -53
  204. package/src/assets/css/cl-showcolumn.scss +39 -39
  205. package/src/assets/css/cl-sifting.scss +51 -51
  206. package/src/assets/css/cl-statis.scss +54 -54
  207. package/src/assets/css/cl-step.scss +73 -73
  208. package/src/assets/css/cl-suspend.scss +19 -19
  209. package/src/assets/css/cl-tertiary-tab.scss +56 -56
  210. package/src/assets/css/cl-upload.scss +47 -47
  211. package/src/assets/css/cl-worn-pagination.scss +50 -50
  212. package/src/assets/css/el-button.scss +188 -188
  213. package/src/assets/css/el-table.scss +96 -96
  214. package/src/assets/css/element-variables.scss +1061 -1061
  215. package/src/assets/css/element.dev.scss +22 -22
  216. package/src/assets/css/font-icon.scss +26 -26
  217. package/src/assets/css/index.dev.scss +4 -4
  218. package/src/assets/css/index.scss +11 -11
  219. package/src/assets/css/normalize.scss +726 -726
  220. package/src/assets/css/plain-text.scss +137 -137
  221. package/src/assets/css/rootvar.scss +139 -139
  222. package/src/assets/css/select.scss +25 -25
  223. package/src/assets/css/title-pop.scss +23 -23
  224. package/src/assets/getJsonc.js +50 -50
  225. package/src/assets/iconFont/demo.css +539 -539
  226. package/src/assets/iconFont/demo_index.html +1614 -1614
  227. package/src/assets/iconFont/iconfont.css +263 -263
  228. package/src/assets/iconFont/iconfont.json +443 -443
  229. package/src/assets/realUrl.js +12 -12
  230. package/src/components/.DS_Store +0 -0
  231. package/src/components/Anchor/AnchorItem.vue +29 -29
  232. package/src/components/Anchor/index.vue +185 -185
  233. package/src/components/ApprovalButtons/index.vue +240 -240
  234. package/src/components/ApprovalCard/index.vue +132 -132
  235. package/src/components/ApprovalRecord/approvalImg.vue +39 -44
  236. package/src/components/ApprovalRecord/flowDialog.vue +47 -50
  237. package/src/components/ApprovalRecord/index.vue +59 -59
  238. package/src/components/Button/button-group.vue +154 -154
  239. package/src/components/Button/icon-group-button.vue +63 -63
  240. package/src/components/Button/index.vue +56 -56
  241. package/src/components/CascaderArea/index.vue +103 -103
  242. package/src/components/ChildRange/index.vue +165 -165
  243. package/src/components/ChildRange/style.scss +34 -34
  244. package/src/components/ContentLoading/index.vue +41 -41
  245. package/src/components/ContentNull/index.vue +19 -19
  246. package/src/components/DatePicker/index.vue +27 -27
  247. package/src/components/DatePicker/por.vue +169 -169
  248. package/src/components/Dialog/index.vue +26 -26
  249. package/src/components/Dialog/indexO.vue +116 -116
  250. package/src/components/DragList/index.vue +75 -75
  251. package/src/components/ECharts/define.js +74 -74
  252. package/src/components/ECharts/index.vue +169 -169
  253. package/src/components/ECharts/mixins/resize.js +56 -56
  254. package/src/components/Empty/.DS_Store +0 -0
  255. package/src/components/Empty/img/.DS_Store +0 -0
  256. package/src/components/Empty/img/400.svg +101 -101
  257. package/src/components/Empty/img/401.svg +101 -101
  258. package/src/components/Empty/img/403.svg +101 -101
  259. package/src/components/Empty/img/405.svg +101 -101
  260. package/src/components/Empty/img/901.svg +95 -95
  261. package/src/components/Empty/img/902.svg +95 -95
  262. package/src/components/Empty/img/903.svg +95 -95
  263. package/src/components/Empty/img/904.svg +95 -95
  264. package/src/components/Empty/img/905.svg +95 -95
  265. package/src/components/Empty/img/906.svg +95 -95
  266. package/src/components/Empty/img/907.svg +95 -95
  267. package/src/components/Empty/img/abnormal.svg +108 -108
  268. package/src/components/Empty/img/dispose.svg +71 -71
  269. package/src/components/Empty/img/empty.svg +57 -57
  270. package/src/components/Empty/img/general.svg +58 -58
  271. package/src/components/Empty/img/lock.svg +57 -57
  272. package/src/components/Empty/img/network.svg +59 -59
  273. package/src/components/Empty/img/relevant.svg +68 -68
  274. package/src/components/Empty/img/search.svg +72 -72
  275. package/src/components/Empty/index.vue +147 -147
  276. package/src/components/Expandable/index.vue +49 -49
  277. package/src/components/Expandable/main.vue +64 -55
  278. package/src/components/FileExportAsync/index.vue +178 -178
  279. package/src/components/FileImport/_index.vue +201 -201
  280. package/src/components/FileImport/index.vue +9 -9
  281. package/src/components/FileUploadTable/index.vue +661 -489
  282. package/src/components/Filters/index.vue +372 -371
  283. package/src/components/Filters/indexO.vue +104 -104
  284. package/src/components/FlowStep/index.vue +68 -68
  285. package/src/components/FooterBox/index.vue +21 -21
  286. package/src/components/GeneralCard/index.vue +15 -15
  287. package/src/components/InputNumber/index.vue +169 -169
  288. package/src/components/InputNumber/numberRange.vue +47 -47
  289. package/src/components/InputSearch/index.vue +75 -75
  290. package/src/components/Layout/.DS_Store +0 -0
  291. package/src/components/Layout/AsideNav/index.vue +116 -116
  292. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  293. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  294. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  295. package/src/components/Layout/HeaderWrap/index.vue +371 -371
  296. package/src/components/Layout/HeaderWrap/noticePop.vue +316 -316
  297. package/src/components/Layout/SubContent/index.vue +127 -127
  298. package/src/components/Layout/TabsNav/index.vue +170 -170
  299. package/src/components/Layout/index.vue +518 -518
  300. package/src/components/Layout/utils.js +12 -12
  301. package/src/components/LoginTemporary/form.vue +566 -566
  302. package/src/components/LoginTemporary/index.vue +139 -139
  303. package/src/components/LoginTemporary/qrcode.vue +90 -90
  304. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  305. package/src/components/LoginTemporary/utils.js +73 -73
  306. package/src/components/MicroApp/index.js +67 -67
  307. package/src/components/MicroFrame/index.vue +95 -95
  308. package/src/components/MoreTab/index.vue +232 -232
  309. package/src/components/NavMenu/index.vue +60 -60
  310. package/src/components/PageHeader/index.vue +35 -35
  311. package/src/components/PageHeader/style.scss +39 -39
  312. package/src/components/PageLayout/page.vue +15 -15
  313. package/src/components/Pagination/index.vue +165 -165
  314. package/src/components/PlainText/PlainTextItem.vue +16 -16
  315. package/src/components/PlainText/index.vue +11 -11
  316. package/src/components/Search/index.vue +485 -497
  317. package/src/components/Search/style.scss +93 -93
  318. package/src/components/SecondaryTab/index.vue +58 -58
  319. package/src/components/SelectLazy/index.vue +75 -75
  320. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  321. package/src/components/SelectTree/index.vue +206 -206
  322. package/src/components/ShowColumn/index.vue +213 -213
  323. package/src/components/Sifting/index.vue +99 -99
  324. package/src/components/Stamp/index.vue +75 -75
  325. package/src/components/Statis/index.vue +97 -97
  326. package/src/components/Statis/statisItem.vue +54 -54
  327. package/src/components/Statis/statisPopover.vue +56 -56
  328. package/src/components/Step/index.vue +38 -38
  329. package/src/components/Suspend/index.vue +72 -72
  330. package/src/components/Table/ThSelectHeader.vue +127 -127
  331. package/src/components/Table/index.vue +261 -261
  332. package/src/components/Table/indexO.vue +149 -149
  333. package/src/components/Task/index.vue +26 -26
  334. package/src/components/TertiaryTab/index.vue +63 -63
  335. package/src/components/TimePicker/index.vue +28 -28
  336. package/src/components/Upload/index.vue +258 -246
  337. package/src/components/WornPagination/index.vue +73 -73
  338. package/src/directives/VClickOutside/index.js +19 -19
  339. package/src/directives/VHas/index.js +58 -58
  340. package/src/directives/VMove/index.js +42 -42
  341. package/src/directives/VTitle/index.js +86 -85
  342. package/src/index.js +257 -257
  343. package/src/plugins/CompatibleOld/index.js +57 -57
  344. package/src/plugins/Print/index.js +4 -4
  345. package/src/plugins/Print/print-js/.babelrc +12 -12
  346. package/src/plugins/Print/print-js/LICENSE +21 -21
  347. package/src/plugins/Print/print-js/README.md +98 -98
  348. package/src/plugins/Print/print-js/dist/print.css +96 -96
  349. package/src/plugins/Print/print-js/dist/print.js +990 -990
  350. package/src/plugins/Print/print-js/package.json +60 -60
  351. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  352. package/src/plugins/Print/print-js/src/index.js +10 -10
  353. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  354. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  355. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  356. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  357. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  358. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  359. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  360. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  361. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  362. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  363. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  364. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  365. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  366. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  367. package/src/plugins/Print/print.js +2 -2
  368. package/src/plugins/Print/print.scss +1 -1
  369. package/src/plugins/SetMenuTree/index.vue +41 -41
  370. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  371. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  372. package/src/plugins/SetMenuTree/utils.js +74 -74
  373. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  374. package/src/plugins/Sign/index.js +65 -65
  375. package/src/plugins/Sign/sign.js +1 -1
  376. package/src/plugins/setTabsForSub.js +2 -2
  377. package/src/utils/auth.js +53 -53
  378. package/src/utils/axios.js +203 -203
  379. package/src/utils/downloadBlob.js +19 -19
  380. package/src/utils/forEachs.js +16 -16
  381. package/src/utils/getScrollContainer.js +43 -43
  382. package/src/utils/i18n/cn2hk.json +1270 -1270
  383. package/src/utils/i18n/index.js +50 -50
  384. package/src/utils/list2tree.js +36 -36
  385. package/src/utils/mapper_aims.js +809 -809
  386. package/src/utils/msgboxPor.js +26 -26
  387. package/src/utils/print.js +161 -161
  388. package/src/utils/relaNo.js +72 -72
  389. package/src/utils/repairElementUI.js +95 -95
  390. package/src/utils/urlToGo.js +82 -82
  391. package/style/index.css.map +1 -1
  392. package/treme/fonts/element-icons.535877f5.woff +0 -0
  393. package/treme/fonts/element-icons.732389de.ttf +0 -0
  394. package/treme/fonts/iconfont.022f36c4.woff2 +0 -0
  395. package/treme/fonts/iconfont.4a1b2c93.woff +0 -0
  396. package/treme/fonts/iconfont.a9febaa2.ttf +0 -0
  397. package/style/css/normalize.scss +0 -726
  398. package/style/index.umd.min.js +0 -2
  399. package/style/index.umd.min.js.map +0 -1
  400. package/style/pageDemo/demo-1.vue +0 -131
  401. package/style/pageDemo/demo-2.vue +0 -35
  402. package/style/pageDemo/demo-3.vue +0 -22
  403. package/style/pageDemo/seeCode.js +0 -20
  404. package/style/server-config.jsonc +0 -723
@@ -1,489 +1,661 @@
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">
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="tableData.length" name="down-btn">
95
- <el-button size="mini" plain @click="downRows">下载</el-button>
96
- </slot>
97
- <slot v-if="tableData.length" name="delete-btn">
98
- <el-button type="danger" plain size="mini" @click="deleteRows"
99
- >删除</el-button
100
- >
101
- </slot>
102
- </div>
103
- </div>
104
- </div>
105
-
106
- <el-table
107
- :data="tableData"
108
- :row-key="keys.rowKey"
109
- @selection-change="(selection) => (selectionList = selection)"
110
- >
111
- <slot name="selection-column"
112
- ><el-table-column type="selection" width="50" align="center" />
113
- </slot>
114
- <el-table-column label="附件类型" min-width="160">
115
- <template slot="header" slot-scope="scope">
116
- <slot name="type-header" :column="scope.column">附件类型</slot>
117
- </template>
118
- <template slot-scope="{ row }">
119
- <slot name="type" :row="row">
120
- <el-select
121
- v-model="row[keys.type]"
122
- :disabled="row['_typeDisabled']"
123
- placeholder="请选择"
124
- style="width: 100%"
125
- >
126
- <el-option
127
- v-for="item in typeOptions"
128
- :key="item.type"
129
- :disabled="item.disabled"
130
- :value="item.type"
131
- :label="item.label"
132
- />
133
- </el-select>
134
- </slot>
135
- </template>
136
- </el-table-column>
137
- <el-table-column label="附件名称" min-width="160">
138
- <template slot="header" slot-scope="scope">
139
- <slot name="name-header" :column="scope.column">附件名称</slot>
140
- </template>
141
- <template slot-scope="{ row }">
142
- <slot name="name" :row="row">
143
- <el-input v-model="row[keys.name]" placeholder="请输入" />
144
- </slot>
145
- </template>
146
- </el-table-column>
147
- <el-table-column label="附件上传" min-width="160">
148
- <template slot="header" slot-scope="scope">
149
- <slot name="upload-header" :column="scope.column">附件上传</slot>
150
- </template>
151
- <template slot-scope="{ row, $index }">
152
- <slot name="upload" :row="row" :$index="$index">
153
- <clUpload
154
- :ref="'upload' + $index"
155
- class="n20-upload-table-up"
156
- :file-name="row['_name'] || row[keys.name]"
157
- :data="row['_fileData']"
158
- :msg-type="null"
159
- :show-clear="false"
160
- :action="action"
161
- :headers="headers"
162
- :disabled="!row[keys.type]"
163
- :accept="row[keys.type] | acceptFilter(typeOptions, fileAccept)"
164
- :size="row[keys.type] | sizeFilter(typeOptions, fileSize)"
165
- :before-upload="(file) => beforeUploadFn(file, row)"
166
- :on-progress="(event) => onProgressFn(event, row)"
167
- :on-success="
168
- (response, file, fileList) =>
169
- onSuccessFn(response, file, fileList, row)
170
- "
171
- :on-error="
172
- (err, file, fileList) =>
173
- errorFn(err, file, fileList, row, $index)
174
- "
175
- />
176
- </slot>
177
- </template>
178
- </el-table-column>
179
- <el-table-column
180
- label="上传时间"
181
- :prop="keys.time"
182
- width="170"
183
- align="left"
184
- >
185
- <template slot="header" slot-scope="scope">
186
- <slot name="time-header" :column="scope.column">上传时间</slot>
187
- </template>
188
- <template slot-scope="{ row }">
189
- <slot name="time" :row="row">{{ row[keys.time] }}</slot>
190
- </template>
191
- </el-table-column>
192
- <el-table-column label="上传人" :prop="keys.user">
193
- <template slot="header" slot-scope="scope">
194
- <slot name="user-header" :column="scope.column">上传人</slot>
195
- </template>
196
- <template slot-scope="{ row }">
197
- <slot name="user" :row="row">{{ row[keys.user] }}</slot>
198
- </template>
199
- </el-table-column>
200
- <el-table-column label="上传进度" width="220">
201
- <template slot="header" slot-scope="scope">
202
- <slot name="percent-header" :column="scope.column">上传进度</slot>
203
- </template>
204
- <template slot-scope="{ row, $index }">
205
- <slot name="percent" :row="row" :$index="$index">
206
- <div v-if="row['_percent'] >= 0" class="flex-box flex-v">
207
- <el-progress
208
- class="n20-upload-table-progress"
209
- :percentage="row['_percent']"
210
- :status="row['_status']"
211
- style="width: 140px"
212
- />
213
- <el-button
214
- v-if="row['_status'] === 'exception'"
215
- type="text"
216
- size="mini"
217
- style="width: 60px"
218
- @click="anewSubmitFn(row, $index)"
219
- >重新上传</el-button
220
- >
221
- <el-button
222
- v-else-if="row['_percent'] >= 0 && row['_percent'] < 100"
223
- type="text"
224
- size="mini"
225
- style="width: 60px"
226
- @click="abortFn(row, $index)"
227
- >取消</el-button
228
- >
229
- </div>
230
- </slot>
231
- </template>
232
- </el-table-column>
233
- <el-table-column label="操作" align="center" width="80">
234
- <template slot="header" slot-scope="scope">
235
- <slot name="handle-header" :column="scope.column">操作</slot>
236
- </template>
237
- <template slot-scope="{ row }">
238
- <slot name="handle" :row="row">
239
- <el-button
240
- type="text"
241
- icon="el-icon-view"
242
- :disabled="!row[keys.url]"
243
- @click="seeFile(row)"
244
- />
245
- </slot>
246
- </template>
247
- </el-table-column>
248
- </el-table>
249
- </template>
250
-
251
- <el-dialog
252
- class="p-a-0"
253
- title="附件预览"
254
- :visible.sync="visibleP"
255
- top="2vh"
256
- width="96%"
257
- append-to-body
258
- @close="closeSee"
259
- >
260
- <div
261
- v-if="imgType.test(previewName)"
262
- class="p-a flex-box flex-c flex-v"
263
- style="height: 82vh"
264
- >
265
- <img
266
- :src="previewUrl"
267
- :alt="previewName"
268
- style="max-width: 98%; max-height: 98%"
269
- />
270
- </div>
271
- <div v-else class="p-a" style="height: 82vh">
272
- <component
273
- :is="previewSameOrg ? 'object' : 'div'"
274
- :key="previewUrl"
275
- :data="previewUrl"
276
- style="width: 100%; height: 100%"
277
- >
278
- <div class="flex-column flex-c flex-v" style="height: 100%">
279
- <i
280
- class="el-icon-s-release"
281
- style="font-size: 60px; color: #999"
282
- ></i>
283
- <span style="margin-top: 16px">
284
- 不支持在线预览,请
285
- <a :href="previewUrl" :download="previewName || previewUrl"
286
- >下载</a
287
- >
288
- 到本地查看
289
- </span>
290
- </div>
291
- </component>
292
- </div>
293
- </el-dialog>
294
- </div>
295
- </template>
296
-
297
- <script>
298
- import dayjs from 'dayjs'
299
- import axios from '../../utils/axios'
300
- import clUpload from '../Upload/index.vue'
301
- export default {
302
- name: 'FileUploadTable',
303
- components: {
304
- clUpload
305
- },
306
- filters: {
307
- typeFiter(type, typeOptions) {
308
- return typeOptions.find((c) => c.type === type)?.label || ''
309
- },
310
- acceptFilter(type, typeOptions, fileAccept) {
311
- return typeOptions.find((c) => c.type === type)?.accept || fileAccept
312
- },
313
- sizeFilter(type, typeOptions, fileSize) {
314
- return typeOptions.find((c) => c.type === type)?.size || fileSize
315
- }
316
- },
317
- props: {
318
- readonly: {
319
- type: Boolean,
320
- default: false
321
- },
322
- action: {
323
- type: String,
324
- default: '/bems/1.0/attach'
325
- },
326
- headers: {
327
- type: Object,
328
- default: undefined
329
- },
330
- seePrefix: {
331
- type: String,
332
- default: undefined
333
- },
334
- seeTypes: {
335
- type: RegExp,
336
- default: () => /\.jpg|\.png|\.gif|\.svg|\.pdf$/i
337
- },
338
- tableData: {
339
- type: Array,
340
- default: () => []
341
- },
342
- dataPorp: {
343
- type: Object,
344
- default: () => ({})
345
- }
346
- },
347
- data() {
348
- return {
349
- imgType: /\.jpg|\.png|\.gif|\.svg$/i,
350
- selectionList: [],
351
- fileAccept: this.dataPorp.fileAccept || undefined,
352
- fileSize: this.dataPorp.fileSize || undefined,
353
- typeOptions: this.dataPorp.typeOptions || [
354
- {
355
- type: '001',
356
- label: '信贷合同'
357
- },
358
- {
359
- type: '002',
360
- label: '贴现合同'
361
- },
362
- {
363
- type: '003',
364
- label: '其他合同'
365
- }
366
- ],
367
- keys: this.dataPorp.keys || {
368
- rowKey: 'id',
369
- type: 'type',
370
- name: 'name',
371
- url: 'url',
372
- time: 'time',
373
- user: 'user'
374
- },
375
-
376
- visibleP: false,
377
- previewUrl: undefined,
378
- previewName: undefined,
379
- previewSameOrg: false
380
- }
381
- },
382
- methods: {
383
- addRow() {
384
- this.$emit('add-row')
385
- },
386
- downRows() {
387
- this.$emit('down-rows', this.selectionList)
388
- },
389
- deleteRows() {
390
- this.$emit('delete-rows', this.selectionList)
391
- },
392
- async getFileInfo(row) {
393
- let _url = row[this.keys.url]
394
- this.seePrefix && (_url = this.seePrefix + _url)
395
- if (_url) {
396
- let blob = await axios.get(_url, {}, { responseType: 'blob' })
397
- let url = URL.createObjectURL(blob)
398
- let name = blob.name
399
- let sameOrg = this.seeTypes.test(name) || this.seeTypes.test(_url)
400
- return {
401
- url,
402
- name,
403
- sameOrg
404
- }
405
- } else {
406
- return {}
407
- }
408
- },
409
- async downFile(row) {
410
- let { url, name } = await this.getFileInfo(row)
411
- if (url) {
412
- let aDom = document.createElement('a')
413
- aDom.href = url
414
- aDom.download = name
415
- aDom.click()
416
-
417
- this.$nextTick(() => {
418
- aDom = undefined
419
- url && URL.revokeObjectURL(url)
420
- })
421
- }
422
- },
423
- async seeFile(row) {
424
- let { url, name, sameOrg } = await this.getFileInfo(row)
425
- if (url) {
426
- this.previewSameOrg = sameOrg
427
- this.previewUrl = url
428
- this.previewName = name
429
- this.visibleP = true
430
- }
431
- },
432
- closeSee() {
433
- this.previewUrl && URL.revokeObjectURL(this.previewUrl)
434
- },
435
- beforeUploadFn(file, row) {
436
- this.$set(row, '_percent', 0)
437
- this.$set(row, '_status', undefined)
438
-
439
- this.$emit('before-upload', file, row)
440
- },
441
- onProgressFn({ percent }, row) {
442
- this.$set(row, '_percent', percent <= 99 ? Math.round(percent) : 99)
443
- },
444
- onSuccessFn(response, file, fileList, row) {
445
- this.$set(row, '_name', file.name)
446
- this.$set(row, '_percent', 100)
447
-
448
- row[this.keys.time] = dayjs().format('YYYY-MM-DD HH:mm:ss')
449
-
450
- row[this.keys.url] = response.data
451
- if (!row[this.keys.name]) {
452
- row[this.keys.name] = file.name
453
- }
454
- this.$set(row, '_status', 'success')
455
-
456
- this.$emit('on-success', file, row)
457
- },
458
- errorFn(err, file, fileList, row, $index) {
459
- this.$set(row, '_status', 'exception')
460
-
461
- let clUpload = this.$refs['upload' + $index]
462
- /* 重置文件状态,并加入文件队列 */
463
- file.status = 'ready'
464
- clUpload.fileList = [file]
465
-
466
- this.$emit('on-error', file, row)
467
- },
468
- abortFn(row, $index) {
469
- this.$set(row, '_status', 'exception')
470
-
471
- let clUpload = this.$refs['upload' + $index]
472
- let elUpload = clUpload.$refs['upload']
473
- let uploadFiles = elUpload.uploadFiles
474
-
475
- /* 重置文件状态,并加入文件队列 */
476
- let file = uploadFiles[uploadFiles.length - 1]
477
- file.status = 'ready'
478
- clUpload.fileList = [file]
479
-
480
- elUpload.abort()
481
- },
482
- anewSubmitFn(row, $index) {
483
- this.$set(row, '_status', 'success')
484
-
485
- this.$refs['upload' + $index]?.$refs['upload']?.submit()
486
- }
487
- }
488
- }
489
- </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">
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 name="batch-btn">
95
+ <el-button size="mini" plain @click="handleUploadDialog"
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
+ :before-upload="(file) => beforeUploadFn(file, row)"
171
+ :on-progress="(event) => onProgressFn(event, row)"
172
+ :on-success="
173
+ (response, file, fileList) =>
174
+ onSuccessFn(response, file, fileList, row)
175
+ "
176
+ :on-error="
177
+ (err, file, fileList) =>
178
+ errorFn(err, file, fileList, row, $index)
179
+ "
180
+ />
181
+ </slot>
182
+ </template>
183
+ </el-table-column>
184
+ <el-table-column
185
+ label="上传时间"
186
+ :prop="keys.time"
187
+ width="170"
188
+ align="left"
189
+ >
190
+ <template slot="header" slot-scope="scope">
191
+ <slot name="time-header" :column="scope.column">上传时间</slot>
192
+ </template>
193
+ <template slot-scope="{ row }">
194
+ <slot name="time" :row="row">{{ row[keys.time] }}</slot>
195
+ </template>
196
+ </el-table-column>
197
+ <el-table-column label="上传人" :prop="keys.user" width="100">
198
+ <template slot="header" slot-scope="scope">
199
+ <slot name="user-header" :column="scope.column">上传人</slot>
200
+ </template>
201
+ <template slot-scope="{ row }">
202
+ <slot name="user" :row="row">{{ row[keys.user] }}</slot>
203
+ </template>
204
+ </el-table-column>
205
+ <el-table-column label="上传进度" width="220">
206
+ <template slot="header" slot-scope="scope">
207
+ <slot name="percent-header" :column="scope.column">上传进度</slot>
208
+ </template>
209
+ <template slot-scope="{ row, $index }">
210
+ <slot name="percent" :row="row" :$index="$index">
211
+ <div v-if="row['_percent'] >= 0" class="flex-box flex-v">
212
+ <el-progress
213
+ class="n20-upload-table-progress"
214
+ :percentage="row['_percent']"
215
+ :status="row['_status']"
216
+ style="width: 140px"
217
+ />
218
+ <el-button
219
+ v-if="row['_status'] === 'exception'"
220
+ type="text"
221
+ size="mini"
222
+ style="width: 60px"
223
+ @click="anewSubmitFn(row, $index)"
224
+ >重新上传</el-button
225
+ >
226
+ <el-button
227
+ v-else-if="row['_percent'] >= 0 && row['_percent'] < 100"
228
+ type="text"
229
+ size="mini"
230
+ style="width: 60px"
231
+ @click="abortFn(row, $index)"
232
+ >取消</el-button
233
+ >
234
+ </div>
235
+ </slot>
236
+ </template>
237
+ </el-table-column>
238
+ <el-table-column label="操作" align="center" width="80">
239
+ <template slot="header" slot-scope="scope">
240
+ <slot name="handle-header" :column="scope.column">操作</slot>
241
+ </template>
242
+ <template slot-scope="{ row }">
243
+ <slot name="handle" :row="row">
244
+ <el-button
245
+ type="text"
246
+ icon="el-icon-view"
247
+ :disabled="!row[keys.url]"
248
+ @click="seeFile(row)"
249
+ />
250
+ </slot>
251
+ </template>
252
+ </el-table-column>
253
+ </el-table>
254
+ </template>
255
+
256
+ <el-dialog
257
+ v-drag
258
+ class="p-a-0"
259
+ title="附件预览"
260
+ :visible.sync="visibleP"
261
+ top="2vh"
262
+ width="96%"
263
+ append-to-body
264
+ @close="closeSee"
265
+ >
266
+ <div
267
+ v-if="imgType.test(previewName)"
268
+ class="p-a flex-box flex-c flex-v"
269
+ style="height: 82vh"
270
+ >
271
+ <img
272
+ :src="previewUrl"
273
+ :alt="previewName"
274
+ style="max-width: 98%; max-height: 98%"
275
+ />
276
+ </div>
277
+ <div v-else class="p-a" style="height: 82vh">
278
+ <component
279
+ :is="previewSameOrg ? 'object' : 'div'"
280
+ :key="previewUrl"
281
+ :data="previewUrl"
282
+ style="width: 100%; height: 100%"
283
+ >
284
+ <div class="flex-column flex-c flex-v" style="height: 100%">
285
+ <i
286
+ class="el-icon-s-release"
287
+ style="font-size: 60px; color: #999"
288
+ ></i>
289
+ <span style="margin-top: 16px">
290
+ 不支持在线预览,请
291
+ <a :href="previewUrl" :download="previewName || previewUrl"
292
+ >下载</a
293
+ >
294
+ 到本地查看
295
+ </span>
296
+ </div>
297
+ </component>
298
+ </div>
299
+ </el-dialog>
300
+ <Dialog title="附件批量上传" :visible.sync="visibleBatch" top="5vh">
301
+ <cl-upload
302
+ class="n20-upload-drag"
303
+ :drag="true"
304
+ action="no"
305
+ :auto-upload="false"
306
+ :multiple="true"
307
+ :limit="10"
308
+ :list="currFileList"
309
+ :on-change="onChange"
310
+ :http-request="customUpload"
311
+ accept=".rar,.zip,.doc,.docx,.pdf,image/*"
312
+ >
313
+ <template slot="trigger">
314
+ <i class="drag-icon n20-icon-shangchuan"></i>
315
+ <span class="drag-text">点击或将文件拖拽到这里上传</span>
316
+ <span class="drag-tip">
317
+ <slot>支持扩展名:.rar .zip .doc .docx .pdf .jpg...</slot>
318
+ </span>
319
+ </template>
320
+ </cl-upload>
321
+ <div class="dialog-footer">
322
+ <el-button type="primary" @click="customUpload">确认</el-button>
323
+ <el-button plain @click="visibleBatch = false">取消</el-button>
324
+ </div>
325
+ </Dialog>
326
+ </div>
327
+ </template>
328
+
329
+ <script>
330
+ import dayjs from 'dayjs'
331
+ import axios from '../../utils/axios'
332
+ import clUpload from '../Upload/index.vue'
333
+ import Dialog from '../Dialog/index.vue'
334
+ export default {
335
+ name: 'FileUploadTable',
336
+ components: {
337
+ clUpload,
338
+ Dialog
339
+ },
340
+ filters: {
341
+ typeFiter(type, typeOptions) {
342
+ return typeOptions.find((c) => c.type === type)?.label || ''
343
+ },
344
+ acceptFilter(type, typeOptions, fileAccept) {
345
+ return typeOptions.find((c) => c.type === type)?.accept || fileAccept
346
+ },
347
+ sizeFilter(type, typeOptions, fileSize) {
348
+ return typeOptions.find((c) => c.type === type)?.size || fileSize
349
+ }
350
+ },
351
+ props: {
352
+ readonly: {
353
+ type: Boolean,
354
+ default: false
355
+ },
356
+ action: {
357
+ type: String,
358
+ default: '/bems/1.0/attach'
359
+ },
360
+ headers: {
361
+ type: Object,
362
+ default: undefined
363
+ },
364
+ actionBatch: {
365
+ type: String,
366
+ default: '/api/neams/eamsbaserecord/save'
367
+ },
368
+ seePrefix: {
369
+ type: String,
370
+ default: undefined
371
+ },
372
+ seeTypes: {
373
+ type: RegExp,
374
+ default: () => /\.jpg|\.png|\.gif|\.svg|\.pdf$/i
375
+ },
376
+ uploadParams: {
377
+ type: Object,
378
+ default: () => ({})
379
+ },
380
+ tableData: {
381
+ type: Array,
382
+ default: () => []
383
+ },
384
+ dataPorp: {
385
+ type: Object,
386
+ default: () => ({})
387
+ }
388
+ },
389
+ data() {
390
+ return {
391
+ imgType: /\.jpg|\.png|\.gif|\.svg$/i,
392
+ selectionList: [],
393
+ fileAccept: this.dataPorp.fileAccept || undefined,
394
+ fileSize: this.dataPorp.fileSize || undefined,
395
+ typeOptions: this.dataPorp.typeOptions || [
396
+ {
397
+ type: '001',
398
+ label: '信贷合同'
399
+ },
400
+ {
401
+ type: '002',
402
+ label: '贴现合同'
403
+ },
404
+ {
405
+ type: '003',
406
+ label: '其他合同'
407
+ }
408
+ ],
409
+ batchData: {},
410
+ keys: this.dataPorp.keys || {
411
+ rowKey: 'id',
412
+ type: 'type',
413
+ name: 'name',
414
+ url: 'url',
415
+ time: 'time',
416
+ user: 'user'
417
+ },
418
+ currFileList: [],
419
+ visibleP: false,
420
+ visibleBatch: false,
421
+ previewUrl: undefined,
422
+ previewName: undefined,
423
+ previewSameOrg: false
424
+ }
425
+ },
426
+ methods: {
427
+ addRow() {
428
+ this.$emit('add-row')
429
+ },
430
+ handleUploadDialog() {
431
+ this.visibleBatch = true
432
+ },
433
+ async customUpload() {
434
+ let { code, data } = await axios({
435
+ headers: {
436
+ 'Content-Type': 'multipart/form-data'
437
+ },
438
+ url: `/api/neams/eamsbaserecord/save`,
439
+ method: 'POST',
440
+ data: this.batchData
441
+ })
442
+
443
+ if (code === 200) {
444
+ if (data.length > 0) {
445
+ let flieList = data.map((item) => {
446
+ var keys = Object.keys(item)[0]
447
+ let row = JSON.parse(item[keys])
448
+ var d = new Date(row.uploadtime)
449
+ return {
450
+ name: row.recordname,
451
+ time: this.TimeDate(d),
452
+ user: row.creator,
453
+ archiveId: row.beid,
454
+ type: row.attno
455
+ }
456
+ })
457
+
458
+ this.tableData = this.tableData.concat(flieList)
459
+ this.visibleBatch = false
460
+ }
461
+ }
462
+ },
463
+ onChange(file, filelist) {
464
+ this.currFileList = filelist
465
+ console.log(filelist)
466
+ let params = this.uploadParams
467
+ let data = new FormData()
468
+ let dataArray = []
469
+ this.currFileList.forEach((item) => {
470
+ data.append('file', item.raw)
471
+ let attno = null
472
+ dataArray.push({
473
+ ...params,
474
+ recordname: item.name,
475
+ fileSize: item.size,
476
+ memo: item.name,
477
+ attno
478
+ })
479
+ })
480
+ data.append('data', JSON.stringify(dataArray))
481
+ //档案生效时间-截止时间
482
+ data.append('date', `${this.getFormatDate()},2099-12-31 23:59:59`)
483
+ this.batchData = data
484
+ },
485
+ downRows() {
486
+ this.$emit('down-rows', this.selectionList)
487
+ },
488
+ deleteRows() {
489
+ this.$emit('delete-rows', this.selectionList)
490
+ },
491
+
492
+ async getFileInfo(row) {
493
+ let _url = row[this.keys.url]
494
+ this.seePrefix && (_url = this.seePrefix + _url)
495
+ if (_url) {
496
+ let blob = await axios.get(_url, {}, { responseType: 'blob' })
497
+ let url = URL.createObjectURL(blob)
498
+ let name = blob.name
499
+ let sameOrg = this.seeTypes.test(name) || this.seeTypes.test(_url)
500
+ return {
501
+ url,
502
+ name,
503
+ sameOrg
504
+ }
505
+ } else {
506
+ return {}
507
+ }
508
+ },
509
+ getFormatDate() {
510
+ let date = new Date()
511
+ let month = date.getMonth() + 1
512
+ let strDate = date.getDate()
513
+ let getHours = date.getHours()
514
+ let getMinutes = date.getMinutes()
515
+ let getSeconds = date.getSeconds()
516
+ if (month >= 1 && month <= 9) {
517
+ month = '0' + month
518
+ }
519
+ if (strDate >= 0 && strDate <= 9) {
520
+ strDate = '0' + strDate
521
+ }
522
+ if (getHours >= 0 && getHours <= 9) {
523
+ getHours = '0' + getHours
524
+ }
525
+ if (getMinutes >= 0 && getMinutes <= 9) {
526
+ getMinutes = '0' + getMinutes
527
+ }
528
+ if (getSeconds >= 0 && getSeconds <= 9) {
529
+ getSeconds = '0' + getSeconds
530
+ }
531
+ return (
532
+ date.getFullYear() +
533
+ '-' +
534
+ month +
535
+ '-' +
536
+ strDate +
537
+ ' ' +
538
+ getHours +
539
+ ':' +
540
+ getMinutes +
541
+ ':' +
542
+ getSeconds
543
+ )
544
+ },
545
+ TimeDate(now) {
546
+ var year = now.getFullYear()
547
+ var month = now.getMonth() + 1
548
+ var date = now.getDate()
549
+ var hour = now.getHours()
550
+ var minute = now.getMinutes()
551
+ var second = now.getSeconds()
552
+ if (month < 10) {
553
+ month = '0' + month
554
+ }
555
+ if (date < 10) {
556
+ date = '0' + date
557
+ }
558
+ if (hour < 10) {
559
+ hour = '0' + hour
560
+ }
561
+ if (minute < 10) {
562
+ minute = '0' + minute
563
+ }
564
+ if (second < 10) {
565
+ second = '0' + second
566
+ }
567
+ return (
568
+ year +
569
+ '-' +
570
+ month +
571
+ '-' +
572
+ date +
573
+ ' ' +
574
+ hour +
575
+ ':' +
576
+ minute +
577
+ ':' +
578
+ second
579
+ )
580
+ },
581
+ async downFile(row) {
582
+ let { url, name } = await this.getFileInfo(row)
583
+ if (url) {
584
+ let aDom = document.createElement('a')
585
+ aDom.href = url
586
+ aDom.download = name
587
+ aDom.click()
588
+
589
+ this.$nextTick(() => {
590
+ aDom = undefined
591
+ url && URL.revokeObjectURL(url)
592
+ })
593
+ }
594
+ },
595
+ async seeFile(row) {
596
+ let { url, name, sameOrg } = await this.getFileInfo(row)
597
+ if (url) {
598
+ this.previewSameOrg = sameOrg
599
+ this.previewUrl = url
600
+ this.previewName = name
601
+ this.visibleP = true
602
+ }
603
+ },
604
+ closeSee() {
605
+ this.previewUrl && URL.revokeObjectURL(this.previewUrl)
606
+ },
607
+ beforeUploadFn(file, row) {
608
+ this.$set(row, '_percent', 0)
609
+ this.$set(row, '_status', undefined)
610
+
611
+ this.$emit('before-upload', file, row)
612
+ },
613
+ onProgressFn({ percent }, row) {
614
+ this.$set(row, '_percent', percent <= 99 ? Math.round(percent) : 99)
615
+ },
616
+ onSuccessFn(response, file, fileList, row) {
617
+ this.$set(row, '_name', file.name)
618
+ this.$set(row, '_percent', 100)
619
+
620
+ row[this.keys.time] = dayjs().format('YYYY-MM-DD HH:mm:ss')
621
+
622
+ row[this.keys.url] = response.data
623
+ if (!row[this.keys.name]) {
624
+ row[this.keys.name] = file.name
625
+ }
626
+ this.$set(row, '_status', 'success')
627
+
628
+ this.$emit('on-success', file, row)
629
+ },
630
+ errorFn(err, file, fileList, row, $index) {
631
+ this.$set(row, '_status', 'exception')
632
+
633
+ let clUpload = this.$refs['upload' + $index]
634
+ /* 重置文件状态,并加入文件队列 */
635
+ file.status = 'ready'
636
+ clUpload.fileList = [file]
637
+
638
+ this.$emit('on-error', file, row)
639
+ },
640
+ abortFn(row, $index) {
641
+ this.$set(row, '_status', 'exception')
642
+
643
+ let clUpload = this.$refs['upload' + $index]
644
+ let elUpload = clUpload.$refs['upload']
645
+ let uploadFiles = elUpload.uploadFiles
646
+
647
+ /* 重置文件状态,并加入文件队列 */
648
+ let file = uploadFiles[uploadFiles.length - 1]
649
+ file.status = 'ready'
650
+ clUpload.fileList = [file]
651
+
652
+ elUpload.abort()
653
+ },
654
+ anewSubmitFn(row, $index) {
655
+ this.$set(row, '_status', 'success')
656
+
657
+ this.$refs['upload' + $index]?.$refs['upload']?.submit()
658
+ }
659
+ }
660
+ }
661
+ </script>