cloud-web-corejs 1.0.54-dev.77 → 1.0.54-dev.770

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 (581) hide show
  1. package/package.json +199 -183
  2. package/src/App.vue +73 -75
  3. package/src/api/user.js +85 -40
  4. package/src/bootstrap/business.js +31 -0
  5. package/src/bootstrap/businessFeatures.js +108 -0
  6. package/src/components/Qrcode/fileParse.vue +0 -1
  7. package/src/components/Tinymce/index.vue +112 -71
  8. package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
  9. package/src/components/VabUpload/image-viewer.vue +2 -2
  10. package/src/components/VabUpload/index.js +69 -1
  11. package/src/components/VabUpload/index.vue +9 -1
  12. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  13. package/src/components/VabUpload/mixins.js +1881 -2
  14. package/src/components/VabUpload/propertiesDialog.vue +1 -1
  15. package/src/components/VabUpload/view.vue +209 -120
  16. package/src/components/advancedSearchDialog/mixins.js +28 -1
  17. package/src/components/base-textarea/index.vue +104 -0
  18. package/src/components/baseAlert/index.js +44 -1
  19. package/src/components/baseAlert/index.vue +24 -20
  20. package/src/components/baseAlert/mixins.js +61 -1
  21. package/src/components/baseArea/index.vue +1628 -0
  22. package/src/components/baseAttachment/index.vue +49 -40
  23. package/src/components/baseAttachment/install.js +21 -5
  24. package/src/components/baseAttachment/mixins.js +310 -1
  25. package/src/components/baseInputBatch/mixins.js +58 -1
  26. package/src/components/baseInputExport/index.vue +21 -14
  27. package/src/components/baseInputExport/mixins.js +391 -1
  28. package/src/components/baseInputNumber/index.vue +9 -9
  29. package/src/components/baseTabs/index.vue +16 -8
  30. package/src/components/baseTabs/mixins.js +177 -1
  31. package/src/components/cnPrint/index.js +44 -1
  32. package/src/components/cnPrint/mixins.js +189 -1
  33. package/src/components/code-editor/index.vue +131 -62
  34. package/src/components/confirmDialog/index.js +41 -1
  35. package/src/components/confirmDialog/index.vue +24 -17
  36. package/src/components/confirmDialog/mixins.js +31 -1
  37. package/src/components/errorMsg/index.js +47 -3
  38. package/src/components/errorMsg/index.vue +78 -70
  39. package/src/components/errorMsg/mixins.js +103 -5
  40. package/src/components/excelExport/button.vue +86 -24
  41. package/src/components/excelExport/exportFieldDialog.vue +246 -90
  42. package/src/components/excelExport/index.js +65 -6
  43. package/src/components/excelExport/index.vue +109 -26
  44. package/src/components/excelExport/mixins.js +1132 -8
  45. package/src/components/excelImport/index.js +13 -13
  46. package/src/components/excelImport/mixins.js +2 -1
  47. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  48. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -208
  49. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +6 -0
  50. package/src/components/fileLibrary/filterDialog.vue +454 -0
  51. package/src/components/fileLibrary/index.vue +1109 -687
  52. package/src/components/fileLibrary/mixins/categoryMoveDialogMixins.js +1 -1
  53. package/src/components/fileLibrary/mixins/fileCategoryDialogMixins.js +1 -1
  54. package/src/components/fileLibrary/mixins/fileHistoryDialogMixins.js +2 -2
  55. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +339 -211
  56. package/src/components/fileLibrary/mixins/fileObjAuthEditDialogMixin.js +31 -27
  57. package/src/components/fileLibrary/mixins/fileObjAuthEditMixin.js +4 -4
  58. package/src/components/fileLibrary/mixins/indexMixins.js +230 -101
  59. package/src/components/fileLibrary/mixins/propertiesDialogMixins.js +62 -3
  60. package/src/components/fileLibrary/mixins/recycleBinDialogMixins.js +3 -3
  61. package/src/components/fileLibrary/propertiesDialog.vue +190 -145
  62. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  63. package/src/components/fileLibrary/shareDialog.vue +1 -1
  64. package/src/components/formDialog/README.md +241 -0
  65. package/src/components/formDialog/index.js +35 -0
  66. package/src/components/formDialog/index.vue +724 -0
  67. package/src/components/formOplog/mixins.js +85 -4
  68. package/src/components/hiprint/css/bootstrap.min.css +6 -0
  69. package/src/components/hiprint/fonts/glyphicons-halflings-regular.eot +0 -0
  70. package/src/components/hiprint/fonts/glyphicons-halflings-regular.svg +288 -0
  71. package/src/components/hiprint/fonts/glyphicons-halflings-regular.ttf +0 -0
  72. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff +0 -0
  73. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff2 +0 -0
  74. package/src/components/hiprint/hiprint.bundle.js +15 -3
  75. package/src/components/hiprint/view/design/index.vue +140 -47
  76. package/src/components/hiprint/view/design/mixins.js +611 -1
  77. package/src/components/hiprint/view/design/preview.vue +75 -52
  78. package/src/components/hiprint/view/json-view.vue +31 -31
  79. package/src/components/jdPrint/index.js +44 -1
  80. package/src/components/jdPrint/mixins.js +208 -1
  81. package/src/components/jsonImport/exportUtil.js +106 -0
  82. package/src/components/jsonImport/index.js +212 -17
  83. package/src/components/jsonImport/mixins.js +350 -16
  84. package/src/components/langImport/index.js +80 -1
  85. package/src/components/langImport/mixins.js +487 -1
  86. package/src/components/langTag/mixins/addButton.js +51 -5
  87. package/src/components/langTag/mixins/deleteButton.js +55 -5
  88. package/src/components/langTag/mixins/view.js +47 -5
  89. package/src/components/luckysheet/dialog.vue +159 -0
  90. package/src/components/luckysheet/export.js +595 -0
  91. package/src/components/luckysheet/fileUtils.js +147 -0
  92. package/src/components/luckysheet/index.js +72 -0
  93. package/src/components/luckysheet/templateJson.js +12078 -0
  94. package/src/components/luckysheet/view.vue +232 -0
  95. package/src/components/mobile/file/index.vue +10 -0
  96. package/src/components/obsUpload/index.js +34 -0
  97. package/src/components/obsUpload/index.vue +231 -0
  98. package/src/components/obsUpload/mixins.js +1476 -0
  99. package/src/components/onlineTalk/index.vue +1 -1
  100. package/src/components/onlineTalk/mixins.js +852 -1
  101. package/src/components/onlineTalk/talkUserDialog.vue +280 -0
  102. package/src/components/oplogTable/mixins.js +83 -4
  103. package/src/components/pddPrint/index.js +44 -1
  104. package/src/components/pddPrint/mixins.js +252 -1
  105. package/src/components/projectTag/mixins/addButton.js +52 -1
  106. package/src/components/projectTag/mixins/deleteButton.js +52 -1
  107. package/src/components/projectTag/mixins/view.js +43 -1
  108. package/src/components/scriptDescription/button.vue +12 -4
  109. package/src/components/scriptDescription/mixins.js +30 -1
  110. package/src/components/scriptTest/mixins.js +90 -1
  111. package/src/components/statusTag/mixins.js +66 -1
  112. package/src/components/table/CellSlot.vue +12 -9
  113. package/src/components/table/config.js +74 -1
  114. package/src/components/table/index.js +1215 -11
  115. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.es6.min.js +11028 -0
  116. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.min.css +200 -0
  117. package/src/components/table/tableForm.vue +99 -63
  118. package/src/components/table/tableFormMixin.js +285 -1
  119. package/src/components/table/util/index.js +337 -0
  120. package/src/components/table/vxeFilter/index.js +153 -1
  121. package/src/components/table/vxeFilter/mixin.js +310 -6
  122. package/src/components/tempStorage/index.vue +76 -55
  123. package/src/components/tempStorage/tempStorageDialog.vue +179 -54
  124. package/src/components/vb-tabs/x-tabs.vue +57 -30
  125. package/src/components/vipPrint/index.js +44 -1
  126. package/src/components/vipPrint/mixins.js +268 -1
  127. package/src/components/wf/addOpinionButton.vue +57 -0
  128. package/src/components/wf/content.vue +834 -362
  129. package/src/components/wf/mixins/addOpinionButton.js +53 -0
  130. package/src/components/wf/mixins/setCandidateButton.js +161 -0
  131. package/src/components/wf/mixins/setCandidateDialog.js +217 -5
  132. package/src/components/wf/mixins/setCandidateDialog2.js +252 -0
  133. package/src/components/wf/mixins/wfFlowEleScriptDialog.js +131 -0
  134. package/src/components/wf/mixins/wfTaskUserRangeDialog.js +69 -0
  135. package/src/components/wf/setCandidateButton.vue +40 -0
  136. package/src/components/wf/setCandidateDialog.vue +10 -0
  137. package/src/components/wf/setCandidateDialog2.vue +105 -0
  138. package/src/components/wf/wf.js +2221 -30
  139. package/src/components/wf/wfFlowEleScriptDialog.vue +89 -0
  140. package/src/components/wf/wfStartDialog.vue +66 -42
  141. package/src/components/wf/wfTaskUserRangeDialog.vue +65 -0
  142. package/src/components/wf/wfUtil.js +280 -1
  143. package/src/components/xform/XFormTabContainer//346/226/260/345/242/236/351/241/265/347/255/276/346/250/241/345/274/217-/346/234/200/347/273/210/345/256/236/347/216/260.md +195 -0
  144. package/src/components/xform/docs/2026-07 table/344/270/216excelExport/344/277/256/345/244/215/345/217/212/345/257/274/345/207/272/344/274/230/345/214/226.md" +57 -0
  145. package/src/components/xform/docs/2026-07 /346/216/222/346/237/245/344/277/256/345/244/215/350/256/260/345/275/225.md" +73 -0
  146. package/src/components/xform/docs/autocomplete /350/207/252/345/212/250/345/256/214/346/210/220/347/273/204/344/273/266/350/257/264/346/230/216.md" +126 -0
  147. package/src/components/xform/docs//345/220/216/345/217/260/345/255/227/346/256/265/357/274/210/345/212/250/346/200/201/347/224/237/346/210/220/357/274/211JSON /350/257/264/346/230/216.md" +1286 -0
  148. package/src/components/xform/docs//345/257/271/346/257/224/345/212/237/350/203/275/350/220/275/345/234/260/346/226/271/346/241/210.md +986 -0
  149. package/src/components/xform/docs//346/225/260/346/215/256/350/241/250/346/240/274/345/212/250/346/200/201/345/210/227 JSON /350/257/264/346/230/216.md" +657 -0
  150. package/src/components/xform/form-designer/designer.js +2027 -29
  151. package/src/components/xform/form-designer/form-widget/components/gantt/index.vue +434 -0
  152. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +108 -1
  153. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +291 -8
  154. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +14 -1
  155. package/src/components/xform/form-designer/form-widget/container-widget/detail-pane-widget.vue +3 -2
  156. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +3 -3
  157. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog copy.vue +971 -0
  158. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog.vue +971 -0
  159. package/src/components/xform/form-designer/form-widget/dialog/exportDialog.vue +13 -0
  160. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +300 -0
  161. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +85 -49
  162. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +6 -3
  163. package/src/components/xform/form-designer/form-widget/dialog/formulaDialog.vue +799 -0
  164. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +30 -8
  165. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1774 -19
  166. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +222 -76
  167. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +67 -54
  168. package/src/components/xform/form-designer/form-widget/field-widget/a-text-widget.vue +1 -1
  169. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  170. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  171. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +216 -184
  172. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +76 -66
  173. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +209 -90
  174. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +41 -35
  175. package/src/components/xform/form-designer/form-widget/field-widget/checkbox-widget.vue +18 -7
  176. package/src/components/xform/form-designer/form-widget/field-widget/color-widget.vue +4 -1
  177. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +95 -0
  178. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +14 -3
  179. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +48 -5
  180. package/src/components/xform/form-designer/form-widget/field-widget/download-button-widget.vue +133 -0
  181. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +86 -0
  182. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +170 -0
  183. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1939 -16
  184. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +657 -108
  185. package/src/components/xform/form-designer/form-widget/field-widget/gantt-widget.vue +964 -0
  186. package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +6 -2
  187. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +22 -11
  188. package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +90 -0
  189. package/src/components/xform/form-designer/form-widget/field-widget/input-widget.vue +7 -2
  190. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  191. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +157 -0
  192. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +3 -9
  193. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +3 -9
  194. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +3 -9
  195. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  196. package/src/components/xform/form-designer/form-widget/field-widget/mixins/vabsearch-mixin.js +192 -0
  197. package/src/components/xform/form-designer/form-widget/field-widget/multiSearch-widget.vue +53 -0
  198. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +117 -81
  199. package/src/components/xform/form-designer/form-widget/field-widget/oplog-widget.vue +186 -0
  200. package/src/components/xform/form-designer/form-widget/field-widget/print-button-widget.vue +55 -28
  201. package/src/components/xform/form-designer/form-widget/field-widget/print-detail-button-widget.vue +119 -0
  202. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +156 -54
  203. package/src/components/xform/form-designer/form-widget/field-widget/radio-widget.vue +26 -6
  204. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +112 -0
  205. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +146 -0
  206. package/src/components/xform/form-designer/form-widget/field-widget/search_button-widget.vue +2 -2
  207. package/src/components/xform/form-designer/form-widget/field-widget/select-export-button-widget.vue +86 -0
  208. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +92 -0
  209. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +24 -9
  210. package/src/components/xform/form-designer/form-widget/field-widget/singerSearch-widget.vue +53 -0
  211. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +145 -0
  212. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +16 -1
  213. package/src/components/xform/form-designer/form-widget/field-widget/static-text-widget.vue +8 -3
  214. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +93 -49
  215. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +9 -1
  216. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +38 -38
  217. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +147 -0
  218. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +111 -34
  219. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +4 -3
  220. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +2 -1
  221. package/src/components/xform/form-designer/form-widget/field-widget/vabSearch-widget.vue +3 -171
  222. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +187 -70
  223. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload2-widget.vue +753 -0
  224. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +231 -0
  225. package/src/components/xform/form-designer/form-widget/index.vue +6 -1
  226. package/src/components/xform/form-designer/form-widget/indexMixin.js +184 -2
  227. package/src/components/xform/form-designer/index.vue +195 -191
  228. package/src/components/xform/form-designer/indexMixin.js +855 -24
  229. package/src/components/xform/form-designer/refMixinDesign.js +27 -28
  230. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +601 -0
  231. package/src/components/xform/form-designer/setting-panel/form-setting.vue +1553 -629
  232. package/src/components/xform/form-designer/setting-panel/index.vue +313 -305
  233. package/src/components/xform/form-designer/setting-panel/indexMixin.js +370 -12
  234. package/src/components/xform/form-designer/setting-panel/option-items-setting.vue +585 -302
  235. package/src/components/xform/form-designer/setting-panel/property-editor/a-link-editor.vue +4 -4
  236. package/src/components/xform/form-designer/setting-panel/property-editor/a-text-editor.vue +3 -3
  237. package/src/components/xform/form-designer/setting-panel/property-editor/autoValueEnabled-editor.vue +38 -0
  238. package/src/components/xform/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +14 -15
  239. package/src/components/xform/form-designer/setting-panel/property-editor/censusClass-editor.vue +6 -0
  240. package/src/components/xform/form-designer/setting-panel/property-editor/colorClass-editor.vue +28 -0
  241. package/src/components/xform/form-designer/setting-panel/property-editor/commonAttributeEnabled-editor.vue +41 -0
  242. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/columnRenderDialog.vue +124 -0
  243. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +1154 -1048
  244. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/edit-tree-button-group-config-dialog.vue +281 -0
  245. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +432 -0
  246. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/onCheckboxChange-editor.vue +1 -1
  247. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +1632 -592
  248. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +3 -3
  249. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-pane/detail-pane-editor.vue +3 -3
  250. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +1 -1
  251. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +1 -1
  252. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +1 -1
  253. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +34 -46
  254. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +344 -0
  255. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree/tree-customClass-editor.vue +31 -2
  256. package/src/components/xform/form-designer/setting-panel/property-editor/copyButton-editor.vue +36 -0
  257. package/src/components/xform/form-designer/setting-panel/property-editor/downloadButtonFlag-editor.vue +32 -0
  258. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +133 -0
  259. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin.js +2 -2
  260. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +23 -8
  261. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  262. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  263. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  264. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  265. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindEvent-editor.vue +35 -20
  266. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +14 -15
  267. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +64 -5
  268. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/cascader-multiple-editor.vue +8 -3
  269. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +11 -13
  270. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  271. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +157 -0
  272. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-item-editor.vue +21 -0
  273. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-menu-editor.vue +59 -0
  274. package/src/components/xform/form-designer/setting-panel/property-editor/field-gantt/gantt-editor.vue +36 -0
  275. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +75 -21
  276. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -0
  277. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-button-editor.vue +44 -15
  278. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-detail-button-editor.vue +115 -0
  279. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +1 -1
  280. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  281. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/preWrap-editor.vue +23 -0
  282. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +1 -1
  283. package/src/components/xform/form-designer/setting-panel/property-editor/field-status/field-status-editor.vue +67 -41
  284. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-button-editor.vue +56 -0
  285. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +71 -0
  286. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchName-editor.vue +13 -1
  287. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/field-vabUpload-editor.vue +33 -1
  288. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload2/field-vabUpload2-editor.vue +66 -0
  289. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +48 -0
  290. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +107 -19
  291. package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +137 -0
  292. package/src/components/xform/form-designer/setting-panel/property-editor/formula-editor.vue +721 -466
  293. package/src/components/xform/form-designer/setting-panel/property-editor/labelColor-editor.vue +20 -11
  294. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +17 -16
  295. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +25 -25
  296. package/src/components/xform/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +67 -13
  297. package/src/components/xform/form-designer/setting-panel/property-editor/limit-editor.vue +1 -1
  298. package/src/components/xform/form-designer/setting-panel/property-editor/multiple-editor.vue +19 -14
  299. package/src/components/xform/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +1 -1
  300. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +127 -50
  301. package/src/components/xform/form-designer/setting-panel/property-editor/oplog-editor.vue +31 -0
  302. package/src/components/xform/form-designer/setting-panel/property-editor/precision-editor.vue +1 -1
  303. package/src/components/xform/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +14 -15
  304. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +349 -0
  305. package/src/components/xform/form-designer/setting-panel/property-editor/required-editor.vue +10 -6
  306. package/src/components/xform/form-designer/setting-panel/property-editor/requiredHint-editor.vue +3 -3
  307. package/src/components/xform/form-designer/setting-panel/property-editor/showViewButton-editor.vue +29 -0
  308. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +14 -15
  309. package/src/components/xform/form-designer/setting-panel/property-editor/tempStorage-editor.vue +42 -0
  310. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +304 -19
  311. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  312. package/src/components/xform/form-designer/setting-panel/property-editor/validation-editor.vue +2 -2
  313. package/src/components/xform/form-designer/setting-panel/property-editor/validationHint-editor.vue +2 -2
  314. package/src/components/xform/form-designer/setting-panel/property-editor/wfFlag-editor.vue +372 -50
  315. package/src/components/xform/form-designer/setting-panel/property-editor/widgetShowRuleFlag-editor.vue +263 -0
  316. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +369 -324
  317. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  318. package/src/components/xform/form-designer/toolbar-panel/index.vue +267 -103
  319. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +655 -24
  320. package/src/components/xform/form-designer/widget-panel/index.vue +389 -321
  321. package/src/components/xform/form-designer/widget-panel/indexMixin.js +334 -2
  322. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4531 -3141
  323. package/src/components/xform/form-render/compareDelList.vue +83 -0
  324. package/src/components/xform/form-render/compareView.vue +76 -0
  325. package/src/components/xform/form-render/container-item/containerItemMixin.js +404 -11
  326. package/src/components/xform/form-render/container-item/data-table-item.vue +221 -203
  327. package/src/components/xform/form-render/container-item/data-table-mixin.js +3716 -858
  328. package/src/components/xform/form-render/container-item/detail-h5-item.vue +173 -172
  329. package/src/components/xform/form-render/container-item/detail-item.vue +287 -158
  330. package/src/components/xform/form-render/container-item/detail-pane-item.vue +17 -3
  331. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  332. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  333. package/src/components/xform/form-render/container-item/grid-col-item.vue +10 -3
  334. package/src/components/xform/form-render/container-item/grid-item.vue +1 -1
  335. package/src/components/xform/form-render/container-item/list-h5-item.vue +1184 -419
  336. package/src/components/xform/form-render/container-item/sub-form-item.vue +10 -2
  337. package/src/components/xform/form-render/container-item/tab-item.vue +125 -88
  338. package/src/components/xform/form-render/container-item/table-cell-item.vue +38 -32
  339. package/src/components/xform/form-render/container-item/table-item.vue +7 -7
  340. package/src/components/xform/form-render/container-item/table2-cell-item.vue +53 -34
  341. package/src/components/xform/form-render/container-item/table2-item.vue +198 -99
  342. package/src/components/xform/form-render/container-item/tree-item.vue +32 -11
  343. package/src/components/xform/form-render/dynamicDialogRender.js +238 -3
  344. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  345. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  346. package/src/components/xform/form-render/index.vue +86 -21
  347. package/src/components/xform/form-render/indexMixin.js +5070 -37
  348. package/src/components/xform/form-render/refMixin.js +34 -3
  349. package/src/components/xform/icon-picker/icons.json +284 -0
  350. package/src/components/xform/icon-picker/index.vue +145 -0
  351. package/src/components/xform/lang/en-US.js +457 -438
  352. package/src/components/xform/lang/en-US_extension.js +4 -0
  353. package/src/components/xform/lang/zh-CN.js +628 -593
  354. package/src/components/xform/mixins/defaultHandle.js +474 -2
  355. package/src/components/xform/mixins/scriptHttp.js +179 -3
  356. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  357. package/src/components/xform/utils/emitter.js +4 -4
  358. package/src/components/xform/utils/formHttp.js +162 -0
  359. package/src/components/xform/utils/format.js +205 -172
  360. package/src/components/xform/utils/formula-util.js +969 -0
  361. package/src/components/xform/utils/sfc-generator.js +2 -2
  362. package/src/components/xform/utils/smart-vue-i18n/index.js +2 -1
  363. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  364. package/src/components/xform/utils/tableColumnHelper.js +155 -0
  365. package/src/components/xform/utils/util.js +1591 -1
  366. package/src/components/xform/utils/validators.js +185 -4
  367. package/src/components/xform/utils/vue2js-generator.js +2 -2
  368. package/src/components/xhsPrint/index.js +44 -1
  369. package/src/components/xhsPrint/mixins.js +269 -1
  370. package/src/directive/LimitNumber/index.js +144 -1
  371. package/src/directive/el-dialog-center/index.js +34 -1
  372. package/src/directive/el-drag-dialog/drag.js +86 -1
  373. package/src/directive/el-readonly/index.js +15 -1
  374. package/src/directive/permission/hasPermi.js +34 -1
  375. package/src/index.js +194 -173
  376. package/src/lang/index.js +56 -51
  377. package/src/lang/locale/en/login.js +27 -0
  378. package/src/lang/locale/zh/login.js +26 -0
  379. package/src/layout/components/AppMain.vue +147 -111
  380. package/src/layout/components/Sidebar/default.vue +1655 -1222
  381. package/src/layout/components/Sidebar/index.vue +6 -1
  382. package/src/layout/components/TagsView/index.vue +57 -15
  383. package/src/layout/components/createCompany/createCompanyDialog.vue +157 -0
  384. package/src/layout/components/extractedCode/createDialog.vue +92 -0
  385. package/src/layout/components/extractedCode/queryDialog.vue +103 -0
  386. package/src/layout/components/extractedCode/viewDialog.vue +207 -0
  387. package/src/layout/components/langTool.vue +128 -120
  388. package/src/layout/components/watermark/index.vue +83 -0
  389. package/src/layout/defaultLayout.vue +170 -150
  390. package/src/microRouter/index.js +418 -0
  391. package/src/mixins/selectDialog/index.js +266 -1
  392. package/src/mixins/tableTree/index.js +199 -4
  393. package/src/mixins/wf/index.js +33 -1
  394. package/src/permission.js +203 -5
  395. package/src/public-path.js +8 -0
  396. package/src/resources/js/base/common.js +109 -109
  397. package/src/router/index.js +4 -7
  398. package/src/router/modules/customer.js +21 -18
  399. package/src/router/modules/system.js +4 -0
  400. package/src/store/config/index.js +667 -600
  401. package/src/store/getters.js +4 -1
  402. package/src/store/modules/micro.js +57 -0
  403. package/src/store/modules/permission.js +497 -23
  404. package/src/store/modules/settings.js +24 -1
  405. package/src/store/modules/tagsView.js +205 -5
  406. package/src/store/modules/user.js +424 -28
  407. package/src/utils/aes.js +21 -1
  408. package/src/utils/auth.js +27 -1
  409. package/src/utils/componentDialog.js +339 -0
  410. package/src/utils/externalAssets.js +62 -0
  411. package/src/utils/global.js +370 -8
  412. package/src/utils/index.js +579 -7
  413. package/src/utils/keepAlive.js +185 -1
  414. package/src/utils/loginVab.js +68 -0
  415. package/src/utils/menuAdapter.js +273 -0
  416. package/src/utils/pddLog.js +106 -0
  417. package/src/utils/pdfUtil.js +71 -0
  418. package/src/utils/prefixGlobals.js +11 -0
  419. package/src/utils/repeatOpen.js +48 -0
  420. package/src/utils/request.js +417 -28
  421. package/src/utils/vab.js +1276 -27
  422. package/src/utils/validate.js +104 -1
  423. package/src/views/bd/setting/bd_attach_setting/edit.vue +5 -5
  424. package/src/views/bd/setting/bd_attach_setting/list.vue +28 -55
  425. package/src/views/bd/setting/bd_attach_setting/mixins/dialog.js +84 -1
  426. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +116 -5
  427. package/src/views/bd/setting/bd_attach_setting/mixins/list.js +239 -1
  428. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -0
  429. package/src/views/bd/setting/bd_company_env/edit.vue +193 -0
  430. package/src/views/bd/setting/bd_company_env/list.vue +175 -0
  431. package/src/views/bd/setting/config_manage/list.vue +83 -0
  432. package/src/views/bd/setting/formVersion/button.vue +55 -0
  433. package/src/views/bd/setting/formVersion/compareBasicSection.vue +125 -0
  434. package/src/views/bd/setting/formVersion/compareCodeSection.vue +539 -0
  435. package/src/views/bd/setting/formVersion/compareContMixin.scss +65 -0
  436. package/src/views/bd/setting/formVersion/compareContent.vue +63 -0
  437. package/src/views/bd/setting/formVersion/compareDialog.vue +88 -0
  438. package/src/views/bd/setting/formVersion/compareMixin.js +93 -0
  439. package/src/views/bd/setting/formVersion/fieldCompare.vue +54 -0
  440. package/src/views/bd/setting/formVersion/formScriptCompareView.vue +94 -0
  441. package/src/views/bd/setting/formVersion/formTemplateCompareView.vue +74 -0
  442. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +483 -0
  443. package/src/views/bd/setting/formVersion/link.vue +58 -0
  444. package/src/views/bd/setting/formVersion/preformDialog.vue +87 -0
  445. package/src/views/bd/setting/formVersion/reverButton.vue +82 -0
  446. package/src/views/bd/setting/formVersion/tableDetailDiff.js +99 -0
  447. package/src/views/bd/setting/formVersion/tableModelCompareView.vue +514 -0
  448. package/src/views/bd/setting/formVersion/textDiff.js +102 -0
  449. package/src/views/bd/setting/form_import_log/edit.vue +130 -0
  450. package/src/views/bd/setting/form_import_log/list.vue +211 -0
  451. package/src/views/bd/setting/form_script/edit.vue +196 -74
  452. package/src/views/bd/setting/form_script/edit1.vue +410 -187
  453. package/src/views/bd/setting/form_script/form_list.vue +174 -85
  454. package/src/views/bd/setting/form_script/list.vue +95 -21
  455. package/src/views/bd/setting/form_script/list1.vue +205 -118
  456. package/src/views/bd/setting/form_script/mixins/dialog.js +130 -1
  457. package/src/views/bd/setting/form_script/mixins/edit.js +265 -7
  458. package/src/views/bd/setting/form_script/mixins/edit1.js +259 -9
  459. package/src/views/bd/setting/form_script/mixins/form_list.js +320 -4
  460. package/src/views/bd/setting/form_script/mixins/list.js +307 -4
  461. package/src/views/bd/setting/form_script/mixins/list1.js +512 -14
  462. package/src/views/bd/setting/form_script/mixins/list2.js +10 -1
  463. package/src/views/bd/setting/form_script/mixins/otherAuthDialog.js +194 -0
  464. package/src/views/bd/setting/form_script/mixins/preformDialog.js +34 -1
  465. package/src/views/bd/setting/form_script/otherAuthDialog.vue +83 -0
  466. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +3 -3
  467. package/src/views/bd/setting/form_template/edit.vue +355 -184
  468. package/src/views/bd/setting/form_template/formDesignerDialog.vue +171 -0
  469. package/src/views/bd/setting/form_template/list.vue +301 -214
  470. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +279 -1
  471. package/src/views/bd/setting/form_template/mixins/dialog.js +103 -1
  472. package/src/views/bd/setting/form_template/mixins/edit.js +277 -9
  473. package/src/views/bd/setting/form_template/mixins/editWfObjConfigDialog.js +92 -1
  474. package/src/views/bd/setting/form_template/mixins/ftHistoryDialog.js +91 -1
  475. package/src/views/bd/setting/form_template/mixins/itemEdit.js +104 -1
  476. package/src/views/bd/setting/form_template/mixins/itemList.js +234 -1
  477. package/src/views/bd/setting/form_template/mixins/list.js +721 -22
  478. package/src/views/bd/setting/form_template/mixins/list2.js +411 -0
  479. package/src/views/bd/setting/form_template/mixins/otherAuthDialog.js +193 -0
  480. package/src/views/bd/setting/form_template/mixins/preformDialog.js +28 -3
  481. package/src/views/bd/setting/form_template/mixins/wf_list.js +421 -3
  482. package/src/views/bd/setting/form_template/otherAuthDialog.vue +83 -0
  483. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  484. package/src/views/bd/setting/form_template/wf_list.vue +161 -127
  485. package/src/views/bd/setting/logic_param/edit.vue +146 -0
  486. package/src/views/bd/setting/logic_param/edit1.vue +106 -0
  487. package/src/views/bd/setting/logic_param/edit2.vue +139 -0
  488. package/src/views/bd/setting/logic_param/list.vue +74 -0
  489. package/src/views/bd/setting/logic_param/list1.vue +12 -0
  490. package/src/views/bd/setting/logic_param/list2.vue +12 -0
  491. package/src/views/bd/setting/logic_param/mixins/edit.js +93 -0
  492. package/src/views/bd/setting/logic_param/mixins/list.js +376 -0
  493. package/src/views/bd/setting/menu_kind/list.vue +172 -83
  494. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +300 -7
  495. package/src/views/bd/setting/menu_kind/mixins/dialog.js +139 -1
  496. package/src/views/bd/setting/menu_kind/mixins/list.js +201 -1
  497. package/src/views/bd/setting/push_data/edit.vue +139 -0
  498. package/src/views/bd/setting/push_data/list.vue +283 -0
  499. package/src/views/bd/setting/push_data_h/edit.vue +153 -0
  500. package/src/views/bd/setting/push_data_h/list.vue +293 -0
  501. package/src/views/bd/setting/request_async_setting/edit.vue +320 -0
  502. package/src/views/bd/setting/request_async_setting/list.vue +372 -0
  503. package/src/views/bd/setting/request_setting/edit.vue +300 -0
  504. package/src/views/bd/setting/request_setting/list.vue +301 -0
  505. package/src/views/bd/setting/table_model/edit.vue +1079 -426
  506. package/src/views/bd/setting/table_model/list.vue +218 -128
  507. package/src/views/bd/setting/table_model/mixins/dialog.js +71 -1
  508. package/src/views/bd/setting/table_model/mixins/edit.js +1309 -13
  509. package/src/views/bd/setting/table_model/mixins/list.js +463 -2
  510. package/src/views/bd/setting/table_model/mixins/otherAuthDialog.js +201 -0
  511. package/src/views/bd/setting/table_model/mixins/zdDialog.js +114 -3
  512. package/src/views/bd/setting/table_model/otherAuthDialog.vue +83 -0
  513. package/src/views/bd/setting/utils/index.js +75 -1
  514. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  515. package/src/views/support/form-dialog-demo/index.vue +537 -0
  516. package/src/views/user/access_log/list.vue +418 -349
  517. package/src/views/user/area/dialog.vue +223 -117
  518. package/src/views/user/area/list.vue +318 -0
  519. package/src/views/user/commMenu/index.vue +2 -2
  520. package/src/views/user/common_attribute/list.vue +4 -1
  521. package/src/views/user/company_info/dialog.vue +195 -163
  522. package/src/views/user/extend_datasource/dialog.vue +3 -0
  523. package/src/views/user/extend_datasource/edit.vue +2 -1
  524. package/src/views/user/extend_datasource/list.vue +3 -0
  525. package/src/views/user/fieldTranslation/editDialog.vue +8 -8
  526. package/src/views/user/fieldTranslation/list.vue +33 -33
  527. package/src/views/user/form/vform/designer.vue +792 -749
  528. package/src/views/user/form/vform/formFieldMapping.js +2 -3
  529. package/src/views/user/form/vform/out_render.vue +1 -1
  530. package/src/views/user/form/vform/render.vue +65 -52
  531. package/src/views/user/form/view/edit.vue +56 -37
  532. package/src/views/user/form/view/list.vue +474 -54
  533. package/src/views/user/home/default.vue +1117 -979
  534. package/src/views/user/home/default2.vue +1158 -0
  535. package/src/views/user/home/dev.vue +29 -0
  536. package/src/views/user/home/index.vue +18 -7
  537. package/src/views/user/login/default.vue +165 -44
  538. package/src/views/user/login/index.vue +4 -6
  539. package/src/views/user/login/indexMixin.js +712 -418
  540. package/src/views/user/menu/list.vue +50 -1
  541. package/src/views/user/menuFallback/index.vue +123 -0
  542. package/src/views/user/notify_message/dialog.vue +44 -22
  543. package/src/views/user/notify_template/edit.vue +188 -187
  544. package/src/views/user/notify_template/edit2.vue +176 -0
  545. package/src/views/user/notify_template/list.vue +4 -1
  546. package/src/views/user/notify_template/list2.vue +190 -0
  547. package/src/views/user/outLink/form_view.vue +211 -211
  548. package/src/views/user/outLink/index.vue +64 -15
  549. package/src/views/user/position/list.vue +4 -4
  550. package/src/views/user/project_tag/dialog.vue +9 -4
  551. package/src/views/user/project_tag/edit.vue +2 -2
  552. package/src/views/user/project_tag/list.vue +9 -4
  553. package/src/views/user/request_setting/edit.vue +258 -0
  554. package/src/views/user/request_setting/list.vue +248 -0
  555. package/src/views/user/role/authConfig.vue +89 -0
  556. package/src/views/user/role/dialog.vue +70 -48
  557. package/src/views/user/role/edit.vue +609 -429
  558. package/src/views/user/role/list.vue +4 -4
  559. package/src/views/user/sale_org/dialog.vue +1 -1
  560. package/src/views/user/sale_org/list.vue +4 -1
  561. package/src/views/user/system_notice/infoDialog.vue +61 -1
  562. package/src/views/user/user/dialog.vue +46 -23
  563. package/src/views/user/user/edit.vue +1391 -1021
  564. package/src/views/user/user/form_dialog.vue +158 -0
  565. package/src/views/user/user/form_info.vue +210 -0
  566. package/src/views/user/user/info.vue +253 -140
  567. package/src/views/user/user/list.vue +652 -563
  568. package/src/views/user/user/modifyPasswordDialog.vue +64 -53
  569. package/src/views/user/wf/wfReport/index.vue +625 -0
  570. package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -0
  571. package/src/views/user/wf/wf_manage/list.vue +657 -256
  572. package/src/views/user/wf/wf_manage/list2.vue +854 -0
  573. package/src/views/user/wf/wf_manage/wfContentDialog.vue +25 -22
  574. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +109 -0
  575. package/src/views/user/wf/wf_obj_config/itemEdit.vue +25 -1
  576. package/src/views/user/wf/wf_obj_config/list.vue +114 -9
  577. package/src/views/user/wf/wf_transfer_setting/edit.vue +282 -0
  578. package/src/views/user/wf/wf_transfer_setting/list.vue +319 -0
  579. package/src/views/user/workbench_menu/list.vue +555 -0
  580. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1347
  581. package/src/utils/wf.js +0 -21
@@ -1 +1,185 @@
1
- (function(_0x142a1c,_0x9d09a5){function _0x5b6312(_0x2da541,_0x5c3d16,_0x51dbf3,_0x4eb56f,_0x4f48c4){return _0x5a60(_0x4eb56f-0xd8,_0x2da541);}function _0x1d685a(_0x5daa3c,_0x4c9fed,_0x4d7109,_0x477297,_0x3c5c0){return _0x12df(_0x4c9fed-0x95,_0x3c5c0);}function _0x46aa72(_0x37b41b,_0xe275c4,_0x3c0ca2,_0x1ae6ec,_0x3e3964){return _0x12df(_0xe275c4- -0x299,_0x37b41b);}function _0x2935a0(_0xdc1074,_0x379776,_0x158e5b,_0x93556,_0x4e02b3){return _0x12df(_0xdc1074-0x12c,_0x93556);}function _0x231477(_0x45a52c,_0x421c99,_0x2cd1d4,_0x48d22e,_0x4b8080){return _0x5a60(_0x48d22e- -0x291,_0x421c99);}const _0x4a21ab=_0x142a1c();function _0x33ed4f(_0x58765d,_0x288f95,_0x17539e,_0x1da1dd,_0x3862d1){return _0x5a60(_0x17539e-0x27e,_0x1da1dd);}function _0x29aa94(_0x420840,_0x4bf96e,_0x776a75,_0x87f814,_0x44aec7){return _0x5a60(_0x4bf96e-0x2f6,_0x776a75);}function _0x160c83(_0x206d6e,_0x26c8f0,_0x33e51c,_0x314c7a,_0x44d724){return _0x5a60(_0x33e51c- -0x30,_0x26c8f0);}while(!![]){try{const _0x4f8d98=-parseInt(_0x1d685a(0x141,0x109,0x11e,0x132,"oTrh".split("").reverse().join("")))/0x1*(-parseInt(_0x33ed4f(0x302,0x2bb,0x2f5,0x2d7,0x2f6))/0x2)+parseInt(_0x5b6312(0x172,0x119,0x13e,0x135,0x11c))/0x3+-parseInt(_0x5b6312(0x12d,0x115,0xf3,0x130,0x101))/0x4+parseInt(_0x2935a0(0x18b,0x16e,0x17f,"\u0071\u005e\u0037\u0052",0x191))/0x5*(parseInt(_0x33ed4f(0x316,0x307,0x2de,0x2a6,0x2cf))/0x6)+parseInt(_0x1d685a(0xef,0xc5,0x93,0xa5,"\u0077\u007a\u006c\u0032"))/0x7+parseInt(_0x231477(-0x231,-0x21d,-0x25f,-0x240,-0x21f))/0x8+-parseInt(_0x29aa94(0x2de,0x314,0x2f3,0x308,0x31b))/0x9;if(_0x4f8d98===_0x9d09a5){break;}else{_0x4a21ab["\u0070\u0075\u0073\u0068"](_0x4a21ab["\u0073\u0068\u0069\u0066\u0074"]());}}catch(_0x3bd401){_0x4a21ab["\u0070\u0075\u0073\u0068"](_0x4a21ab["\u0073\u0068\u0069\u0066\u0074"]());}}})(_0x1ea1,0x5b0e3);var _0x4e0017=0x1+0x9;const _0x1ab53e=Object["\u0070\u0072\u006f\u0074\u006f\u0074\u0079\u0070\u0065"]["\u0074\u006f\u0053\u0074\u0072\u0069\u006e\u0067"];function _0x1ea1(){const _0x460043=["OfMdpPWEuQW".split("").reverse().join(""),'WP7cMwhcT0lcISomqCopg8ofrCoYW6yLWRPN','w29IAMvJDcbszwDfEhbD',"qHd/ZxVk8q".split("").reverse().join(""),'wW5LWPtcVq',"m1qwLuz".split("").reverse().join(""),"G4WSj7W".split("").reverse().join(""),"Zj7WLO1IdduKcdfa".split("").reverse().join(""),"\u006b\u004c\u0052\u0063\u0054\u0043\u006b\u0067\u0057\u0050\u0054\u0067\u0057\u0037\u0034\u0046\u0057\u0035\u0068\u0063\u0050\u0033\u004b\u0034\u0079\u004b\u0052\u0064\u0048\u0038\u006b\u0074\u0072\u0047","8gAcLfs".split("").reverse().join(""),"uWRWToSw".split("").reverse().join(""),"\u007a\u0033\u0062\u0066\u0044\u0077\u0047","O7WfXQWqkCVchhF".split("").reverse().join(""),"qxASb3C".split("").reverse().join(""),"\u0044\u0067\u0076\u005a\u0044\u0061","\u0070\u0076\u0074\u0063\u0056\u0057","uhs3L0s".split("").reverse().join(""),'FSkjxmo+WOK',"\u0057\u004f\u007a\u0043\u0064\u0043\u006f\u0036\u0057\u0034\u0057","aAr1wu4Lfo4GtoYedn".split("").reverse().join(""),'FCoUW79brCo+WRz+',"\u006a\u0068\u0044\u0048\u0044\u0067\u006e\u004f","fkCOcdLi".split("").reverse().join(""),'iehdQSkCW7lcUHHuW5NdRKddKSkHWRDkWQG5',"aAZvhC".split("").reverse().join(""),"\u0043\u0068\u006a\u0056\u0044\u0067\u0039\u0030\u0045\u0078\u0062\u004c","\u0045\u004b\u0039\u007a\u0073\u0065\u0065","\u0057\u0050\u006c\u0063\u0048\u004e\u004a\u0063\u0052\u004b\u006c\u0063\u0049\u0053\u006f\u0041","\u0041\u0077\u0035\u004b\u007a\u0078\u0048\u0070\u007a\u0047","8omSdNva+k8r".split("").reverse().join(""),"\u0057\u0036\u0075\u004c\u006c\u0071\u006d","\u006a\u0067\u0072\u004c\u0043\u0033\u0072\u0059\u0042\u0033\u004b",'W6lcNHRdRCkt',"u3sJPNt".split("").reverse().join(""),"m0ClfMALHtn2qtoXitm".split("").reverse().join(""),"\u0070\u006d\u006b\u0055\u0057\u0051\u004e\u0063\u004e\u0062\u006d",'W4n/tSkwW7S','W5lcLbhdI8kmr8oz','WO8NtK3cPG','uM96Bvy',"\u0043\u0067\u0066\u0030\u0041\u0061",'CGNdNs7dGIhcTCoY','WRJcU8kzjCkSW55w',"KahZjQW+KQWuo8i7kSuf1Mi".split("").reverse().join(""),"\u0075\u0077\u007a\u0049\u0042\u0066\u0079","CfDYzLv".split("").reverse().join(""),"\u007a\u0032\u0050\u0064\u0041\u0078\u004b","\u0044\u0043\u006f\u0074\u007a\u0038\u006f\u0055","0dp7oCEmo8h".split("").reverse().join(""),'WONcUt5fyG',"aLBT52r".split("").reverse().join(""),'twnrBMW','WRyNWPGBW4rjD8o6b8o5ySovW4O',"ZG6WmkmOdhQW".split("").reverse().join(""),"qIcx7W7omDykCMdRxIch7WDzPWiyQW".split("").reverse().join(""),'DgfN','W78cqcTd',"\u0079\u0076\u0076\u0048\u0043\u0066\u0043",'cKhcT8ke',"\u0057\u0050\u004a\u0063\u004e\u0067\u006c\u0063\u0051\u0047",'WRxcPW7cUmoncMqUW5RdL8oWWOeiWQC',"CRWvkCRd7Zk".split("").reverse().join(""),"0wtYrNB".split("").reverse().join(""),'vM3cQCo+sG','W41vu8ki','jhjVDxrL',"avunKDsbvm".split("").reverse().join(""),"GKctfIcRPWvS6WHifhGoSHcpRW0kSPcd6Wca5W".split("").reverse().join(""),'DMRdKM4+','y29TCg9Uzw50sw5ZDgfUy2u',"9o8yio8f".split("").reverse().join(""),"Zr3BSnhj".split("").reverse().join(""),"\u0041\u0030\u0035\u006d\u007a\u0065\u0038","LzxASfeCLv2A".split("").reverse().join(""),'eSodBCoVW7pdNdtcMq','AxnbCNjHEq','y3jLyxrL',"1oSvUoCp7bMe".split("").reverse().join(""),"04W0o8fRkCy".split("").reverse().join(""),"\u0057\u0036\u0071\u0056\u0041\u0059\u0050\u006a\u0071\u0053\u006f\u0077\u007a\u0043\u006b\u0063\u0070\u006d\u006b\u0041\u0065\u0053\u006f\u0050\u0045\u006d\u006b\u0032\u0063\u0071","\u0043\u0032\u0035\u0070\u0075\u0067\u0057","e1sHLxu".split("").reverse().join(""),'vmkUqCodWO0p',"qzKvhBJ5wA".split("").reverse().join(""),'BMHTvLe',"Gy6HeAxPeo2udo5aJm".split("").reverse().join(""),"N5wAYr3C".split("").reverse().join(""),'F8kqFta',"4fwB".split("").reverse().join(""),"aIdFRW/9toWomegomJcdMLdpOW".split("").reverse().join(""),"\u0077\u0058\u0076\u0068\u0057\u0051\u004e\u0063\u0050\u0047","0euOD1q".split("").reverse().join(""),"\u006d\u0074\u0061\u0031\u006e\u004a\u004b\u0035\u006e\u004c\u006a\u0069\u0044\u0032\u0050\u0053\u0075\u0047","exwd9Ku".split("").reverse().join(""),"\u0074\u0067\u0066\u0070\u0076\u0077\u0038","qzKvhBJHxz".split("").reverse().join(""),"Lr2BUz3x".split("").reverse().join(""),'mtKWmdiZm2TPugDxsa',"\u0077\u0068\u0076\u004b\u0045\u0078\u0043",'WPK5rSo/iqdcLG',"fjNAV1esWKto2aJn".split("").reverse().join(""),"eQW20RWOLOW".split("").reverse().join(""),"rk8Ud3eTdx4W".split("").reverse().join(""),"\u0057\u0035\u0047\u004a\u0057\u0034\u0068\u0063\u0053\u0053\u006b\u0075","aClomTcFPWoKQW8kmMdN4W/1txuoCSdRfSd/6W".split("").reverse().join(""),"\u0043\u0030\u0044\u0068\u0071\u0032\u004f",'yxn5BMngywn0B3j5',"\u0057\u0036\u006d\u0055\u0069\u0061\u0042\u0063\u004b\u0061","\u0042\u0067\u0076\u0055\u007a\u0033\u0072\u004f","aBSf2y".split("").reverse().join(""),"e1zojfA".split("").reverse().join(""),"qzTfMB".split("").reverse().join(""),"qCIo8pXT2f".split("").reverse().join(""),"SoSmL8RWpoSUcN2GdFQWHG5WPy4WIo8aszOW".split("").reverse().join(""),"\u0068\u0053\u006b\u0055\u0057\u0050\u0068\u0063\u0047\u0049\u0048\u0038\u0046\u006d\u006b\u0051\u0075\u0075\u0043\u0047\u0057\u0037\u0074\u0063\u004e\u0048\u0078\u0063\u0047\u0048\u0038","ukSFMo8cbqcF".split("").reverse().join(""),'seDAALi','A2v5CW','y29TCg9Uzw50t3b0Aw9UCW',"\u0071\u0043\u006b\u0066\u0061\u0065\u006c\u0064\u0047\u0047",'W6VdVr/dN8kjbCoo',"iLwUd7wz".split("").reverse().join(""),'WPdcL3q',"ADhv6neu2GtnWedo".split("").reverse().join(""),"\u0067\u0077\u0037\u0063\u0048\u0065\u0033\u0064\u004c\u0061","K0AvnNC".split("").reverse().join(""),"\u0045\u006d\u006b\u0078\u006a\u0038\u006f\u0053\u0057\u0034\u0030"];_0x1ea1=function(){return _0x460043;};return _0x1ea1();}function _0x5a60(_0x1499fe,_0x1ea1bf){const _0x5a6037=_0x1ea1();_0x5a60=function(_0x542f19,_0x4ae0bd){_0x542f19=_0x542f19-0x0;let _0x54dad4=_0x5a6037[_0x542f19];if(_0x5a60['rSQnWN']===undefined){var _0x144eb9=function(_0x5ea7bc){const _0x34f729="=/+9876543210ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba".split("").reverse().join("");let _0x3dab6d='';let _0x21f6de='';for(let _0x51882d=0x0,_0x1ddd63,_0x8f9161,_0x20dce6=0x0;_0x8f9161=_0x5ea7bc['charAt'](_0x20dce6++);~_0x8f9161&&(_0x1ddd63=_0x51882d%0x4?_0x1ddd63*0x40+_0x8f9161:_0x8f9161,_0x51882d++%0x4)?_0x3dab6d+=String['fromCharCode'](0xff&_0x1ddd63>>(-0x2*_0x51882d&0x6)):0x0){_0x8f9161=_0x34f729['indexOf'](_0x8f9161);}for(let _0x561a5c=0x0,_0x41c15f=_0x3dab6d["\u006c\u0065\u006e\u0067\u0074\u0068"];_0x561a5c<_0x41c15f;_0x561a5c++){_0x21f6de+='%'+('00'+_0x3dab6d['charCodeAt'](_0x561a5c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x21f6de);};_0x5a60['qqouQI']=_0x144eb9;_0x1499fe=arguments;_0x5a60['rSQnWN']=!![];}const _0x468789=_0x5a6037[0x0];const _0x1367d2=_0x542f19+_0x468789;const _0x12df27=_0x1499fe[_0x1367d2];if(!_0x12df27){_0x54dad4=_0x5a60['qqouQI'](_0x54dad4);_0x1499fe[_0x1367d2]=_0x54dad4;}else{_0x54dad4=_0x12df27;}return _0x54dad4;};return _0x5a60(_0x1499fe,_0x1ea1bf);}_0x4e0017=0x4+0x8;function _0x4a0a4c(_0x3cfd72){const _0x7f0689={'VNGjy':function(_0x632108,_0x3d0cfc){return _0x632108===_0x3d0cfc;}};function _0xba1cf3(_0x40e444,_0x332111,_0x433e8e,_0x5cab0e,_0x3d5a7b){return _0x5a60(_0x40e444- -0x63,_0x332111);}return _0x7f0689['VNGjy'](_0x1ab53e['call'](_0x3cfd72),_0xba1cf3(0x1a,-0x10,0x22,0x48,-0x14));}export function remove(_0x24aadb,_0x381ea3){function _0x2dc1f8(_0x1dd510,_0x1cc1a6,_0x23f55e,_0x45388b,_0x21d270){return _0x12df(_0x23f55e-0x2e4,_0x21d270);}function _0x1a6a79(_0x516874,_0x16b871,_0x62af57,_0x608bc,_0x4dbd28){return _0x12df(_0x62af57-0x1ab,_0x16b871);}function _0x3c5f66(_0xad32ca,_0x35bb79,_0x2d15f9,_0x1b93d6,_0x134167){return _0x5a60(_0x35bb79- -0x1dc,_0xad32ca);}const _0x1c0140={"\u006e\u0074\u0072\u004d\u006d":function(_0x82a005,_0x10abbf,_0x2d81d4){return _0x82a005(_0x10abbf,_0x2d81d4);},'McQnl':function(_0x348788,_0x1afe47,_0x3d35ed,_0x4d0889,_0x133602){return _0x348788(_0x1afe47,_0x3d35ed,_0x4d0889,_0x133602);},'Xudyw':function(_0xc99c4e,_0x5366bb){return _0xc99c4e>_0x5366bb;},'tJpeH':function(_0x15c249,_0x4af630){return _0x15c249^_0x4af630;}};function _0x1b8964(_0x3ed290,_0x34b2d7,_0x1b50f4,_0x446933,_0x55a1e8){return _0x5a60(_0x34b2d7- -0x352,_0x1b50f4);}function _0x1a0d28(_0x2b20fc,_0x43cba6,_0x50bff2,_0xc9a37a,_0x498081){return _0x12df(_0x50bff2-0x164,_0xc9a37a);}if(_0x24aadb['length']){if(_0x3c5f66(-0x15f,-0x190,-0x1c3,-0x16c,-0x153)!==_0x1a0d28(0x1b7,0x1a3,0x1a4,'#YAJ',0x1d0)){const _0x30863a=_0x24aadb["\u0069\u006e\u0064\u0065\u0078\u004f\u0066"](_0x381ea3);if(_0x1c0140['Xudyw'](_0x30863a,-(0xc74dc^0xc74dd))){if(_0x1a6a79(0x20d,'so7l',0x1e6,0x1a9,0x1ed)!==_0x3c5f66(-0x172,-0x1b2,-0x1e6,-0x18d,-0x1c2)){return _0x24aadb["\u0073\u0070\u006c\u0069\u0063\u0065"](_0x30863a,_0x1c0140["\u0074\u004a\u0070\u0065\u0048"](0x39a42,0x39a43));}else{_0xd26bc6['componentInstance']=_0x3a73f6[_0x423661]['componentInstance'];_0x1c0140["\u006e\u0074\u0072\u004d\u006d"](_0x2fb7c0,_0x2f6488,_0x456033);_0x149359['push'](_0x4d08ee);}}}else{const{cache:_0x3be481,keys:_0x286ccd,_vnode:_0x9497}=_0x2b1b0c;for(const _0x4e530a in _0x3be481){const _0x5927ed=_0x3be481[_0x4e530a];if(_0x5927ed){var _0x26d77c=0x6+0x0;const _0x4a4ed2=_0x4e530a;_0x26d77c=_0x1a0d28(0x19e,0x176,0x17e,"arfh".split("").reverse().join(""),0x17e);if(_0x4a4ed2&&!_0x560e66(_0x4a4ed2)){_0x1c0140['McQnl'](_0x1ebe8d,_0x3be481,_0x4e530a,_0x286ccd,_0x9497);}}}}}}function _0x953bd0(_0x3fba29){return this['$route']['path'];}function _0x12df(_0x1499fe,_0x1ea1bf){const _0x5a6037=_0x1ea1();_0x12df=function(_0x542f19,_0x4ae0bd){_0x542f19=_0x542f19-0x0;let _0x54dad4=_0x5a6037[_0x542f19];if(_0x12df["\u0078\u0075\u004a\u0079\u004d\u0075"]===undefined){var _0x144eb9=function(_0x34f729){const _0x3dab6d="=/+9876543210ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba".split("").reverse().join("");let _0x21f6de='';let _0x51882d='';for(let _0x1ddd63=0x0,_0x8f9161,_0x20dce6,_0x561a5c=0x0;_0x20dce6=_0x34f729['charAt'](_0x561a5c++);~_0x20dce6&&(_0x8f9161=_0x1ddd63%0x4?_0x8f9161*0x40+_0x20dce6:_0x20dce6,_0x1ddd63++%0x4)?_0x21f6de+=String["\u0066\u0072\u006f\u006d\u0043\u0068\u0061\u0072\u0043\u006f\u0064\u0065"](0xff&_0x8f9161>>(-0x2*_0x1ddd63&0x6)):0x0){_0x20dce6=_0x3dab6d['indexOf'](_0x20dce6);}for(let _0x41c15f=0x0,_0xcfed28=_0x21f6de['length'];_0x41c15f<_0xcfed28;_0x41c15f++){_0x51882d+="\u0025"+('00'+_0x21f6de['charCodeAt'](_0x41c15f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51882d);};const _0x5ea7bc=function(_0x5866ba,_0x23f235){let _0x7fed9=[],_0xd5b3e4=0x0,_0x53253e,_0x45a2e1='';_0x5866ba=_0x144eb9(_0x5866ba);let _0x3c9f89;for(_0x3c9f89=0x0;_0x3c9f89<0x100;_0x3c9f89++){_0x7fed9[_0x3c9f89]=_0x3c9f89;}for(_0x3c9f89=0x0;_0x3c9f89<0x100;_0x3c9f89++){_0xd5b3e4=(_0xd5b3e4+_0x7fed9[_0x3c9f89]+_0x23f235['charCodeAt'](_0x3c9f89%_0x23f235['length']))%0x100;_0x53253e=_0x7fed9[_0x3c9f89];_0x7fed9[_0x3c9f89]=_0x7fed9[_0xd5b3e4];_0x7fed9[_0xd5b3e4]=_0x53253e;}_0x3c9f89=0x0;_0xd5b3e4=0x0;for(let _0x3524ab=0x0;_0x3524ab<_0x5866ba['length'];_0x3524ab++){_0x3c9f89=(_0x3c9f89+0x1)%0x100;_0xd5b3e4=(_0xd5b3e4+_0x7fed9[_0x3c9f89])%0x100;_0x53253e=_0x7fed9[_0x3c9f89];_0x7fed9[_0x3c9f89]=_0x7fed9[_0xd5b3e4];_0x7fed9[_0xd5b3e4]=_0x53253e;_0x45a2e1+=String['fromCharCode'](_0x5866ba['charCodeAt'](_0x3524ab)^_0x7fed9[(_0x7fed9[_0x3c9f89]+_0x7fed9[_0xd5b3e4])%0x100]);}return _0x45a2e1;};_0x12df["\u0048\u0079\u0061\u0061\u0044\u0051"]=_0x5ea7bc;_0x1499fe=arguments;_0x12df['xuJyMu']=!![];}const _0x468789=_0x5a6037[0x0];const _0x1367d2=_0x542f19+_0x468789;const _0x12df27=_0x1499fe[_0x1367d2];if(!_0x12df27){if(_0x12df['GAzICx']===undefined){_0x12df['GAzICx']=!![];}_0x54dad4=_0x12df['HyaaDQ'](_0x54dad4,_0x4ae0bd);_0x1499fe[_0x1367d2]=_0x54dad4;}else{_0x54dad4=_0x12df27;}return _0x54dad4;};return _0x12df(_0x1499fe,_0x1ea1bf);}function _0x4bfc98(_0x126461){return _0x126461!==undefined&&_0x126461!==null;}function _0x212dd7(_0x470997){return _0x470997['isComment']&&_0x470997['asyncFactory'];}function _0x24f9a7(_0x2d9aeb){function _0x1234f8(_0x6cd614,_0x4d7009,_0x151c57,_0xf1fd21,_0x1f754a){return _0x12df(_0x4d7009-0x61,_0x6cd614);}const _0x5e1d9d={'TfGNC':function(_0x15411b,_0x508838){return _0x15411b===_0x508838;}};function _0x3f7fc3(_0x4ca28c,_0x18b8cf,_0xbcf2e0,_0x207f50,_0x3e729a){return _0x5a60(_0x3e729a- -0x97,_0xbcf2e0);}if(Array['isArray'](_0x2d9aeb)){if(_0x5e1d9d["\u0054\u0066\u0047\u004e\u0043"](_0x1234f8('5M@&',0x8e,0x80,0x96,0x7e),_0x3f7fc3(-0xc5,-0x4c,-0x8f,-0x65,-0x8b))){return _0x4b1e0f['indexOf'](_0xb28135)>-(0x8ff08^0x8ff09);}else{for(let _0x52f298=0x67448^0x67448;_0x52f298<_0x2d9aeb['length'];_0x52f298++){const _0x25bf79=_0x2d9aeb[_0x52f298];if(_0x4bfc98(_0x25bf79)&&(_0x4bfc98(_0x25bf79['componentOptions'])||_0x212dd7(_0x25bf79))){return _0x25bf79;}}}}}function _0x38b023(_0x20a18a,_0x261aab){function _0x41a7c8(_0x40f5a8,_0x3a11c0,_0x228cfd,_0x3c240b,_0x50a6b9){return _0x5a60(_0x3a11c0- -0x396,_0x3c240b);}const _0x38335f={'YQImX':function(_0x4ad3ee,_0x3236a4){return _0x4ad3ee^_0x3236a4;},'LaOUo':_0x41a7c8(-0x33d,-0x344,-0x376,-0x33d,-0x332),"\u006d\u004b\u0071\u0072\u0078":function(_0x4b57f9,_0x2d3e78){return _0x4b57f9^_0x2d3e78;},'zOYHA':function(_0x29ecab,_0x207de6){return _0x29ecab(_0x207de6);}};if(Array['isArray'](_0x20a18a)){return _0x20a18a["\u0069\u006e\u0064\u0065\u0078\u004f\u0066"](_0x261aab)>-_0x38335f['YQImX'](0x8ff08,0x8ff09);}else if(typeof _0x20a18a===_0x38335f['LaOUo']){return _0x20a18a['split'](',')['indexOf'](_0x261aab)>-_0x38335f['mKqrx'](0x6bfd9,0x6bfd8);}else if(_0x38335f['zOYHA'](_0x4a0a4c,_0x20a18a)){return _0x20a18a['test'](_0x261aab);}return![];}function _0x50d224(_0x4ac227,_0x326b8e){function _0x4799aa(_0x40a62,_0x129495,_0x247d97,_0x331d3d,_0x4f1d95){return _0x5a60(_0x129495- -0x327,_0x331d3d);}function _0x32b924(_0x3d7a54,_0x35bca1,_0x9d2a1a,_0x526790,_0x57895d){return _0x12df(_0x3d7a54- -0x1b7,_0x526790);}function _0x2b7307(_0x27f82e,_0x5837fe,_0xe07334,_0xb9e517,_0x576e8e){return _0x12df(_0xe07334- -0x33c,_0xb9e517);}function _0x4019bb(_0x1c9387,_0x33ddc1,_0x3a4da0,_0x1934f7,_0x273807){return _0x5a60(_0x273807- -0x3ce,_0x1c9387);}function _0x533386(_0x40dcce,_0x5c0c72,_0xb5e4a5,_0x536720,_0x38bcfd){return _0x12df(_0x5c0c72-0x111,_0xb5e4a5);}const{cache:_0x11b064,keys:_0x31e159,_vnode:_0x267df9}=_0x4ac227;for(const _0x5d505b in _0x11b064){const _0x384944=_0x11b064[_0x5d505b];if(_0x384944){if(_0x32b924(-0x144,-0x112,-0x13d,'ASJE',-0x133)===_0x4019bb(-0x3c7,-0x3ad,-0x375,-0x3bc,-0x3a5)){return _0x371094['test'](_0x321408);}else{var _0x2bb469=0x6+0x0;const _0x4c6ca5=_0x5d505b;_0x2bb469=_0x533386(0x102,0x117,"9o)s".split("").reverse().join(""),0xf4,0x103);if(_0x4c6ca5&&!_0x326b8e(_0x4c6ca5)){if(_0x4019bb(-0x360,-0x39a,-0x38e,-0x38d,-0x375)!==_0x32b924(-0x156,-0x171,-0x143,"AnH2".split("").reverse().join(""),-0x193)){_0x5010ab(_0x4230af,_0x13115e,_0x16a424,_0x2af6f3);}else{_0x9a223e(_0x11b064,_0x5d505b,_0x31e159,_0x267df9);}}}}}}function _0x9a223e(_0x22f048,_0x295ec9,_0x38f9a9,_0xe12fbf){const _0x1dd711={'YJkPC':function(_0x4970d8,_0x36d55c){return _0x4970d8!==_0x36d55c;}};var _0xd3bb29=0x0+0x9;const _0x3e80f1=_0x22f048[_0x295ec9];_0xd3bb29=0x0;if(_0x3e80f1&&(!_0xe12fbf||_0x1dd711["\u0059\u004a\u006b\u0050\u0043"](_0x3e80f1['tag'],_0xe12fbf['tag']))){_0x3e80f1["\u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065"]['$destroy']();}_0x22f048[_0x295ec9]=null;remove(_0x38f9a9,_0x295ec9);}function _0x489ad5(_0x29342d,_0x3f1b0c,_0x4ec6ab,_0x3c55d4,_0x900a24){return _0x12df(_0x29342d- -0xde,_0x3c55d4);}const _0x326112=[String,RegExp,Array];export default{'name':_0x489ad5(-0x7a,-0x8c,-0xb7,"bOas".split("").reverse().join(""),-0xb0),'props':{'include':_0x326112,'exclude':_0x326112,'max':[String,Number]},'created'(){this['cache']=Object["\u0063\u0072\u0065\u0061\u0074\u0065"](null);this['keys']=[];},'destroyed'(){function _0x57fd5f(_0x22579b,_0x5e8ae4,_0x4644ad,_0x88894c,_0x40b94d){return _0x12df(_0x4644ad-0x2f,_0x5e8ae4);}const _0x1868e5={'nhmVQ':_0x57fd5f(0x29,"arfh".split("").reverse().join(""),0x49,0x29,0x75),'pMRAV':function(_0x2e1389,_0x52ef4e){return _0x2e1389(_0x52ef4e);},'GnmnP':function(_0x135bec,_0x236a57,_0x39fd7a,_0x32896b,_0x4f9c9f){return _0x135bec(_0x236a57,_0x39fd7a,_0x32896b,_0x4f9c9f);},'HGZjR':_0x57fd5f(0x91,'D&in',0x79,0xa2,0xb9),'rsUkI':_0x46d645(-0x183,-0x167,-0x16b,-0x196,-0x130)};function _0x46d645(_0x4df327,_0x8647f4,_0x5d1288,_0x2c2f93,_0x1091f8){return _0x5a60(_0x8647f4- -0x184,_0x2c2f93);}function _0x579066(_0x2e3a2e,_0x96ae4f,_0x1baf2f,_0x204215,_0x20250b){return _0x12df(_0x2e3a2e-0x7f,_0x204215);}for(const _0x2854b7 in this['cache']){if(_0x1868e5['HGZjR']!==_0x1868e5['rsUkI']){_0x9a223e(this["\u0063\u0061\u0063\u0068\u0065"],_0x2854b7,this['keys']);}else{var _0x261af1=0x6+0x0;const _0x3c6dac=_0x1ac0ac;_0x261af1=_0x1868e5['nhmVQ'];if(_0x3c6dac&&!_0x1868e5['pMRAV'](_0x491386,_0x3c6dac)){_0x1868e5['GnmnP'](_0xc10019,_0x3a67bc,_0x5d9834,_0x10e17a,_0x4a9d63);}}}},'mounted'(){function _0x1fbf3f(_0x335363,_0x3e5768,_0x3cc695,_0x4c343c,_0x75fe16){return _0x5a60(_0x75fe16- -0x72,_0x335363);}const _0x31cfdf={"\u006b\u004e\u004c\u0064\u004f":_0x1fbf3f(-0xf,-0x60,-0x1f,-0x81,-0x4f),'eIVCS':_0x52422c(-0x163,-0x14a,-0x14e,-0x131,-0x151),"\u0067\u0070\u0045\u0075\u0068":_0x52422c(-0x17d,-0x13e,-0x168,-0x160,-0x110)};this['$watch'](_0x31cfdf['eIVCS'],_0x310abd=>{function _0x35b292(_0x5a5702,_0x3f9f42,_0x28b882,_0x2d9692,_0x41e31a){return _0x12df(_0x3f9f42-0x3be,_0x5a5702);}function _0x1e3e44(_0x418980,_0x191223,_0x44bcb3,_0x248133,_0x2ff8d8){return _0x5a60(_0x248133- -0x63,_0x2ff8d8);}if(_0x35b292('saOb',0x420,0x42c,0x43b,0x436)!==_0x1e3e44(-0xe,0x20,-0x3f,-0xc,0x16)){_0x50d224(this,_0x16002f=>_0x38b023(_0x310abd,_0x16002f));}else{_0x230361["\u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065"]['$destroy']();}});function _0x52422c(_0x346577,_0x212b1f,_0x19bf87,_0x53e468,_0x4db5aa){return _0x5a60(_0x212b1f- -0x199,_0x53e468);}function _0x2b2586(_0x5219b1,_0x540148,_0xc95fab,_0x5c9a77,_0x264753){return _0x5a60(_0x264753-0x16b,_0x5219b1);}this['$watch'](_0x31cfdf['gpEuh'],_0x2fdcd6=>{const _0x2ca365={"\u0048\u0059\u0042\u0068\u006f":function(_0x4cc5ab,_0xc96129){return _0x4cc5ab+_0xc96129;}};function _0x4b9741(_0x2e41b9,_0x22bc7c,_0x9764b4,_0x220d14,_0x248288){return _0x12df(_0x220d14- -0x24f,_0x248288);}if(_0x31cfdf["\u006b\u004e\u004c\u0064\u004f"]===_0x31cfdf['kNLdO']){_0x50d224(this,_0x41e579=>!_0x38b023(_0x2fdcd6,_0x41e579));}else{const _0x398b7d=_0x2675e1[_0x42b555];if(_0x398b7d){var _0x31eb16=_0x2ca365['HYBho'](0x6,0x0);const _0x2eb645=_0x179848;_0x31eb16=_0x4b9741(-0x1e7,-0x1f1,-0x233,-0x218,'Wp]d');if(_0x2eb645&&!_0x2cb856(_0x2eb645)){_0x717ac5(_0x3fe2d0,_0x52720f,_0x1d9feb,_0xc9778e);}}}});},'render'(){const _0x40d5ea={'QfblV':function(_0x3dd18b,_0x5525c8,_0x178246){return _0x3dd18b(_0x5525c8,_0x178246);},'hRNgQ':function(_0x904593,_0xf08041){return _0x904593!==_0xf08041;},'aUapW':function(_0x5bc64b,_0x65b89e){return _0x5bc64b(_0x65b89e);},'afOLm':function(_0x1096ce,_0x1083a4){return _0x1096ce!==_0x1083a4;},'YWqTg':_0x510d0c(-0x251,-0x251,-0x27c,-0x24c,-0x254),'sGGCj':function(_0x1a9ee4,_0x8fe38c){return _0x1a9ee4===_0x8fe38c;},'AoUnT':_0x52f257("aqWR".split("").reverse().join(""),-0x108,-0x122,-0x12b,-0x114)};function _0x2ef477(_0x19de9c,_0x289853,_0x4c472e,_0x773ed3,_0x1f8551){return _0x12df(_0x289853-0x240,_0x4c472e);}var _0x522ebb;const _0x4a545a=this['$slots']['default'];function _0x1ce50a(_0x422668,_0x642575,_0x20bc37,_0x80d34c,_0x128979){return _0x12df(_0x80d34c-0x362,_0x20bc37);}function _0x52f257(_0x3556de,_0x54a83c,_0x59cd17,_0x18b3b1,_0x3375aa){return _0x12df(_0x54a83c- -0x180,_0x3556de);}_0x522ebb=0x9+0x9;function _0x510d0c(_0x2ce5ff,_0x12898b,_0x4bbd85,_0x53ee04,_0x54d51d){return _0x5a60(_0x12898b- -0x29e,_0x54d51d);}function _0x91bfb0(_0xa5d3ec,_0x23bf1f,_0x2b0ff4,_0x1fe07a,_0x13ced2){return _0x5a60(_0xa5d3ec- -0x3cd,_0x13ced2);}var _0xa9717d=0x6+0x0;const _0x5d348d=_0x40d5ea["\u0061\u0055\u0061\u0070\u0057"](_0x24f9a7,_0x4a545a);_0xa9717d=_0x1ce50a(0x3d5,0x397,"*(!j".split("").reverse().join(""),0x3b5,0x3c6);function _0x36b57e(_0x1af4c8,_0x2d8e2b,_0x4585ef,_0x524d42,_0x5ba662){return _0x12df(_0x5ba662- -0x1b8,_0x2d8e2b);}function _0x292215(_0x1baa4f,_0x12aac8,_0x507430,_0x2edef9,_0x238f64){return _0x12df(_0x238f64-0x257,_0x1baa4f);}const _0x3d8141=_0x5d348d&&_0x5d348d['componentOptions'];if(_0x3d8141){if(_0x40d5ea['afOLm'](_0x1ce50a(0x392,0x38b,'%XPT',0x37e,0x398),_0x36b57e(-0x175,'t)M8',-0x145,-0x16c,-0x13d))){var _0x321af8=0x0+0x9;const _0x9fab30=_0x902cce[_0x2df87f];_0x321af8=0x0;if(_0x9fab30&&(!_0x454eba||_0x9fab30['tag']!==_0x4444c4['tag'])){_0x9fab30['componentInstance']["\u0024\u0064\u0065\u0073\u0074\u0072\u006f\u0079"]();}_0xbce3f8[_0x2b419c]=null;_0x40d5ea['QfblV'](_0x33efee,_0x4da192,_0x400b51);}else{var _0x339c9c;const _0x24a637=_0x953bd0['call'](this,_0x3d8141);_0x339c9c=0x5+0x8;if(!_0x3d8141['Ctor']['options']["\u006e\u0061\u006d\u0065"]){_0x5d348d['componentOptions']['Ctor']['options']['name'];}const{include:_0xf5cd6b,exclude:_0x4a320e}=this;if(_0xf5cd6b&&(!_0x24a637||!_0x38b023(_0xf5cd6b,_0x24a637))||_0x4a320e&&_0x24a637&&_0x38b023(_0x4a320e,_0x24a637)){return _0x5d348d;}const{cache:_0x23a37e,keys:_0xc5687e}=this;const _0x5ed87e=_0x24a637;if(_0x23a37e[_0x5ed87e]){if(_0x40d5ea['hRNgQ'](_0x91bfb0(-0x380,-0x3b6,-0x381,-0x344,-0x381),_0x40d5ea['YWqTg'])){return _0x242910!==_0x58300e&&_0x40d5ea["\u0068\u0052\u004e\u0067\u0051"](_0x30e8ab,null);}else{_0x5d348d['componentInstance']=_0x23a37e[_0x5ed87e]["\u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065"];remove(_0xc5687e,_0x5ed87e);_0xc5687e['push'](_0x5ed87e);}}else{if(_0x40d5ea['sGGCj'](_0x40d5ea['AoUnT'],_0x292215('QkT2',0x252,0x28a,0x2a3,0x28b))){return _0x235ad4["\u0073\u0070\u006c\u0069\u0063\u0065"](_0x269a80,0x39a42^0x39a43);}else{_0x23a37e[_0x5ed87e]=_0x5d348d;_0xc5687e['push'](_0x5ed87e);if(this['max']&&_0xc5687e["\u006c\u0065\u006e\u0067\u0074\u0068"]>parseInt(this['max'])){_0x9a223e(_0x23a37e,_0xc5687e[0xdd45a^0xdd45a],_0xc5687e,this['_vnode']);}}}_0x5d348d["\u0064\u0061\u0074\u0061"]['keepAlive']=!![];}}return _0x5d348d||_0x4a545a&&_0x4a545a[0x377bb^0x377bb];}};
1
+ /**
2
+ * base-keep-alive 主要解决问题场景:多级路由缓存;缓存同一个组件不同的页面,如何移除某个页面时不影响其他同组件的页面
3
+ * 前提:保证动态路由生成的route name 值都声明了且唯一
4
+ * 基于以上对keep-alive进行以下改造:
5
+ * 1. 组件名称获取更改为路由名称
6
+ * 2. cache缓存key也更改为路由名称
7
+ * 3. pruneCache
8
+ */
9
+ import { viewKey } from "@base/utils/repeatOpen"
10
+
11
+ const _toString = Object.prototype.toString
12
+
13
+ function isRegExp(v) {
14
+ return _toString.call(v) === '[object RegExp]'
15
+ }
16
+ export function remove(arr, item) {
17
+ if (arr.length) {
18
+ const index = arr.indexOf(item)
19
+ if (index > -1) {
20
+ return arr.splice(index, 1)
21
+ }
22
+ }
23
+ }
24
+ /**
25
+ * 1. 主要更改了 name 值获取的规则
26
+ * @param {*} opts
27
+ */
28
+ function getComponentName(opts) {
29
+ // return opts && (opts.Ctor.options.name || opts.tag)
30
+ // 缓存键与 tagsView 的 cachedViews 保持一致:可重复打开的路由按 fullPath
31
+ // 各自独立缓存,其余仍按 path,行为与原来一致。
32
+ return viewKey(this.$route)
33
+ }
34
+
35
+ function isDef(v) {
36
+ return v !== undefined && v !== null
37
+ }
38
+
39
+ function isAsyncPlaceholder(node) {
40
+ return node.isComment && node.asyncFactory
41
+ }
42
+
43
+ function getFirstComponentChild(children) {
44
+ if (Array.isArray(children)) {
45
+ for (let i = 0; i < children.length; i++) {
46
+ const c = children[i]
47
+ if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
48
+ return c
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ function matches(pattern, name) {
55
+ if (Array.isArray(pattern)) {
56
+ return pattern.indexOf(name) > -1
57
+ } else if (typeof pattern === 'string') {
58
+ return pattern.split(',').indexOf(name) > -1
59
+ } else if (isRegExp(pattern)) {
60
+ return pattern.test(name)
61
+ }
62
+ /* istanbul ignore next */
63
+ return false
64
+ }
65
+
66
+ function pruneCache(keepAliveInstance, filter) {
67
+ //console.log("🚀 ~ file: keepalive.js:58 ~ pruneCache ~ keepAliveInstance, filter:", keepAliveInstance, filter)
68
+ const {
69
+ cache,
70
+ keys,
71
+ _vnode
72
+ } = keepAliveInstance
73
+ for (const key in cache) {
74
+ const cachedNode = cache[key]
75
+ if (cachedNode) {
76
+ // ------------ 3. 之前默认从router-view取储存key值, 现在改为路由name, 所以这里得改成当前key
77
+ // const name = getComponentName.call(keepAliveInstance, cachedNode.componentOptions)
78
+ const name = key
79
+ if (name && !filter(name)) {
80
+ pruneCacheEntry(cache, key, keys, _vnode)
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ function pruneCacheEntry(
87
+ cache,
88
+ key,
89
+ keys,
90
+ current
91
+ ) {
92
+ const cached = cache[key]
93
+ if (cached && (!current || cached.tag !== current.tag)) {
94
+ cached.componentInstance.$destroy()
95
+ }
96
+ cache[key] = null
97
+ remove(keys, key)
98
+ }
99
+
100
+ const patternTypes = [String, RegExp, Array]
101
+
102
+ export default {
103
+ name: 'keep-alive-custom', // 名称最好改一下,不要与原keep-alive一致
104
+ // abstract: true,
105
+ props: {
106
+ include: patternTypes,
107
+ exclude: patternTypes,
108
+ max: [String, Number]
109
+ },
110
+
111
+ created() {
112
+ this.cache = Object.create(null)
113
+ this.keys = []
114
+ },
115
+
116
+ destroyed() {
117
+ for (const key in this.cache) {
118
+ pruneCacheEntry(this.cache, key, this.keys)
119
+ }
120
+ },
121
+
122
+ mounted() {
123
+ this.$watch('include', val => {
124
+ pruneCache(this, name => matches(val, name))
125
+ })
126
+ this.$watch('exclude', val => {
127
+ pruneCache(this, name => !matches(val, name))
128
+ })
129
+ },
130
+
131
+ render() {
132
+ const slot = this.$slots.default
133
+ const vnode = getFirstComponentChild(slot)
134
+ const componentOptions = vnode && vnode.componentOptions
135
+ if (componentOptions) {
136
+ // check pattern
137
+ const name = getComponentName.call(this, componentOptions)
138
+ // console.log("🚀 ~ file: keepalive.js:124 ~ render ~ name:", name)
139
+ // ---------- 对于没有name值的组件设置为路由的name, 支持vue-devtool组件名称显示
140
+ if (!componentOptions.Ctor.options.name) {
141
+ vnode.componentOptions.Ctor.options.name = name
142
+ }
143
+ const {
144
+ include,
145
+ exclude
146
+ } = this
147
+ if (
148
+ // not included
149
+ (include && (!name || !matches(include, name))) ||
150
+ // excluded
151
+ (exclude && name && matches(exclude, name))
152
+ ) {
153
+ return vnode
154
+ }
155
+
156
+ const {
157
+ cache,
158
+ keys
159
+ } = this
160
+ // ------------------- 储存的key值, 默认从router-view设置的key中获取
161
+ // const key = vnode.key == null
162
+ // ? componentOptions.Ctor.cid + (componentOptions.tag ? `::${componentOptions.tag}` : '')
163
+ // : vnode.key
164
+
165
+ // ------------------- 2. 储存的key值设置为路由中得name值
166
+ const key = name
167
+
168
+ if (cache[key]) {
169
+ vnode.componentInstance = cache[key].componentInstance
170
+ // make current key freshest
171
+ remove(keys, key)
172
+ keys.push(key)
173
+ } else {
174
+ cache[key] = vnode
175
+ keys.push(key)
176
+ // prune oldest entry
177
+ if (this.max && keys.length > parseInt(this.max)) {
178
+ pruneCacheEntry(cache, keys[0], keys, this._vnode)
179
+ }
180
+ }
181
+ vnode.data.keepAlive = true
182
+ }
183
+ return vnode || (slot && slot[0])
184
+ }
185
+ }
@@ -0,0 +1,68 @@
1
+ // API 模块沿用 USER_PREFIX 等全局常量;完整 Vab 延迟加载后,登录阶段需先恢复
2
+ // 这项原本由 vab.js 模块初始化完成的副作用。
3
+ import "@base/utils/prefixGlobals";
4
+ import Loading from "element-ui/lib/loading";
5
+ import MessageBox from "element-ui/lib/message-box";
6
+ import request from "@base/utils/request";
7
+
8
+ /**
9
+ * 登录阶段需要的最小 Vab 能力。完整 Vab 会连带 lodash、moment、XEUtils、
10
+ * 图片预览等后台依赖,改为进入业务路由后再覆盖安装。
11
+ */
12
+ export default function installLoginVab(Vue) {
13
+ Vue.prototype.$baseEventBus = new Vue();
14
+ const $http = async function (option = {}) {
15
+ if (!option.loadingTarget && this.$el) {
16
+ option.loadingTarget = this.$el;
17
+ }
18
+ if (!option.vueTarget) {
19
+ option.vueTarget = this;
20
+ }
21
+ return option.sync === false ? await request(option) : request(option);
22
+ };
23
+ Object.assign($http, request);
24
+ $http.prototype = request.prototype;
25
+ Vue.prototype.$http = $http;
26
+
27
+ Vue.prototype.$baseLoading = function (option = {}) {
28
+ const opts = {
29
+ lock: true,
30
+ background: "hsla(0,0%,100%,.8)",
31
+ target: this.$el,
32
+ ...option,
33
+ };
34
+ if (option.index) {
35
+ opts.spinner = "vab-loading-type" + option.index;
36
+ }
37
+ return Loading.service(opts);
38
+ };
39
+
40
+ Vue.prototype.$baseAlert = function (content, title, callback) {
41
+ return MessageBox.alert(content, title || "提示", {
42
+ confirmButtonText: "确定",
43
+ dangerouslyUseHTMLString: true,
44
+ target: this.$el,
45
+ confirmButtonClass: "icondui",
46
+ customClass: "dialog-style",
47
+ callback,
48
+ });
49
+ };
50
+
51
+ Vue.prototype.$t1 = function (path, values) {
52
+ const root = this.$root || window.$vueRoot;
53
+ if (!root || !root._i18n) return path;
54
+ const i18n = root.$i18n;
55
+ if (i18n.locale === "zh" || !i18n.te(path)) {
56
+ return i18n._t(path, i18n.locale, { zh: { [path]: path } }, null, values);
57
+ }
58
+ return i18n.t(path, values) || path;
59
+ };
60
+
61
+ Vue.prototype.$t2 = function (defaultValue, path, values) {
62
+ const root = this.$root || window.$vueRoot;
63
+ if (!root || !root._i18n) return defaultValue;
64
+ const i18n = root.$i18n;
65
+ const key = path || defaultValue;
66
+ return i18n.te(key) ? i18n.t(key, values) : defaultValue;
67
+ };
68
+ }
@@ -0,0 +1,273 @@
1
+ /**
2
+ * 微前端菜单适配层(零依赖纯函数)。
3
+ * 供引包应用与未引包主应用(deep-import 本文件)共用,
4
+ * 禁止在此引入 @base 的 store / router / request / 组件。
5
+ * 协议说明见 docs/qiankun微前端改造-实现方案.md 第三章。
6
+ */
7
+
8
+ // 表单菜单(动态表单)类型值,菜单归属识别的唯一权威标识
9
+ export const FORM_MENU_TYPE = 5;
10
+
11
+ // url 命名空间保留首段:/base/xxx 表示组件在 npm 包内(@base/views/xxx)
12
+ export const BASE_SEGMENT = "base";
13
+
14
+ /**
15
+ * 微前端固定前缀:访问路径形如 /micro/<appCode>/<来源>/<组件路径>。
16
+ * 用固定前缀而非"首段即 appCode",是为了让归属命名空间与主应用自身的
17
+ * 一级视图目录(/user、/pmd、/yx…)结构性隔离——否则注册一个与视图目录
18
+ * 同名的 appCode 会劫持主应用整棵子树,且新增视图目录还会反向撞掉已注册的应用。
19
+ */
20
+ export const MICRO_SEGMENT = "micro";
21
+
22
+ /**
23
+ * 本机调试命名空间:/micro_debug/<appCode>/... 与 /micro/<appCode>/... 归属相同、
24
+ * 菜单相同、组件解析相同,**只有 entry 不同**(正式取注册表,调试取约定端口)。
25
+ * 把"调试还是正式"编码进路径而非存储,是为了让调试态无状态——不会残留在
26
+ * localStorage 里跨天生效,刷新/分享/多标签页的行为都由 URL 自身决定。
27
+ */
28
+ export const MICRO_DEBUG_SEGMENT = "micro_debug";
29
+
30
+ const MICRO_SEGMENTS = [MICRO_SEGMENT, MICRO_DEBUG_SEGMENT];
31
+ const BASE_VIEW_PREFIX = "@base/views";
32
+ const APP_CODE_REG = /^[A-Za-z][A-Za-z0-9_-]*$/;
33
+
34
+ export function isFormMenu(menu) {
35
+ return !!menu && menu.type === FORM_MENU_TYPE;
36
+ }
37
+
38
+ /**
39
+ * 访问路径 = route || url(与 createRoute3 现有取值逻辑一致)
40
+ */
41
+ export function getAccessPath(menu) {
42
+ if (!menu) return "";
43
+ return String(menu.route || menu.url || "");
44
+ }
45
+
46
+ /**
47
+ * 取路径首段(不含查询串);@ 开头的存量组件路径无首段语义,返回 ""
48
+ */
49
+ function getFirstSegment(path) {
50
+ return getSegments(path)[0] || "";
51
+ }
52
+
53
+ /** 切分路径为段数组(不含查询串);@ 开头的存量组件路径无首段语义,返回 [] */
54
+ function getSegments(path) {
55
+ if (!path || typeof path !== "string" || path.startsWith("@")) {
56
+ return [];
57
+ }
58
+ return path.split("?")[0].split("/").filter(Boolean);
59
+ }
60
+
61
+ /**
62
+ * 取访问路径里的归属 appCode:仅 /micro/<appCode>/... 或
63
+ * /micro_debug/<appCode>/... 形态才有归属,其余(主应用自身路由、
64
+ * /base 命名空间、裸路径)一律返回 ""。
65
+ */
66
+ export function getOwnerSegment(path) {
67
+ const segs = getSegments(path);
68
+ if (segs.length < 2 || MICRO_SEGMENTS.indexOf(segs[0]) < 0) return "";
69
+ return segs[1];
70
+ }
71
+
72
+ /**
73
+ * 切换访问路径的微前端命名空间(/micro/ ⇄ /micro_debug/),非微前端路径原样返回。
74
+ * 用途:主应用在调试命名空间下装载子应用时,把下发的菜单路径一并换过去——
75
+ * 子应用据此生成的路由才与浏览器 hash 对得上(主子路径始终保持一致)。
76
+ */
77
+ export function swapMicroNamespace(path, debug) {
78
+ const segs = getSegments(path);
79
+ if (segs.length < 2 || MICRO_SEGMENTS.indexOf(segs[0]) < 0) return path;
80
+ const target = debug ? MICRO_DEBUG_SEGMENT : MICRO_SEGMENT;
81
+ if (segs[0] === target) return path;
82
+ return "/" + target + stripFirstSegment(path);
83
+ }
84
+
85
+ /**
86
+ * 按调试与否重写整条菜单的访问路径命名空间(浅拷贝,不改原对象)。
87
+ * route 有值改 route,否则改 url——与 getAccessPath 的取值口径一致;
88
+ * 单字段写法里 url 同时是组件路径,但 resolveComponentPath 对两个命名空间
89
+ * 都会剥前缀,所以换过去不影响组件解析。
90
+ */
91
+ export function swapMenuNamespace(menu, debug) {
92
+ if (!menu) return menu;
93
+ const field = menu.route ? "route" : "url";
94
+ const swapped = swapMicroNamespace(String(menu[field] || ""), debug);
95
+ if (swapped === menu[field]) return menu;
96
+ return Object.assign({}, menu, { [field]: swapped });
97
+ }
98
+
99
+ /**
100
+ * 解析菜单归属:访问路径的 /micro/<appCode>(或 /micro_debug/<appCode>)
101
+ * 命中注册表则归属该子应用,否则(无前缀 / base / 未命中)归主应用,返回 ""。
102
+ */
103
+ export function resolveOwner(menu, registry) {
104
+ const seg = getOwnerSegment(getAccessPath(menu));
105
+ if (!seg || seg === BASE_SEGMENT) return "";
106
+ const apps = normalizeRegistry(registry);
107
+ return apps.some((app) => app.appCode === seg) ? seg : "";
108
+ }
109
+
110
+ /**
111
+ * 解析组件路径(type 0 普通菜单):
112
+ * - "@..." 存量旧写法:url 即组件路径,原样返回;
113
+ * - /micro/<渲染方 appCode>/… 或 /micro_debug/<同>:剥掉归属两段
114
+ * (渲染方只渲染归属自己的菜单,两个命名空间同等对待);
115
+ * - 首段 base:转 @base/views 命名空间;
116
+ * - 其余原样(无前缀走渲染方 @/views;别家归属加载失败落兜底组件)。
117
+ */
118
+ export function resolveComponentPath(menu, rendererAppCode) {
119
+ const url = menu && menu.url != null ? String(menu.url) : "";
120
+ if (!url) return "";
121
+ if (url.startsWith("@")) return url;
122
+ const seg = getFirstSegment(url);
123
+ if (!seg) return url;
124
+ if (MICRO_SEGMENTS.indexOf(seg) >= 0) {
125
+ const owner = getOwnerSegment(url);
126
+ // 归属别家、或主应用误渲染子应用菜单:原样返回,加载失败后由 MenuFallback 说明归属
127
+ if (!owner || !rendererAppCode || owner !== rendererAppCode) return url;
128
+ // 单字段写法 /micro/appA/base/xx:剥掉归属两段后可能仍带 base 命名空间,递归解析一次
129
+ // (appCode 传空,不会把 /micro/appA/micro/appA/xx 连剥两轮)
130
+ const rest = stripFirstSegment(stripFirstSegment(url));
131
+ return rest ? resolveComponentPath({ url: rest }, "") : "";
132
+ }
133
+ if (seg === BASE_SEGMENT) {
134
+ const rest = stripFirstSegment(url);
135
+ return rest ? BASE_VIEW_PREFIX + rest : "";
136
+ }
137
+ return url;
138
+ }
139
+
140
+ function stripFirstSegment(url) {
141
+ const clean = url.startsWith("/") ? url : "/" + url;
142
+ const idx = clean.indexOf("/", 1);
143
+ return idx > 0 ? clean.slice(idx) : "";
144
+ }
145
+
146
+ /**
147
+ * 全量菜单按归属切分,返回 { appCode: [菜单行] }。
148
+ * 主应用侧不需要切分结果——它始终用原始整树渲染侧边栏,直接用入参即可;
149
+ * 这里只产出各子应用归属自己的扁平列表(用于 props 下发生成子应用内部路由)。
150
+ */
151
+ export function dispatchMenus(menus, registry) {
152
+ const apps = normalizeRegistry(registry);
153
+ const subAppMenus = {};
154
+ apps.forEach((app) => {
155
+ subAppMenus[app.appCode] = [];
156
+ });
157
+ const walk = (rows) => {
158
+ (rows || []).forEach((row) => {
159
+ const owner = resolveOwner(row, apps);
160
+ if (owner) {
161
+ subAppMenus[owner].push(row);
162
+ }
163
+ if (row && row.children && row.children.length) {
164
+ walk(row.children);
165
+ }
166
+ });
167
+ };
168
+ walk(menus || []);
169
+ return subAppMenus;
170
+ }
171
+
172
+ /**
173
+ * 校验应用注册表(逻辑参数 micro_app_registry 的 paramValue)。
174
+ * 非法条目跳过并记入 errors,绝不静默;enabled === false 的合法条目不收录也不报错。
175
+ * appCode 处在 /micro/ 命名空间内,与主应用一级视图目录天然隔离,无需再防目录撞名;
176
+ * 仅保留 base(组件来源命名空间)与 micro / micro_debug(前缀自身)三个保留字。
177
+ * options.reservedSegments 可追加应用自定义保留字。
178
+ */
179
+ export function validateRegistry(raw, options = {}) {
180
+ const errors = [];
181
+ let list = raw;
182
+ if (typeof raw === "string") {
183
+ try {
184
+ list = JSON.parse(raw);
185
+ } catch (e) {
186
+ return { apps: [], errors: ["注册表 JSON 解析失败: " + e.message] };
187
+ }
188
+ }
189
+ if (!Array.isArray(list)) {
190
+ return { apps: [], errors: ["注册表必须是 JSON 数组"] };
191
+ }
192
+ const reserved = [BASE_SEGMENT]
193
+ .concat(MICRO_SEGMENTS)
194
+ .concat(options.reservedSegments || []);
195
+ const apps = [];
196
+ const seen = {};
197
+ list.forEach((item, index) => {
198
+ const tag = "注册表第" + (index + 1) + "项";
199
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
200
+ errors.push(tag + "不是对象");
201
+ return;
202
+ }
203
+ const appCode = item.appCode;
204
+ if (!appCode || typeof appCode !== "string" || !APP_CODE_REG.test(appCode)) {
205
+ errors.push(tag + " appCode 缺失或格式非法: " + JSON.stringify(appCode));
206
+ return;
207
+ }
208
+ if (reserved.indexOf(appCode) >= 0) {
209
+ errors.push(tag + " appCode 与保留字/视图目录撞名: " + appCode);
210
+ return;
211
+ }
212
+ if (seen[appCode]) {
213
+ errors.push(tag + " appCode 重复: " + appCode);
214
+ return;
215
+ }
216
+ if (typeof item.entry !== "string" || !item.entry.trim()) {
217
+ errors.push(
218
+ tag
219
+ + "("
220
+ + appCode
221
+ + ")entry 必须是非空字符串(分环境对象写法已废弃,"
222
+ + "注册表本身按环境分库;本机联调用 /"
223
+ + MICRO_DEBUG_SEGMENT
224
+ + "/ 命名空间)"
225
+ );
226
+ return;
227
+ }
228
+ seen[appCode] = true;
229
+ if (item.enabled === false) return;
230
+ apps.push({
231
+ appCode: appCode,
232
+ appName: item.appName || appCode,
233
+ entry: item.entry.trim(),
234
+ enabled: true,
235
+ });
236
+ });
237
+ return { apps, errors };
238
+ }
239
+
240
+ /**
241
+ * 解析调试开关(逻辑参数 micro_debug_enabled 的值)→ 布尔。
242
+ * 与注册表分开承载:注册表描述"有哪些应用",本开关是环境级运维动作,
243
+ * 生命周期不同——运维开关调试不必改注册表 JSON,少一类把注册表改坏的风险。
244
+ *
245
+ * "true"(忽略大小写与首尾空格)→ 开启
246
+ * 其余一切(不存在 / 空 / "false" / 认不出的值)→ 关闭
247
+ *
248
+ * 只认一个字面量、其余一律关闭,是有意的安全默认:认不出就不放行,
249
+ * 不会因为写了个形近值而把某个环境悄悄放开。
250
+ */
251
+ export function isDebugEnabled(raw) {
252
+ return (raw == null ? "" : String(raw)).trim().toLowerCase() === "true";
253
+ }
254
+
255
+ /**
256
+ * 取 entry。不再支持分环境对象写法:注册表存在后端逻辑参数里,本身已按环境分库,
257
+ * 主应用连哪个后端就拿到哪份注册表——再按前端 NODE_ENV 分一次是重复机制。
258
+ * 本机联调走 /micro_debug/ 命名空间(显式、按 URL 生效),不依赖构建环境。
259
+ */
260
+ export function resolveEntry(entry) {
261
+ return typeof entry === "string" ? entry.trim() : "";
262
+ }
263
+
264
+ function normalizeRegistry(registry) {
265
+ if (!registry) return [];
266
+ const list = Array.isArray(registry) ? registry : registry.apps || [];
267
+ return list.filter((app) => {
268
+ return app
269
+ && typeof app.appCode === "string"
270
+ && app.appCode
271
+ && app.enabled !== false;
272
+ });
273
+ }