@pubinfo/module-rbac 2.0.0-rc.2 → 2.0.0-rc.3

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 (247) hide show
  1. package/dist/{ComponentSelect-Dyqb3Uh3.js → ComponentSelect-B1ZyenXP.js} +897 -945
  2. package/dist/ComponentSelect-DlVJI5an.js +2 -0
  3. package/dist/DynamicRoutesForm-Cu3WhRpA.js +4 -0
  4. package/dist/{DynamicRoutesForm-D3nGj7oA.js → DynamicRoutesForm-qjbrykW4.js} +95 -95
  5. package/dist/HCheckList-Cze_TkQp.js +2 -0
  6. package/dist/HoverCard-B79q5sly.js +43 -0
  7. package/dist/HoverCard-U5WTpvFy.js +2 -0
  8. package/dist/{ImportExport-Yt6dABIv.js → ImportExport-Clbc8xaw.js} +65 -65
  9. package/dist/ImportExport-CtEZTU87.js +4 -0
  10. package/dist/MetaForm-BWy4Lpr8.js +5 -0
  11. package/dist/MetaForm-DpH9an5A.js +300 -0
  12. package/dist/MetaForm.css +1 -0
  13. package/dist/OrgAndPosition-3lCm4Fyb.js +2 -0
  14. package/dist/ResourceEdit-0_cYB0iu.js +338 -0
  15. package/dist/ResourceEdit-CYPzEbqn.js +10 -0
  16. package/dist/{ResourceRelation-BihfkBCe.js → ResourceRelation-CZ8hGgOm.js} +6 -6
  17. package/dist/ResourceRelation-DMWa09ae.js +3 -0
  18. package/dist/{ResourceRelation-CBPrqf2V.js → ResourceRelation-DkKdZ3TD.js} +2 -2
  19. package/dist/ResourceRelation.css +1 -1
  20. package/dist/ResourceRelation2.css +1 -1
  21. package/dist/{ResourceSelector-CxZ1ae30.js → ResourceSelector-ConJ30Jd.js} +48 -48
  22. package/dist/ResourceSelector.css +1 -1
  23. package/dist/{RoleRelation-BlWDNAM1.js → RoleRelation-B1D1NM_L.js} +1 -1
  24. package/dist/RoleRelation-DySyilcs.js +2 -0
  25. package/dist/RoleSelector-DOt30OLy.js +279 -0
  26. package/dist/TenantEdit-D8-Pt7sf.js +6 -0
  27. package/dist/{TenantEdit-Bt31IV9W.js → TenantEdit-DNJzo8SS.js} +19 -19
  28. package/dist/{UserAuthorization-Dhp0ZamX.js → UserAuthorization-DPHUk69M.js} +6 -6
  29. package/dist/UserAuthorization-DuioGghR.js +4 -0
  30. package/dist/UserAuthorization.css +1 -1
  31. package/dist/UserEdit-6HYbgtOh.js +4 -0
  32. package/dist/{UserEdit-CqH6hxTZ.js → UserEdit-C6eNXSCu.js} +24 -24
  33. package/dist/animation_item-C3pkH-cB.js +2 -0
  34. package/dist/{blackWhiteList-B7tUj2Rx.js → blackWhiteList-DQALdBZf.js} +10 -10
  35. package/dist/blackWhiteList.css +1 -1
  36. package/dist/{breadcrumb_setting-CIm-6QHw.js → breadcrumb_setting-D3UjJYhA.js} +32 -32
  37. package/dist/breadcrumb_setting.css +1 -1
  38. package/dist/browserType-BGl2j5RW.js +2 -0
  39. package/dist/components/OrgUserSelector/OrgSelector.vue.d.ts +1 -1
  40. package/dist/components/OrgUserSelector/UserSelector.vue.d.ts +1 -1
  41. package/dist/components/ResourceSelector/index.vue.d.ts +1 -1
  42. package/dist/composables/useWebSocketManager.d.ts +8 -0
  43. package/dist/createAndEditDataPermission-CAaxueTy.js +8 -0
  44. package/dist/{createAndEditDataPermission-Bd3tlIEE.js → createAndEditDataPermission-DnAcKvaE.js} +55 -55
  45. package/dist/createAndEditDataPermission.css +1 -1
  46. package/dist/{data-permission-Db1Lu9KO.js → data-permission-CLnnLoPt.js} +8 -8
  47. package/dist/data-permission.css +1 -1
  48. package/dist/{dictionary-XMJprxvM.js → dictionary-BFM0Mx0P.js} +3 -3
  49. package/dist/{drawerBlackWhiteList-D-Sq4mul.js → drawerBlackWhiteList-BYACpO3D.js} +9 -9
  50. package/dist/drawerBlackWhiteList-C3xS7Kxx.js +3 -0
  51. package/dist/{drawerDictionary-Bw3w5PTm.js → drawerDictionary-BUBLrbTi.js} +13 -13
  52. package/dist/drawerDictionary-Bk0BgL7i.js +4 -0
  53. package/dist/{drawerDictionaryItem-4WIgL3No.js → drawerDictionaryItem-CfOPleN6.js} +14 -14
  54. package/dist/drawerDictionaryItem-Dy2T56AH.js +4 -0
  55. package/dist/{drawerGroup-932n7Ywc.js → drawerGroup-Bly3CWfM.js} +10 -10
  56. package/dist/drawerGroup-ZyzAWXOl.js +3 -0
  57. package/dist/{drawerOrganization-IwZZkHWM.js → drawerOrganization-BhO5-PP5.js} +27 -27
  58. package/dist/drawerOrganization-HSVB8JzO.js +3 -0
  59. package/dist/{drawerPosition-BiO92_At.js → drawerPosition-CM0NBfoR.js} +15 -15
  60. package/dist/drawerPosition-vsuG4JYe.js +3 -0
  61. package/dist/drawerRegion-BXZ751ge.js +3 -0
  62. package/dist/{drawerRegion-CNOK55im.js → drawerRegion-CGySAL6D.js} +17 -17
  63. package/dist/{drawerRole-IIsKhycU.js → drawerRole-BE0utb7R.js} +9 -9
  64. package/dist/drawerRole-BVeaz3Yb.js +5 -0
  65. package/dist/drawerRole-BdoMYLYW.js +215 -0
  66. package/dist/drawerRole-BeUNs7cF.js +6 -0
  67. package/dist/drawerRole-DNsK5a6O.js +3 -0
  68. package/dist/{drawerRole-PnDochPg.js → drawerRole-DS7fbx1h.js} +10 -10
  69. package/dist/{group-BzuuCGyR.js → group-B1gGoTD5.js} +10 -10
  70. package/dist/group.css +1 -1
  71. package/dist/index.css +1 -1
  72. package/dist/index.d.ts +3 -0
  73. package/dist/index.js +2065 -1875
  74. package/dist/{itemlist-KOYuEUk4.js → itemlist-uCHnA_We.js} +3 -3
  75. package/dist/{layout_setting-DQgWzV7M.js → layout_setting-DMvxwL31.js} +20 -20
  76. package/dist/layout_setting.css +1 -1
  77. package/dist/{loginHistoryDetail-DgHx6n66.js → loginHistoryDetail-BAYuSqvw.js} +2 -2
  78. package/dist/loginHistoryDetail-DiuNa6Sv.js +4 -0
  79. package/dist/{login_history-Co6JLGsd.js → login_history-BexfCN-1.js} +7 -7
  80. package/dist/login_history.css +1 -1
  81. package/dist/{menu_setting-B0QIQ1um.js → menu_setting-BXR3EAXD.js} +43 -43
  82. package/dist/menu_setting.css +1 -1
  83. package/dist/not-data-OpiacaSk.js +2 -0
  84. package/dist/{operateHistoryDetail-BrdNmYD0.js → operateHistoryDetail-DiuqMTkN.js} +2 -2
  85. package/dist/operateHistoryDetail-r30ZBNqw.js +4 -0
  86. package/dist/{operate_history-CVeIorOr.js → operate_history-hXxS3atI.js} +7 -7
  87. package/dist/operate_history.css +1 -1
  88. package/dist/{organization-CXMk4mRo.js → organization-cvYm9P9w.js} +2647 -2647
  89. package/dist/organization.css +1 -1
  90. package/dist/{other_setting-DK9MHysY.js → other_setting-DjVQevBW.js} +69 -69
  91. package/dist/other_setting.css +1 -1
  92. package/dist/{page_animation_setting-tSYfjx-m.js → page_animation_setting-DgHHmFEc.js} +52 -52
  93. package/dist/page_animation_setting.css +1 -1
  94. package/dist/{page_w_setting-BDI5KsA-.js → page_w_setting-B_im6vBo.js} +20 -20
  95. package/dist/page_w_setting.css +1 -1
  96. package/dist/{position-BjUZQQUz.js → position-BkpbHXYP.js} +2 -2
  97. package/dist/{region-BsX0gK_y.js → region-DVkbjI9t.js} +6 -6
  98. package/dist/{resource-DKhlH74I.js → resource-CrhX7VRK.js} +13 -11
  99. package/dist/{role-ffXddsAo.js → role-PjmrOdFd.js} +6 -6
  100. package/dist/{role_group-BBH28A40.js → role_group-Dlx-6BZF.js} +2 -2
  101. package/dist/routeSystem-Dg0b6mAl.js +2 -0
  102. package/dist/{safe_setting-Dis73Gsw.js → safe_setting-DpWUCv2p.js} +1 -1
  103. package/dist/setItem-9ZBl0BlF.js +5 -0
  104. package/dist/setItem-BenNySNl.js +77 -0
  105. package/dist/setItem.css +1 -1
  106. package/dist/stores/view.d.ts +56 -0
  107. package/dist/{tabbar_setting-DGwk_Oec.js → tabbar_setting-9UKDc1Ev.js} +38 -38
  108. package/dist/tabbar_setting.css +1 -1
  109. package/dist/{tenant-BhA6R8aJ.js → tenant-BGtOP_wo.js} +5 -5
  110. package/dist/{theme_setting-Ca1YGTdZ.js → theme_setting-BBLaZ4NS.js} +8 -8
  111. package/dist/theme_setting.css +1 -1
  112. package/dist/{toolbar_setting-Cmrpyxgs.js → toolbar_setting-OemNp6pO.js} +37 -37
  113. package/dist/toolbar_setting.css +1 -1
  114. package/dist/{useAppAndResource-BgnrL15l.js → useAppAndResource-CeMCjg2v.js} +1 -1
  115. package/dist/{user-Bnb1cvVD.js → user-JCiGXodF.js} +11 -11
  116. package/dist/user.css +1 -1
  117. package/dist/utils/routeSystem.d.ts +55 -0
  118. package/dist/views/blackWhiteList/index.vue.d.ts +2 -2
  119. package/dist/views/data-permission/components/createAndEditDataPermission.vue.d.ts +5 -5
  120. package/dist/views/data-permission/index.vue.d.ts +7 -7
  121. package/dist/views/dictionary/index.vue.d.ts +2 -2
  122. package/dist/views/dictionary/itemlist.vue.d.ts +2 -2
  123. package/dist/views/group/index.vue.d.ts +2 -2
  124. package/dist/views/log_center/login_history.vue.d.ts +2 -2
  125. package/dist/views/log_center/operate_history.vue.d.ts +2 -2
  126. package/dist/views/position/index.vue.d.ts +2 -2
  127. package/dist/views/region/index.vue.d.ts +2 -2
  128. package/dist/views/resource/components/HoverCard.vue.d.ts +21 -0
  129. package/dist/views/resource/index.vue.d.ts +2 -2
  130. package/dist/views/resource/model.d.ts +3 -1
  131. package/dist/views/role/components/ResourceRelation.vue.d.ts +2 -2
  132. package/dist/views/role/components/drawerRole.vue.d.ts +2 -2
  133. package/dist/views/role/index.vue.d.ts +6 -6
  134. package/dist/views/role_group/index.vue.d.ts +2 -2
  135. package/dist/views/tenant/components/TenantEdit.vue.d.ts +2 -2
  136. package/dist/views/tenant/index.vue.d.ts +4 -4
  137. package/dist/views/user/index.vue.d.ts +2 -2
  138. package/dist/{watermark_setting-BnBt5gdM.js → watermark_setting-C1VFRfbW.js} +111 -111
  139. package/dist/watermark_setting.css +1 -1
  140. package/package.json +7 -7
  141. package/src/composables/useWebSocketManager.ts +104 -0
  142. package/src/index.ts +22 -0
  143. package/src/stores/view.ts +292 -0
  144. package/src/utils/routeSystem.ts +53 -0
  145. package/src/views/region/index.vue +1 -1
  146. package/src/views/resource/components/ComponentSelect.vue +12 -119
  147. package/src/views/resource/components/HoverCard.vue +62 -0
  148. package/src/views/resource/components/MetaForm.vue +129 -67
  149. package/src/views/resource/components/ResourceEdit.vue +33 -4
  150. package/src/views/resource/hooks/useMetaForm.ts +23 -0
  151. package/src/views/resource/model.ts +5 -1
  152. package/src/views/watermark_setting/index.vue +2 -2
  153. package/dist/ComponentSelect-Din5Vses.js +0 -2
  154. package/dist/DynamicRoutesForm-CkmCaHum.js +0 -4
  155. package/dist/HCheckList-Dd2Tx0jW.js +0 -2
  156. package/dist/ImportExport-BbZkZEW_.js +0 -4
  157. package/dist/MetaForm-CI-T2qEE.js +0 -284
  158. package/dist/MetaForm-CrsQmdOg.js +0 -4
  159. package/dist/OrgAndPosition-CDCim7yM.js +0 -2
  160. package/dist/ResourceEdit-BFXA953U.js +0 -309
  161. package/dist/ResourceEdit-V6gt22gW.js +0 -8
  162. package/dist/ResourceRelation-BnLQZey7.js +0 -3
  163. package/dist/RoleRelation-CAMzPMFz.js +0 -2
  164. package/dist/RoleSelector-DTnDRRTQ.js +0 -279
  165. package/dist/TenantEdit-DYHJehf0.js +0 -6
  166. package/dist/UserAuthorization-BdHxAQlK.js +0 -4
  167. package/dist/UserEdit-CqrRx717.js +0 -4
  168. package/dist/animation_item-COb6VI4T.js +0 -2
  169. package/dist/browserType-D2cPQa0k.js +0 -2
  170. package/dist/createAndEditDataPermission-6pvYsJo9.js +0 -8
  171. package/dist/drawerBlackWhiteList-DK4g_CpC.js +0 -3
  172. package/dist/drawerDictionary-DHIcxPrY.js +0 -4
  173. package/dist/drawerDictionaryItem-dg1sIDYE.js +0 -4
  174. package/dist/drawerGroup-CrF2c8UJ.js +0 -3
  175. package/dist/drawerOrganization-b39q3V33.js +0 -3
  176. package/dist/drawerPosition-BjoDy0cQ.js +0 -3
  177. package/dist/drawerRegion-omVT_dpq.js +0 -3
  178. package/dist/drawerRole-BaQBb2-J.js +0 -215
  179. package/dist/drawerRole-BqMh5l11.js +0 -5
  180. package/dist/drawerRole-D7VJRLmp.js +0 -6
  181. package/dist/drawerRole-dJ3m0_K2.js +0 -3
  182. package/dist/loginHistoryDetail-BNGtarOv.js +0 -4
  183. package/dist/not-data-uXybSS43.js +0 -2
  184. package/dist/operateHistoryDetail-DsM4L8Nz.js +0 -4
  185. package/dist/setItem-CjNn98dC.js +0 -77
  186. package/dist/setItem-H6NRNSt7.js +0 -5
  187. /package/dist/{HCheckList-3zLNVNr0.js → HCheckList-CmS0Zgjk.js} +0 -0
  188. /package/dist/{OrgAndPosition-BK5MTlOO.js → OrgAndPosition-DYxNkasL.js} +0 -0
  189. /package/dist/{_plugin-vue_export-helper-Bvl99pNT.js → _plugin-vue_export-helper-DziIhCOI.js} +0 -0
  190. /package/dist/{add-child-sIXCU5sL.js → add-child-BqjLtFNF.js} +0 -0
  191. /package/dist/{animation_item-D78koyTo.js → animation_item-Cg-CB3zX.js} +0 -0
  192. /package/dist/{authority-DQ4-SayE.js → authority-BCFCPQkb.js} +0 -0
  193. /package/dist/{authorize-CR54jxEa.js → authorize-BykMzt1r.js} +0 -0
  194. /package/dist/{blacklist-disable-ypFSVSX1.js → blacklist-disable-COoLZMSA.js} +0 -0
  195. /package/dist/{blacklist-enable-DlkD_15-.js → blacklist-enable-LZep1trj.js} +0 -0
  196. /package/dist/{browser-chrome-DNH4U6iO.js → browser-chrome-D0rex7Ir.js} +0 -0
  197. /package/dist/{browser-edge-4sSjlzO1.js → browser-edge-KCb_AIL5.js} +0 -0
  198. /package/dist/{browser-ie-yTwVV0GC.js → browser-ie-C1znjJM-.js} +0 -0
  199. /package/dist/{browser-other-Jax-vzDs.js → browser-other-C4er8PkV.js} +0 -0
  200. /package/dist/{browser-safari-B7PIezpj.js → browser-safari-BPRC1TV-.js} +0 -0
  201. /package/dist/{browserType-DZrDbVVY.js → browserType-E4RCiZfN.js} +0 -0
  202. /package/dist/{configData-CONUFxaH.js → configData-DQOHeFW2.js} +0 -0
  203. /package/dist/{dayjs.min-KffHrkDe.js → dayjs.min-DcxwBe2I.js} +0 -0
  204. /package/dist/{edit-CCL7qbDV.js → edit-C9HH0bNg.js} +0 -0
  205. /package/dist/{enum-DUjQrWbG.js → enum-B1DCzyaW.js} +0 -0
  206. /package/dist/{enum-CUMv4gQ2.js → enum-BWzxzuim.js} +0 -0
  207. /package/dist/{enum-B-lkiBy0.js → enum-CYW8g64p.js} +0 -0
  208. /package/dist/{enum-BMY6bmPA.js → enum-D0U38jb6.js} +0 -0
  209. /package/dist/{enum-Bg70i-vM.js → enum-VH4_jOj5.js} +0 -0
  210. /package/dist/{icard-BUuV9yW4.js → icard-FW0Ro50-.js} +0 -0
  211. /package/dist/{icon_animation-rPC0qi0K.js → icon_animation-DuNUKCIP.js} +0 -0
  212. /package/dist/{icon_breadcrumb-BOiEdwRY.js → icon_breadcrumb-DrPNYW5B.js} +0 -0
  213. /package/dist/{icon_copyright-zk1pF8Jj.js → icon_copyright-Di3Yr0PZ.js} +0 -0
  214. /package/dist/{icon_jt-BMoQoZvf.js → icon_jt-C4rQLl9Y.js} +0 -0
  215. /package/dist/{icon_layout-KBHA8xU_.js → icon_layout-5L9E7uN2.js} +0 -0
  216. /package/dist/{icon_mainpage-BTdCCyi2.js → icon_mainpage-DMKqRgmE.js} +0 -0
  217. /package/dist/{icon_menu-5k8XiWt5.js → icon_menu-Cp7-Zght.js} +0 -0
  218. /package/dist/{icon_page_size-DUMZ6xhJ.js → icon_page_size-Dc0zqT2W.js} +0 -0
  219. /package/dist/{icon_position_type-Cnkn2IzO.js → icon_position_type-DH2qxQQE.js} +0 -0
  220. /package/dist/{icon_safe_manage-B0PtL90p.js → icon_safe_manage-DXYWl1y-.js} +0 -0
  221. /package/dist/{icon_screen_scale-CwVhfflc.js → icon_screen_scale-DwC6qqx2.js} +0 -0
  222. /package/dist/{icon_system_manage-vM71UmjM.js → icon_system_manage-BYTldLly.js} +0 -0
  223. /package/dist/{icon_tabbar-CuMnIey0.js → icon_tabbar-CxffARwI.js} +0 -0
  224. /package/dist/{icon_toolbar-BoCbAU3P.js → icon_toolbar-CsxnTrNJ.js} +0 -0
  225. /package/dist/{icon_topbar-DGIDBcE6.js → icon_topbar-DS-oEZFA.js} +0 -0
  226. /package/dist/{icon_watermark-BBU-lOdN.js → icon_watermark-DDXsHlfQ.js} +0 -0
  227. /package/dist/{log-center-Z3WDfhg1.js → log-center-BFjZ4IE1.js} +0 -0
  228. /package/dist/{log-BgIwPjNu.js → log-hgUXTuhy.js} +0 -0
  229. /package/dist/{not-data-DejN9beo.js → not-data-Bw8FlpyB.js} +0 -0
  230. /package/dist/{org-main-C2g7AMMY.js → org-main-D5Isevbc.js} +0 -0
  231. /package/dist/{org-unmain-CjGtvuIa.js → org-unmain-BHBqSuCz.js} +0 -0
  232. /package/dist/{remove-BroXCqy9.js → remove-DKMMsJNq.js} +0 -0
  233. /package/dist/{resource-app-DV2RZiRk.js → resource-app-DZwdNG6F.js} +0 -0
  234. /package/dist/{resource-btn-Dw9-L0P5.js → resource-btn-DPX0oM2L.js} +0 -0
  235. /package/dist/{resource-dynamic-Cmk2ihZb.js → resource-dynamic-Cb_vjMjt.js} +0 -0
  236. /package/dist/{resource-index-D9J-wVCc.js → resource-index-ah4NpEob.js} +0 -0
  237. /package/dist/{resource-menu-XnlgciPe.js → resource-menu-CzWI03EU.js} +0 -0
  238. /package/dist/{resource-micro-DzYCcl5c.js → resource-micro-Ca0NS7j_.js} +0 -0
  239. /package/dist/{resource-nonmenu-8bXZBBWf.js → resource-nonmenu-Deitjo_5.js} +0 -0
  240. /package/dist/{setting-manage-BPwzU94V.js → setting-manage-B3vaM0w1.js} +0 -0
  241. /package/dist/{stores-Di6SQ3pp.js → stores-D6JJmBEU.js} +0 -0
  242. /package/dist/{theme-check-mark-Dz4lGIXE.js → theme-check-mark-BK7E8lqd.js} +0 -0
  243. /package/dist/{theme-title-CPXdAbpI.js → theme-title-aqbHq846.js} +0 -0
  244. /package/dist/{view-D4SR4EYn.js → view-C6Eo1zRL.js} +0 -0
  245. /package/dist/{zddata-Cdy8vScr.js → zddata-fjEtQ3lZ.js} +0 -0
  246. /package/dist/{zy_checked-xjGWlIXf.js → zy_checked-DTsDCC94.js} +0 -0
  247. /package/dist/{zy_default-kwFuicHB.js → zy_default-BaIuMKw-.js} +0 -0
@@ -4,7 +4,6 @@ import { CaretDownOutlined } from '@ant-design/icons-vue';
4
4
  import * as popover from '@destyler/popover';
5
5
  import { normalizeProps, useMachine } from '@destyler/vue';
6
6
  import { Empty } from 'ant-design-vue';
7
- import { getAllRouteModules, readProjectModules } from 'pubinfo';
8
7
  import ComponentsIcones from '@/components/DirectoryIcones/ComponentsIcones.vue';
9
8
  import FolderIcones from '@/components/DirectoryIcones/FolderIcones.vue';
10
9
  import ModuleIcones from '@/components/DirectoryIcones/ModuleIcones.vue';
@@ -12,6 +11,7 @@ import PackagesIcones from '@/components/DirectoryIcones/PackagesIcones.vue';
12
11
  import SrcIcones from '@/components/DirectoryIcones/SrcIcones.vue';
13
12
  import ViewIcones from '@/components/DirectoryIcones/ViewIcones.vue';
14
13
  import VueIcones from '@/components/DirectoryIcones/VueIcones.vue';
14
+ import { useViewStore } from '@/stores/view';
15
15
 
16
16
  defineOptions({
17
17
  name: 'ComponentSelect',
@@ -19,6 +19,9 @@ defineOptions({
19
19
 
20
20
  const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
21
21
 
22
+ // 使用 Pinia store
23
+ const viewStore = useViewStore();
24
+
22
25
  const moduleValue = defineModel<string>({
23
26
  default: '',
24
27
  });
@@ -125,131 +128,21 @@ watch(visibleRef, (open) => {
125
128
  }
126
129
  });
127
130
 
128
- // 自定义树形结构
129
- interface ComponentTreeNode {
130
- title: string
131
- key: string
132
- // 是否为根节点(如:'local'/'module:<id>')
133
- root?: boolean
134
- module?: boolean
135
- children?: ComponentTreeNode[]
136
- isLeaf?: boolean
137
- // 额外数据,选择时可用
138
- value?: string
139
- scope?: string
140
- }
141
-
142
- /**
143
- * 从扁平路径数组构建“目录树”节点
144
- * @param label 根节点标题(如:'本地'/'模块名')
145
- * @param keyPrefix 根节点 key(如:'local'/'module:<id>')
146
- * @param paths 叶子路径(views 相对路径)
147
- * @param scope 作用域(模块 id),本地为 undefined
148
- */
149
- function buildTree(label: string, keyPrefix: string, paths: string[], scope?: string): ComponentTreeNode {
150
- const root: ComponentTreeNode = { title: label, key: keyPrefix, root: true, module: keyPrefix !== 'local', children: [] };
151
-
152
- // 便捷查找当前层的子节点
153
- const findOrCreate = (parent: ComponentTreeNode, title: string, key: string) => {
154
- if (!parent.children) {
155
- parent.children = [];
156
- }
157
- let node = parent.children.find(n => n.title === title && !n.isLeaf);
158
- if (!node) {
159
- node = { title, key, children: [] };
160
- parent.children.push(node);
161
- }
162
- return node;
163
- };
164
-
165
- for (const p of paths) {
166
- const segs = p.split('/').filter(Boolean);
167
- let current = root;
168
- let acc = keyPrefix;
169
- for (let i = 0; i < segs.length; i++) {
170
- const seg = segs[i];
171
- acc = acc ? `${acc}/${seg}` : seg;
172
- const isLast = i === segs.length - 1;
173
- if (isLast) {
174
- // 叶子结点携带 value 与 scope 信息
175
- current.children = current.children || [];
176
- current.children.push({
177
- title: seg,
178
- key: acc,
179
- isLeaf: true,
180
- value: p,
181
- scope,
182
- });
183
- }
184
- else {
185
- current = findOrCreate(current, seg, acc);
186
- }
187
- }
188
- }
189
-
190
- return root;
191
- }
192
-
193
- // 计算:树数据,根为“本地”和各模块名,叶子为 views 下的路径
194
- const componentTreeOptions = computed<TreeProps['treeData']>(() => {
195
- // 获取主项目的 pages
196
- const projectStructure = readProjectModules();
197
- const mainPages = projectStructure?.pages || {};
198
-
199
- // 获取所有模块的 pages
200
- const routeModuleMap = getAllRouteModules();
201
-
202
- const treeNodes: ComponentTreeNode[] = [];
203
-
204
- // 本地节点
205
- treeNodes.push(
206
- buildTree('本地', 'local', Object.keys(mainPages)),
207
- );
208
-
209
- // 模块节点
210
- for (const [id, moduleMap] of routeModuleMap) {
211
- treeNodes.push(
212
- buildTree(id, `module:${id}`, Object.keys(moduleMap), id),
213
- );
131
+ // 弹层再次打开时,若之前被手动折叠,重新展开到选中层级
132
+ watch(visibleRef, (open) => {
133
+ if (open) {
134
+ expandToSelected();
214
135
  }
215
-
216
- return treeNodes as unknown as TreeProps['treeData'];
217
136
  });
218
137
 
219
- // 根据搜索关键字过滤树数据,保留匹配节点及其祖先
138
+ // 从 store 获取树数据并支持搜索过滤
220
139
  const displayedTreeData = computed<TreeProps['treeData']>(() => {
221
- const q = searchQuery.value.trim().toLowerCase();
222
- const source = componentTreeOptions.value as any[];
140
+ const q = searchQuery.value.trim();
223
141
  if (!q) {
224
- return source as unknown as TreeProps['treeData'];
142
+ return viewStore.getRouteTreeData() as unknown as TreeProps['treeData'];
225
143
  }
226
144
 
227
- const filterNodes = (nodes: any[]): any[] => {
228
- const res: any[] = [];
229
- for (const n of nodes || []) {
230
- const title = String(n?.title ?? '').toLowerCase();
231
- const value = String(n?.value ?? '').toLowerCase();
232
- const keyStr = String(n?.key ?? '').toLowerCase();
233
- const selfMatch = title.includes(q) || value.includes(q) || keyStr.includes(q);
234
- let childrenFiltered: any[] | undefined;
235
- if (Array.isArray(n?.children) && n.children.length) {
236
- childrenFiltered = filterNodes(n.children);
237
- }
238
- if (selfMatch || (childrenFiltered && childrenFiltered.length)) {
239
- const cloned = { ...n };
240
- if (childrenFiltered) {
241
- cloned.children = childrenFiltered;
242
- }
243
- else if (cloned.children) {
244
- delete cloned.children;
245
- }
246
- res.push(cloned);
247
- }
248
- }
249
- return res;
250
- };
251
-
252
- return filterNodes(source) as unknown as TreeProps['treeData'];
145
+ return viewStore.filterRouteTree(q) as unknown as TreeProps['treeData'];
253
146
  });
254
147
 
255
148
  // 收集非叶子节点 key,用于搜索时全部展开
@@ -0,0 +1,62 @@
1
+ <script setup lang="ts">
2
+ import { DoubleRightOutlined } from '@ant-design/icons-vue';
3
+ import { useToggle } from '@vueuse/core';
4
+ import { theme } from 'ant-design-vue';
5
+
6
+ defineOptions({
7
+ name: 'HoverCard',
8
+ });
9
+
10
+ defineProps<{
11
+ more?: boolean
12
+ }>();
13
+
14
+ const { token } = theme.useToken();
15
+ const [hovered, toggle] = useToggle();
16
+ const [expanded, expand] = useToggle();
17
+ </script>
18
+
19
+ <template>
20
+ <div
21
+ class="relative rounded-t-lg h-[72px] px-5 border border-solid"
22
+ :class="[expanded && more ? 'rounded-b-none' : 'rounded-b-lg']"
23
+ :style="{
24
+ borderColor: hovered ? token.colorPrimary : token.colorBorder,
25
+ boxShadow: hovered ? token.boxShadow : 'none',
26
+ }"
27
+ @mouseenter="toggle(true)"
28
+ @mouseleave="toggle(false)"
29
+ >
30
+ <slot />
31
+
32
+ <template v-if="more">
33
+ <div v-if="!expanded" class="absolute bottom-1 left-0 w-full text-center text-xs space-x-1 cursor-pointer" @click="expand(true)">
34
+ <span>更多</span>
35
+ <DoubleRightOutlined
36
+ :rotate="90"
37
+ class="animate-bounce"
38
+ />
39
+ </div>
40
+
41
+ <div
42
+ v-if="expanded"
43
+ class="absolute top-[70px] -left-[1px] z-50 w-[calc(100%+2px)] pt-5 px-5 border border-solid rounded-b-lg"
44
+ :style="{
45
+ borderColor: hovered ? token.colorPrimary : token.colorBorder,
46
+ backgroundColor: token.colorBgElevated,
47
+ boxShadow: token.boxShadow,
48
+ }"
49
+ >
50
+ <slot name="more" />
51
+
52
+ <div class="mt-5 pb-1 w-full text-center text-xs space-x-1 cursor-pointer" @click="expand(false)">
53
+ <span>收起</span>
54
+ <DoubleRightOutlined
55
+ :rotate="270"
56
+ class="animate-bounce"
57
+ />
58
+ </div>
59
+ </div>
60
+ </template>
61
+ </div>
62
+ </template>
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import type { Form } from '../interface';
3
- import { dataPermissionOptions } from '@/views/data-permission/enum';
4
3
  import { useMetaForm } from '../hooks/useMetaForm';
4
+ import HoverCard from './HoverCard.vue';
5
5
 
6
6
  defineOptions({
7
7
  name: 'MetaForm',
@@ -30,90 +30,152 @@ const { show } = useMetaForm(form);
30
30
  - 其他显示相关配置:适用于所有可视化的资源类型
31
31
  -->
32
32
 
33
- <a-row :gutter="8">
34
- <a-col :span="9" :offset="3">
35
- <a-form-item name="enable">
36
- <a-checkbox v-model:checked="form.enable">
37
- 启用
38
- </a-checkbox>
33
+ <a-row :gutter="[8, 8]">
34
+ <a-col :span="12">
35
+ <a-form-item name="enable" :label-col="{ span: 0 }">
36
+ <HoverCard class="flex items-center justify-between">
37
+ <div class="text-sm font-medium">
38
+ 启用
39
+ </div>
40
+ <a-switch v-model:checked="form.enable" />
41
+ </HoverCard>
39
42
  </a-form-item>
40
43
  </a-col>
44
+
41
45
  <!-- 开发模式:仅在应用或动态应用中显示 -->
42
- <a-col v-if="show.devMode" :span="9" :offset="3">
43
- <a-form-item name="isDev">
44
- <a-checkbox v-model:checked="form.meta!.isDev">
45
- 开发模式
46
- </a-checkbox>
47
- </a-form-item>
48
- </a-col>
49
- <!-- 开发模式文本:仅在开启开发模式时显示 -->
50
- <a-col v-if="show.devMode && form.meta?.isDev" :span="18" :offset="3">
51
- <a-form-item label="开发模式提示文本" name="devText" :label-col="{ style: { width: '120px' } }">
52
- <a-input
53
- v-model:value="form.meta!.devText"
54
- placeholder="请输入开发模式下的提示文本"
55
- :maxlength="100"
56
- show-count
57
- />
58
- <div class="text-xs text-gray-500 mt-1">
59
- 此文本将在用户点击开发模式应用时显示在提示框中
60
- </div>
61
- </a-form-item>
46
+ <a-col v-if="show.devMode" :span="12">
47
+ <HoverCard :more="form.meta?.isDev" class="flex flex-wrap items-center">
48
+ <a-form-item
49
+ name="isDev"
50
+ :label-col="{ span: 0 }"
51
+ class="form-item-bottom-0 w-full"
52
+ >
53
+ <div class="flex items-center justify-between">
54
+ <div class="text-sm font-medium">
55
+ 开发模式
56
+ </div>
57
+ <a-switch v-model:checked="form.meta!.isDev" />
58
+ </div>
59
+ </a-form-item>
60
+
61
+ <template #more>
62
+ <!-- 开发模式文本:仅在开启开发模式时显示 -->
63
+ <a-form-item
64
+ v-if="form.meta?.isDev"
65
+ label="提示文本"
66
+ name="devText"
67
+ tooltip="此文本将在用户点击开发模式应用时显示在提示框中"
68
+ :label-col="{ style: { fontSize: '12px' } }"
69
+ class="w-full"
70
+ >
71
+ <a-input
72
+ v-model:value="form.meta!.devText"
73
+ placeholder="请输入开发模式下的提示文本"
74
+ :maxlength="100"
75
+ show-count
76
+ size="small"
77
+ />
78
+ </a-form-item>
79
+ </template>
80
+ </HoverCard>
62
81
  </a-col>
82
+
63
83
  <!-- 缓存标签页:仅在菜单中显示 -->
64
- <a-col v-if="show.cacheAndPin" :span="9" :offset="3">
65
- <a-form-item name="cache">
66
- <a-checkbox v-model:checked="form.meta!.cache">
67
- 缓存标签页
68
- </a-checkbox>
69
- </a-form-item>
84
+ <a-col v-if="show.cacheAndPin" :span="12">
85
+ <HoverCard :more="form.meta?.cache" class="flex flex-wrap items-center">
86
+ <a-form-item name="cache" :label-col="{ span: 0 }" class="form-item-bottom-0 w-full">
87
+ <div class="flex items-center justify-between">
88
+ <div class="text-sm font-medium">
89
+ 缓存标签页
90
+ </div>
91
+ <a-switch v-model:checked="form.meta!.cache" />
92
+ </div>
93
+ </a-form-item>
94
+
95
+ <template #more>
96
+ <a-form-item
97
+ label="指定页缓存"
98
+ name="cacheName"
99
+ tooltip="设置页面name值,前往指定页面时,当前页被缓存"
100
+ :label-col="{ style: { fontSize: '12px', width: '120px' } }"
101
+ class="w-full"
102
+ >
103
+ <a-input
104
+ v-model:value="form.meta!.cacheName"
105
+ placeholder="路由名称(多个用,隔开)"
106
+ size="small"
107
+ />
108
+ </a-form-item>
109
+
110
+ <a-form-item
111
+ label="指定页不缓存"
112
+ name="cacheName"
113
+ tooltip="设置页面name值,前往指定页面时,当前页不缓存"
114
+ :label-col="{ style: { fontSize: '12px', width: '120px' } }"
115
+ class="w-full"
116
+ >
117
+ <a-input
118
+ v-model:value="form.meta!.noCache"
119
+ placeholder="路由名称(多个用,隔开)"
120
+ size="small"
121
+ />
122
+ </a-form-item>
123
+ </template>
124
+ </HoverCard>
70
125
  </a-col>
126
+
71
127
  <!-- 固定标签页:仅在菜单中显示 -->
72
- <a-col v-if="show.cacheAndPin" :span="9" :offset="3">
73
- <a-form-item name="pin">
74
- <a-checkbox v-model:checked="form.meta!.pin">
75
- 固定在标签页
76
- </a-checkbox>
128
+ <a-col v-if="show.cacheAndPin" :span="12">
129
+ <a-form-item name="pin" :label-col="{ span: 0 }">
130
+ <HoverCard class="flex items-center justify-between">
131
+ <div class="text-sm font-medium">
132
+ 固定在标签页
133
+ </div>
134
+ <a-switch v-model:checked="form.meta!.pin" />
135
+ </HoverCard>
77
136
  </a-form-item>
78
137
  </a-col>
138
+
79
139
  <!-- 侧边栏显示:不适用于应用和动态应用 -->
80
- <a-col v-if="show.sidebar" :span="9" :offset="3">
81
- <a-form-item name="sidebar">
82
- <a-checkbox v-model:checked="form.meta!.sidebar">
83
- 在侧边栏显示
84
- </a-checkbox>
140
+ <a-col v-if="show.sidebar" :span="12">
141
+ <a-form-item name="sidebar" :label-col="{ span: 0 }">
142
+ <HoverCard class="flex items-center justify-between">
143
+ <div class="text-sm font-medium">
144
+ 在侧边栏显示
145
+ </div>
146
+ <a-switch v-model:checked="form.meta!.sidebar" />
147
+ </HoverCard>
85
148
  </a-form-item>
86
149
  </a-col>
150
+
87
151
  <!-- 标签栏显示:不适用于应用、动态应用和目录 -->
88
- <a-col v-if="show.tabbar" :span="9" :offset="3">
89
- <a-form-item name="tabbar">
90
- <a-checkbox v-model:checked="form.meta!.tabbar">
91
- 在标签栏显示
92
- </a-checkbox>
93
- </a-form-item>
94
- </a-col>
95
- <a-col v-if="show.breadcrumb" :span="9" :offset="3">
96
- <a-form-item name="breadcrumb">
97
- <a-checkbox v-model:checked="form.meta!.breadcrumb">
98
- 在面包屑显示
99
- </a-checkbox>
152
+ <a-col v-if="show.tabbar" :span="12">
153
+ <a-form-item name="tabbar" :label-col="{ span: 0 }">
154
+ <HoverCard class="flex items-center justify-between">
155
+ <div class="text-sm font-medium">
156
+ 在标签栏显示
157
+ </div>
158
+ <a-switch v-model:checked="form.meta!.tabbar" />
159
+ </HoverCard>
100
160
  </a-form-item>
101
161
  </a-col>
102
- </a-row>
103
162
 
104
- <a-row v-if="show.dataPermission" :gutter="8">
105
- <a-col :span="6" :offset="3">
106
- <a-form-item name="enableDataPermission">
107
- <a-checkbox v-model:checked="form.enableDataPermission">
108
- 启用数据权限
109
- </a-checkbox>
110
- </a-form-item>
111
- </a-col>
112
- <a-col :span="12" :offset="3">
113
- <a-form-item v-if="form.enableDataPermission" label="数据权限规则" name="dataPermissionType">
114
- <a-select v-model:value="form.dataPermissionType" :options="dataPermissionOptions" />
163
+ <a-col v-if="show.breadcrumb" :span="12">
164
+ <a-form-item name="breadcrumb" :label-col="{ span: 0 }">
165
+ <HoverCard class="flex items-center justify-between">
166
+ <div class="text-sm font-medium">
167
+ 在面包屑显示
168
+ </div>
169
+ <a-switch v-model:checked="form.meta!.breadcrumb" />
170
+ </HoverCard>
115
171
  </a-form-item>
116
172
  </a-col>
117
173
  </a-row>
118
174
  </div>
119
175
  </template>
176
+
177
+ <style lang="css" scoped>
178
+ .form-item-bottom-0, .ant-form-item {
179
+ margin-bottom: 0;
180
+ }
181
+ </style>
@@ -6,7 +6,7 @@ import { useToggle } from '@vueuse/core';
6
6
  import { message } from 'ant-design-vue';
7
7
  import { cloneDeep } from 'lodash-es';
8
8
  import { getRbacResourceInfo, postRbacResourceAddResource, postRbacResourceResourceUpdate } from '@/api/modules/rbac';
9
- import { DATA_PERMISSION_TYPE } from '@/views/data-permission/enum';
9
+ import { DATA_PERMISSION_TYPE, dataPermissionOptions } from '@/views/data-permission/enum';
10
10
  import { ACTION, RESOURCE_COLOR, RESOURCE_TYPE, resourceOptions } from '../enum';
11
11
  import { useMetaForm } from '../hooks/useMetaForm';
12
12
  import { defaultMeta } from '../model';
@@ -87,7 +87,7 @@ const resourceComputedOptions = computed(() => {
87
87
  return [];
88
88
 
89
89
  default:
90
- return resourceOptions.filter(node => [RESOURCE_TYPE.APP, RESOURCE_TYPE.MICRO_APP, RESOURCE_TYPE.DYNAMIC_APP].includes(node.value));
90
+ return resourceOptions.filter(node => [RESOURCE_TYPE.APP, /* RESOURCE_TYPE.MICRO_APP, */ RESOURCE_TYPE.DYNAMIC_APP].includes(node.value));
91
91
  }
92
92
  });
93
93
 
@@ -129,10 +129,10 @@ async function onOpen(key: ACTION, record?: Form) {
129
129
  const [loading, setLoading] = useToggle(false);
130
130
  function onSubmit() {
131
131
  formRef.value?.validate().then(() => {
132
- const params = {
132
+ const params = cloneDeep({
133
133
  ...form.value,
134
134
  icon: form.value.icon || undefined,
135
- };
135
+ });
136
136
 
137
137
  // app, 目录等不参与数据权限筛选
138
138
  if (!show.value.dataPermission) {
@@ -144,6 +144,22 @@ function onSubmit() {
144
144
  console.warn('开发模式应用的子路由将不会在生产环境中注册到vue-router,请确保这是预期行为。');
145
145
  }
146
146
 
147
+ // 处理 cache 相关逻辑
148
+ if (params.meta?.cache) {
149
+ if (params.meta.cacheName) {
150
+ params.meta.cache = params.meta.cacheName.split(',');
151
+ }
152
+ }
153
+
154
+ if (params.meta?.noCache) {
155
+ params.meta.noCache = params.meta.noCache.split(',');
156
+ }
157
+
158
+ if (!params.meta?.cache) {
159
+ delete params?.meta?.noCache;
160
+ }
161
+ delete params?.meta?.cacheName;
162
+
147
163
  // 可以在提交前检查目录下是否有有效的子菜单,如果没有则给出提示
148
164
  // 这部分逻辑可能需要额外的API调用来检查子资源
149
165
 
@@ -262,6 +278,19 @@ defineExpose({
262
278
  </a-col>
263
279
  </a-row>
264
280
 
281
+ <a-row v-if="show.dataPermission" :gutter="8">
282
+ <a-col :span="8">
283
+ <a-form-item label="启用数据权限" name="enableDataPermission">
284
+ <a-switch v-model:checked="form.enableDataPermission" />
285
+ </a-form-item>
286
+ </a-col>
287
+ <a-col :span="16">
288
+ <a-form-item v-if="form.enableDataPermission" label="数据权限规则" name="dataPermissionType">
289
+ <a-select v-model:value="form.dataPermissionType" :options="dataPermissionOptions" />
290
+ </a-form-item>
291
+ </a-col>
292
+ </a-row>
293
+
265
294
  <MetaForm v-model="form" />
266
295
  </a-form>
267
296
  </a-spin>
@@ -64,6 +64,29 @@ export function useMetaForm(form: Ref<Form>) {
64
64
  form.value.meta = { ...defaultMeta };
65
65
  }
66
66
 
67
+ // 设置 cache 相关值
68
+ if (form.value.meta.cache) {
69
+ const cache = form.value.meta.cache;
70
+
71
+ if (typeof cache === 'boolean') {
72
+ form.value.meta.cache = cache;
73
+ }
74
+
75
+ if (typeof cache === 'string') {
76
+ form.value.meta.cacheName = cache;
77
+ form.value.meta.cache = true;
78
+ }
79
+
80
+ if (Array.isArray(cache)) {
81
+ form.value.meta.cacheName = cache.join(',');
82
+ form.value.meta.cache = true;
83
+ }
84
+ }
85
+
86
+ if (form.value.meta.noCache && Array.isArray(form.value.meta.noCache)) {
87
+ form.value.meta.noCache = form.value.meta.noCache.join(',');
88
+ }
89
+
67
90
  // 如果当前资源类型不支持开发模式,则重置为false
68
91
  if (!show.value.devMode) {
69
92
  form.value.meta.isDev = false;
@@ -26,7 +26,9 @@ export interface CustomMeta {
26
26
  activeMenu?: string
27
27
  isDev: boolean
28
28
  devText: string
29
- cache: boolean
29
+ cache: boolean | string | string[]
30
+ cacheName?: string
31
+ noCache?: string | string[]
30
32
  pin: boolean
31
33
  sidebar: boolean
32
34
  tabbar: boolean
@@ -44,6 +46,8 @@ export const defaultMeta: CustomMeta = {
44
46
  isDev: false,
45
47
  devText: '该功能暂未上线,敬请期待!',
46
48
  cache: false,
49
+ cacheName: undefined,
50
+ noCache: undefined,
47
51
  pin: false,
48
52
  sidebar: true,
49
53
  tabbar: true,
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { message } from 'ant-design-vue';
3
- import { eventBus } from 'pubinfo';
3
+ import { updateWatermark } from 'pubinfo';
4
4
  import { postSysconfigAddOrEidtSysThemeStyleConfig } from '@/api/modules/configData';
5
5
  import { useSettingsStore } from '@/stores';
6
6
  import AnimationItem from '../components/animation_item.vue';
@@ -79,7 +79,7 @@ function setStyle(jsonStr: string) {
79
79
  postSysconfigAddOrEidtSysThemeStyleConfig({ content: jsonStr }).then((res: API.ResponseDataBoolean) => {
80
80
  if (res.success) {
81
81
  message.success('设置成功');
82
- eventBus.emit('updateWatermark');
82
+ updateWatermark();
83
83
  }
84
84
  });
85
85
  }
@@ -1,2 +0,0 @@
1
- import { b as e } from "./ComponentSelect-Dyqb3Uh3.js";
2
- export { e as default };
@@ -1,4 +0,0 @@
1
- import "./ComponentSelect-Dyqb3Uh3.js";
2
- import { b as e } from "./DynamicRoutesForm-D3nGj7oA.js";
3
- import "./enum-BMY6bmPA.js";
4
- export { e as default };
@@ -1,2 +0,0 @@
1
- import { b as e } from "./HCheckList-3zLNVNr0.js";
2
- export { e as default };
@@ -1,4 +0,0 @@
1
- import "./enum-BMY6bmPA.js";
2
- import "./dayjs.min-KffHrkDe.js";
3
- import { b as e } from "./ImportExport-Yt6dABIv.js";
4
- export { e as default };