n20-common-lib 1.2.43 → 1.3.0

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