n20-common-lib 1.3.27 → 1.3.28

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 (395) hide show
  1. package/README.md +2 -2
  2. package/g6.js +2 -2
  3. package/nstc-g6/assets/svg/addFile.svg +31 -31
  4. package/nstc-g6/assets/svg/deleteFile.svg +27 -27
  5. package/nstc-g6/assets/svg/filter.svg +15 -15
  6. package/nstc-g6/assets/svg/filterActive.svg +16 -16
  7. package/nstc-g6/assets/svg/hourglass.svg +18 -18
  8. package/nstc-g6/assets/svg/newsearch.svg +18 -18
  9. package/nstc-g6/assets/svg/searchActive.svg +18 -18
  10. package/nstc-g6/components/Calendar/index.js +8 -8
  11. package/nstc-g6/components/Calendar/src/basic/month-table.vue +129 -129
  12. package/nstc-g6/components/Calendar/src/basic/year-table.vue +126 -126
  13. package/nstc-g6/components/Calendar/src/main.vue +442 -442
  14. package/nstc-g6/components/DialogForm/index.js +8 -8
  15. package/nstc-g6/components/DialogForm/src/demo/index.vue +56 -56
  16. package/nstc-g6/components/DialogForm/src/main.vue +189 -189
  17. package/nstc-g6/components/Form/A_DEMO/component/originalForm.vue +280 -280
  18. package/nstc-g6/components/Form/A_DEMO/config/config_3.js +1222 -1222
  19. package/nstc-g6/components/Form/A_DEMO/index.vue +803 -803
  20. package/nstc-g6/components/Form/AutocompleteCustom/index.vue +72 -72
  21. package/nstc-g6/components/Form/BusinessSpecific/InputMultiple.vue +191 -191
  22. package/nstc-g6/components/Form/BusinessSpecific/InputWithUnit.vue +128 -128
  23. package/nstc-g6/components/Form/BusinessSpecific/SelectTreeDialog.vue +233 -233
  24. package/nstc-g6/components/Form/BusinessSpecific/readme.md +7 -7
  25. package/nstc-g6/components/Form/CascaderCustom/index.vue +101 -101
  26. package/nstc-g6/components/Form/CheckboxCustom/index.vue +84 -84
  27. package/nstc-g6/components/Form/Component.vue +661 -661
  28. package/nstc-g6/components/Form/ComponentSecond.vue +650 -650
  29. package/nstc-g6/components/Form/DatepickerCustom/index.vue +130 -130
  30. package/nstc-g6/components/Form/InputAndDialog/index.js +15 -15
  31. package/nstc-g6/components/Form/InputAndDialog/src/main.vue +394 -394
  32. package/nstc-g6/components/Form/InputCustom/demo/index.vue +65 -65
  33. package/nstc-g6/components/Form/InputCustom/index.vue +307 -307
  34. package/nstc-g6/components/Form/IntervalinputCustom/demo/index.vue +31 -31
  35. package/nstc-g6/components/Form/IntervalinputCustom/index.vue +118 -118
  36. package/nstc-g6/components/Form/Item.vue +330 -330
  37. package/nstc-g6/components/Form/ItemSecond.vue +269 -269
  38. package/nstc-g6/components/Form/List.vue +146 -146
  39. package/nstc-g6/components/Form/ListSecond.vue +130 -130
  40. package/nstc-g6/components/Form/RadioCustom/index.vue +73 -73
  41. package/nstc-g6/components/Form/SelectAccount/index.js +15 -15
  42. package/nstc-g6/components/Form/SelectAccount/src/demo/index.vue +57 -57
  43. package/nstc-g6/components/Form/SelectAccount/src/main.vue +282 -282
  44. package/nstc-g6/components/Form/SelectAndDialog/index.js +15 -15
  45. package/nstc-g6/components/Form/SelectAndDialog/src/main.vue +383 -383
  46. package/nstc-g6/components/Form/SelectCashFlow/index.js +15 -15
  47. package/nstc-g6/components/Form/SelectCashFlow/src/demo/index.vue +41 -41
  48. package/nstc-g6/components/Form/SelectCashFlow/src/main.vue +125 -125
  49. package/nstc-g6/components/Form/SelectCustom/demo/index.vue +82 -82
  50. package/nstc-g6/components/Form/SelectCustom/index.vue +488 -488
  51. package/nstc-g6/components/Form/SelectSubject/index.js +15 -15
  52. package/nstc-g6/components/Form/SelectSubject/src/demo/index.vue +84 -84
  53. package/nstc-g6/components/Form/SelectSubject/src/main.vue +181 -181
  54. package/nstc-g6/components/Form/SelectindialogCustom/demo/index.vue +188 -188
  55. package/nstc-g6/components/Form/SelectindialogCustom/index.vue +650 -650
  56. package/nstc-g6/components/Form/SelectindialogCustom/install.js +6 -6
  57. package/nstc-g6/components/Form/TableRadioCustom/demo/index.vue +53 -53
  58. package/nstc-g6/components/Form/TableRadioCustom/index.vue +183 -183
  59. package/nstc-g6/components/Form/TextCustom/index.vue +38 -38
  60. package/nstc-g6/components/Form/UploadCustom/demo/index.vue +31 -31
  61. package/nstc-g6/components/Form/UploadCustom/index.vue +506 -506
  62. package/nstc-g6/components/Form/configs.js +191 -191
  63. package/nstc-g6/components/Form/configsSecond.js +161 -161
  64. package/nstc-g6/components/Form/index.js +8 -8
  65. package/nstc-g6/components/Form/index.scss +29 -29
  66. package/nstc-g6/components/Form/payeePersonSelect/index.js +15 -15
  67. package/nstc-g6/components/Form/payeePersonSelect/src/demo/index.vue +163 -163
  68. package/nstc-g6/components/Form/payeePersonSelect/src/main.vue +184 -184
  69. package/nstc-g6/components/Form/readme.txt +4 -4
  70. package/nstc-g6/components/FormGroup/index.js +8 -8
  71. package/nstc-g6/components/FormGroup/src/demo/config.js +23 -23
  72. package/nstc-g6/components/FormGroup/src/demo/index.vue +85 -85
  73. package/nstc-g6/components/FormGroup/src/main.vue +639 -639
  74. package/nstc-g6/components/FormGroup/src/validate.js +22 -22
  75. package/nstc-g6/components/InputTag/InputTag.vue +269 -269
  76. package/nstc-g6/components/NstcApprovel/NstcApprovel.vue +24 -24
  77. package/nstc-g6/components/NstcBackToTop/NstcBackToTop.vue +150 -150
  78. package/nstc-g6/components/NstcBranchLazyLoad/NstcBranchLazyLoad.vue +123 -123
  79. package/nstc-g6/components/NstcCharts/NstcCharts.vue +162 -162
  80. package/nstc-g6/components/NstcCharts/define.js +74 -74
  81. package/nstc-g6/components/NstcCharts/mixins/resize.js +56 -56
  82. package/nstc-g6/components/NstcConfirm/NstcConfirm.vue +152 -152
  83. package/nstc-g6/components/NstcConfirm/index.js +24 -24
  84. package/nstc-g6/components/NstcDialog/NstcDialog.vue +184 -184
  85. package/nstc-g6/components/NstcDialogForm/NstcDialogForm.vue +175 -175
  86. package/nstc-g6/components/NstcDialogTable/NstcDialogTable.vue +280 -280
  87. package/nstc-g6/components/NstcDropdown/NstcDropdown.vue +52 -52
  88. package/nstc-g6/components/NstcDropdownTree/NstcDropdownTree.vue +396 -396
  89. package/nstc-g6/components/NstcElectronicFile/NstcElectronicFile.vue +591 -591
  90. package/nstc-g6/components/NstcExcelCustomImport/NstcExcelCustomImport.vue +475 -475
  91. package/nstc-g6/components/NstcExcelExport/NstcExcelExport.vue +145 -145
  92. package/nstc-g6/components/NstcExcelImport/NstcExcelImport.vue +1074 -1074
  93. package/nstc-g6/components/NstcExcelImportN/NstcExcelImportN.vue +1166 -1166
  94. package/nstc-g6/components/NstcExpandCollapse/NstcExpandCollapse.vue +130 -130
  95. package/nstc-g6/components/NstcExpandCollapse/index.scss +77 -77
  96. package/nstc-g6/components/NstcFileUpload/NstcFileUpload.vue +989 -989
  97. package/nstc-g6/components/NstcFileUpload/img/addFile.svg +31 -31
  98. package/nstc-g6/components/NstcFileUpload/img/delete.svg +23 -23
  99. package/nstc-g6/components/NstcFileUpload/img/deleteFile.svg +27 -27
  100. package/nstc-g6/components/NstcFileUpload/img/download.svg +23 -23
  101. package/nstc-g6/components/NstcFileUpload/img/inputUpload.svg +29 -29
  102. package/nstc-g6/components/NstcFileUpload/img/look-diabled.svg +23 -23
  103. package/nstc-g6/components/NstcFileUpload/img/look.svg +23 -23
  104. package/nstc-g6/components/NstcForm/A_DEMO/component/originalForm.vue +280 -280
  105. package/nstc-g6/components/NstcForm/A_DEMO/config/config_3.js +1222 -1222
  106. package/nstc-g6/components/NstcForm/A_DEMO/index.vue +796 -796
  107. package/nstc-g6/components/NstcForm/AutocompleteCustom/index.vue +68 -68
  108. package/nstc-g6/components/NstcForm/BusinessSpecific/InputMultiple.vue +189 -189
  109. package/nstc-g6/components/NstcForm/BusinessSpecific/InputWithUnit.vue +128 -128
  110. package/nstc-g6/components/NstcForm/BusinessSpecific/SelectTreeDialog.vue +233 -233
  111. package/nstc-g6/components/NstcForm/BusinessSpecific/readme.md +7 -7
  112. package/nstc-g6/components/NstcForm/CascaderCustom/index.vue +101 -101
  113. package/nstc-g6/components/NstcForm/CheckboxCustom/index.vue +84 -84
  114. package/nstc-g6/components/NstcForm/Component.vue +684 -684
  115. package/nstc-g6/components/NstcForm/ComponentSecond.vue +650 -650
  116. package/nstc-g6/components/NstcForm/DatepickerCustom/index.vue +130 -130
  117. package/nstc-g6/components/NstcForm/InputAndDialog/NstcInputAndDialog.vue +389 -389
  118. package/nstc-g6/components/NstcForm/InputCustom/index.vue +313 -313
  119. package/nstc-g6/components/NstcForm/IntervalInputCustom/index.vue +111 -111
  120. package/nstc-g6/components/NstcForm/Item.vue +327 -327
  121. package/nstc-g6/components/NstcForm/ItemSecond.vue +269 -269
  122. package/nstc-g6/components/NstcForm/List.vue +146 -146
  123. package/nstc-g6/components/NstcForm/ListSecond.vue +130 -130
  124. package/nstc-g6/components/NstcForm/RadioCustom/index.vue +73 -73
  125. package/nstc-g6/components/NstcForm/SelectAccount/NstcSelectAccount.vue +334 -334
  126. package/nstc-g6/components/NstcForm/SelectAndDialog/NstcSelectAndDialog.vue +377 -377
  127. package/nstc-g6/components/NstcForm/SelectCashFlow/NstcSelectCashFlow.vue +122 -122
  128. package/nstc-g6/components/NstcForm/SelectCustom/index.vue +460 -460
  129. package/nstc-g6/components/NstcForm/SelectSubject/NstcSelectSubject.vue +184 -184
  130. package/nstc-g6/components/NstcForm/SelectindialogCustom/index.vue +648 -648
  131. package/nstc-g6/components/NstcForm/TableRadioCustom/index.vue +183 -183
  132. package/nstc-g6/components/NstcForm/TextCustom/index.vue +38 -38
  133. package/nstc-g6/components/NstcForm/UploadCustom/index.vue +500 -500
  134. package/nstc-g6/components/NstcForm/configs.js +191 -191
  135. package/nstc-g6/components/NstcForm/configsSecond.js +161 -161
  136. package/nstc-g6/components/NstcForm/index.js +8 -8
  137. package/nstc-g6/components/NstcForm/index.scss +29 -29
  138. package/nstc-g6/components/NstcForm/payeePersonSelect/NstcPayeePerson.vue +187 -187
  139. package/nstc-g6/components/NstcForm/readme.txt +4 -4
  140. package/nstc-g6/components/NstcPagination/NstcPagination.vue +428 -428
  141. package/nstc-g6/components/NstcScreenFull/NstcScreenFull.vue +70 -70
  142. package/nstc-g6/components/NstcSelectTree/NstcSelectTree.vue +730 -730
  143. package/nstc-g6/components/NstcSelectTreeList/NstcSelectTreeList.vue +677 -677
  144. package/nstc-g6/components/NstcSticky/NstcSticky.vue +97 -97
  145. package/nstc-g6/components/NstcSvgIcon/NstcSvgIcon.vue +72 -72
  146. package/nstc-g6/components/NstcTab/NstcTab.vue +80 -80
  147. package/nstc-g6/components/NstcTabWithBadge/NstcTabWithBadge.vue +45 -45
  148. package/nstc-g6/components/NstcTabWithBadge/index.scss +31 -31
  149. package/nstc-g6/components/NstcTable/ElTableColumnCustom/index.vue +292 -292
  150. package/nstc-g6/components/NstcTable/NstcTable.vue +460 -460
  151. package/nstc-g6/components/NstcTableSet/NstcTableSet.vue +802 -802
  152. package/nstc-g6/components/NstcThemePicker/NstcThemePicker.vue +186 -186
  153. package/nstc-g6/components/NstcUploadCustomExcel/NstcUploadCustomExcel.vue +330 -330
  154. package/nstc-g6/components/NstcUploadExcel/NstcUploadExcel.vue +145 -145
  155. package/nstc-g6/components/NstcWorkBench/NstcWorkBench.vue +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 +116 -116
  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 +68 -68
  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 +27 -27
  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 +710 -710
  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 +89 -89
  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 +40 -40
  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 +52 -52
  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 +36 -36
  221. package/src/assets/css/rootvar.scss +143 -143
  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/Anchor/AnchorItem.vue +29 -29
  231. package/src/components/Anchor/index.vue +185 -185
  232. package/src/components/ApprovalButtons/index.vue +240 -240
  233. package/src/components/ApprovalCard/index.vue +132 -132
  234. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  235. package/src/components/ApprovalRecord/flowDialog.vue +47 -47
  236. package/src/components/ApprovalRecord/index.vue +63 -63
  237. package/src/components/Button/button-group.vue +154 -154
  238. package/src/components/Button/icon-group-button.vue +63 -63
  239. package/src/components/Button/index.vue +56 -56
  240. package/src/components/CascaderArea/index.vue +103 -103
  241. package/src/components/ChildRange/index.vue +165 -165
  242. package/src/components/ChildRange/style.scss +34 -34
  243. package/src/components/ContentLoading/index.vue +41 -41
  244. package/src/components/ContentNull/index.vue +19 -19
  245. package/src/components/DatePicker/index.vue +27 -27
  246. package/src/components/DatePicker/por.vue +169 -169
  247. package/src/components/Descriptions/index.vue +42 -42
  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 +168 -168
  253. package/src/components/ECharts/mixins/resize.js +23 -23
  254. package/src/components/Empty/img/400.svg +101 -101
  255. package/src/components/Empty/img/401.svg +101 -101
  256. package/src/components/Empty/img/403.svg +101 -101
  257. package/src/components/Empty/img/405.svg +101 -101
  258. package/src/components/Empty/img/901.svg +95 -95
  259. package/src/components/Empty/img/902.svg +95 -95
  260. package/src/components/Empty/img/903.svg +95 -95
  261. package/src/components/Empty/img/904.svg +95 -95
  262. package/src/components/Empty/img/905.svg +95 -95
  263. package/src/components/Empty/img/906.svg +95 -95
  264. package/src/components/Empty/img/907.svg +95 -95
  265. package/src/components/Empty/img/abnormal.svg +108 -108
  266. package/src/components/Empty/img/dispose.svg +71 -71
  267. package/src/components/Empty/img/empty.svg +57 -57
  268. package/src/components/Empty/img/general.svg +58 -58
  269. package/src/components/Empty/img/lock.svg +57 -57
  270. package/src/components/Empty/img/network.svg +59 -59
  271. package/src/components/Empty/img/relevant.svg +68 -68
  272. package/src/components/Empty/img/search.svg +72 -72
  273. package/src/components/Empty/index.vue +147 -147
  274. package/src/components/Expandable/index.vue +49 -49
  275. package/src/components/Expandable/main.vue +64 -64
  276. package/src/components/FileExportAsync/index.vue +178 -178
  277. package/src/components/FileImport/_index.vue +201 -201
  278. package/src/components/FileImport/index.vue +9 -9
  279. package/src/components/FileUploadTable/index.vue +558 -690
  280. package/src/components/Filters/index.vue +372 -372
  281. package/src/components/Filters/indexO.vue +104 -104
  282. package/src/components/FlowStep/index.vue +68 -68
  283. package/src/components/FooterBox/index.vue +21 -21
  284. package/src/components/GeneralCard/index.vue +15 -15
  285. package/src/components/InputNumber/index.vue +169 -169
  286. package/src/components/InputNumber/numberRange.vue +47 -47
  287. package/src/components/InputSearch/index.vue +75 -75
  288. package/src/components/Layout/AsideNav/index.vue +120 -120
  289. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  290. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  291. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  292. package/src/components/Layout/HeaderWrap/index.vue +401 -401
  293. package/src/components/Layout/HeaderWrap/noticePop.vue +316 -316
  294. package/src/components/Layout/SubContent/index.vue +127 -127
  295. package/src/components/Layout/TabsNav/index.vue +170 -170
  296. package/src/components/Layout/index.vue +518 -518
  297. package/src/components/Layout/utils.js +12 -12
  298. package/src/components/LoginTemporary/form.vue +575 -575
  299. package/src/components/LoginTemporary/index.vue +139 -139
  300. package/src/components/LoginTemporary/qrcode.vue +90 -90
  301. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  302. package/src/components/LoginTemporary/utils.js +73 -73
  303. package/src/components/MicroApp/index.js +67 -67
  304. package/src/components/MicroFrame/index.vue +95 -95
  305. package/src/components/MoreTab/index.vue +232 -232
  306. package/src/components/NavMenu/index.vue +60 -60
  307. package/src/components/PageHeader/index.vue +35 -35
  308. package/src/components/PageHeader/style.scss +39 -39
  309. package/src/components/PageLayout/page.vue +15 -15
  310. package/src/components/Pagination/index.vue +165 -165
  311. package/src/components/Search/index.vue +485 -485
  312. package/src/components/Search/style.scss +93 -93
  313. package/src/components/SecondaryTab/index.vue +58 -58
  314. package/src/components/SelectLazy/index.vue +75 -75
  315. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  316. package/src/components/SelectTree/index.vue +206 -206
  317. package/src/components/ShowColumn/index.vue +213 -213
  318. package/src/components/Sifting/index.vue +99 -99
  319. package/src/components/Stamp/index.vue +75 -75
  320. package/src/components/Statis/index.vue +111 -111
  321. package/src/components/Statis/statisItem.vue +60 -60
  322. package/src/components/Statis/statisPopover.vue +63 -63
  323. package/src/components/Step/index.vue +38 -38
  324. package/src/components/Suspend/index.vue +72 -72
  325. package/src/components/Table/ThSelectHeader.vue +127 -127
  326. package/src/components/Table/index.vue +261 -261
  327. package/src/components/Table/indexO.vue +149 -149
  328. package/src/components/Task/index.vue +26 -26
  329. package/src/components/TertiaryTab/index.vue +63 -63
  330. package/src/components/TimePicker/index.vue +28 -28
  331. package/src/components/Upload/index.vue +268 -262
  332. package/src/components/WornPagination/index.vue +73 -73
  333. package/src/directives/VClickOutside/index.js +19 -19
  334. package/src/directives/VHas/index.js +58 -58
  335. package/src/directives/VMove/index.js +42 -42
  336. package/src/directives/VTitle/index.js +101 -88
  337. package/src/index.js +254 -254
  338. package/src/plugins/CompatibleOld/index.js +57 -57
  339. package/src/plugins/Print/index.js +4 -4
  340. package/src/plugins/Print/print-js/.babelrc +12 -12
  341. package/src/plugins/Print/print-js/LICENSE +21 -21
  342. package/src/plugins/Print/print-js/README.md +98 -98
  343. package/src/plugins/Print/print-js/dist/print.css +96 -96
  344. package/src/plugins/Print/print-js/dist/print.js +990 -990
  345. package/src/plugins/Print/print-js/package.json +60 -60
  346. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  347. package/src/plugins/Print/print-js/src/index.js +10 -10
  348. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  349. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  350. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  351. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  352. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  353. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  354. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  355. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  356. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  357. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  358. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  359. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  360. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  361. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  362. package/src/plugins/Print/print.js +2 -2
  363. package/src/plugins/Print/print.scss +1 -1
  364. package/src/plugins/SetMenuTree/index.vue +41 -41
  365. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  366. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  367. package/src/plugins/SetMenuTree/utils.js +74 -74
  368. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  369. package/src/plugins/Sign/bjca/XTXSAB.js +2395 -2395
  370. package/src/plugins/Sign/bjca/index.js +124 -124
  371. package/src/plugins/Sign/index.js +28 -28
  372. package/src/plugins/Sign/sign.js +64 -64
  373. package/src/plugins/setTabsForSub.js +2 -2
  374. package/src/utils/auth.js +53 -53
  375. package/src/utils/axios.js +203 -203
  376. package/src/utils/downloadBlob.js +19 -19
  377. package/src/utils/forEachs.js +16 -16
  378. package/src/utils/getScrollContainer.js +43 -43
  379. package/src/utils/i18n/cn2hk.json +1270 -1270
  380. package/src/utils/i18n/index.js +50 -50
  381. package/src/utils/list2tree.js +36 -36
  382. package/src/utils/mapper_aims.js +809 -809
  383. package/src/utils/msgboxPor.js +26 -26
  384. package/src/utils/print.js +161 -161
  385. package/src/utils/relaNo.js +72 -72
  386. package/src/utils/repairElementUI.js +95 -95
  387. package/src/utils/theme.config.js +22 -22
  388. package/src/utils/theme.js +31 -31
  389. package/src/utils/urlToGo.js +82 -82
  390. package/src/components/.DS_Store +0 -0
  391. package/src/components/Empty/.DS_Store +0 -0
  392. package/src/components/Empty/img/.DS_Store +0 -0
  393. package/src/components/Layout/.DS_Store +0 -0
  394. package/src/plugins/.DS_Store +0 -0
  395. package/src/plugins/Sign/.DS_Store +0 -0
@@ -1,500 +1,500 @@
1
- <template>
2
- <div
3
- :key="key"
4
- :class="[
5
- 'upload-custom',
6
- { 'is-multiple': multiple || valueClassification.img.length }
7
- ]"
8
- :style="{ width: `${_width}px` }"
9
- >
10
- <input
11
- v-if="isChoosing"
12
- ref="fileInput"
13
- type="file"
14
- :multiple="multiple"
15
- @change="handleFileChange"
16
- />
17
- <el-button
18
- v-if="!isView"
19
- :loading="loading"
20
- :icon="_icon"
21
- :disabled="_disabled"
22
- class="button-cancel"
23
- @click="chooseFile"
24
- >
25
- <span>{{ text }}</span>
26
- </el-button>
27
-
28
- <template v-if="showFile">
29
- <template v-if="!multiple && valueClassification.other.length">
30
- <div v-if="fileName" class="upload-file-name" :title="fileName">
31
- {{ fileName }}
32
- </div>
33
- <el-button
34
- v-if="fileName"
35
- class="upload-file-delete"
36
- type="text"
37
- @click="handleClickFileBtn"
38
- >
39
- {{ fileBtnName }}
40
- </el-button>
41
- </template>
42
- <template v-else>
43
- <div class="upload-file-other">
44
- <div
45
- v-for="(item, index) in valueClassification.other"
46
- :key="index"
47
- class="upload-file-other-item"
48
- >
49
- <div class="upload-file-name" :title="item.fileName">
50
- {{ item.fileName }}
51
- </div>
52
- <el-button
53
- class="upload-file-other-delete"
54
- type="text"
55
- @click="handleClickFileBtn(item)"
56
- >
57
- {{ fileBtnName }}
58
- </el-button>
59
- </div>
60
- </div>
61
- <div class="upload-file-img">
62
- <div
63
- v-for="(item, index) in valueClassification.img"
64
- :key="index"
65
- class="upload-file-img-item"
66
- >
67
- <el-image
68
- :src="item.fileUrl"
69
- :preview-src-list="getPreviewSrcList(index)"
70
- />
71
- <img
72
- v-if="!isView"
73
- :src="closeImg"
74
- alt="#"
75
- @click="handleDelete(item)"
76
- />
77
- </div>
78
- </div>
79
- </template>
80
- </template>
81
- </div>
82
- </template>
83
-
84
- <script>
85
- import closeImg from './iconxitongshezhi-yichu.png'
86
-
87
- import axios from '../../../../src/utils/axios'
88
- // import OSS from 'ali-oss'
89
-
90
- export default {
91
- name: 'UploadCustom',
92
-
93
- inheritAttrs: false,
94
-
95
- props: {
96
- text: {
97
- type: String,
98
- default: function () {
99
- return '请选择附件'
100
- }
101
- },
102
-
103
- icon: {
104
- type: String,
105
- default: undefined
106
- },
107
-
108
- value: {
109
- // 值格式为单选{ fileName,fileUrl }/{ fileName,file },或者多选[{ fileName,fileUrl }]/[{ fileName,file }]
110
- type: [Object, Array],
111
- default: null
112
- },
113
-
114
- valueIsFileUrl: {
115
- // true时,值返回格式为{ fileName,fileUrl };false时,值返回格式为{ fileName,file }(file为文件类型)
116
- type: Boolean,
117
- default: false
118
- },
119
-
120
- url: {
121
- // 上传到自定义服务器的url
122
- type: String,
123
- default: null
124
- },
125
-
126
- disabled: {
127
- // 是否禁用
128
- type: Boolean,
129
- default: false
130
- },
131
-
132
- showFile: {
133
- // 是否展示长传结果
134
- type: Boolean,
135
- default: true
136
- },
137
-
138
- validator: {
139
- // 上传前的验证,参数为typeCode(文件头前8位,用于检测文件真实格式), raw(文件buffer对象)
140
- type: Function,
141
- default: null
142
- },
143
-
144
- beforeChooseFile: {
145
- // 选择文件前的前置函数
146
- type: Function,
147
- default: null
148
- },
149
-
150
- width: {
151
- type: [String, Number],
152
- default: undefined
153
- },
154
-
155
- max: {
156
- // 多选时,最大上传文件个数
157
- type: Number,
158
- default: 5
159
- },
160
-
161
- multiple: {
162
- // 是否支持多选
163
- type: Boolean,
164
- default: false
165
- },
166
-
167
- isView: {
168
- // 是否仅查看
169
- type: Boolean,
170
- default: false
171
- },
172
-
173
- storeAsPrefix: {
174
- // ali-oss上传路径前缀
175
- type: String,
176
- default: ''
177
- }
178
- },
179
-
180
- data() {
181
- return {
182
- key: `UploadCustomID-${Math.random().toString(36).slice(2)}`,
183
-
184
- loading: false,
185
- isChoosing: false,
186
- revokeObjectURL: [],
187
- closeImg
188
- }
189
- },
190
-
191
- computed: {
192
- _value: {
193
- get() {
194
- return this.value
195
- },
196
- set(val) {
197
- this.$emit('input', val)
198
- this.$emit('change', val)
199
- }
200
- },
201
-
202
- fileName() {
203
- return !this.multiple && this._value && this._value.fileName
204
- ? this._value.fileName
205
- : ''
206
- },
207
-
208
- _width() {
209
- return this.width ? (this.width + '').replace(/px/, '') : undefined
210
- },
211
-
212
- _icon() {
213
- return this.icon ? this.icon : undefined
214
- },
215
-
216
- _disabled() {
217
- return (
218
- this.disabled ||
219
- (Array.isArray(this._value) && this._value.length >= this.max)
220
- )
221
- },
222
-
223
- valueClassification() {
224
- const _value = this.multiple
225
- ? this._value
226
- : this._value
227
- ? [this._value]
228
- : []
229
- const reg = /\.(png|jpg|gif|jpeg)$/
230
-
231
- return _value.reduce(
232
- (prev, file, index) => {
233
- if (reg.test(file.fileName)) {
234
- let fileUrl = ''
235
-
236
- if (file.fileUrl) {
237
- fileUrl = file.fileUrl
238
- } else {
239
- fileUrl = window.URL.createObjectURL(file.file)
240
- this.revokeObjectURL.push(fileUrl)
241
- }
242
-
243
- prev.img.push({
244
- fileUrl,
245
- index,
246
- ...file
247
- })
248
- } else {
249
- prev.other.push({
250
- ...file,
251
- index
252
- })
253
- }
254
-
255
- return prev
256
- },
257
- { img: [], other: [] }
258
- )
259
- },
260
-
261
- getPreviewSrcList() {
262
- return (index) => {
263
- const imgUrls = this.valueClassification.img.map((item) => item.fileUrl)
264
-
265
- return imgUrls.slice(index).concat(imgUrls.slice(0, index))
266
- }
267
- },
268
-
269
- fileBtnName() {
270
- return this.isView ? '下载' : '删除'
271
- }
272
- },
273
-
274
- beforeDestroy() {
275
- this.revokeObjectURL.forEach((fileUrl) =>
276
- window.URL.revokeObjectURL(fileUrl)
277
- )
278
- },
279
-
280
- methods: {
281
- async chooseFile() {
282
- try {
283
- this.isChoosing = true
284
- this.beforeChooseFile && (await this.beforeChooseFile())
285
-
286
- await this.$nextTick()
287
-
288
- this.$refs.fileInput.click()
289
- } catch (err) {
290
- console.error(err)
291
- // this.$$message(err)
292
- }
293
- },
294
-
295
- async handleFileChange(e) {
296
- this.loading = true
297
- this.isChoosing = false
298
-
299
- try {
300
- const files = Array.from(e.target.files)
301
-
302
- await this.fileMaxCheck(files)
303
- await Promise.all(files.map((file) => this.fileTypeCheck(file)))
304
-
305
- const value = await Promise.all(
306
- files.map((file) => this.singleFileUpload(file))
307
- )
308
-
309
- this._value = this.multiple ? [...this._value, ...value] : value[0]
310
- } catch (err) {
311
- // this.$$message(err.reason || '上传失败')
312
- }
313
-
314
- this.loading = false
315
- },
316
-
317
- async singleFileUpload(file) {
318
- try {
319
- const fileName = file.name
320
-
321
- if (this.valueIsFileUrl) {
322
- let fileUrl = ''
323
-
324
- if (this.url) {
325
- const fd = new FormData()
326
-
327
- fd.append('file', file)
328
-
329
- fileUrl = await axios.post(this.url, fd, {
330
- headers: {
331
- 'Content-Type': 'multipart/form-data'
332
- }
333
- })
334
- } else {
335
- }
336
-
337
- return {
338
- fileUrl,
339
- fileName
340
- }
341
- }
342
-
343
- return {
344
- file,
345
- fileName
346
- }
347
- } catch (err) {
348
- return Promise.reject(err)
349
- }
350
- },
351
-
352
- handleClickFileBtn(item) {
353
- if (this.isView) {
354
- window.open(item.fileUrl)
355
- } else {
356
- this.handleDelete(item)
357
- }
358
- },
359
-
360
- handleDelete(item) {
361
- if (this.multiple) {
362
- this._value.splice(item.index, 1)
363
- } else {
364
- this._value = null
365
- }
366
- },
367
-
368
- fileTypeCheck(raw) {
369
- const _this = this
370
-
371
- return new Promise((resolve, reject) => {
372
- const reader = new FileReader()
373
-
374
- reader.onload = async function (r) {
375
- try {
376
- const buffer = r.target.result
377
- const dataview = new DataView(buffer)
378
- const ints = new Uint16Array(buffer.byteLength)
379
-
380
- for (let i = 0; i < 4; i++) {
381
- ints[i] = dataview.getUint8(i)
382
- }
383
-
384
- const typeCode = ints
385
- .reduce((acc, val) => acc + val.toString(16), '')
386
- .slice(0, 8)
387
- .toLowerCase()
388
-
389
- if (typeof _this.validator === 'function') {
390
- await _this.validator(typeCode, raw)
391
- }
392
-
393
- resolve()
394
- } catch (err) {
395
- reject(err)
396
- }
397
- }
398
-
399
- reader.readAsArrayBuffer(raw)
400
- })
401
- },
402
-
403
- fileMaxCheck(files) {
404
- return new Promise((resolve, reject) => {
405
- if (this.multiple && files.length + this._value.length > this.max) {
406
- reject({ reason: `最多上传文件数:${this.max}` })
407
- }
408
-
409
- resolve()
410
- })
411
- }
412
- }
413
- }
414
- </script>
415
-
416
- <style lang="scss">
417
- .upload-custom {
418
- display: inline-flex;
419
- align-items: center;
420
- position: relative;
421
- padding-right: 32px;
422
- &.is-multiple {
423
- display: inline-block;
424
- }
425
-
426
- .button-cancel {
427
- flex: none;
428
- width: auto;
429
- display: inline-flex;
430
- align-items: center;
431
- i {
432
- margin-right: 6px;
433
- font-size: 9px;
434
- }
435
- }
436
-
437
- input {
438
- display: none;
439
- }
440
-
441
- .upload-file {
442
- &-name {
443
- font-size: 14px;
444
- padding-left: 10px;
445
- flex: auto;
446
- overflow: hidden;
447
- white-space: nowrap;
448
- text-overflow: ellipsis;
449
- }
450
-
451
- &-delete {
452
- position: absolute;
453
- top: 9px;
454
- right: 0;
455
- }
456
-
457
- &-other {
458
- display: flex;
459
- flex-wrap: wrap;
460
- margin-top: 5px;
461
- &-item {
462
- flex: none;
463
- display: flex;
464
- align-items: center;
465
- margin-right: 40px;
466
- .upload-file-name {
467
- padding-left: 0;
468
- padding-right: 10px;
469
- }
470
- }
471
- }
472
-
473
- &-img {
474
- display: flex;
475
- margin-top: 5px;
476
- flex-wrap: wrap;
477
- &-item {
478
- flex: none;
479
- margin-right: 10px;
480
- position: relative;
481
- .el-image {
482
- width: 72px;
483
- height: 72px;
484
- background-color: #fff;
485
- border-radius: 2px;
486
- border: #cfd8e6;
487
- }
488
- & > img {
489
- position: absolute;
490
- right: 0;
491
- top: 0;
492
- width: 16px;
493
- height: 16px;
494
- cursor: pointer;
495
- }
496
- }
497
- }
498
- }
499
- }
500
- </style>
1
+ <template>
2
+ <div
3
+ :key="key"
4
+ :class="[
5
+ 'upload-custom',
6
+ { 'is-multiple': multiple || valueClassification.img.length }
7
+ ]"
8
+ :style="{ width: `${_width}px` }"
9
+ >
10
+ <input
11
+ v-if="isChoosing"
12
+ ref="fileInput"
13
+ type="file"
14
+ :multiple="multiple"
15
+ @change="handleFileChange"
16
+ />
17
+ <el-button
18
+ v-if="!isView"
19
+ :loading="loading"
20
+ :icon="_icon"
21
+ :disabled="_disabled"
22
+ class="button-cancel"
23
+ @click="chooseFile"
24
+ >
25
+ <span>{{ text }}</span>
26
+ </el-button>
27
+
28
+ <template v-if="showFile">
29
+ <template v-if="!multiple && valueClassification.other.length">
30
+ <div v-if="fileName" class="upload-file-name" :title="fileName">
31
+ {{ fileName }}
32
+ </div>
33
+ <el-button
34
+ v-if="fileName"
35
+ class="upload-file-delete"
36
+ type="text"
37
+ @click="handleClickFileBtn"
38
+ >
39
+ {{ fileBtnName }}
40
+ </el-button>
41
+ </template>
42
+ <template v-else>
43
+ <div class="upload-file-other">
44
+ <div
45
+ v-for="(item, index) in valueClassification.other"
46
+ :key="index"
47
+ class="upload-file-other-item"
48
+ >
49
+ <div class="upload-file-name" :title="item.fileName">
50
+ {{ item.fileName }}
51
+ </div>
52
+ <el-button
53
+ class="upload-file-other-delete"
54
+ type="text"
55
+ @click="handleClickFileBtn(item)"
56
+ >
57
+ {{ fileBtnName }}
58
+ </el-button>
59
+ </div>
60
+ </div>
61
+ <div class="upload-file-img">
62
+ <div
63
+ v-for="(item, index) in valueClassification.img"
64
+ :key="index"
65
+ class="upload-file-img-item"
66
+ >
67
+ <el-image
68
+ :src="item.fileUrl"
69
+ :preview-src-list="getPreviewSrcList(index)"
70
+ />
71
+ <img
72
+ v-if="!isView"
73
+ :src="closeImg"
74
+ alt="#"
75
+ @click="handleDelete(item)"
76
+ />
77
+ </div>
78
+ </div>
79
+ </template>
80
+ </template>
81
+ </div>
82
+ </template>
83
+
84
+ <script>
85
+ import closeImg from './iconxitongshezhi-yichu.png'
86
+
87
+ import axios from '../../../../src/utils/axios'
88
+ // import OSS from 'ali-oss'
89
+
90
+ export default {
91
+ name: 'UploadCustom',
92
+
93
+ inheritAttrs: false,
94
+
95
+ props: {
96
+ text: {
97
+ type: String,
98
+ default: function () {
99
+ return '请选择附件'
100
+ }
101
+ },
102
+
103
+ icon: {
104
+ type: String,
105
+ default: undefined
106
+ },
107
+
108
+ value: {
109
+ // 值格式为单选{ fileName,fileUrl }/{ fileName,file },或者多选[{ fileName,fileUrl }]/[{ fileName,file }]
110
+ type: [Object, Array],
111
+ default: null
112
+ },
113
+
114
+ valueIsFileUrl: {
115
+ // true时,值返回格式为{ fileName,fileUrl };false时,值返回格式为{ fileName,file }(file为文件类型)
116
+ type: Boolean,
117
+ default: false
118
+ },
119
+
120
+ url: {
121
+ // 上传到自定义服务器的url
122
+ type: String,
123
+ default: null
124
+ },
125
+
126
+ disabled: {
127
+ // 是否禁用
128
+ type: Boolean,
129
+ default: false
130
+ },
131
+
132
+ showFile: {
133
+ // 是否展示长传结果
134
+ type: Boolean,
135
+ default: true
136
+ },
137
+
138
+ validator: {
139
+ // 上传前的验证,参数为typeCode(文件头前8位,用于检测文件真实格式), raw(文件buffer对象)
140
+ type: Function,
141
+ default: null
142
+ },
143
+
144
+ beforeChooseFile: {
145
+ // 选择文件前的前置函数
146
+ type: Function,
147
+ default: null
148
+ },
149
+
150
+ width: {
151
+ type: [String, Number],
152
+ default: undefined
153
+ },
154
+
155
+ max: {
156
+ // 多选时,最大上传文件个数
157
+ type: Number,
158
+ default: 5
159
+ },
160
+
161
+ multiple: {
162
+ // 是否支持多选
163
+ type: Boolean,
164
+ default: false
165
+ },
166
+
167
+ isView: {
168
+ // 是否仅查看
169
+ type: Boolean,
170
+ default: false
171
+ },
172
+
173
+ storeAsPrefix: {
174
+ // ali-oss上传路径前缀
175
+ type: String,
176
+ default: ''
177
+ }
178
+ },
179
+
180
+ data() {
181
+ return {
182
+ key: `UploadCustomID-${Math.random().toString(36).slice(2)}`,
183
+
184
+ loading: false,
185
+ isChoosing: false,
186
+ revokeObjectURL: [],
187
+ closeImg
188
+ }
189
+ },
190
+
191
+ computed: {
192
+ _value: {
193
+ get() {
194
+ return this.value
195
+ },
196
+ set(val) {
197
+ this.$emit('input', val)
198
+ this.$emit('change', val)
199
+ }
200
+ },
201
+
202
+ fileName() {
203
+ return !this.multiple && this._value && this._value.fileName
204
+ ? this._value.fileName
205
+ : ''
206
+ },
207
+
208
+ _width() {
209
+ return this.width ? (this.width + '').replace(/px/, '') : undefined
210
+ },
211
+
212
+ _icon() {
213
+ return this.icon ? this.icon : undefined
214
+ },
215
+
216
+ _disabled() {
217
+ return (
218
+ this.disabled ||
219
+ (Array.isArray(this._value) && this._value.length >= this.max)
220
+ )
221
+ },
222
+
223
+ valueClassification() {
224
+ const _value = this.multiple
225
+ ? this._value
226
+ : this._value
227
+ ? [this._value]
228
+ : []
229
+ const reg = /\.(png|jpg|gif|jpeg)$/
230
+
231
+ return _value.reduce(
232
+ (prev, file, index) => {
233
+ if (reg.test(file.fileName)) {
234
+ let fileUrl = ''
235
+
236
+ if (file.fileUrl) {
237
+ fileUrl = file.fileUrl
238
+ } else {
239
+ fileUrl = window.URL.createObjectURL(file.file)
240
+ this.revokeObjectURL.push(fileUrl)
241
+ }
242
+
243
+ prev.img.push({
244
+ fileUrl,
245
+ index,
246
+ ...file
247
+ })
248
+ } else {
249
+ prev.other.push({
250
+ ...file,
251
+ index
252
+ })
253
+ }
254
+
255
+ return prev
256
+ },
257
+ { img: [], other: [] }
258
+ )
259
+ },
260
+
261
+ getPreviewSrcList() {
262
+ return (index) => {
263
+ const imgUrls = this.valueClassification.img.map((item) => item.fileUrl)
264
+
265
+ return imgUrls.slice(index).concat(imgUrls.slice(0, index))
266
+ }
267
+ },
268
+
269
+ fileBtnName() {
270
+ return this.isView ? '下载' : '删除'
271
+ }
272
+ },
273
+
274
+ beforeDestroy() {
275
+ this.revokeObjectURL.forEach((fileUrl) =>
276
+ window.URL.revokeObjectURL(fileUrl)
277
+ )
278
+ },
279
+
280
+ methods: {
281
+ async chooseFile() {
282
+ try {
283
+ this.isChoosing = true
284
+ this.beforeChooseFile && (await this.beforeChooseFile())
285
+
286
+ await this.$nextTick()
287
+
288
+ this.$refs.fileInput.click()
289
+ } catch (err) {
290
+ console.error(err)
291
+ // this.$$message(err)
292
+ }
293
+ },
294
+
295
+ async handleFileChange(e) {
296
+ this.loading = true
297
+ this.isChoosing = false
298
+
299
+ try {
300
+ const files = Array.from(e.target.files)
301
+
302
+ await this.fileMaxCheck(files)
303
+ await Promise.all(files.map((file) => this.fileTypeCheck(file)))
304
+
305
+ const value = await Promise.all(
306
+ files.map((file) => this.singleFileUpload(file))
307
+ )
308
+
309
+ this._value = this.multiple ? [...this._value, ...value] : value[0]
310
+ } catch (err) {
311
+ // this.$$message(err.reason || '上传失败')
312
+ }
313
+
314
+ this.loading = false
315
+ },
316
+
317
+ async singleFileUpload(file) {
318
+ try {
319
+ const fileName = file.name
320
+
321
+ if (this.valueIsFileUrl) {
322
+ let fileUrl = ''
323
+
324
+ if (this.url) {
325
+ const fd = new FormData()
326
+
327
+ fd.append('file', file)
328
+
329
+ fileUrl = await axios.post(this.url, fd, {
330
+ headers: {
331
+ 'Content-Type': 'multipart/form-data'
332
+ }
333
+ })
334
+ } else {
335
+ }
336
+
337
+ return {
338
+ fileUrl,
339
+ fileName
340
+ }
341
+ }
342
+
343
+ return {
344
+ file,
345
+ fileName
346
+ }
347
+ } catch (err) {
348
+ return Promise.reject(err)
349
+ }
350
+ },
351
+
352
+ handleClickFileBtn(item) {
353
+ if (this.isView) {
354
+ window.open(item.fileUrl)
355
+ } else {
356
+ this.handleDelete(item)
357
+ }
358
+ },
359
+
360
+ handleDelete(item) {
361
+ if (this.multiple) {
362
+ this._value.splice(item.index, 1)
363
+ } else {
364
+ this._value = null
365
+ }
366
+ },
367
+
368
+ fileTypeCheck(raw) {
369
+ const _this = this
370
+
371
+ return new Promise((resolve, reject) => {
372
+ const reader = new FileReader()
373
+
374
+ reader.onload = async function (r) {
375
+ try {
376
+ const buffer = r.target.result
377
+ const dataview = new DataView(buffer)
378
+ const ints = new Uint16Array(buffer.byteLength)
379
+
380
+ for (let i = 0; i < 4; i++) {
381
+ ints[i] = dataview.getUint8(i)
382
+ }
383
+
384
+ const typeCode = ints
385
+ .reduce((acc, val) => acc + val.toString(16), '')
386
+ .slice(0, 8)
387
+ .toLowerCase()
388
+
389
+ if (typeof _this.validator === 'function') {
390
+ await _this.validator(typeCode, raw)
391
+ }
392
+
393
+ resolve()
394
+ } catch (err) {
395
+ reject(err)
396
+ }
397
+ }
398
+
399
+ reader.readAsArrayBuffer(raw)
400
+ })
401
+ },
402
+
403
+ fileMaxCheck(files) {
404
+ return new Promise((resolve, reject) => {
405
+ if (this.multiple && files.length + this._value.length > this.max) {
406
+ reject({ reason: `最多上传文件数:${this.max}` })
407
+ }
408
+
409
+ resolve()
410
+ })
411
+ }
412
+ }
413
+ }
414
+ </script>
415
+
416
+ <style lang="scss">
417
+ .upload-custom {
418
+ display: inline-flex;
419
+ align-items: center;
420
+ position: relative;
421
+ padding-right: 32px;
422
+ &.is-multiple {
423
+ display: inline-block;
424
+ }
425
+
426
+ .button-cancel {
427
+ flex: none;
428
+ width: auto;
429
+ display: inline-flex;
430
+ align-items: center;
431
+ i {
432
+ margin-right: 6px;
433
+ font-size: 9px;
434
+ }
435
+ }
436
+
437
+ input {
438
+ display: none;
439
+ }
440
+
441
+ .upload-file {
442
+ &-name {
443
+ font-size: 14px;
444
+ padding-left: 10px;
445
+ flex: auto;
446
+ overflow: hidden;
447
+ white-space: nowrap;
448
+ text-overflow: ellipsis;
449
+ }
450
+
451
+ &-delete {
452
+ position: absolute;
453
+ top: 9px;
454
+ right: 0;
455
+ }
456
+
457
+ &-other {
458
+ display: flex;
459
+ flex-wrap: wrap;
460
+ margin-top: 5px;
461
+ &-item {
462
+ flex: none;
463
+ display: flex;
464
+ align-items: center;
465
+ margin-right: 40px;
466
+ .upload-file-name {
467
+ padding-left: 0;
468
+ padding-right: 10px;
469
+ }
470
+ }
471
+ }
472
+
473
+ &-img {
474
+ display: flex;
475
+ margin-top: 5px;
476
+ flex-wrap: wrap;
477
+ &-item {
478
+ flex: none;
479
+ margin-right: 10px;
480
+ position: relative;
481
+ .el-image {
482
+ width: 72px;
483
+ height: 72px;
484
+ background-color: #fff;
485
+ border-radius: 2px;
486
+ border: #cfd8e6;
487
+ }
488
+ & > img {
489
+ position: absolute;
490
+ right: 0;
491
+ top: 0;
492
+ width: 16px;
493
+ height: 16px;
494
+ cursor: pointer;
495
+ }
496
+ }
497
+ }
498
+ }
499
+ }
500
+ </style>