hs-admin-ui 1.0.6 → 1.0.8

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 (439) hide show
  1. package/.env +11 -0
  2. package/.env.development +5 -0
  3. package/.env.production +5 -0
  4. package/.eslintignore +18 -0
  5. package/.eslintrc.js +104 -0
  6. package/.prettierrc.js +39 -0
  7. package/.vite/deps/_metadata.json +8 -0
  8. package/.vite/deps/package.json +3 -0
  9. package/.vscode/extensions.json +7 -0
  10. package/.vscode/launch.json +15 -0
  11. package/.vscode/settings.json +41 -0
  12. package/CHANGELOG.md +1 -0
  13. package/directoryList.md +180 -0
  14. package/index.html +31 -0
  15. package/package.json +14 -8
  16. package/postcss.config.js +7 -0
  17. package/src/App.vue +88 -0
  18. package/src/api/businessController/index.ts +46 -0
  19. package/src/api/businessController/type.ts +24 -0
  20. package/src/api/fieldConfigController/index.ts +260 -0
  21. package/src/api/fieldConfigController/type.ts +224 -0
  22. package/src/api/index.ts +14 -0
  23. package/src/api/login/index.ts +78 -0
  24. package/src/api/loginController/index.ts +74 -0
  25. package/src/api/loginController/type.ts +1 -0
  26. package/src/api/menu/index.ts +34 -0
  27. package/src/api/menu/index2.ts +291 -0
  28. package/src/api/menuController/index.ts +189 -0
  29. package/src/api/menuController/type.ts +21 -0
  30. package/src/api/systemController/index.ts +26 -0
  31. package/src/api/systemController/type.ts +16 -0
  32. package/src/api/test/index.ts +22 -0
  33. package/src/api/user/index.ts +30 -0
  34. package/src/assets/404.png +0 -0
  35. package/src/assets/logo-main.svg +12 -0
  36. package/src/assets/logo-mini.svg +12 -0
  37. package/src/components/base/hsAffix/src/hsAffix.vue +22 -0
  38. package/src/components/base/hsAlert/src/hsAlert.vue +15 -0
  39. package/src/components/base/hsAutocomplete/src/hsAutocomplete.vue +36 -0
  40. package/src/components/base/hsButton/src/hsButton.vue +26 -0
  41. package/src/components/base/hsButton/src/hsButtonGroup.vue +8 -0
  42. package/src/components/base/hsButton/useButtonEvents.ts +19 -0
  43. package/src/components/base/hsCalendar/src/hsCalendar.vue +36 -0
  44. package/src/components/base/hsCarousel/src/hsCarousel.vue +15 -0
  45. package/src/components/base/hsCarousel/src/hsCarouselItem.vue +15 -0
  46. package/src/components/base/hsCascader/src/hsCascader.vue +36 -0
  47. package/src/components/base/hsCascader/src/hsCascaderPanel.vue +29 -0
  48. package/src/components/base/hsCheckbox/src/hsCheckbox.vue +32 -0
  49. package/src/components/base/hsCheckbox/src/hsCheckboxButton.vue +18 -0
  50. package/src/components/base/hsCheckbox/src/hsCheckboxGroup.vue +32 -0
  51. package/src/components/base/hsCol/src/hsCol.vue +20 -0
  52. package/src/components/base/hsCollapse/src/hsCollapse.vue +36 -0
  53. package/src/components/base/hsCollapse/src/hsCollapseItem.vue +22 -0
  54. package/src/components/base/hsColorPicker/src/hsColorPicker.vue +32 -0
  55. package/src/components/base/hsDatePicker/src/hsDatePicker.vue +40 -0
  56. package/src/components/base/hsDialog/src/hsDialog.vue +36 -0
  57. package/src/components/base/hsDrawer/src/hsDrawer.vue +29 -0
  58. package/src/components/base/hsDropdown/src/hsDropdown.vue +15 -0
  59. package/src/components/base/hsDropdown/src/hsDropdownItem.vue +15 -0
  60. package/src/components/base/hsDropdown/src/hsDropdownMenu.vue +15 -0
  61. package/src/components/base/hsForm/src/hsForm.vue +23 -0
  62. package/src/components/base/hsForm/src/hsFormItem.vue +22 -0
  63. package/src/components/base/hsGetApi/src/hsGetApis.vue +231 -0
  64. package/src/components/base/hsGetApi/useGetApis.ts +158 -0
  65. package/src/components/base/hsInput/src/hsInput.vue +40 -0
  66. package/src/components/base/hsInput/useInputEvents.ts +52 -0
  67. package/src/components/base/hsInputNumber/src/hsInputNumber.vue +31 -0
  68. package/src/components/base/hsPopconfirm/src/hsPopconfirm.vue +15 -0
  69. package/src/components/base/hsPopover/src/hsPopover.vue +22 -0
  70. package/src/components/base/hsProgress/src/hsProgress.vue +15 -0
  71. package/src/components/base/hsRadio/src/hsRadio.vue +32 -0
  72. package/src/components/base/hsRadio/src/hsRadioButton.vue +18 -0
  73. package/src/components/base/hsRadio/src/hsRadioGroup.vue +32 -0
  74. package/src/components/base/hsRate/src/hsRate.vue +32 -0
  75. package/src/components/base/hsResult/src/hsResult.vue +15 -0
  76. package/src/components/base/hsRow/src/hsRow.vue +20 -0
  77. package/src/components/base/hsScrollbar/src/hsScrollbar.vue +22 -0
  78. package/src/components/base/hsSelect/src/hsOption.vue +8 -0
  79. package/src/components/base/hsSelect/src/hsOptionGroup.vue +8 -0
  80. package/src/components/base/hsSelect/src/hsSelect.vue +46 -0
  81. package/src/components/base/hsSelect/useSelectEvents.ts +60 -0
  82. package/src/components/base/hsSlider/src/hsSlider.vue +25 -0
  83. package/src/components/base/hsSteps/src/hsStep.vue +15 -0
  84. package/src/components/base/hsSteps/src/hsSteps.vue +15 -0
  85. package/src/components/base/hsSwitch/src/hsSwitch.vue +35 -0
  86. package/src/components/base/hsTable/hsBCTable.vue +116 -0
  87. package/src/components/base/hsTable/hsTable copy.vue +226 -0
  88. package/src/components/base/hsTable/hsTable.vue +213 -0
  89. package/src/components/base/hsTable/useHsTableConfig.ts +95 -0
  90. package/src/components/base/hsTable/useTableEvents.ts +118 -0
  91. package/src/components/base/hsTabs/src/hsTabPane.vue +15 -0
  92. package/src/components/base/hsTabs/src/hsTabs.vue +29 -0
  93. package/src/components/base/hsTag/src/hsCheckTag.vue +16 -0
  94. package/src/components/base/hsTag/src/hsTag.vue +15 -0
  95. package/src/components/base/hsTest/HsTest.vue +320 -0
  96. package/src/components/base/hsTooltip/src/hsTooltip.vue +22 -0
  97. package/src/components/base/hsTour/src/hsTour.vue +31 -0
  98. package/src/components/base/hsTour/src/hsTourStep.vue +15 -0
  99. package/src/components/base/hsTransfer/src/hsTransfer.vue +36 -0
  100. package/src/components/base/hsTree/src/hsTree.vue +29 -0
  101. package/src/components/base/hsTreeSelect/src/hsTreeSelect.vue +39 -0
  102. package/src/components/base/hsUpload/src/hsUpload.vue +32 -0
  103. package/src/components/base/hsWatermark/src/hsWatermark.vue +15 -0
  104. package/src/components/business/bcAutoComplete/bcAutoComplete.vue +51 -0
  105. package/src/components/business/bcAutoComplete/defaultData.ts +31 -0
  106. package/src/components/business/bcAutoComplete/useAutoComplete.ts +73 -0
  107. package/src/components/business/bcBtn/bcBtn.vue +38 -0
  108. package/src/components/business/bcForm/bcForm.vue +107 -0
  109. package/src/components/business/bcForm/bcFormDrag.vue +104 -0
  110. package/src/components/business/bcForm/bcFormSearch.vue +154 -0
  111. package/src/components/business/bcForm/components/sortForm/index.ts +18 -0
  112. package/src/components/business/bcForm/components/sortForm/sortForm.vue +92 -0
  113. package/src/components/business/bcFormConfig/bcFormConfig.vue +196 -0
  114. package/src/components/business/bcFormTable/bcFormTable.vue +91 -0
  115. package/src/components/business/bcFormTable/components/bcTabs/bcTabs.vue +53 -0
  116. package/src/components/business/bcFormTable/components/contextBody/contextBody.vue +67 -0
  117. package/src/components/business/bcFormTable/components/contextBody/useContextMenu.ts +53 -0
  118. package/src/components/business/bcFormTable/components/formSearchBtn/formSearchBtn.vue +21 -0
  119. package/src/components/business/bcFormTable/methods/cellDetailMethod.ts +5 -0
  120. package/src/components/business/bcFormTable/methods/filterAgeMethod.ts +5 -0
  121. package/src/components/business/bcFormTable/methods/footerMethod.ts +25 -0
  122. package/src/components/business/bcFormTable/methods/index.ts +10 -0
  123. package/src/components/business/bcFormTable/utils/onFormKey.ts +120 -0
  124. package/src/components/business/bcFormTable/utils/onTableKey.ts +120 -0
  125. package/src/components/business/bcFormTable/utils/parseTable.ts +209 -0
  126. package/src/components/business/bcFormTable/utils/useButon.ts +19 -0
  127. package/src/components/business/bcFormTable/utils/useTableHeight.ts +44 -0
  128. package/src/components/business/bcIcon/bcIcon.vue +11 -0
  129. package/src/components/business/bcPageConfig/bcPageConfig.vue +91 -0
  130. package/src/components/business/bcPageConfig/components/hsBtn/src/hsAttrBtn.vue +39 -0
  131. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnConfigList.vue +52 -0
  132. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnItemConfig.vue +67 -0
  133. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnPanel.vue +45 -0
  134. package/src/components/business/bcPageConfig/components/hsBtn/useAttrBtn.ts +73 -0
  135. package/src/components/business/bcPageConfig/components/hsBtn/useBtnConfigList.ts +67 -0
  136. package/src/components/business/bcPageConfig/components/hsBtn/useBtnItemConfig.ts +39 -0
  137. package/src/components/business/bcPageConfig/components/hsExpand/src/hsExpand.vue +33 -0
  138. package/src/components/business/bcPageConfig/components/hsExpand/useExpand.ts +9 -0
  139. package/src/components/business/bcPageConfig/components/hsForm/src/hsAttrForm.vue +64 -0
  140. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormConfig.vue +180 -0
  141. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormConfigList.vue +52 -0
  142. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormPanel.vue +64 -0
  143. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormParse.vue +24 -0
  144. package/src/components/business/bcPageConfig/components/hsForm/useAttrForm.ts +153 -0
  145. package/src/components/business/bcPageConfig/components/hsForm/useFormListConfig.ts +69 -0
  146. package/src/components/business/bcPageConfig/components/hsForm/useFormParse.ts +152 -0
  147. package/src/components/business/bcPageConfig/components/hsSaveForm/saveFormConfig.ts +66 -0
  148. package/src/components/business/bcPageConfig/components/hsSaveForm/src/saveForm.vue +53 -0
  149. package/src/components/business/bcPageConfig/components/hsSaveForm/useSaveForm.ts +157 -0
  150. package/src/components/business/bcPageConfig/components/hsTables/src/hsAttrTable.vue +124 -0
  151. package/src/components/business/bcPageConfig/components/hsTables/src/hsRecursionConfig.vue +36 -0
  152. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableConfig.vue +51 -0
  153. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableConfigList.vue +53 -0
  154. package/src/components/business/bcPageConfig/components/hsTables/src/hsTablePanel.vue +68 -0
  155. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableParse.vue +24 -0
  156. package/src/components/business/bcPageConfig/components/hsTables/useAttrTable.ts +257 -0
  157. package/src/components/business/bcPageConfig/components/hsTables/useTableConfigList.ts +76 -0
  158. package/src/components/business/bcPageConfig/components/hsTables/useTableParse.ts +92 -0
  159. package/src/components/business/bcPageConfig/default/apis.json +24717 -0
  160. package/src/components/business/bcPageConfig/default/baseBtnConfig.ts +248 -0
  161. package/src/components/business/bcPageConfig/default/baseFormConfig.ts +396 -0
  162. package/src/components/business/bcPageConfig/default/baseTableConfig.ts +2387 -0
  163. package/src/components/business/bcPageConfig/usePageConfig.ts +547 -0
  164. package/src/components/business/bcSelect/bcSelect.vue +50 -0
  165. package/src/components/business/bcSwitchSystems/bcSwitchSystems.vue +36 -0
  166. package/src/components/business/bcSwitchSystems/useSwitchSystems.ts +73 -0
  167. package/src/components/business/bcTable/bcTable.vue +65 -0
  168. package/src/components/business/bcTable/components/sortColumn/index.ts +19 -0
  169. package/src/components/business/bcTable/components/sortColumn/sortColumn.vue +107 -0
  170. package/src/components/business/bcTable/useTable.ts +50 -0
  171. package/src/components/business/bcTable/useTableHeight.ts +24 -0
  172. package/src/components/business/bcTreeSelect/bcTreeSelect.vue +12 -0
  173. package/src/components/business/cardID/cardID.vue +24 -0
  174. package/src/components/business/cardID/type.ts +0 -0
  175. package/src/components/business/cardID/useCardID.ts +0 -0
  176. package/src/components/component.ts +190 -0
  177. package/src/components/config/autocompleteAttrConfig/autocompleteAttrConfig.vue +26 -0
  178. package/src/components/config/autocompleteAttrConfig/config.ts +170 -0
  179. package/src/components/config/baseForm.vue +175 -0
  180. package/src/components/config/buttonAttrConfig/buttonAttrConfig.vue +26 -0
  181. package/src/components/config/buttonAttrConfig/config.ts +261 -0
  182. package/src/components/config/cascaderAttrConfig/cascaderAttrConfig.vue +26 -0
  183. package/src/components/config/cascaderAttrConfig/config.ts +287 -0
  184. package/src/components/config/cascaderPanelAttrConfig/cascaderPanelAttrConfig.vue +26 -0
  185. package/src/components/config/cascaderPanelAttrConfig/config.ts +278 -0
  186. package/src/components/config/checkboxAttrConfig/checkboxAttrConfig.vue +26 -0
  187. package/src/components/config/checkboxAttrConfig/config.ts +301 -0
  188. package/src/components/config/datePickerAttrConfig/config.ts +256 -0
  189. package/src/components/config/datePickerAttrConfig/datePickerAttrConfig.vue +26 -0
  190. package/src/components/config/inputAttrConfig/config.ts +322 -0
  191. package/src/components/config/inputAttrConfig/inputAttrConfig.vue +33 -0
  192. package/src/components/config/inputAttrConfig/inputEventConfig.vue +35 -0
  193. package/src/components/config/inputNumberAttrConfig/config.ts +177 -0
  194. package/src/components/config/inputNumberAttrConfig/inputNumberAttrConfig.vue +26 -0
  195. package/src/components/config/radioAttrConfig/config.ts +212 -0
  196. package/src/components/config/radioAttrConfig/radioAttrConfig.vue +26 -0
  197. package/src/components/config/selectAttrConfig/config.ts +478 -0
  198. package/src/components/config/selectAttrConfig/selectAttrConfig.vue +26 -0
  199. package/src/components/config/switchAttrConfig/config.ts +195 -0
  200. package/src/components/config/switchAttrConfig/switchAttrConfig.vue +26 -0
  201. package/src/components/config/treeSelectAttrConfig/config.ts +625 -0
  202. package/src/components/config/treeSelectAttrConfig/treeSelectAttrConfig.vue +26 -0
  203. package/src/components/config/type/formType.ts +25 -0
  204. package/src/components/config/uploadAttrConfig/config.ts +250 -0
  205. package/src/components/config/uploadAttrConfig/uploadAttrConfig.vue +26 -0
  206. package/src/components/iconSelector/index.vue +247 -0
  207. package/src/components/iconSelector/list.vue +84 -0
  208. package/src/components/svgIcon/index.vue +61 -0
  209. package/src/directive/authDirective.ts +40 -0
  210. package/src/directive/customDirective.ts +178 -0
  211. package/src/directive/index.ts +18 -0
  212. package/src/hooks/index.ts +2 -0
  213. package/src/hooks/useCrypto.ts +36 -0
  214. package/src/hooks/useExpose.ts +60 -0
  215. package/src/layout/component/aside.vue +160 -0
  216. package/src/layout/component/columnsAside.vue +299 -0
  217. package/src/layout/component/header.vue +18 -0
  218. package/src/layout/component/main.vue +65 -0
  219. package/src/layout/footer/index.vue +25 -0
  220. package/src/layout/index.vue +53 -0
  221. package/src/layout/lockScreen/index.vue +352 -0
  222. package/src/layout/logo/index.vue +75 -0
  223. package/src/layout/main/classic.vue +73 -0
  224. package/src/layout/main/columns.vue +73 -0
  225. package/src/layout/main/defaults.vue +73 -0
  226. package/src/layout/main/transverse.vue +60 -0
  227. package/src/layout/navBars/index.vue +35 -0
  228. package/src/layout/navBars/tagsView/contextmenu.vue +133 -0
  229. package/src/layout/navBars/tagsView/tagsView.vue +737 -0
  230. package/src/layout/navBars/topBar/breadcrumb.vue +146 -0
  231. package/src/layout/navBars/topBar/closeFull.vue +53 -0
  232. package/src/layout/navBars/topBar/index.vue +107 -0
  233. package/src/layout/navBars/topBar/search.vue +123 -0
  234. package/src/layout/navBars/topBar/setings.vue +789 -0
  235. package/src/layout/navBars/topBar/user.vue +222 -0
  236. package/src/layout/navBars/topBar/userNews.vue +107 -0
  237. package/src/layout/navMenu/horizontal.vue +138 -0
  238. package/src/layout/navMenu/subItem.vue +49 -0
  239. package/src/layout/navMenu/vertical.vue +100 -0
  240. package/src/layout/routerView/iframes.vue +101 -0
  241. package/src/layout/routerView/link.vue +93 -0
  242. package/src/layout/routerView/parent.vue +104 -0
  243. package/src/layout/upgrade/index.vue +147 -0
  244. package/src/main.ts +68 -0
  245. package/src/plugins/index.ts +4 -0
  246. package/src/router/backEnd.ts +173 -0
  247. package/src/router/frontEnd.ts +155 -0
  248. package/src/router/index.ts +138 -0
  249. package/src/router/route.ts +94 -0
  250. package/src/stores/index.ts +8 -0
  251. package/src/stores/keepAliveNames.ts +38 -0
  252. package/src/stores/requestOldRoutes.ts +16 -0
  253. package/src/stores/routesList.ts +26 -0
  254. package/src/stores/tagsViewRoutes.ts +23 -0
  255. package/src/stores/themeConfig.ts +142 -0
  256. package/src/stores/userInfo.ts +65 -0
  257. package/src/style/index.scss +0 -0
  258. package/src/style/tailwind.css +29 -0
  259. package/src/theme/app.scss +333 -0
  260. package/src/theme/common/transition.scss +147 -0
  261. package/src/theme/dark.scss +255 -0
  262. package/src/theme/element.scss +321 -0
  263. package/src/theme/iconSelector.scss +31 -0
  264. package/src/theme/index.scss +8 -0
  265. package/src/theme/loading.scss +51 -0
  266. package/src/theme/media/chart.scss +94 -0
  267. package/src/theme/media/cityLinkage.scss +10 -0
  268. package/src/theme/media/date.scss +25 -0
  269. package/src/theme/media/dialog.scss +12 -0
  270. package/src/theme/media/error.scss +45 -0
  271. package/src/theme/media/form.scss +31 -0
  272. package/src/theme/media/home.scss +23 -0
  273. package/src/theme/media/index.scss +15 -0
  274. package/src/theme/media/layout.scss +63 -0
  275. package/src/theme/media/login.scss +74 -0
  276. package/src/theme/media/media.scss +13 -0
  277. package/src/theme/media/pagination.scss +15 -0
  278. package/src/theme/media/personal.scss +16 -0
  279. package/src/theme/media/scrollbar.scss +56 -0
  280. package/src/theme/media/tagsView.scss +11 -0
  281. package/src/theme/mixins/index.scss +56 -0
  282. package/src/theme/other.scss +36 -0
  283. package/src/theme/tableTool.scss +27 -0
  284. package/src/theme/waves.scss +101 -0
  285. package/src/types/auth.d.ts +46 -0
  286. package/src/types/axios.d.ts +13 -0
  287. package/src/types/components.d.ts +30 -0
  288. package/src/types/customData.d.ts +171 -0
  289. package/src/types/form.d.ts +76 -0
  290. package/src/types/formItem/autocomplete.d.ts +43 -0
  291. package/src/types/formItem/button.d.ts +39 -0
  292. package/src/types/formItem/index.ts +6 -0
  293. package/src/types/formItem/input.d.ts +66 -0
  294. package/src/types/formItem/inputNumber.d.ts +42 -0
  295. package/src/types/formItem/selelct.d.ts +54 -0
  296. package/src/types/formItem/treeSelect.d.ts +37 -0
  297. package/src/types/formTable.d.ts +207 -0
  298. package/src/types/global.d.ts +118 -0
  299. package/src/types/index.ts +6 -0
  300. package/src/types/layout.d.ts +59 -0
  301. package/src/types/mitt.d.ts +38 -0
  302. package/src/types/pinia.d.ts +92 -0
  303. package/src/types/system.ts +14 -0
  304. package/src/types/views.d.ts +331 -0
  305. package/src/utils/arrayOperation.ts +65 -0
  306. package/src/utils/authFunction.ts +38 -0
  307. package/src/utils/build.ts +124 -0
  308. package/src/utils/commonFunction.ts +64 -0
  309. package/src/utils/formatTime.ts +137 -0
  310. package/src/utils/getDataType.ts +135 -0
  311. package/src/utils/getStyleSheets.ts +101 -0
  312. package/src/utils/index.ts +16 -0
  313. package/src/utils/loading.ts +44 -0
  314. package/src/utils/mitt.ts +8 -0
  315. package/src/utils/other.ts +214 -0
  316. package/src/utils/request.ts +82 -0
  317. package/src/utils/setIconfont.ts +48 -0
  318. package/src/utils/showMessage.ts +57 -0
  319. package/src/utils/showMessageBox.ts +39 -0
  320. package/src/utils/showNotification.ts +50 -0
  321. package/src/utils/showPopup.ts +81 -0
  322. package/src/utils/storage.ts +137 -0
  323. package/src/utils/theme.ts +65 -0
  324. package/src/utils/toolsValidate.ts +370 -0
  325. package/src/utils/watermark.ts +47 -0
  326. package/src/views/config/index.vue +7 -0
  327. package/src/views/config/page/components/hsPageTree/configData.ts +3700 -0
  328. package/src/views/config/page/components/hsPageTree/src/hsPageTree.vue +30 -0
  329. package/src/views/config/page/components/hsPageTree/usePageTree.ts +49 -0
  330. package/src/views/config/page/index.vue +32 -0
  331. package/src/views/config/page/menuType.ts +10 -0
  332. package/src/views/config/page/usePage.ts +120 -0
  333. package/src/views/error/401.vue +88 -0
  334. package/src/views/error/404.vue +89 -0
  335. package/src/views/home/index.vue +63 -0
  336. package/src/views/login/component/account.vue +172 -0
  337. package/src/views/login/component/mobile.vue +72 -0
  338. package/src/views/login/component/scan.vue +63 -0
  339. package/src/views/login/index.vue +254 -0
  340. package/src/views/system/auth/index.vue +67 -0
  341. package/src/views/system/auth/useAuth.ts +72 -0
  342. package/src/views/system/auth/utils.ts +25 -0
  343. package/src/views/system/dept/dialog.vue +167 -0
  344. package/src/views/system/dept/index.vue +135 -0
  345. package/src/views/system/dic/dialog.vue +150 -0
  346. package/src/views/system/dic/index.vue +132 -0
  347. package/src/views/system/formSetting/components/hsBtn/src/hsAttrBtn.vue +39 -0
  348. package/src/views/system/formSetting/components/hsBtn/src/hsBtnConfigList.vue +52 -0
  349. package/src/views/system/formSetting/components/hsBtn/src/hsBtnItemConfig.vue +67 -0
  350. package/src/views/system/formSetting/components/hsBtn/src/hsBtnPanel.vue +45 -0
  351. package/src/views/system/formSetting/components/hsBtn/useAttrBtn.ts +73 -0
  352. package/src/views/system/formSetting/components/hsBtn/useBtnConfigList.ts +67 -0
  353. package/src/views/system/formSetting/components/hsBtn/useBtnItemConfig.ts +39 -0
  354. package/src/views/system/formSetting/components/hsExpand/src/hsExpand.vue +27 -0
  355. package/src/views/system/formSetting/components/hsExpand/useExpand.ts +9 -0
  356. package/src/views/system/formSetting/components/hsForm/src/contextmenu.vue +144 -0
  357. package/src/views/system/formSetting/components/hsForm/src/hsAttrForm.vue +100 -0
  358. package/src/views/system/formSetting/components/hsForm/src/hsFormConfig.vue +180 -0
  359. package/src/views/system/formSetting/components/hsForm/src/hsFormConfigList.vue +70 -0
  360. package/src/views/system/formSetting/components/hsForm/src/hsFormPanel.vue +155 -0
  361. package/src/views/system/formSetting/components/hsForm/src/hsFormParse.vue +33 -0
  362. package/src/views/system/formSetting/components/hsForm/useAttrForm.ts +135 -0
  363. package/src/views/system/formSetting/components/hsForm/useFormListConfig.ts +89 -0
  364. package/src/views/system/formSetting/components/hsPageTree/configData.ts +3700 -0
  365. package/src/views/system/formSetting/components/hsPageTree/src/hsPageTree.vue +30 -0
  366. package/src/views/system/formSetting/components/hsPageTree/usePageTree.ts +50 -0
  367. package/src/views/system/formSetting/components/hsSaveForm/saveFormConfig.ts +98 -0
  368. package/src/views/system/formSetting/components/hsSaveForm/src/saveForm.vue +52 -0
  369. package/src/views/system/formSetting/components/hsSaveForm/useSaveForm.ts +190 -0
  370. package/src/views/system/formSetting/components/selectConfig/config.ts +476 -0
  371. package/src/views/system/formSetting/components/selectConfig/selectConfig.vue +30 -0
  372. package/src/views/system/formSetting/data.json +360 -0
  373. package/src/views/system/formSetting/default/baseBtnConfig.ts +248 -0
  374. package/src/views/system/formSetting/default/baseFormConfig.ts +567 -0
  375. package/src/views/system/formSetting/default/baseTableConfig.ts +2352 -0
  376. package/src/views/system/formSetting/formConfig.vue +120 -0
  377. package/src/views/system/formSetting/index.vue +43 -0
  378. package/src/views/system/formSetting/menuType.d.ts +12 -0
  379. package/src/views/system/formSetting/panelConfig.json +164 -0
  380. package/src/views/system/formSetting/useForm.ts +136 -0
  381. package/src/views/system/formSetting/useFormConfig.ts +324 -0
  382. package/src/views/system/menu/dialog.vue +285 -0
  383. package/src/views/system/menu/index.vue +180 -0
  384. package/src/views/system/role/dialog.vue +236 -0
  385. package/src/views/system/role/index.vue +146 -0
  386. package/src/views/system/user/dialog.vue +187 -0
  387. package/src/views/system/user/index.vue +161 -0
  388. package/src/views/test/form/data.json +360 -0
  389. package/src/views/test/form/index.vue +24 -0
  390. package/src/views/test/table/data.json +747 -0
  391. package/src/views/test/table/formate.js +49 -0
  392. package/src/views/test/table/index.vue +53 -0
  393. package/src/views/test/test/components/hsBtn/src/hsAttrBtn.vue +58 -0
  394. package/src/views/test/test/components/hsBtn/src/hsBtnConfigList.vue +45 -0
  395. package/src/views/test/test/components/hsBtn/src/hsBtnPanel.vue +51 -0
  396. package/src/views/test/test/components/hsBtn/useAttrBtn.ts +130 -0
  397. package/src/views/test/test/components/hsBtn/useBtnConfigList.ts +73 -0
  398. package/src/views/test/test/components/hsExpand/src/hsExpand.vue +27 -0
  399. package/src/views/test/test/components/hsExpand/useExpand.ts +9 -0
  400. package/src/views/test/test/components/hsForm/src/hsAttrForm.vue +124 -0
  401. package/src/views/test/test/components/hsForm/src/hsFormConfig.vue +180 -0
  402. package/src/views/test/test/components/hsForm/src/hsFormConfigList.vue +45 -0
  403. package/src/views/test/test/components/hsForm/src/hsFormPanel.vue +151 -0
  404. package/src/views/test/test/components/hsForm/src/hsFormParse.vue +33 -0
  405. package/src/views/test/test/components/hsForm/useAttrForm.ts +109 -0
  406. package/src/views/test/test/components/hsForm/useFormListConfig.ts +69 -0
  407. package/src/views/test/test/components/hsSaveForm/saveFormConfig.ts +66 -0
  408. package/src/views/test/test/components/hsSaveForm/src/saveForm.vue +47 -0
  409. package/src/views/test/test/components/hsSaveForm/useSaveForm.ts +121 -0
  410. package/src/views/test/test/components/hsTables/src/hsAttrTable.vue +91 -0
  411. package/src/views/test/test/components/hsTables/src/hsRecursionConfig.vue +36 -0
  412. package/src/views/test/test/components/hsTables/src/hsTableConfig.vue +39 -0
  413. package/src/views/test/test/components/hsTables/src/hsTableConfigList.vue +45 -0
  414. package/src/views/test/test/components/hsTables/src/hsTablePanel.vue +55 -0
  415. package/src/views/test/test/components/hsTables/src/hsTableParse.vue +29 -0
  416. package/src/views/test/test/components/hsTables/useAttrTable.ts +124 -0
  417. package/src/views/test/test/components/hsTables/useTableConfigList.ts +76 -0
  418. package/src/views/test/test/components/selectConfig/config.ts +476 -0
  419. package/src/views/test/test/components/selectConfig/selectConfig.vue +30 -0
  420. package/src/views/test/test/data.json +360 -0
  421. package/src/views/test/test/default/baseBtnConfig.ts +216 -0
  422. package/src/views/test/test/default/baseFormConfig.ts +566 -0
  423. package/src/views/test/test/default/baseTableConfig.ts +2352 -0
  424. package/src/views/test/test/formConfig.vue +102 -0
  425. package/src/views/test/test/test.vue +28 -0
  426. package/src/views/test/test/test3.vue +24 -0
  427. package/src/views/test/test/test4.vue +108 -0
  428. package/src/views/test/test/test/345/211/257/346/234/254.vue +2424 -0
  429. package/src/views/test/test/useFormConfig.ts +192 -0
  430. package/src/views/test/test2/test2.vue +17 -0
  431. package/src/views/test/test3/test.vue +20 -0
  432. package/tailwind.config.js +12 -0
  433. package/tsconfig.json +75 -0
  434. package/vite.config.ts +121 -0
  435. package/dist/style.css +0 -1
  436. package/dist/style.css.gz +0 -0
  437. package/dist/umd/index.js +0 -210
  438. package/dist/umd/index.js.gz +0 -0
  439. /package/{dist → public}/favicon.ico +0 -0
@@ -0,0 +1,547 @@
1
+ import _ from 'lodash';
2
+ import { Ref, ref } from 'vue';
3
+ import { ElMessageBox, ElMessage, TabPaneName } from 'element-plus';
4
+ import { ICustomData, IFormTable } from '/@/types';
5
+ import { useFieldConfigController } from '/@/api/fieldConfigController/index';
6
+ import { find } from 'lodash';
7
+ const fieldConfig = useFieldConfigController();
8
+ interface saveForm {
9
+ initOriginConfig: (list: Array<IFormTable.FormTable>, index: number) => {};
10
+ }
11
+ export function useHsPageConfig(
12
+ panelConfig: Ref<IFormTable.FormTable>,
13
+ configs: Ref<Array<IFormTable.FormTable>>,
14
+ saveFormRef: Ref<saveForm>,
15
+ emits: (event: 'refresh', ...args: ICustomData.Data[]) => void
16
+ ) {
17
+ let systemData = ref(); // 系统数据
18
+ let menuData = ref(); // 菜单数据
19
+ /**
20
+ * 添加表格配置
21
+ */
22
+ const addTabPanel = () => {
23
+ panelConfig.value.tables.push({
24
+ id: 'table_' + new Date().getTime().toString(),
25
+ baseData: { id: '' },
26
+ tableConfig: [],
27
+ });
28
+ };
29
+ /**
30
+ * 移除tabs项
31
+ * @param targetName
32
+ * @returns
33
+ */
34
+ const removeTabPanel = (targetName: TabPaneName | undefined) => {
35
+ // 查询当前表格配置对象
36
+ let table = find(panelConfig.value.tables, (item: IFormTable.Table) => item['id'] == targetName);
37
+
38
+ // 删除表格配置提示
39
+ ElMessageBox.confirm(`确定删除${table?.baseData['tableName'] || '表格配置'}吗?`, '提示', {
40
+ confirmButtonText: '确认',
41
+ cancelButtonText: '取消',
42
+ type: 'warning',
43
+ })
44
+ .then(() => {
45
+ // 移除配置
46
+ _.remove(panelConfig.value.tables, (item: IFormTable.Table) => targetName && item.id == targetName);
47
+ // 给出操作成功提示
48
+ ElMessage.success('删除成功');
49
+ })
50
+ .catch((err) => {
51
+ console.log('err', err);
52
+ });
53
+ };
54
+ /**
55
+ * 编辑tabs
56
+ * @param targetName
57
+ * @param action
58
+ */
59
+ const handleTabsEdit = (targetName: TabPaneName | undefined, action: 'remove' | 'add') => {
60
+ switch (action) {
61
+ case 'remove':
62
+ // 删除配置
63
+ removeTabPanel(targetName);
64
+ break;
65
+ case 'add':
66
+ // 新增配置
67
+ addTabPanel();
68
+ break;
69
+ }
70
+ };
71
+ let config = ref();
72
+ /**
73
+ * 过滤出无效配置
74
+ * @param originConfig
75
+ * @returns
76
+ */
77
+ const filterInvalidConfig = (originConfig: IFormTable.FormTable) => {
78
+ if (originConfig.form) {
79
+ // 如果表单项没有配置字段参数,则将该表单项删除
80
+ if (originConfig.form.formConfig.length > 0) {
81
+ originConfig.form.formConfig = _.filter(
82
+ originConfig.form.formConfig,
83
+ (item: IFormTable.ConfigItemType) => item.data.baseData.prop && item.data.baseData.isApply
84
+ );
85
+ }
86
+ // 如果表单中没有表单项,则将表单配置删除
87
+ if (originConfig.form.formConfig.length <= 0) {
88
+ delete originConfig.form;
89
+ }
90
+ }
91
+ // 过滤掉表格配置项字段名为空的值
92
+ originConfig.tables.map((table: IFormTable.Table) => {
93
+ table.tableConfig = _.filter(table.tableConfig, (item: IFormTable.TableItem) => {
94
+ if ((item.data.field || item.data.type) && item.data.isApply) {
95
+ // =============== 如果存在列类型,则清空【列字段名】和【返回值类型】 【start】 =================
96
+ if (item.data.type) {
97
+ item.data.field = ''; // 清空列字段名
98
+ item.data.returnValueType = ''; // 清空返回值类型
99
+ }
100
+ // =============== 如果存在列类型,则清空【列字段名】和【返回值类型】 【end】 =================
101
+ // 过滤有value值的筛选条件数据
102
+ item.data.filters = _.filter(item.data.filters, (filterData: ICustomData.Data) => filterData.value);
103
+ // 过滤没有按钮key和没有启用的按钮数据【btnData】
104
+ item.btnData = _.filter(item.btnData, (btnItem: IFormTable.BtnItem) => btnItem.data.isApply && btnItem.data.key);
105
+ return true;
106
+ }
107
+ });
108
+ return table;
109
+ });
110
+ // 过滤掉没有表格配置项的表格
111
+ originConfig.tables = _.filter(originConfig.tables, (item: IFormTable.Table) => {
112
+ return item.tableConfig.length > 0;
113
+ });
114
+
115
+ // 过滤掉按钮配置项按钮key值为空的值
116
+ originConfig.btns = _.filter(originConfig.btns, (item: IFormTable.BtnItem) => item.data.key && item.data.isApply);
117
+ return originConfig;
118
+ };
119
+ /**
120
+ * 过滤对象中的空值【递归方法】
121
+ * @param data
122
+ */
123
+ const filterEmptyData = (data: ICustomData.Data = {}) => {
124
+ Object.keys(data).forEach((key) => {
125
+ // 过滤空值
126
+ if (
127
+ data[key] == '' ||
128
+ data[key] == null ||
129
+ data[key] == undefined ||
130
+ (data[key] instanceof Array && data[key].length <= 0) ||
131
+ (data[key] instanceof Object && _.isEmpty(data[key]))
132
+ ) {
133
+ // 删除值为空的属性
134
+ delete data[key];
135
+ } else if (data[key] instanceof Object) {
136
+ // 如果值是对象则用递归过滤空值
137
+ filterEmptyData(data[key]);
138
+ } else if (data[key] instanceof Array) {
139
+ // 如果是数据则遍历数组并将数组对象调用递归
140
+ data[key].map((item: ICustomData.Data) => {
141
+ return filterEmptyData(item);
142
+ });
143
+ }
144
+ });
145
+ return data;
146
+ };
147
+ /**
148
+ * 过滤配置保留配置数据【给业务配置解析使用数据】
149
+ * @param originConfig
150
+ */
151
+ const filterConfigReserveData = (originConfig: IFormTable.FormTable) => {
152
+ // 整理按钮配置数据
153
+ originConfig.btns = _.map(originConfig.btns, (item: IFormTable.BtnItem) => {
154
+ // 返回{id, data}
155
+ return {
156
+ id: item.id,
157
+ data: filterEmptyData(item.data),
158
+ };
159
+ });
160
+ if (originConfig.form) {
161
+ // 整理过滤空值表单配置数据
162
+ originConfig.form.baseData = _.assign({}, filterEmptyData(originConfig.form.baseData));
163
+ // 整理过滤出表单项配置
164
+ originConfig.form.formConfig = _.map(originConfig.form.formConfig, (item: IFormTable.ConfigItemType) => {
165
+ return {
166
+ data: filterEmptyData(item.data),
167
+ id: item.id,
168
+ };
169
+ });
170
+ }
171
+ // 整理表格配置数据
172
+ originConfig.tables = _.map(originConfig.tables, (table: IFormTable.Table) => {
173
+ let tableConfig = table.tableConfig.map((item: IFormTable.TableItem) => {
174
+ // 表格配置数据删除无用值字段
175
+ let list = item.btnData.map((btnItem: ICustomData.BtnItem) => filterEmptyData(btnItem));
176
+ return {
177
+ id: item.id,
178
+ data: filterEmptyData(item.data), // 过滤空值
179
+ btnData: list,
180
+ };
181
+ });
182
+ // 过滤空值
183
+ let baseData = filterEmptyData(table.baseData);
184
+ // 合并过滤空值后的数据
185
+ table = _.assign(table, { tableConfig, baseData });
186
+
187
+ return table;
188
+ });
189
+ return originConfig;
190
+ };
191
+
192
+ /**
193
+ * 格式化数据池数据
194
+ * @param originConfig
195
+ */
196
+ const formatDataPool = (originConfig: IFormTable.FormTable) => {
197
+ // 数据池数据类型
198
+ interface PoolData {
199
+ field_code: string;
200
+ field_name: string;
201
+ field_type: string; // 数据池中字段类型【1:按钮 2:表单 3:表格】
202
+ json_data: ICustomData.Data; //
203
+ }
204
+ // 定义数据池数据
205
+ let pool_data: PoolData[] = [];
206
+ // 遍历按钮向数据池中追加数据
207
+ originConfig.btns.forEach((item: IFormTable.BtnItem) => {
208
+ pool_data.push({
209
+ field_code: item.data.key,
210
+ field_name: item.data.name,
211
+ field_type: '1', // 数据池中字段类型【1:按钮 2:表单 3:表格】
212
+ json_data: item,
213
+ });
214
+ });
215
+ // 遍历表格向数据池中追加数据
216
+ originConfig.tables.forEach((table: IFormTable.Table) => {
217
+ table.tableConfig.forEach((item: IFormTable.TableItem) => {
218
+ if (item.data.field) {
219
+ // 追加表格字段配置字段池
220
+ pool_data.push({
221
+ field_code: item.data.field || '',
222
+ field_name: item.data.title || '',
223
+ field_type: '3', // 数据池中字段类型【1:按钮 2:表单 3:表格】
224
+ json_data: item,
225
+ });
226
+ }
227
+ // 追加按钮配置字段池
228
+ (item.btnData || []).forEach((btn: IFormTable.BtnItem) => {
229
+ console.log('btn', btn);
230
+
231
+ pool_data.push({
232
+ field_code: btn.data.key,
233
+ field_name: btn.data.name,
234
+ field_type: '1', // 数据池中字段类型【1:按钮 2:表单 3:表格】
235
+ json_data: btn,
236
+ });
237
+ });
238
+ });
239
+ });
240
+ if (originConfig.form) {
241
+ // 遍历表单向数据池中追加数据
242
+ (originConfig.form.formConfig || []).forEach((item: IFormTable.ConfigItemType) => {
243
+ pool_data.push({
244
+ field_code: item.data.baseData.prop,
245
+ field_name: item.data.baseData.label,
246
+ field_type: '2', // 数据池中字段类型【1:按钮 2:表单 3:表格】
247
+ json_data: item,
248
+ });
249
+ });
250
+ }
251
+ return pool_data;
252
+ };
253
+ /**
254
+ * 整理发送接口的权限数据
255
+ */
256
+ const formatAPIAuthData = () => {
257
+ // 按钮权限配置
258
+ let btns = (panelConfig.value.btns || []).map((item: IFormTable.BtnItem) => {
259
+ return {
260
+ id: item.id, // 按钮项id
261
+ fieldName: item.data.name, // 按钮名称
262
+ showName: item.data.name, // 显示名称
263
+ fieldProp: item.data.key, // 按钮标识
264
+ fieldShow: item.data.isShow, // 按钮是否显示
265
+ fieldRequired: false, // 是否必填给出默认值false
266
+ };
267
+ });
268
+ // 整理表格权限配置数据
269
+ let tables = (panelConfig.value.tables || []).map((table: IFormTable.Table) => {
270
+ let data = table.tableConfig.map((item: IFormTable.TableItem) => {
271
+ // 操作列中的按钮的权限配置
272
+ let option = (item.btnData || []).map((btn: IFormTable.BtnItem) => {
273
+ return {
274
+ id: btn.id || '', // 按钮id
275
+ fieldName: btn.data.name || '', // 按钮名称
276
+ showName: btn.data.name || '', // 显示名称
277
+ fieldProp: btn.data.key || '', // 按钮标识
278
+ fieldShow: btn.data.isShow || '', // 按钮是否显示
279
+ fieldRequired: false, // 是否必填给出默认值false
280
+ };
281
+ });
282
+ return {
283
+ id: item.id, // 字段id
284
+ fieldName: item.data.title,
285
+ showName: item.data.title,
286
+ fieldProp: item.data.field,
287
+ fieldShow: false, // 是否显示字段
288
+ fieldRequired: false, // 是否必填字段
289
+ fieldExport: false, // 是否导出字段
290
+ option: option,
291
+ };
292
+ });
293
+ return {
294
+ tableId: table.id || '',
295
+ id: table.id || '',
296
+ tableName: table.baseData.tableName || '',
297
+ data: data,
298
+ };
299
+ });
300
+ let form = (panelConfig.value.form?.formConfig || []).map((item: IFormTable.ConfigItemType) => {
301
+ return {
302
+ id: item.id,
303
+ fieldName: item.data.baseData.label || '',
304
+ showName: item.data.baseData.label || '',
305
+ fieldProp: item.data.baseData.prop || '',
306
+ fieldShow: item.data.baseData.isShow || false,
307
+ fieldRequired: item.data.elData.rules.required || false,
308
+ };
309
+ });
310
+ let config = {
311
+ config_type: '1',
312
+ config_unique_id: panelConfig.value.config_unique_id,
313
+ btns: btns,
314
+ tables: tables,
315
+ form: form,
316
+ menu_id: menuData.value.id,
317
+ };
318
+ // 返回数据
319
+ return config;
320
+ };
321
+ /**
322
+ * 过滤数据权限配置
323
+ * @param originConfig
324
+ */
325
+ const getDataAuthConfig = () => {
326
+ interface AuthData {
327
+ /** 按钮权限数据 */
328
+ btns: ICustomData.Data;
329
+ /** form权限数据 */
330
+ form: ICustomData.Data;
331
+ /** 表格权限数据 */
332
+ tables: ICustomData.Data;
333
+ }
334
+ // 定义一个空页面权限数据
335
+ let pageAuthData: AuthData[] = [];
336
+ // 获取页面中的所有配置
337
+ let configList = _.cloneDeep(configs.value);
338
+ // 【configlist】正常是过滤冗余字段
339
+ configList.forEach((config: IFormTable.FormTable) => {
340
+ let authData = {
341
+ code: config.config_unique_id,
342
+ name: config.config_name,
343
+ btns: {},
344
+ form: {},
345
+ tables: {},
346
+ };
347
+ // 将表单、表格、按钮配置转为map数据
348
+ authData.btns = _.keyBy(
349
+ (config.btns || []).map((item: IFormTable.BtnItem) => {
350
+ return {
351
+ code: item.data.key, // 字段值
352
+ name: item.data.name, // 字段名
353
+ is_export: true, // 是否导出
354
+ show: true, // 是否显示
355
+ };
356
+ }),
357
+ 'code'
358
+ );
359
+ if (config.form) {
360
+ let form = config.form.formConfig.map((item: IFormTable.ConfigItemType) => {
361
+ return {
362
+ code: item.data.baseData.prop, // 字段值
363
+ name: item.data.baseData.label, // 字段名
364
+ is_export: true, // 是否导出
365
+ show: true, // 是否显示
366
+ };
367
+ });
368
+ authData.form = _.keyBy(form, 'code');
369
+ }
370
+ (config.tables || []).forEach((table: IFormTable.Table) => {
371
+ let tableObject = _.keyBy(
372
+ table.tableConfig.map((item: IFormTable.TableItem) => {
373
+ return {
374
+ name: item.data.title,
375
+ code: item.data.field,
376
+ is_export: true, // 是否导出
377
+ show: true, // 是否显示
378
+ };
379
+ }),
380
+ 'code'
381
+ );
382
+ authData.tables = _.assign(authData.tables, {
383
+ [table.id]: tableObject,
384
+ });
385
+ });
386
+ pageAuthData.push(authData);
387
+ });
388
+ // 将数组转为对象
389
+ let data: ICustomData.Data = {};
390
+ // 将数据转为map数据
391
+ data = _.keyBy(pageAuthData, 'code');
392
+ return data;
393
+ };
394
+ // 当前tab项
395
+ let tabsActiveName = ref('btn');
396
+ /**
397
+ * 切换表单表格配置
398
+ * @param config
399
+ */
400
+ const changeConfig = (config: IFormTable.FormTable) => {
401
+ // 更新配置
402
+ panelConfig.value = config;
403
+ // 切换tab至按钮配置
404
+ tabsActiveName.value = 'btn';
405
+ };
406
+
407
+ const initConfigData = (index: number) => {
408
+ // 切换页面,将当前切为默认按钮配置
409
+ tabsActiveName.value = 'btn';
410
+ // 调用保存组件的初始化数据的方法
411
+ if (saveFormRef.value) {
412
+ saveFormRef.value.initOriginConfig(configs.value, index);
413
+ }
414
+ };
415
+
416
+ /**
417
+ * 初始化数据
418
+ * @param configs
419
+ */
420
+ const initData = (
421
+ configList: Array<IFormTable.FormTable>,
422
+ menu: Record<string, IFormTable.Data | string>,
423
+ system: Record<string, IFormTable.Data | string>
424
+ ) => {
425
+ // 更新页面配置数据
426
+ configs.value = configList;
427
+ systemData.value = system; // 系统信息
428
+ menuData.value = menu; // 页面信息
429
+
430
+ initConfigData(0);
431
+ };
432
+ /**
433
+ * 保存表单表格配置
434
+ */
435
+ const saveFormTableConfig = async (form: { config_name: string; config_unique_id: string }) => {
436
+ // ===================== 过滤掉无效配置 start =======================
437
+ // 清除表单、表格、按钮中 无用的项
438
+ let originConfig = await filterInvalidConfig(_.cloneDeep(panelConfig.value));
439
+ originConfig = _.assign(originConfig, form);
440
+ // 当前配置项在配置数组中所在的下标
441
+ let ids = configs.value.map((item) => item.config_unique_id);
442
+ let idx = ids.indexOf(originConfig.config_unique_id);
443
+ // 判断是修改配置还是新增配置
444
+ if (idx > -1) {
445
+ // 替换配置数据
446
+ configs.value.splice(idx, 1, originConfig);
447
+ } else {
448
+ // 新增配置
449
+ configs.value.push(originConfig);
450
+ }
451
+ // ===================== 过滤掉无效配置 end =======================
452
+ // ===================== 新增数据池数据 start =======================
453
+ let data_pool = await formatDataPool(originConfig);
454
+ // ===================== 新增数据池数据 end =======================
455
+ // ===================== 过滤掉配置项保留配置数据 start =======================
456
+ // 清除表单、表格、按钮中 无用的项
457
+ let businessConfig = await filterConfigReserveData(_.cloneDeep(originConfig));
458
+ // ===================== 过滤掉配置项保留配置数据 end =======================
459
+ // ===================== 过滤出权限所需配置 start =======================
460
+ // 将页面中的全部配置 整合 为一个权限配置数据
461
+ let auth_data = await formatAPIAuthData();
462
+ let authConfig = await getDataAuthConfig();
463
+ // ===================== 过滤出权限所需配置 end =======================
464
+
465
+ console.log(
466
+ 'originConfig系统配置',
467
+ originConfig,
468
+ // JSON.stringify(originConfig),
469
+ 'businessConfig==业务配置',
470
+ businessConfig,
471
+ 'authConfig权限配置数组',
472
+ authConfig,
473
+ 'data_pool 数据池数据',
474
+ data_pool,
475
+ '权限数据',
476
+ auth_data
477
+ );
478
+ // =========================== 保存配置接口 start ========================
479
+ let obj = {
480
+ business_json: JSON.stringify(originConfig), // 表格字段业务json数据
481
+ config_name: originConfig.config_name, // 配置名称
482
+ config_type: '1', // 配置类型 默认1
483
+ config_unique_id: originConfig.config_unique_id, // 配置标识
484
+ field_json: JSON.stringify(businessConfig), // 表格字段json数据
485
+ menu_id: menuData.value.id || '', // 菜单id
486
+ page_name: menuData.value.meta.title, // 页面名称
487
+ field_pool_json: JSON.stringify(data_pool), //字段池json数据
488
+ // 30e0ab7cdecf4992a99e42af79031aa9
489
+ config_json: JSON.stringify(auth_data), // 权限配置数据
490
+ id: originConfig.id || '', // id
491
+ project_code: systemData.value.project_code, // 所属系统
492
+ update_time: originConfig.update_time || '',
493
+ };
494
+ console.log('obj', obj);
495
+ fieldConfig
496
+ .postSaveField4Table(obj)
497
+ .then((res) => {
498
+ console.log('res---保存配置', res);
499
+ ElMessage.success('保存配置成功');
500
+ config.value = originConfig;
501
+ // 更新页面数据
502
+ emits('refresh');
503
+ })
504
+ .catch((err) => {
505
+ console.log('er', err);
506
+ });
507
+ // =========================== 保存配置接口 end ========================
508
+ // =========================== 保存权限配置接口 start ========================
509
+ // let authObj = {};
510
+ // =========================== 保存权限配置接口 end ========================
511
+ };
512
+ /**
513
+ * 删除配置
514
+ */
515
+ const deleteConfig = () => {
516
+ ElMessageBox.prompt(`确认删除【${panelConfig.value.config_name}】吗?`, '提示', {
517
+ confirmButtonText: '确认',
518
+ cancelButtonText: '取消',
519
+ inputPattern: /^确认删除/,
520
+ inputErrorMessage: '请输入“确认删除”',
521
+ inputPlaceholder: '请输入“确认删除”',
522
+ })
523
+ .then(() => {
524
+ fieldConfig.postDelFieldById<Record<string, ICustomData.Data | number>>({ id: panelConfig.value.id }).then((res) => {
525
+ if (res.code != 1) return;
526
+ ElMessage.success('删除成功');
527
+ setTimeout(() => {
528
+ // 更新页面数据
529
+ emits('refresh');
530
+ }, 1500);
531
+ });
532
+ })
533
+ .catch(() => {
534
+ ElMessage.info('已取消删除');
535
+ });
536
+ };
537
+
538
+ return {
539
+ handleTabsEdit,
540
+ saveFormTableConfig,
541
+ changeConfig,
542
+ initData,
543
+ tabsActiveName,
544
+ config,
545
+ deleteConfig,
546
+ };
547
+ }
@@ -0,0 +1,50 @@
1
+ <template>
2
+ <hs-select ref="selectRef" v-bind="$attrs">
3
+ <template v-if="groupAttrs.isGroupEnabled">
4
+ <hs-option-group v-for="group in optionsList" :key="group.label" :label="group.label">
5
+ <hs-option v-for="option in group.options" :key="option.value" :value="option[optionAttrs.value]" :label="option[optionAttrs.label]" />
6
+ </hs-option-group>
7
+ </template>
8
+ <template v-else>
9
+ <hs-option
10
+ v-for="option in optionsList"
11
+ :disabled="optionAttrs.disabled"
12
+ :key="option.value"
13
+ :value="option[optionAttrs.value]"
14
+ :label="option[optionAttrs.label]"
15
+ ></hs-option>
16
+ </template>
17
+ </hs-select>
18
+ </template>
19
+ <script lang="ts" setup name="BcSelect">
20
+ import { computed, ref } from 'vue';
21
+ import { ICustomData } from '/@/types';
22
+ import { Selelct } from '/@/types';
23
+
24
+ interface Props {
25
+ options: ICustomData.Data[];
26
+ groupAttrs: Selelct['groupAttrs'];
27
+ optionAttrs: Selelct['optionAttrs'];
28
+ }
29
+
30
+ const props = defineProps<Props>();
31
+ const selectRef = ref();
32
+ const optionsList = computed(() => {
33
+ if (props.options) {
34
+ return props.options as unknown as ICustomData.Data[];
35
+ }
36
+ return [];
37
+ });
38
+ function focus() {
39
+ selectRef.value.getInstance().focus();
40
+ }
41
+ function blur() {
42
+ selectRef.value.getInstance().blur();
43
+ }
44
+ function activeElement() {
45
+ return selectRef.value.getInstance().inputRef;
46
+ }
47
+
48
+ defineExpose({ focus, blur, activeElement });
49
+ </script>
50
+ <style scoped lang="scss"></style>
@@ -0,0 +1,36 @@
1
+ <template>
2
+ <div class="flex">
3
+ <div v-if="props.showLabel" class="basis-1/4 flex flex-col justify-center">{{ props.labelText }}</div>
4
+ <hs-select class="flex-1" v-model="curSys" @change="onChange">
5
+ <hs-option v-for="item in systems" :key="item.value" :label="item.label" :value="item.value" />
6
+ </hs-select>
7
+ </div>
8
+ </template>
9
+
10
+ <script setup lang="ts">
11
+ import { onMounted } from 'vue';
12
+ import { useHsSwitchSystems } from './useSwitchSystems';
13
+ const props = defineProps({
14
+ // 是否显示label
15
+ showLabel: {
16
+ type: Boolean,
17
+ default: false,
18
+ },
19
+ // 自定义label文本内容
20
+ labelText: {
21
+ type: String,
22
+ default: '当前系统:',
23
+ },
24
+ });
25
+ const emits = defineEmits(['change']);
26
+ // 结构hook中的方法数据
27
+ const { onChange, initData, curSys, systems } = useHsSwitchSystems(emits);
28
+ /**
29
+ * 生命周期函数
30
+ */
31
+ onMounted(() => {
32
+ initData();
33
+ });
34
+ </script>
35
+
36
+ <style lang="scss" scoped></style>
@@ -0,0 +1,73 @@
1
+ import { ref, Ref } from 'vue';
2
+ import _ from 'lodash';
3
+ import { IFormTable } from '/@/types';
4
+ import { Session } from '/@/utils/storage';
5
+ import { useSystemController } from '/@/api/systemController';
6
+ const system = useSystemController();
7
+ import { GetAllSystemInfo } from '/@/api/systemController/type';
8
+ export function useHsSwitchSystems(emits: (event: 'change', ...args: IFormTable.Data[]) => void) {
9
+ // 类型
10
+ type Option = Record<'value' | 'label', string>;
11
+
12
+ // 当前系统绑定值
13
+ let curSys = ref('');
14
+ // 下拉选择数据
15
+ let systems = ref<GetAllSystemInfo.data>();
16
+ /**
17
+ * 切换选择系统回调
18
+ */
19
+ const onChange = (value: string) => {
20
+ // 获取操作对象
21
+ let item = systems.value.find((item: Option) => item.value == value);
22
+ // 对象赋值
23
+ curSys.value = _.cloneDeep(item?.value || '');
24
+ // 将对象存到缓存中【当前系统】
25
+ Session.set('CURRENT_SYSTEM', item);
26
+ emits('change', item);
27
+ };
28
+ /**
29
+ * 获取所有系统信息列表
30
+ */
31
+ const getSystemData = () => {
32
+ system
33
+ .getAllSystemInfo<GetAllSystemInfo>()
34
+ .then((res) => {
35
+ if (res.code == 1) {
36
+ // 将返回的所有系统数据
37
+ systems.value = (res.data || []).map((item) => {
38
+ let obj = {
39
+ ...item,
40
+ label: item.project_name || '',
41
+ value: item.project_code || '',
42
+ };
43
+ return obj;
44
+ });
45
+ // 如果缓存中存在系统项则用缓存中的数据,如果缓存中没有则取接口返回的第一条数据 否则为空
46
+ let systemData: Option | undefined = Session.get('CURRENT_SYSTEM') || systems.value[0];
47
+ // 调用回调change事件,则更新第一个系统的菜单
48
+ onChange((systemData && systemData.value) || '');
49
+ }
50
+ })
51
+ .catch((err) => {
52
+ console.log('err', err);
53
+ });
54
+ };
55
+ /**
56
+ * 从缓存中获取数据,初始化数据方法
57
+ */
58
+ const initData = () => {
59
+ // 从缓存中取系统数据
60
+ let systemData: Option | undefined = Session.get('CURRENT_SYSTEM');
61
+
62
+ // 赋值
63
+ curSys.value = systemData?.value || '';
64
+ // 获取所有配置
65
+ getSystemData();
66
+ };
67
+ return {
68
+ onChange,
69
+ initData,
70
+ curSys,
71
+ systems,
72
+ };
73
+ }