n20-common-lib 1.3.8 → 1.3.11

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 (263) hide show
  1. package/nstc-g6/assets/svg/404.svg +1 -0
  2. package/nstc-g6/assets/svg/addFile.svg +32 -0
  3. package/nstc-g6/assets/svg/bug.svg +1 -0
  4. package/nstc-g6/assets/svg/chart.svg +1 -0
  5. package/nstc-g6/assets/svg/clipboard.svg +1 -0
  6. package/nstc-g6/assets/svg/component.svg +1 -0
  7. package/nstc-g6/assets/svg/dashboard.svg +1 -0
  8. package/nstc-g6/assets/svg/deleteFile.svg +28 -0
  9. package/nstc-g6/assets/svg/documentation.svg +1 -0
  10. package/nstc-g6/assets/svg/drag.svg +1 -0
  11. package/nstc-g6/assets/svg/edit.svg +1 -0
  12. package/nstc-g6/assets/svg/education.svg +1 -0
  13. package/nstc-g6/assets/svg/email.svg +1 -0
  14. package/nstc-g6/assets/svg/example.svg +1 -0
  15. package/nstc-g6/assets/svg/excel.svg +1 -0
  16. package/nstc-g6/assets/svg/exit-fullscreen.svg +1 -0
  17. package/nstc-g6/assets/svg/eye-open.svg +1 -0
  18. package/nstc-g6/assets/svg/eye.svg +1 -0
  19. package/nstc-g6/assets/svg/favorite.svg +1 -0
  20. package/nstc-g6/assets/svg/favorite_active.svg +1 -0
  21. package/nstc-g6/assets/svg/favorite_x400.svg +1 -0
  22. package/nstc-g6/assets/svg/favorite_x400_active.svg +1 -0
  23. package/nstc-g6/assets/svg/favorite_x400_blank.svg +1 -0
  24. package/nstc-g6/assets/svg/filter.svg +16 -0
  25. package/nstc-g6/assets/svg/filter@2x.png +0 -0
  26. package/nstc-g6/assets/svg/filterActive.svg +16 -0
  27. package/nstc-g6/assets/svg/filterClose@2x.png +0 -0
  28. package/nstc-g6/assets/svg/form.svg +1 -0
  29. package/nstc-g6/assets/svg/fullscreen.svg +1 -0
  30. package/nstc-g6/assets/svg/guide.svg +1 -0
  31. package/nstc-g6/assets/svg/hourglass.svg +19 -0
  32. package/nstc-g6/assets/svg/icon.svg +1 -0
  33. package/nstc-g6/assets/svg/international.svg +1 -0
  34. package/nstc-g6/assets/svg/language.svg +1 -0
  35. package/nstc-g6/assets/svg/left-dis.svg +1 -0
  36. package/nstc-g6/assets/svg/left.svg +1 -0
  37. package/nstc-g6/assets/svg/link.svg +1 -0
  38. package/nstc-g6/assets/svg/list.svg +1 -0
  39. package/nstc-g6/assets/svg/lock.svg +1 -0
  40. package/nstc-g6/assets/svg/message-t.svg +1 -0
  41. package/nstc-g6/assets/svg/money.svg +1 -0
  42. package/nstc-g6/assets/svg/money3.svg +1 -0
  43. package/nstc-g6/assets/svg/money4.svg +1 -0
  44. package/nstc-g6/assets/svg/moneyTwo.svg +1 -0
  45. package/nstc-g6/assets/svg/msg_white.svg +1 -0
  46. package/nstc-g6/assets/svg/nested.svg +1 -0
  47. package/nstc-g6/assets/svg/newsearch.svg +19 -0
  48. package/nstc-g6/assets/svg/password.svg +1 -0
  49. package/nstc-g6/assets/svg/pdf.svg +1 -0
  50. package/nstc-g6/assets/svg/people.svg +1 -0
  51. package/nstc-g6/assets/svg/peoples.svg +1 -0
  52. package/nstc-g6/assets/svg/phone.svg +1 -0
  53. package/nstc-g6/assets/svg/phone_msg.svg +1 -0
  54. package/nstc-g6/assets/svg/qq.svg +1 -0
  55. package/nstc-g6/assets/svg/right-dis.svg +1 -0
  56. package/nstc-g6/assets/svg/right.svg +1 -0
  57. package/nstc-g6/assets/svg/search.svg +1 -0
  58. package/nstc-g6/assets/svg/searchActive.svg +19 -0
  59. package/nstc-g6/assets/svg/shopping.svg +1 -0
  60. package/nstc-g6/assets/svg/size.svg +1 -0
  61. package/nstc-g6/assets/svg/skill.svg +1 -0
  62. package/nstc-g6/assets/svg/star.svg +1 -0
  63. package/nstc-g6/assets/svg/steam.svg +1 -0
  64. package/nstc-g6/assets/svg/tab.svg +1 -0
  65. package/nstc-g6/assets/svg/table.svg +1 -0
  66. package/nstc-g6/assets/svg/theme.svg +1 -0
  67. package/nstc-g6/assets/svg/tree-table.svg +1 -0
  68. package/nstc-g6/assets/svg/tree.svg +1 -0
  69. package/nstc-g6/assets/svg/user.svg +1 -0
  70. package/nstc-g6/assets/svg/wechat.svg +1 -0
  71. package/nstc-g6/assets/svg/z-left-2-dis.svg +1 -0
  72. package/nstc-g6/assets/svg/z-left-2.svg +1 -0
  73. package/nstc-g6/assets/svg/z-right-2-dis.svg +1 -0
  74. package/nstc-g6/assets/svg/z-right-2.svg +1 -0
  75. package/nstc-g6/assets/svg/z-right.svg +1 -0
  76. package/nstc-g6/assets/svg/zip.svg +1 -0
  77. package/nstc-g6/components/Calendar/index.js +8 -0
  78. package/nstc-g6/components/Calendar/src/basic/month-table.vue +129 -0
  79. package/nstc-g6/components/Calendar/src/basic/year-table.vue +126 -0
  80. package/nstc-g6/components/Calendar/src/main.vue +442 -0
  81. package/nstc-g6/components/DialogForm/index.js +8 -0
  82. package/nstc-g6/components/DialogForm/src/demo/index.vue +56 -0
  83. package/nstc-g6/components/DialogForm/src/main.vue +189 -0
  84. package/nstc-g6/components/Form/A_DEMO/component/originalForm.vue +281 -0
  85. package/nstc-g6/components/Form/A_DEMO/config/config_3.js +1222 -0
  86. package/nstc-g6/components/Form/A_DEMO/index.vue +803 -0
  87. package/nstc-g6/components/Form/AutocompleteCustom/index.vue +72 -0
  88. package/nstc-g6/components/Form/BusinessSpecific/InputMultiple.vue +191 -0
  89. package/nstc-g6/components/Form/BusinessSpecific/InputWithUnit.vue +128 -0
  90. package/nstc-g6/components/Form/BusinessSpecific/SelectTreeDialog.vue +233 -0
  91. package/nstc-g6/components/Form/BusinessSpecific/readme.md +7 -0
  92. package/nstc-g6/components/Form/CascaderCustom/index.vue +101 -0
  93. package/nstc-g6/components/Form/CheckboxCustom/index.vue +84 -0
  94. package/nstc-g6/components/Form/Component.vue +661 -0
  95. package/nstc-g6/components/Form/ComponentSecond.vue +650 -0
  96. package/nstc-g6/components/Form/DatepickerCustom/index.vue +130 -0
  97. package/nstc-g6/components/Form/InputAndDialog/index.js +15 -0
  98. package/nstc-g6/components/Form/InputAndDialog/src/main.vue +395 -0
  99. package/nstc-g6/components/Form/InputCustom/demo/index.vue +65 -0
  100. package/nstc-g6/components/Form/InputCustom/index.vue +307 -0
  101. package/nstc-g6/components/Form/IntervalinputCustom/demo/index.vue +31 -0
  102. package/nstc-g6/components/Form/IntervalinputCustom/index.vue +118 -0
  103. package/nstc-g6/components/Form/Item.vue +330 -0
  104. package/nstc-g6/components/Form/ItemSecond.vue +269 -0
  105. package/nstc-g6/components/Form/List.vue +146 -0
  106. package/nstc-g6/components/Form/ListSecond.vue +130 -0
  107. package/nstc-g6/components/Form/RadioCustom/index.vue +73 -0
  108. package/nstc-g6/components/Form/SelectAccount/index.js +15 -0
  109. package/nstc-g6/components/Form/SelectAccount/src/demo/index.vue +58 -0
  110. package/nstc-g6/components/Form/SelectAccount/src/main.vue +283 -0
  111. package/nstc-g6/components/Form/SelectAndDialog/index.js +15 -0
  112. package/nstc-g6/components/Form/SelectAndDialog/src/main.vue +384 -0
  113. package/nstc-g6/components/Form/SelectCashFlow/index.js +15 -0
  114. package/nstc-g6/components/Form/SelectCashFlow/src/demo/index.vue +42 -0
  115. package/nstc-g6/components/Form/SelectCashFlow/src/main.vue +126 -0
  116. package/nstc-g6/components/Form/SelectCustom/demo/index.vue +82 -0
  117. package/nstc-g6/components/Form/SelectCustom/index.vue +488 -0
  118. package/nstc-g6/components/Form/SelectSubject/index.js +15 -0
  119. package/nstc-g6/components/Form/SelectSubject/src/demo/index.vue +85 -0
  120. package/nstc-g6/components/Form/SelectSubject/src/main.vue +182 -0
  121. package/nstc-g6/components/Form/SelectindialogCustom/demo/index.vue +188 -0
  122. package/nstc-g6/components/Form/SelectindialogCustom/index.vue +650 -0
  123. package/nstc-g6/components/Form/SelectindialogCustom/install.js +7 -0
  124. package/nstc-g6/components/Form/TableRadioCustom/demo/index.vue +53 -0
  125. package/nstc-g6/components/Form/TableRadioCustom/index.vue +183 -0
  126. package/nstc-g6/components/Form/TextCustom/index.vue +38 -0
  127. package/nstc-g6/components/Form/UploadCustom/demo/index.vue +31 -0
  128. package/nstc-g6/components/Form/UploadCustom/iconxitongshezhi-yichu.png +0 -0
  129. package/nstc-g6/components/Form/UploadCustom/index.vue +506 -0
  130. package/nstc-g6/components/Form/configs.js +191 -0
  131. package/nstc-g6/components/Form/configsSecond.js +161 -0
  132. package/nstc-g6/components/Form/index.js +8 -0
  133. package/nstc-g6/components/Form/index.scss +29 -0
  134. package/nstc-g6/components/Form/payeePersonSelect/index.js +15 -0
  135. package/nstc-g6/components/Form/payeePersonSelect/src/demo/index.vue +164 -0
  136. package/nstc-g6/components/Form/payeePersonSelect/src/main.vue +185 -0
  137. package/nstc-g6/components/Form/readme.txt +4 -0
  138. package/nstc-g6/components/FormGroup/index.js +8 -0
  139. package/nstc-g6/components/FormGroup/src/demo/config.js +23 -0
  140. package/nstc-g6/components/FormGroup/src/demo/index.vue +85 -0
  141. package/nstc-g6/components/FormGroup/src/main.vue +639 -0
  142. package/nstc-g6/components/FormGroup/src/validate.js +23 -0
  143. package/nstc-g6/components/InputTag/InputTag.vue +270 -0
  144. package/nstc-g6/components/NstcApprovel/NstcApprovel.vue +24 -0
  145. package/nstc-g6/components/NstcBackToTop/NstcBackToTop.vue +150 -0
  146. package/nstc-g6/components/NstcBranchLazyLoad/NstcBranchLazyLoad.vue +123 -0
  147. package/nstc-g6/components/NstcCharts/NstcCharts.vue +162 -0
  148. package/nstc-g6/components/NstcCharts/define.js +74 -0
  149. package/nstc-g6/components/NstcCharts/mixins/resize.js +56 -0
  150. package/nstc-g6/components/NstcConfirm/NstcConfirm.vue +152 -0
  151. package/nstc-g6/components/NstcConfirm/index.js +25 -0
  152. package/nstc-g6/components/NstcDialog/NstcDialog.vue +185 -0
  153. package/nstc-g6/components/NstcDialogForm/NstcDialogForm.vue +176 -0
  154. package/nstc-g6/components/NstcDialogTable/NstcDialogTable.vue +280 -0
  155. package/nstc-g6/components/NstcDropdown/NstcDropdown.vue +52 -0
  156. package/nstc-g6/components/NstcDropdownTree/NstcDropdownTree.vue +396 -0
  157. package/nstc-g6/components/NstcElectronicFile/NstcElectronicFile.vue +591 -0
  158. package/nstc-g6/components/NstcExcelCustomImport/NstcExcelCustomImport.vue +475 -0
  159. package/nstc-g6/components/NstcExcelCustomImport/img/upload@2x.png +0 -0
  160. package/nstc-g6/components/NstcExcelExport/NstcExcelExport.vue +145 -0
  161. package/nstc-g6/components/NstcExcelImport/NstcExcelImport.vue +1074 -0
  162. package/nstc-g6/components/NstcExcelImport/img/upload@2x.png +0 -0
  163. package/nstc-g6/components/NstcExcelImportN/NstcExcelImportN.vue +1166 -0
  164. package/nstc-g6/components/NstcExpandCollapse/NstcExpandCollapse.vue +130 -0
  165. package/nstc-g6/components/NstcExpandCollapse/index.scss +77 -0
  166. package/nstc-g6/components/NstcFileUpload/NstcFileUpload.vue +989 -0
  167. package/nstc-g6/components/NstcFileUpload/img/addFile.svg +32 -0
  168. package/nstc-g6/components/NstcFileUpload/img/delete.svg +24 -0
  169. package/nstc-g6/components/NstcFileUpload/img/deleteFile.svg +28 -0
  170. package/nstc-g6/components/NstcFileUpload/img/download.svg +24 -0
  171. package/nstc-g6/components/NstcFileUpload/img/inputUpload.svg +30 -0
  172. package/nstc-g6/components/NstcFileUpload/img/look-diabled.svg +24 -0
  173. package/nstc-g6/components/NstcFileUpload/img/look.svg +24 -0
  174. package/nstc-g6/components/NstcForm/A_DEMO/component/originalForm.vue +281 -0
  175. package/nstc-g6/components/NstcForm/A_DEMO/config/config_3.js +1222 -0
  176. package/nstc-g6/components/NstcForm/A_DEMO/index.vue +796 -0
  177. package/nstc-g6/components/NstcForm/AutocompleteCustom/index.vue +68 -0
  178. package/nstc-g6/components/NstcForm/BusinessSpecific/InputMultiple.vue +189 -0
  179. package/nstc-g6/components/NstcForm/BusinessSpecific/InputWithUnit.vue +128 -0
  180. package/nstc-g6/components/NstcForm/BusinessSpecific/SelectTreeDialog.vue +233 -0
  181. package/nstc-g6/components/NstcForm/BusinessSpecific/readme.md +7 -0
  182. package/nstc-g6/components/NstcForm/CascaderCustom/index.vue +101 -0
  183. package/nstc-g6/components/NstcForm/CheckboxCustom/index.vue +84 -0
  184. package/nstc-g6/components/NstcForm/Component.vue +684 -0
  185. package/nstc-g6/components/NstcForm/ComponentSecond.vue +650 -0
  186. package/nstc-g6/components/NstcForm/DatepickerCustom/index.vue +130 -0
  187. package/nstc-g6/components/NstcForm/InputAndDialog/NstcInputAndDialog.vue +389 -0
  188. package/nstc-g6/components/NstcForm/InputCustom/index.vue +314 -0
  189. package/nstc-g6/components/NstcForm/IntervalInputCustom/index.vue +116 -0
  190. package/nstc-g6/components/NstcForm/Item.vue +327 -0
  191. package/nstc-g6/components/NstcForm/ItemSecond.vue +269 -0
  192. package/nstc-g6/components/NstcForm/List.vue +146 -0
  193. package/nstc-g6/components/NstcForm/ListSecond.vue +130 -0
  194. package/nstc-g6/components/NstcForm/RadioCustom/index.vue +73 -0
  195. package/nstc-g6/components/NstcForm/SelectAccount/NstcSelectAccount.vue +334 -0
  196. package/nstc-g6/components/NstcForm/SelectAndDialog/NstcSelectAndDialog.vue +377 -0
  197. package/nstc-g6/components/NstcForm/SelectCashFlow/NstcSelectCashFlow.vue +123 -0
  198. package/nstc-g6/components/NstcForm/SelectCustom/index.vue +460 -0
  199. package/nstc-g6/components/NstcForm/SelectSubject/NstcSelectSubject.vue +185 -0
  200. package/nstc-g6/components/NstcForm/SelectindialogCustom/index.vue +648 -0
  201. package/nstc-g6/components/NstcForm/TableRadioCustom/index.vue +183 -0
  202. package/nstc-g6/components/NstcForm/TextCustom/index.vue +38 -0
  203. package/nstc-g6/components/NstcForm/UploadCustom/iconxitongshezhi-yichu.png +0 -0
  204. package/nstc-g6/components/NstcForm/UploadCustom/index.vue +500 -0
  205. package/nstc-g6/components/NstcForm/configs.js +191 -0
  206. package/nstc-g6/components/NstcForm/configsSecond.js +161 -0
  207. package/nstc-g6/components/NstcForm/index.js +8 -0
  208. package/nstc-g6/components/NstcForm/index.scss +29 -0
  209. package/nstc-g6/components/NstcForm/payeePersonSelect/NstcPayeePerson.vue +188 -0
  210. package/nstc-g6/components/NstcForm/readme.txt +4 -0
  211. package/nstc-g6/components/NstcPagination/NstcPagination.vue +428 -0
  212. package/nstc-g6/components/NstcPagination/setPageNum.png +0 -0
  213. package/nstc-g6/components/NstcPagination/setpagedefault.png +0 -0
  214. package/nstc-g6/components/NstcScreenFull/NstcScreenFull.vue +70 -0
  215. package/nstc-g6/components/NstcSelectTree/NstcSelectTree.vue +729 -0
  216. package/nstc-g6/components/NstcSelectTreeList/NstcSelectTreeList.vue +676 -0
  217. package/nstc-g6/components/NstcSticky/NstcSticky.vue +97 -0
  218. package/nstc-g6/components/NstcSvgIcon/NstcSvgIcon.vue +72 -0
  219. package/nstc-g6/components/NstcTab/NstcTab.vue +80 -0
  220. package/nstc-g6/components/NstcTabWithBadge/NstcTabWithBadge.vue +45 -0
  221. package/nstc-g6/components/NstcTabWithBadge/index.scss +31 -0
  222. package/nstc-g6/components/NstcTable/ElTableColumnCustom/index.vue +292 -0
  223. package/nstc-g6/components/NstcTable/NstcTable.vue +460 -0
  224. package/nstc-g6/components/NstcTableSet/NstcTableSet.vue +801 -0
  225. package/nstc-g6/components/NstcThemePicker/NstcThemePicker.vue +186 -0
  226. package/nstc-g6/components/NstcUploadCustomExcel/NstcUploadCustomExcel.vue +330 -0
  227. package/nstc-g6/components/NstcUploadExcel/NstcUploadExcel.vue +145 -0
  228. package/nstc-g6/components/NstcWorkBench/NstcWorkBench.vue +176 -0
  229. package/nstc-g6/components/Search/NstcSearch.vue +583 -0
  230. package/nstc-g6/components/Search/src/demo/index copy.vue +101 -0
  231. package/nstc-g6/components/Search/src/demo/index.vue +103 -0
  232. package/nstc-g6/components/Search/src/main copy.vue +607 -0
  233. package/nstc-g6/components/approvelTwo/main.vue +220 -0
  234. package/nstc-g6/components/approvelTwo/progress.vue +154 -0
  235. package/nstc-g6/directives/VCopy/index.js +60 -0
  236. package/nstc-g6/directives/VNstcNumber/index.js +14 -0
  237. package/nstc-g6/directives/VNstcNumber/temp.js +446 -0
  238. package/nstc-g6/index.js +193 -0
  239. package/nstc-g6/utils/auth.js +2 -0
  240. package/nstc-g6/utils/axios.js +2 -0
  241. package/nstc-g6/utils/dateAndValidator.js +649 -0
  242. package/nstc-g6/utils/debounce.js +40 -0
  243. package/nstc-g6/utils/parseTime.js +48 -0
  244. package/nstc-g6/utils/validate/index.js +7 -0
  245. package/nstc-g6/utils/vendor/Export2Excel.js +229 -0
  246. package/nstc-g6/utils/vendor/Export2Zip.js +24 -0
  247. package/nstc-g6/utils/vue-bus.js +5 -0
  248. package/package.json +8 -2
  249. package/src/assets/css/_coreLib.scss +9 -1
  250. package/src/components/ChildRange/index.vue +28 -64
  251. package/src/components/ChildRange/style.scss +34 -0
  252. package/src/components/FileImport/index.vue +3 -1
  253. package/src/components/PageHeader/index.vue +3 -47
  254. package/src/components/PageHeader/style.scss +39 -0
  255. package/src/components/Search/index.vue +1 -97
  256. package/src/components/Search/style.scss +93 -0
  257. package/src/components/Table/ThSelectHeader.vue +28 -33
  258. package/src/components/Table/index.vue +4 -2
  259. package/src/directives/VTitle/index.js +14 -17
  260. package/style/css/normalize.scss +6 -6
  261. package/style/index.css +3 -3
  262. package/style/index.css.map +1 -1
  263. package/style/server-config.jsonc +527 -410
@@ -0,0 +1,639 @@
1
+ <template>
2
+ <div class="form-group-custom">
3
+ <div class="form-group-custom-body">
4
+ <div class="form-group-custom-body-ap" v-if="anchorPoint">
5
+ <el-tabs v-model="activeName" :tab-position="tabPosition" @tab-click="tabClickAction">
6
+ <el-tab-pane
7
+ v-for="(item,index) in anchorPointArr.filter(item => item.title)"
8
+ :key="index"
9
+ :label="item.name || item.title"
10
+ />
11
+ </el-tabs>
12
+ </div>
13
+ <div :class="{ 'form-group-custom-body-form': true, 'form-group-custom-body-form-anchor-point': anchorPoint}">
14
+ <slot name="before" />
15
+
16
+ <div
17
+ v-for="(form,index) in innerConfig"
18
+ :key="index"
19
+ :class="['form-group-item', { 'is-upload': getIsUpload(form) }]"
20
+ >
21
+ <template v-if="form.renderable !== false">
22
+ <a :id="`nstc-form-group-${form.anchorPoint}`" />
23
+ <ExpandCollapse
24
+ v-if="form.title"
25
+ :is-can-collapse="isCanCollapse"
26
+ >
27
+ <NstcForm
28
+ :ref="`formCustom${index}`"
29
+ v-model="model[index]"
30
+ :reset.sync="form.formReset"
31
+ :config="form.formConfig"
32
+ :mount-and-query="false"
33
+ :rules="rules"
34
+ :disabled="disabled"
35
+ pureable
36
+ :label-width="labelWidth"
37
+ :show-mode="showMode"
38
+ />
39
+ <template v-slot:title>
40
+ <template v-if="typeof form.title === 'object'">
41
+ <component :is="compile(form.title.component, form, model[index])" v-if="'template' in form.title.component" />
42
+ <component :is="form.title.component" v-else />
43
+ </template>
44
+
45
+ <span v-else>{{ form.title }}</span>
46
+ </template>
47
+ </ExpandCollapse>
48
+ <NstcForm
49
+ v-else
50
+ :ref="`formCustom${index}`"
51
+ v-model="model[index]"
52
+ :reset.sync="form.formReset"
53
+ :config="form.formConfig"
54
+ :mount-and-query="false"
55
+ :rules="rules"
56
+ :disabled="disabled"
57
+ pureable
58
+ :label-width="labelWidth"
59
+ :show-mode="showMode"
60
+ />
61
+ </template>
62
+ </div>
63
+
64
+ <slot name="after" />
65
+ </div>
66
+ </div>
67
+
68
+ <div
69
+ v-if="customSubmit"
70
+ :class="[
71
+ isFix ? 'form-group-footer form-group-footer-form' : 'form-group-footer' ]"
72
+ >
73
+ <slot name="submit" />
74
+ </div>
75
+
76
+ <div
77
+ v-if="!customSubmit &&showFooter"
78
+ :class="[
79
+ isFix ? 'form-group-footer form-group-footer-form' : 'form-group-footer' ]"
80
+ >
81
+ <el-button
82
+ v-if="handlers.submit"
83
+ type="primary"
84
+ :loading="loading.submit"
85
+ :class="handlers.submit.className || ''"
86
+ @click="handleQuery('submit')"
87
+ >
88
+ {{ handlers.submit.label }}
89
+ </el-button>
90
+ <el-button
91
+ v-if="handlers.save"
92
+ :loading="loading.save"
93
+ :class="handlers.save.className || ''"
94
+ @click="handleQuery('save')"
95
+ >
96
+ {{ handlers.save.label }}
97
+ </el-button>
98
+ <el-button
99
+ v-if="handlers.reset"
100
+ class="assist-button"
101
+ @click="handleReset"
102
+ :class="handlers.reset.className || ''"
103
+ >
104
+ {{ handlers.reset.label }}
105
+ </el-button>
106
+ <el-button
107
+ v-if="handlers.cancel"
108
+ @click="handleCancel('cancel')"
109
+ >
110
+ {{ handlers.cancel.label }}
111
+ </el-button>
112
+ </div>
113
+ </div>
114
+ </template>
115
+
116
+ <script>
117
+ import Vue from 'vue'
118
+ import NstcForm from '../../NstcForm/Component'
119
+ import ExpandCollapse from '^/ExpandCollapse/src/main'
120
+
121
+ // 引入特殊检验
122
+ import { validInputWithUnit } from './validate'
123
+
124
+ export default {
125
+ name: 'NstcFormGroup',
126
+
127
+ components: {
128
+ NstcForm,
129
+ ExpandCollapse
130
+ },
131
+
132
+ props: {
133
+ config: {
134
+ type: Array,
135
+ default: () => []
136
+ },
137
+
138
+ handlers: {
139
+ type: Object,
140
+ default: function () {
141
+ return {
142
+ submit: {
143
+ label: '提交',
144
+ isShow: true,
145
+ className: 'nstc-g6-common-btn-1'
146
+ },
147
+ save: {
148
+ label: '保存',
149
+ isShow: true,
150
+ className: 'nstc-g6-common-btn-1'
151
+ },
152
+ reset: {
153
+ label: '重置',
154
+ isShow: true,
155
+ className: 'nstc-g6-common-btn-4 nstc-g6-common-btn-size-b'
156
+ }
157
+ // cancel: { // 针对弹窗嵌套的表单
158
+ // label: '取消'
159
+ // }
160
+ }
161
+ }
162
+ },
163
+
164
+ labelWidth: {
165
+ default: '80px',
166
+ type: [String, Number]
167
+ },
168
+ // activeName 高亮值
169
+ activeName: {
170
+ type: String,
171
+ default: '0'
172
+ },
173
+ disabled: {
174
+ type: Boolean,
175
+ default: false
176
+ },
177
+
178
+ showFooter: {
179
+ type: Boolean,
180
+ default: true
181
+ },
182
+
183
+ // 是否可以折叠
184
+ isCanCollapse: {
185
+ type: Boolean,
186
+ default: true
187
+ },
188
+
189
+ // 是否 fix 提交框
190
+ isFix: {
191
+ type: Boolean,
192
+ default: false
193
+ },
194
+
195
+ // 是否显示锚点
196
+ anchorPoint: {
197
+ type: Boolean,
198
+ default: false
199
+ },
200
+
201
+ addAnchorPoint: {
202
+ type: Array,
203
+ default: () => {
204
+ return []
205
+ }
206
+ },
207
+
208
+ // 自定义提交
209
+ customSubmit: {
210
+ type: Boolean,
211
+ default: false
212
+ },
213
+
214
+ // 显示模式
215
+ showMode: {
216
+ type: String,
217
+ default: ''
218
+ },
219
+
220
+ // 重置
221
+ reset:{
222
+ type: Boolean,
223
+ default: false
224
+ }
225
+ },
226
+
227
+ data() {
228
+ return {
229
+ model: [],
230
+ innerConfig: [],
231
+
232
+ loading: {
233
+ submit: false,
234
+ save: false
235
+ },
236
+
237
+ rules: undefined,
238
+
239
+ // 特殊组件校验规则
240
+ // validateObj: {
241
+ // inputwithunit: validInputWithUnit
242
+ // },
243
+ validateObj: {
244
+ inputwithunit: validInputWithUnit
245
+ },
246
+ // 表单配置更新
247
+ renderFormConfig: false,
248
+
249
+ tabPosition: 'left',
250
+ anchorPointArr: []
251
+ }
252
+ },
253
+
254
+ computed: {
255
+ getIsUpload() {
256
+ return form => {
257
+ return form.formConfig && form.formConfig[0] &&
258
+ (form.formConfig[0].mold === 'nstcupload' || form.formConfig[0].length && form.formConfig[0][0].mold === 'nstcupload')
259
+ }
260
+ },
261
+ },
262
+
263
+ watch: {
264
+ model: {
265
+ deep: true,
266
+ handler(val) {
267
+ this.$emit('change', val)
268
+ }
269
+ },
270
+
271
+ config: {
272
+ immediate: true,
273
+ deep: true,
274
+ handler(val,oldValue) {
275
+ this.$bus.$emit('nstc_custom_form_config_update', val)
276
+ if (val !== oldValue) {
277
+ this.init(val)
278
+ }
279
+ }
280
+ }
281
+ },
282
+
283
+ mounted() {
284
+ this.formInit()
285
+ this.getRules()
286
+ },
287
+
288
+ methods: {
289
+ async handleQuery(action) {
290
+ try {
291
+ // console.log('00')
292
+ this.loading[action] = true
293
+ // 动态更新 formCustom 的 config 文件时 form[0]可能为空
294
+ this.rules && await Promise.all(Object.values(this.$refs).map(form => form[0] && form[0].validate()))
295
+ // console.log('11')
296
+
297
+ if (this.$listeners.query) {
298
+ // console.log('22')
299
+ // this.$listeners.query需返回promise
300
+ await this.$listeners.query(JSON.parse(JSON.stringify(this.model)), action)
301
+ // console.log('33')
302
+ }
303
+ // console.log('444',err,JSON.parse(JSON.stringify(this.model)),action,form)
304
+ } catch (err) {
305
+ console.log(err)
306
+ this.$message({
307
+ type: 'warning',
308
+ message: '请确认表单信息'
309
+ })
310
+ // this.$confirm('', '请确认表单信息', {
311
+ // type: 'warning' // success info warning error
312
+ // // showCancelButton: false,
313
+ // // showConfirmButton: false,
314
+ // // center: true
315
+ // })
316
+ } finally {
317
+ this.loading[action] = false
318
+ }
319
+ },
320
+
321
+ /**
322
+ * 取消 - 针对弹窗嵌套的表单
323
+ */
324
+ handleCancel() {
325
+ this.$bus.$emit('dialog-cancel', false)
326
+ },
327
+
328
+ async triggerQuery(action) {
329
+ try {
330
+ this.loading[action] = true
331
+ this.rules && await Promise.all(Object.values(this.$refs).map(form => form[0].validate()))
332
+ // if (this.$listeners.query) {
333
+ // // this.$listeners.query需返回promise
334
+ // await this.$listeners.query(JSON.parse(JSON.stringify(this.model)), action)
335
+ // }
336
+ return true
337
+ } catch (err) {
338
+ this.$message({
339
+ type: 'warning',
340
+ message: '请确认表单信息'
341
+ })
342
+ // this.$confirm('', '请确认表单信息', {
343
+ // type: 'warning' // success info warning error
344
+ // // showCancelButton: false,
345
+ // // showConfirmButton: false,
346
+ // // center: true
347
+ // })
348
+ this.loading[action] = false
349
+ return false
350
+ } finally {
351
+ this.loading[action] = false
352
+ }
353
+ },
354
+
355
+ async handleReset() {
356
+ this.innerConfig.forEach(item => { item.formReset = true })
357
+ await this.$nextTick()
358
+ Object.values(this.$refs).forEach(form => form[0] && form[0].clearValidate())
359
+
360
+ if (this.$listeners.reset) {
361
+ await this.$listeners.reset(JSON.parse(JSON.stringify(this.model)))
362
+ }
363
+ },
364
+
365
+ setModel(index, model) {
366
+ Object.keys(model).map(k => {
367
+ this.$set(this.model[index], k, model[k])
368
+ })
369
+ },
370
+
371
+ init(config) {
372
+ this.innerConfig = []
373
+ if (this.model.length !== config.length) {
374
+ this.model = config.map(() => ({}))
375
+ }
376
+ this.getRules()
377
+ this.$nextTick(() => {
378
+ this.innerConfig = config.map(item => ({
379
+ ...item,
380
+ formReset: false,
381
+ anchorPoint: `ap-${Math.random()
382
+ .toString(36)
383
+ .slice(2)}`
384
+ }))
385
+ this.anchorPointArr = this.innerConfig.map(item => ({
386
+ title: item.name || item.title,
387
+ anchorPoint: item[`anchorPoint`]
388
+ }))
389
+ // anchorPointArr 表示右侧描点数组
390
+ this.anchorPointArr = this.anchorPointArr.concat(this.addAnchorPoint)
391
+ this.$bus.$emit('nstc_custom_form_anchorPointArr', this.anchorPointArr)
392
+ })
393
+ },
394
+
395
+ compile(component, form, model) {
396
+ const template = Vue.compile(component.template)
397
+ const data = {
398
+ data() {
399
+ return Object.assign({}, component.data, { form, model })
400
+ }
401
+ }
402
+
403
+ return Object.assign({}, template, component, data)
404
+ },
405
+
406
+ /**
407
+ * 动态设置表单高度
408
+ */
409
+ formInit() {
410
+ if (this.showFooter && this.isFix) {
411
+ // 如果有提交按钮
412
+ let dom = document.querySelector('.form-group-custom')
413
+ dom.style.cssText = 'min-height:' + (document.body.clientHeight - 212) + 'px'
414
+ }
415
+ },
416
+
417
+ /**
418
+ * 获取表单验证规则
419
+ */
420
+ getRules() {
421
+ const that = this
422
+ const tempConfig = JSON.parse(JSON.stringify(this.config))
423
+ this.rules = {}
424
+ this.rules = tempConfig
425
+ .reduce((prev, next) => ([
426
+ ...prev,
427
+ ...next.formConfig
428
+ ]), [])
429
+ .reduce((prev, next) => ([
430
+ ...prev,
431
+ ...Array.isArray(next) ? next : [next]
432
+ ]), [])
433
+ .reduce((prev, next) => {
434
+ if (next.link) {
435
+ const links = next.link.filter(item => !!item.mold)
436
+
437
+ return [
438
+ ...prev,
439
+ next,
440
+ ...links
441
+ ]
442
+ }
443
+
444
+ return [
445
+ ...prev,
446
+ next
447
+ ]
448
+ }, [])
449
+ .filter(item => item.isRequired)
450
+ .reduce((res, curr) => {
451
+ const isInput = (curr.mold === 'input') || (curr.prop === 'dueDate' || curr.prop ==='lastShipmentDate')
452
+
453
+ // 自定义校验
454
+ const hasSpecificValid = that.validateObj[curr.mold]
455
+ return {
456
+ ...res,
457
+ [curr.prop]: {
458
+ required: true,
459
+ [`${hasSpecificValid ? 'nstc-': ''}message`]: `请${isInput ? '输入' : '选择'}${curr.name}`,
460
+ trigger: isInput ? 'blur' : 'change',
461
+ ...(hasSpecificValid ? { validator: hasSpecificValid } : {})
462
+ // whitespace: isInput || undefined,
463
+ // ...isInput
464
+ // ? {
465
+ // transform(val) {
466
+ // return typeof val === 'string' ? val.trim() : val
467
+ // }
468
+ // }
469
+ // : {}
470
+ }
471
+ }
472
+ }, {})
473
+ },
474
+
475
+ /**
476
+ * 锚点切换
477
+ */
478
+ tabClickAction(vmEl) {
479
+ this.activeName = vmEl.index
480
+ const anchorPoint = this.anchorPointArr[vmEl.index].anchorPoint
481
+ const el = document.querySelector(`#nstc-form-group-${anchorPoint}`)
482
+ el && el.scrollIntoView(true)
483
+ if (!el) {
484
+ let wEl = document.getElementById(`#nstc-form-group-${anchorPoint}`)
485
+ wEl && wEl.scrollIntoView(true)
486
+ }
487
+ // eslint-disable-next-line no-debugger
488
+ // debugger
489
+ }
490
+ }
491
+ }
492
+ </script>
493
+
494
+ <style lang="scss">
495
+ // .form-group-custom-wrap {
496
+ // height: ;
497
+ // }
498
+ .form-group-custom {
499
+ background-color: #fff;
500
+ border-radius: 10px;
501
+ padding-bottom: 30px;
502
+ height: 100%;
503
+ &-body{
504
+ display: flex;
505
+ flex-direction: row;
506
+ height: 100%;
507
+ &-ap{
508
+ width: 152px;
509
+ margin-right: 20px;
510
+ .el-tabs__header{
511
+ width: 100%;
512
+ }
513
+ }
514
+ &-form{
515
+ flex: 1;
516
+ overflow-y: auto;
517
+ }
518
+ &-form-anchor-point {
519
+ .form-group-item:nth-child(1) {
520
+ margin-top: 0;
521
+ padding-top: 0!important;
522
+ }
523
+ }
524
+ }
525
+ .expand-collapse-header,
526
+ .expand-collapse-header-collapse {
527
+ display: flex;
528
+ > span {
529
+ font-weight: bold;
530
+ font-size: 14px;
531
+ }
532
+ > i {
533
+ color: #F5F5F5;
534
+ // margin-left: 19px;
535
+ }
536
+ &::after{
537
+ content: '';
538
+ flex: 1;
539
+ }
540
+ }
541
+ .expand-collapse .form-base-wrapper {
542
+ display: block;
543
+ }
544
+ .expand-collapse .form-base-wrapper .form-group,
545
+ .form-base-wrapper {
546
+ width: 100%;
547
+ .form-item {
548
+ width: 400px;
549
+ }
550
+ .form-item:nth-child(1) {
551
+ margin-left: calc((50% - 400px)* 0.64);
552
+ }
553
+ .form-item:nth-child(2) {
554
+ margin-left: calc((50% - 400px)* 0.745);
555
+ }
556
+ }
557
+ .form-custom {
558
+ display: flex;
559
+ justify-content: center;
560
+ }
561
+ .form-base-wrapper {
562
+ //min-width: 1300px;
563
+ }
564
+ .form-group {
565
+ &-item {
566
+ & + .form-group-item {
567
+ // border-top: 1px solid rgba(228, 228, 228, .91);
568
+ }
569
+ &:first-child {
570
+ padding-top: 20px;
571
+ }
572
+ &.is-upload {
573
+ .form-base-wrapper {
574
+ width: 100%;
575
+ .nstc-upload-box {
576
+ width: 100%;
577
+ }
578
+ }
579
+ }
580
+ }
581
+ &-footer {
582
+ margin-top: 70px;
583
+ text-align: center;
584
+ }
585
+ }
586
+
587
+ .form-group-footer-form {
588
+ position: fixed;
589
+ bottom: 0;
590
+ border-radius: 0px 0px 5px 5px;
591
+ width: 100%;
592
+ height: 61px;
593
+ transition: width 0.3s;
594
+ background-color: #fff;
595
+ box-shadow: 0px -2px 6px 0px rgba(92,100,113,0.11);
596
+ .sider-close {
597
+ background-color: #fff;
598
+ width: calc(100% - 103px) !important;
599
+ }
600
+ z-index: 999;
601
+ }
602
+ .form-group-footer {
603
+ .el-button {
604
+ margin: 14px 20px 0px 0px;
605
+ width: 90px;
606
+ height: 34px;
607
+ padding: 8px 12px;
608
+ font-size: 14px;
609
+ border-radius: 5px;
610
+ }
611
+ }
612
+ .form-item-text {
613
+ margin-left: 20px;
614
+ .el-form-item__label {
615
+ text-align: left;
616
+ font-size: 14px;
617
+ }
618
+ .el-form-item {
619
+ margin-bottom: 3px;
620
+ }
621
+ }
622
+
623
+ .el-button--primary {
624
+ background-color: #007aff;
625
+ border: 1px solid #007aff;
626
+ }
627
+ .el-button--default {
628
+ border: 1px solid #007aff;
629
+ color: #007aff;
630
+ }
631
+ .assist-button {
632
+ background: #fff;
633
+ border: 1px solid #dcdfe6;
634
+ color: #606266;
635
+ }
636
+
637
+ }
638
+
639
+ </style>
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 占位 不校验
3
+ */
4
+ export function notValid(rule, value, callback) {
5
+ callback()
6
+ }
7
+
8
+
9
+ /**
10
+ * 校验 【融资】 - 【期限】
11
+ */
12
+ export function validInputWithUnit(rule, value, callback) {
13
+ if (value[0] && value[1]) {
14
+ // if (/^[0-9]*$/.test(value[0])) {
15
+ callback()
16
+ // } else {
17
+ // callback(new Error('请输入正整数'))
18
+ // }
19
+
20
+ } else {
21
+ callback(new Error('请输入期限'))
22
+ }
23
+ }