@pubinfo/module-rbac 2.0.0-beta.9 → 2.0.0-rc.2

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 (515) hide show
  1. package/dist/ComponentSelect-Din5Vses.js +2 -0
  2. package/dist/ComponentSelect-Dyqb3Uh3.js +3734 -0
  3. package/dist/ComponentSelect.css +1 -0
  4. package/dist/DynamicRoutesForm-CkmCaHum.js +4 -0
  5. package/dist/DynamicRoutesForm-D3nGj7oA.js +376 -0
  6. package/dist/HCheckList-3zLNVNr0.js +37 -0
  7. package/dist/HCheckList-Dd2Tx0jW.js +2 -0
  8. package/dist/ImportExport-BbZkZEW_.js +4 -0
  9. package/dist/ImportExport-Yt6dABIv.js +354 -0
  10. package/dist/MetaForm-CI-T2qEE.js +284 -0
  11. package/dist/MetaForm-CrsQmdOg.js +4 -0
  12. package/dist/OrgAndPosition-BK5MTlOO.js +188 -0
  13. package/dist/OrgAndPosition-CDCim7yM.js +2 -0
  14. package/dist/ResourceEdit-BFXA953U.js +309 -0
  15. package/dist/ResourceEdit-V6gt22gW.js +8 -0
  16. package/dist/ResourceRelation-BihfkBCe.js +93 -0
  17. package/dist/ResourceRelation-BnLQZey7.js +3 -0
  18. package/dist/ResourceRelation-CBPrqf2V.js +78 -0
  19. package/dist/ResourceRelation.css +1 -0
  20. package/dist/ResourceRelation2.css +1 -0
  21. package/dist/ResourceSelector-CxZ1ae30.js +247 -0
  22. package/dist/ResourceSelector.css +1 -0
  23. package/dist/RoleRelation-BlWDNAM1.js +79 -0
  24. package/dist/RoleRelation-CAMzPMFz.js +2 -0
  25. package/dist/RoleSelector-DTnDRRTQ.js +279 -0
  26. package/dist/TenantEdit-Bt31IV9W.js +253 -0
  27. package/dist/TenantEdit-DYHJehf0.js +6 -0
  28. package/dist/UserAuthorization-BdHxAQlK.js +4 -0
  29. package/dist/UserAuthorization-Dhp0ZamX.js +238 -0
  30. package/dist/UserAuthorization.css +1 -0
  31. package/dist/UserEdit-CqH6hxTZ.js +336 -0
  32. package/dist/UserEdit-CqrRx717.js +4 -0
  33. package/dist/_plugin-vue_export-helper-Bvl99pNT.js +6 -0
  34. package/dist/add-child-sIXCU5sL.js +2 -0
  35. package/dist/animation_item-COb6VI4T.js +2 -0
  36. package/dist/animation_item-D78koyTo.js +4536 -0
  37. package/dist/api/modules/assist/qunzujiekou.d.ts +7 -0
  38. package/dist/api/modules/configData/index.d.ts +1 -1
  39. package/dist/api/modules/configData/{zidianfuwu.d.ts → zidifuwu.d.ts} +14 -0
  40. package/dist/api/modules/rbac/gangweijiekou.d.ts +7 -0
  41. package/dist/api/modules/rbac/index.d.ts +1 -0
  42. package/dist/api/modules/rbac/pubJiaosezukongzhiqi.d.ts +7 -0
  43. package/dist/api/modules/rbac/yonghujiekou.d.ts +21 -0
  44. package/dist/api/modules/rbac/ziyuandaorudaochuxiangguanjiekou.d.ts +43 -0
  45. package/dist/api/modules/rbac/ziyuanjiekou.d.ts +7 -0
  46. package/dist/api/request.d.ts +1 -1
  47. package/dist/authority-DQ4-SayE.js +2 -0
  48. package/dist/authorize-CR54jxEa.js +2 -0
  49. package/dist/blackWhiteList-B7tUj2Rx.js +213 -0
  50. package/dist/blackWhiteList.css +1 -0
  51. package/dist/blacklist-disable-ypFSVSX1.js +2 -0
  52. package/dist/blacklist-enable-DlkD_15-.js +2 -0
  53. package/dist/breadcrumb_setting-CIm-6QHw.js +111 -0
  54. package/dist/breadcrumb_setting.css +1 -0
  55. package/dist/browser-chrome-DNH4U6iO.js +2 -0
  56. package/dist/browser-edge-4sSjlzO1.js +2 -0
  57. package/dist/browser-ie-yTwVV0GC.js +2 -0
  58. package/dist/browser-other-Jax-vzDs.js +2 -0
  59. package/dist/browser-safari-B7PIezpj.js +2 -0
  60. package/dist/browserType-D2cPQa0k.js +2 -0
  61. package/dist/browserType-DZrDbVVY.js +26 -0
  62. package/dist/chunk-B3eAFu3c.js +11 -0
  63. package/dist/cloneDeep-BnvyNhik.js +7 -0
  64. package/dist/components/DirectoryIcones/ComponentsIcones.vue.d.ts +7 -0
  65. package/dist/components/DirectoryIcones/FolderIcones.vue.d.ts +7 -0
  66. package/dist/components/DirectoryIcones/ModuleIcones.vue.d.ts +7 -0
  67. package/dist/components/DirectoryIcones/PackagesIcones.vue.d.ts +7 -0
  68. package/dist/components/DirectoryIcones/SrcIcones.vue.d.ts +7 -0
  69. package/dist/components/DirectoryIcones/ViewIcones.vue.d.ts +7 -0
  70. package/dist/components/DirectoryIcones/VueIcones.vue.d.ts +2 -0
  71. package/dist/components/GroupSelector/index.vue.d.ts +4 -4
  72. package/dist/components/OrgTree/index.vue.d.ts +1 -1
  73. package/dist/components/OrgUserSelector/OrgSelector.vue.d.ts +7 -7
  74. package/dist/components/OrgUserSelector/UserSelector.vue.d.ts +7 -7
  75. package/dist/components/OrgUserSelector/index.d.ts +3 -2
  76. package/dist/components/ResourceIcones/Select.vue.d.ts +9 -0
  77. package/dist/components/ResourceSelector/index.vue.d.ts +5 -5
  78. package/dist/components/RoleSelector/RoleSearch.vue.d.ts +19 -0
  79. package/dist/components/RoleSelector/RoleSelector.vue.d.ts +20 -0
  80. package/dist/components/RoleSelector/TooltipLabel.vue.d.ts +8 -0
  81. package/dist/components/RoleSelector/index.d.ts +2 -0
  82. package/dist/components/RoleSelector/interface.d.ts +4 -0
  83. package/dist/components/RoleSelector/useRole.d.ts +13 -0
  84. package/dist/composables/useLottie.d.ts +1 -1
  85. package/dist/configData-CONUFxaH.js +86 -0
  86. package/dist/context.d.ts +3 -0
  87. package/dist/createAndEditDataPermission-6pvYsJo9.js +8 -0
  88. package/dist/createAndEditDataPermission-Bd3tlIEE.js +443 -0
  89. package/dist/createAndEditDataPermission.css +1 -0
  90. package/dist/data-permission-Db1Lu9KO.js +156 -0
  91. package/dist/data-permission.css +1 -0
  92. package/dist/dayjs.min-KffHrkDe.js +297 -0
  93. package/dist/dictionary-XMJprxvM.js +180 -0
  94. package/dist/drawerBlackWhiteList-D-Sq4mul.js +125 -0
  95. package/dist/drawerBlackWhiteList-DK4g_CpC.js +3 -0
  96. package/dist/drawerDictionary-Bw3w5PTm.js +130 -0
  97. package/dist/drawerDictionary-DHIcxPrY.js +4 -0
  98. package/dist/drawerDictionaryItem-4WIgL3No.js +142 -0
  99. package/dist/drawerDictionaryItem-dg1sIDYE.js +4 -0
  100. package/dist/drawerGroup-932n7Ywc.js +188 -0
  101. package/dist/drawerGroup-CrF2c8UJ.js +3 -0
  102. package/dist/drawerOrganization-IwZZkHWM.js +251 -0
  103. package/dist/drawerOrganization-b39q3V33.js +3 -0
  104. package/dist/drawerPosition-BiO92_At.js +170 -0
  105. package/dist/drawerPosition-BjoDy0cQ.js +3 -0
  106. package/dist/drawerRegion-CNOK55im.js +187 -0
  107. package/dist/drawerRegion-omVT_dpq.js +3 -0
  108. package/dist/drawerRole-BaQBb2-J.js +215 -0
  109. package/dist/drawerRole-BqMh5l11.js +5 -0
  110. package/dist/drawerRole-D7VJRLmp.js +6 -0
  111. package/dist/drawerRole-IIsKhycU.js +159 -0
  112. package/dist/drawerRole-PnDochPg.js +172 -0
  113. package/dist/drawerRole-dJ3m0_K2.js +3 -0
  114. package/dist/edit-CCL7qbDV.js +2 -0
  115. package/dist/enum-B-lkiBy0.js +61 -0
  116. package/dist/enum-BMY6bmPA.js +54 -0
  117. package/dist/enum-Bg70i-vM.js +4 -0
  118. package/dist/enum-CUMv4gQ2.js +23 -0
  119. package/dist/enum-DUjQrWbG.js +4 -0
  120. package/dist/group-BzuuCGyR.js +174 -0
  121. package/dist/group.css +1 -0
  122. package/dist/icard-BUuV9yW4.js +2 -0
  123. package/dist/icon_animation-rPC0qi0K.js +2 -0
  124. package/dist/icon_breadcrumb-BOiEdwRY.js +2 -0
  125. package/dist/icon_copyright-zk1pF8Jj.js +2 -0
  126. package/dist/icon_jt-BMoQoZvf.js +2 -0
  127. package/dist/icon_layout-KBHA8xU_.js +2 -0
  128. package/dist/icon_mainpage-BTdCCyi2.js +2 -0
  129. package/dist/icon_menu-5k8XiWt5.js +2 -0
  130. package/dist/icon_page_size-DUMZ6xhJ.js +2 -0
  131. package/dist/icon_position_type-Cnkn2IzO.js +2 -0
  132. package/dist/icon_safe_manage-B0PtL90p.js +2 -0
  133. package/dist/icon_screen_scale-CwVhfflc.js +2 -0
  134. package/dist/icon_system_manage-vM71UmjM.js +2 -0
  135. package/dist/icon_tabbar-CuMnIey0.js +2 -0
  136. package/dist/icon_toolbar-BoCbAU3P.js +2 -0
  137. package/dist/icon_topbar-DGIDBcE6.js +2 -0
  138. package/dist/icon_watermark-BBU-lOdN.js +2 -0
  139. package/dist/index.css +1 -0
  140. package/dist/index.d.ts +2 -2
  141. package/dist/index.js +6906 -5
  142. package/dist/interface.d.ts +27 -3
  143. package/dist/itemlist-KOYuEUk4.js +157 -0
  144. package/dist/layout_setting-DQgWzV7M.js +74 -0
  145. package/dist/layout_setting.css +1 -0
  146. package/dist/log-BgIwPjNu.js +14 -0
  147. package/dist/log-center-Z3WDfhg1.js +2 -0
  148. package/dist/loginHistoryDetail-BNGtarOv.js +4 -0
  149. package/dist/loginHistoryDetail-DgHx6n66.js +78 -0
  150. package/dist/loginHistoryDetail.css +1 -0
  151. package/dist/login_history-Co6JLGsd.js +196 -0
  152. package/dist/login_history.css +1 -0
  153. package/dist/menu_setting-B0QIQ1um.js +158 -0
  154. package/dist/menu_setting.css +1 -0
  155. package/dist/not-data-DejN9beo.js +2 -0
  156. package/dist/not-data-uXybSS43.js +2 -0
  157. package/dist/operateHistoryDetail-BrdNmYD0.js +90 -0
  158. package/dist/operateHistoryDetail-DsM4L8Nz.js +4 -0
  159. package/dist/operateHistoryDetail.css +1 -0
  160. package/dist/operate_history-CVeIorOr.js +191 -0
  161. package/dist/operate_history.css +1 -0
  162. package/dist/org-main-C2g7AMMY.js +2 -0
  163. package/dist/org-unmain-CjGtvuIa.js +2 -0
  164. package/dist/organization-CXMk4mRo.js +15605 -0
  165. package/dist/organization.css +1 -0
  166. package/dist/other_setting-DK9MHysY.js +220 -0
  167. package/dist/other_setting.css +1 -0
  168. package/dist/{index-UZeQsp70.js → page_animation_setting-tSYfjx-m.js} +117 -177
  169. package/dist/page_animation_setting.css +1 -0
  170. package/dist/page_w_setting-BDI5KsA-.js +69 -0
  171. package/dist/page_w_setting.css +1 -0
  172. package/dist/position-BjUZQQUz.js +168 -0
  173. package/dist/region-BsX0gK_y.js +185 -0
  174. package/dist/remove-BroXCqy9.js +2 -0
  175. package/dist/resource-DKhlH74I.js +270 -0
  176. package/dist/resource-app-DV2RZiRk.js +2 -0
  177. package/dist/resource-btn-Dw9-L0P5.js +2 -0
  178. package/dist/resource-dynamic-Cmk2ihZb.js +2 -0
  179. package/dist/resource-index-D9J-wVCc.js +2 -0
  180. package/dist/resource-menu-XnlgciPe.js +2 -0
  181. package/dist/resource-micro-DzYCcl5c.js +2 -0
  182. package/dist/resource-nonmenu-8bXZBBWf.js +2 -0
  183. package/dist/role-ffXddsAo.js +196 -0
  184. package/dist/role_group-BBH28A40.js +172 -0
  185. package/dist/routes/index.d.ts +3 -1
  186. package/dist/routes/modules/authority.manage.menu.d.ts +1 -1
  187. package/dist/routes/modules/log.manage.menu.d.ts +1 -1
  188. package/dist/routes/modules/safe.manage.menu.d.ts +1 -1
  189. package/dist/routes/modules/stylesetting.manage.menu.d.ts +1 -1
  190. package/dist/routes/modules/system.manage.menu.d.ts +1 -1
  191. package/dist/safe_setting-Dis73Gsw.js +232 -0
  192. package/dist/safe_setting.css +1 -0
  193. package/dist/setItem-CjNn98dC.js +77 -0
  194. package/dist/setItem-H6NRNSt7.js +5 -0
  195. package/dist/setItem.css +1 -0
  196. package/dist/setting-manage-BPwzU94V.js +2 -0
  197. package/dist/stores-Di6SQ3pp.js +2 -0
  198. package/dist/tabbar_setting-DGwk_Oec.js +142 -0
  199. package/dist/tabbar_setting.css +1 -0
  200. package/dist/tenant-BhA6R8aJ.js +183 -0
  201. package/dist/theme-check-mark-Dz4lGIXE.js +2 -0
  202. package/dist/theme-title-CPXdAbpI.js +2 -0
  203. package/dist/theme_setting-Ca1YGTdZ.js +117 -0
  204. package/dist/theme_setting.css +1 -0
  205. package/dist/{index-BleenJqT.js → toolbar_setting-Cmrpyxgs.js} +155 -167
  206. package/dist/toolbar_setting.css +1 -0
  207. package/dist/useAppAndResource-BgnrL15l.js +57 -0
  208. package/dist/user-Bnb1cvVD.js +345 -0
  209. package/dist/user.css +1 -0
  210. package/dist/view-D4SR4EYn.js +2 -0
  211. package/dist/views/blackWhiteList/components/drawerBlackWhiteList.vue.d.ts +4 -4
  212. package/dist/views/blackWhiteList/index.vue.d.ts +319 -319
  213. package/dist/views/breadcrumb_setting/index.vue.d.ts +1 -1
  214. package/dist/views/components/HCheckList.vue.d.ts +5 -5
  215. package/dist/views/components/animation_item.vue.d.ts +5 -5
  216. package/dist/views/components/setItem.vue.d.ts +18 -18
  217. package/dist/views/data-permission/components/createAndEditDataPermission.vue.d.ts +35 -35
  218. package/dist/views/data-permission/index.vue.d.ts +350 -350
  219. package/dist/views/dictionary/components/drawerDictionary.vue.d.ts +4 -4
  220. package/dist/views/dictionary/components/drawerDictionaryItem.vue.d.ts +4 -4
  221. package/dist/views/dictionary/index.vue.d.ts +319 -319
  222. package/dist/views/dictionary/itemlist.vue.d.ts +319 -319
  223. package/dist/views/group/components/drawerGroup.vue.d.ts +4 -4
  224. package/dist/views/group/index.vue.d.ts +319 -319
  225. package/dist/views/layout_setting/index.vue.d.ts +1 -1
  226. package/dist/views/log_center/components/browserType.vue.d.ts +3 -3
  227. package/dist/views/log_center/components/loginHistoryDetail.vue.d.ts +4 -4
  228. package/dist/views/log_center/components/operateHistoryDetail.vue.d.ts +4 -4
  229. package/dist/views/log_center/login_history.vue.d.ts +315 -315
  230. package/dist/views/log_center/operate_history.vue.d.ts +315 -315
  231. package/dist/views/menu_setting/index.vue.d.ts +1 -1
  232. package/dist/views/organization/components/drawerOrganization.vue.d.ts +4 -4
  233. package/dist/views/organization/components/drawerRole.vue.d.ts +18 -10
  234. package/dist/views/organization/index.vue.d.ts +23 -15
  235. package/dist/views/other_setting/index.vue.d.ts +1 -1
  236. package/dist/views/page_animation_setting/index.vue.d.ts +1 -1
  237. package/dist/views/page_w_setting/index.vue.d.ts +1 -1
  238. package/dist/views/position/components/drawerPosition.vue.d.ts +4 -4
  239. package/dist/views/position/index.vue.d.ts +319 -319
  240. package/dist/views/region/components/drawerRegion.vue.d.ts +4 -4
  241. package/dist/views/region/index.vue.d.ts +319 -319
  242. package/dist/views/resource/components/ComponentSelect.vue.d.ts +14 -0
  243. package/dist/views/resource/components/DynamicRoutesForm.vue.d.ts +13 -0
  244. package/dist/views/resource/components/ImportExport.vue.d.ts +13 -0
  245. package/dist/views/resource/components/MetaForm.vue.d.ts +10 -0
  246. package/dist/views/resource/components/ResourceEdit.vue.d.ts +4 -4
  247. package/dist/views/resource/components/RoleRelation.vue.d.ts +2 -2
  248. package/dist/views/resource/enum.d.ts +6 -13
  249. package/dist/views/resource/hooks/useMetaForm.d.ts +6 -0
  250. package/dist/views/resource/index.vue.d.ts +343 -321
  251. package/dist/views/resource/interface.d.ts +4 -1
  252. package/dist/views/resource/model.d.ts +37 -0
  253. package/dist/views/role/components/ResourceRelation.vue.d.ts +316 -316
  254. package/dist/views/role/components/drawerRole.vue.d.ts +10 -10
  255. package/dist/views/role/index.vue.d.ts +642 -642
  256. package/dist/views/role_group/components/drawerRole.vue.d.ts +18 -10
  257. package/dist/views/role_group/index.vue.d.ts +333 -325
  258. package/dist/views/safe_setting/index.vue.d.ts +1 -1
  259. package/dist/views/tabbar_setting/index.vue.d.ts +1 -1
  260. package/dist/views/tenant/components/TenantEdit.vue.d.ts +10 -10
  261. package/dist/views/tenant/index.vue.d.ts +325 -325
  262. package/dist/views/theme_setting/index.vue.d.ts +1 -1
  263. package/dist/views/toolbar_setting/index.vue.d.ts +1 -1
  264. package/dist/views/user/components/OrgAndPosition.vue.d.ts +3 -3
  265. package/dist/views/user/components/UserAuthorization.vue.d.ts +18 -10
  266. package/dist/views/user/components/UserEdit.vue.d.ts +4 -4
  267. package/dist/views/user/index.vue.d.ts +337 -329
  268. package/dist/views/watermark_setting/index.vue.d.ts +9 -9
  269. package/dist/watermark_setting-BnBt5gdM.js +199 -0
  270. package/dist/watermark_setting.css +1 -0
  271. package/dist/zddata-Cdy8vScr.js +2 -0
  272. package/dist/zy_checked-xjGWlIXf.js +2 -0
  273. package/dist/zy_default-kwFuicHB.js +2 -0
  274. package/package.json +17 -15
  275. package/src/api/modules/assist/gonggaofuwu.ts +24 -9
  276. package/src/api/modules/assist/index.ts +0 -2
  277. package/src/api/modules/assist/qunzujiekou.ts +37 -7
  278. package/src/api/modules/assist/quyujiekou.ts +12 -3
  279. package/src/api/modules/assist/typings.d.ts +62 -58
  280. package/src/api/modules/configData/heibaimingdanfuwu.ts +12 -3
  281. package/src/api/modules/configData/index.ts +1 -3
  282. package/src/api/modules/configData/typings.d.ts +84 -74
  283. package/src/api/modules/configData/xitongpeizhifuwu.ts +39 -15
  284. package/src/api/modules/configData/{zidianfuwu.ts → zidifuwu.ts} +80 -8
  285. package/src/api/modules/log/caozuorizhifuwu.ts +8 -2
  286. package/src/api/modules/log/denglurizhifuwu.ts +8 -2
  287. package/src/api/modules/log/index.ts +0 -2
  288. package/src/api/modules/log/typings.d.ts +29 -25
  289. package/src/api/modules/rbac/gangweijiekou.ts +44 -8
  290. package/src/api/modules/rbac/index.ts +1 -2
  291. package/src/api/modules/rbac/jiaosejiekou.ts +24 -9
  292. package/src/api/modules/rbac/pubJiaosezukongzhiqi.ts +45 -6
  293. package/src/api/modules/rbac/shujuquanxianzhubiaokongzhiqi.ts +26 -12
  294. package/src/api/modules/rbac/typings.d.ts +419 -296
  295. package/src/api/modules/rbac/yonghujiekou.ts +115 -13
  296. package/src/api/modules/rbac/yonghushoucangbiaojiekou.ts +20 -5
  297. package/src/api/modules/rbac/yonghuzuijinchangyongbiaojiekou.ts +12 -3
  298. package/src/api/modules/rbac/ziyuandaorudaochuxiangguanjiekou.ts +158 -0
  299. package/src/api/modules/rbac/ziyuanjiekou.ts +43 -4
  300. package/src/api/modules/rbac/zuhuguanlijiekou.ts +20 -11
  301. package/src/api/modules/rbac/zuzhijiaosebiaokongzhiqi.ts +12 -3
  302. package/src/api/modules/rbac/zuzhijiekou.ts +28 -10
  303. package/src/api/request.ts +3 -2
  304. package/src/assets/icons/add-child.svg +1 -1
  305. package/src/assets/icons/authority.svg +1 -1
  306. package/src/assets/icons/authorize.svg +1 -1
  307. package/src/assets/icons/blacklist-disable.svg +1 -1
  308. package/src/assets/icons/blacklist-enable.svg +1 -1
  309. package/src/assets/icons/browser-chrome.svg +1 -1
  310. package/src/assets/icons/browser-edge.svg +1 -1
  311. package/src/assets/icons/browser-ie.svg +1 -1
  312. package/src/assets/icons/browser-other.svg +1 -1
  313. package/src/assets/icons/browser-safari.svg +1 -1
  314. package/src/assets/icons/edit.svg +1 -1
  315. package/src/assets/icons/icard.svg +1 -1
  316. package/src/assets/icons/icon_animation.svg +1 -1
  317. package/src/assets/icons/icon_breadcrumb.svg +1 -1
  318. package/src/assets/icons/icon_copyright.svg +1 -1
  319. package/src/assets/icons/icon_jt.svg +1 -1
  320. package/src/assets/icons/icon_layout.svg +1 -1
  321. package/src/assets/icons/icon_mainpage.svg +1 -1
  322. package/src/assets/icons/icon_menu.svg +1 -1
  323. package/src/assets/icons/icon_page_size.svg +1 -1
  324. package/src/assets/icons/icon_position_type.svg +1 -1
  325. package/src/assets/icons/icon_safe_manage.svg +1 -1
  326. package/src/assets/icons/icon_screen_scale.svg +2 -2
  327. package/src/assets/icons/icon_system_manage.svg +1 -1
  328. package/src/assets/icons/icon_tabbar.svg +1 -1
  329. package/src/assets/icons/icon_toolbar.svg +1 -1
  330. package/src/assets/icons/icon_topbar.svg +1 -1
  331. package/src/assets/icons/icon_watermark.svg +1 -1
  332. package/src/assets/icons/log-center.svg +1 -1
  333. package/src/assets/icons/not-data.svg +1 -1
  334. package/src/assets/icons/org-main.svg +1 -1
  335. package/src/assets/icons/org-unmain.svg +1 -1
  336. package/src/assets/icons/remove.svg +1 -1
  337. package/src/assets/icons/resource-app.svg +1 -1
  338. package/src/assets/icons/resource-btn.svg +1 -1
  339. package/src/assets/icons/resource-dynamic.svg +39 -0
  340. package/src/assets/icons/resource-index.svg +1 -1
  341. package/src/assets/icons/resource-menu.svg +1 -1
  342. package/src/assets/icons/resource-micro.svg +40 -0
  343. package/src/assets/icons/resource-nonmenu.svg +1 -1
  344. package/src/assets/icons/setting-manage.svg +1 -1
  345. package/src/assets/icons/theme-check-mark.svg +1 -1
  346. package/src/assets/icons/theme-title.svg +1 -1
  347. package/src/assets/icons/view.svg +1 -1
  348. package/src/assets/icons/zddata.svg +1 -1
  349. package/src/assets/icons/zy_checked.svg +1 -1
  350. package/src/assets/icons/zy_default.svg +1 -1
  351. package/src/components/DirectoryIcones/ComponentsIcones.vue +18 -0
  352. package/src/components/DirectoryIcones/FolderIcones.vue +18 -0
  353. package/src/components/DirectoryIcones/ModuleIcones.vue +18 -0
  354. package/src/components/DirectoryIcones/PackagesIcones.vue +18 -0
  355. package/src/components/DirectoryIcones/SrcIcones.vue +18 -0
  356. package/src/components/DirectoryIcones/ViewIcones.vue +18 -0
  357. package/src/components/DirectoryIcones/VueIcones.vue +9 -0
  358. package/src/components/GroupSelector/index.vue +64 -89
  359. package/src/components/OrgTree/index.vue +2 -2
  360. package/src/components/OrgUserSelector/index.ts +5 -0
  361. package/src/components/OrgUserSelector/provider.ts +1 -1
  362. package/src/components/ResourceIcones/Select.vue +240 -0
  363. package/src/components/ResourceSelector/index.vue +33 -50
  364. package/src/components/RoleSelector/RoleSearch.vue +60 -0
  365. package/src/components/RoleSelector/RoleSelector.vue +174 -0
  366. package/src/components/RoleSelector/TooltipLabel.vue +24 -0
  367. package/src/components/RoleSelector/index.ts +2 -0
  368. package/src/components/RoleSelector/interface.ts +4 -0
  369. package/src/components/RoleSelector/useRole.ts +56 -0
  370. package/src/context.ts +20 -0
  371. package/src/index.ts +21 -18
  372. package/src/interface.ts +31 -2
  373. package/src/routes/index.ts +9 -5
  374. package/src/routes/modules/authority.manage.menu.ts +0 -13
  375. package/src/routes/modules/log.manage.menu.ts +0 -8
  376. package/src/routes/modules/safe.manage.menu.ts +0 -12
  377. package/src/routes/modules/stylesetting.manage.menu.ts +0 -16
  378. package/src/routes/modules/system.manage.menu.ts +0 -10
  379. package/src/views/blackWhiteList/components/drawerBlackWhiteList.vue +1 -1
  380. package/src/views/blackWhiteList/index.vue +14 -26
  381. package/src/views/breadcrumb_setting/index.vue +3 -3
  382. package/src/views/components/animation_item.vue +2 -2
  383. package/src/views/components/setItem.vue +13 -20
  384. package/src/views/data-permission/components/createAndEditDataPermission.vue +4 -4
  385. package/src/views/data-permission/enum.ts +7 -7
  386. package/src/views/data-permission/index.vue +9 -12
  387. package/src/views/dictionary/components/drawerDictionary.vue +1 -1
  388. package/src/views/dictionary/components/drawerDictionaryItem.vue +1 -1
  389. package/src/views/dictionary/index.vue +3 -3
  390. package/src/views/dictionary/itemlist.vue +3 -3
  391. package/src/views/group/components/drawerGroup.vue +2 -2
  392. package/src/views/group/index.vue +13 -18
  393. package/src/views/layout_setting/index.vue +154 -164
  394. package/src/views/log_center/components/loginHistoryDetail.vue +6 -8
  395. package/src/views/log_center/components/operateHistoryDetail.vue +6 -8
  396. package/src/views/log_center/login_history.vue +6 -11
  397. package/src/views/log_center/operate_history.vue +6 -11
  398. package/src/views/menu_setting/index.vue +3 -3
  399. package/src/views/organization/components/drawerOrganization.vue +3 -3
  400. package/src/views/organization/components/drawerRole.vue +9 -7
  401. package/src/views/organization/index.vue +23 -49
  402. package/src/views/other_setting/index.vue +2 -2
  403. package/src/views/page_animation_setting/index.vue +10 -18
  404. package/src/views/page_w_setting/index.vue +133 -116
  405. package/src/views/position/components/drawerPosition.vue +2 -2
  406. package/src/views/position/index.vue +1 -1
  407. package/src/views/region/components/drawerRegion.vue +2 -2
  408. package/src/views/region/index.vue +1 -1
  409. package/src/views/resource/components/ComponentSelect.vue +400 -0
  410. package/src/views/resource/components/DynamicRoutesForm.vue +92 -0
  411. package/src/views/resource/components/ImportExport.vue +313 -0
  412. package/src/views/resource/components/MetaForm.vue +119 -0
  413. package/src/views/resource/components/ResourceEdit.vue +144 -73
  414. package/src/views/resource/components/RoleRelation.vue +1 -1
  415. package/src/views/resource/enum.ts +12 -13
  416. package/src/views/resource/hooks/useMetaForm.ts +103 -0
  417. package/src/views/resource/index.vue +59 -32
  418. package/src/views/resource/interface.ts +5 -1
  419. package/src/views/resource/model.ts +53 -0
  420. package/src/views/role/components/ResourceRelation.vue +3 -4
  421. package/src/views/role/components/drawerRole.vue +3 -3
  422. package/src/views/role/index.vue +1 -1
  423. package/src/views/role_group/components/ResourceRelation.vue +3 -4
  424. package/src/views/role_group/components/drawerRole.vue +8 -7
  425. package/src/views/role_group/index.vue +1 -1
  426. package/src/views/safe_setting/index.vue +5 -7
  427. package/src/views/tabbar_setting/index.vue +2 -2
  428. package/src/views/tenant/components/TenantEdit.vue +1 -1
  429. package/src/views/tenant/index.vue +1 -1
  430. package/src/views/theme_setting/index.vue +202 -231
  431. package/src/views/toolbar_setting/index.vue +3 -3
  432. package/src/views/user/components/OrgAndPosition.vue +2 -2
  433. package/src/views/user/components/UserAuthorization.vue +13 -12
  434. package/src/views/user/components/UserEdit.vue +1 -1
  435. package/src/views/user/index.vue +1 -1
  436. package/src/views/watermark_setting/index.vue +8 -15
  437. package/dist/OrgSelector.vue_vue_type_script_setup_true_lang-BcL0IFuA.js +0 -567
  438. package/dist/_baseClone-CQ44TFeq.js +0 -191
  439. package/dist/_commonjsHelpers-C6fGbg64.js +0 -6
  440. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
  441. package/dist/animation_item.vue_vue_type_script_setup_true_lang-BQvmwheq.js +0 -4864
  442. package/dist/browserType.vue_vue_type_script_setup_true_lang-Cv8wph6G.js +0 -38
  443. package/dist/cloneDeep-BI4WNBQ9.js +0 -8
  444. package/dist/enum-BEHz_Q18.js +0 -74
  445. package/dist/enum-C9ihxJe7.js +0 -4
  446. package/dist/enum-CTUzwCYG.js +0 -4
  447. package/dist/enum-DDKThkSw.js +0 -24
  448. package/dist/gangweijiekou-BxJq_m0o.js +0 -46
  449. package/dist/index-BS45K9vK.js +0 -685
  450. package/dist/index-Bbsiwecf.js +0 -1631
  451. package/dist/index-BhcAk-IH.js +0 -399
  452. package/dist/index-Bl4v-7On.js +0 -125
  453. package/dist/index-CFPhIFyG.js +0 -140
  454. package/dist/index-CLSeuhTv.js +0 -872
  455. package/dist/index-CLxqmFPw.js +0 -317
  456. package/dist/index-CTiFd9M0.js +0 -303
  457. package/dist/index-Cej8u1qo.js +0 -274
  458. package/dist/index-Cr17VOfm.js +0 -389
  459. package/dist/index-CsHj-xDw.js +0 -283
  460. package/dist/index-D0yB_8b0.js +0 -181
  461. package/dist/index-DFR8dd2B.js +0 -785
  462. package/dist/index-DNf0NPrD.js +0 -131
  463. package/dist/index-Dm4sOX43.js +0 -27
  464. package/dist/index-KboUdpTh.js +0 -18588
  465. package/dist/index-MtXfNGqS.js +0 -1246
  466. package/dist/index-U8kjKY6p.js +0 -462
  467. package/dist/index-a0E9oj3q.js +0 -703
  468. package/dist/index-gmUZUdNl.js +0 -634
  469. package/dist/index-j_ln_NSt.js +0 -455
  470. package/dist/index-s32GbmsJ.js +0 -164
  471. package/dist/index-yEpViVkx.js +0 -409
  472. package/dist/index-zh8PZXw2.js +0 -862
  473. package/dist/itemlist-xAbIKRVj.js +0 -369
  474. package/dist/jiaosejiekou-BfY4h7uI.js +0 -58
  475. package/dist/login_history-CuQv9Iw3.js +0 -430
  476. package/dist/operate_history-CGP-1Xy2.js +0 -468
  477. package/dist/pubJiaosezukongzhiqi-CvYfc8Uz.js +0 -57
  478. package/dist/request-DQLgc7lT.js +0 -5
  479. package/dist/setItem-DkOvmWXP.js +0 -152
  480. package/dist/shujuquanxianzhubiaokongzhiqi-DyNgf1y6.js +0 -65
  481. package/dist/style.css +0 -1
  482. package/dist/useAppAndResource-D_b19V4t.js +0 -55
  483. package/dist/views/organization/components/roleSelect.vue.d.ts +0 -14
  484. package/dist/views/role_group/components/roleSelect.vue.d.ts +0 -14
  485. package/dist/views/user/components/roleSelect.vue.d.ts +0 -14
  486. package/dist/xitongpeizhifuwu-C1Vm-W1B.js +0 -23
  487. package/dist/zidianfuwu-yCWHhOfO.js +0 -65
  488. package/dist/ziyuanjiekou-DhrAbneq.js +0 -69
  489. package/dist/zuzhijiaosebiaokongzhiqi-B1g74RqL.js +0 -28
  490. package/dist/zuzhijiekou-PeZuFtCO.js +0 -85
  491. package/src/assets/icons/403.svg +0 -1
  492. package/src/assets/icons/403_dark.svg +0 -1
  493. package/src/assets/icons/404.svg +0 -1
  494. package/src/assets/icons/404_dark.svg +0 -1
  495. package/src/assets/icons/browser-360.svg +0 -1
  496. package/src/assets/icons/browser-qq.svg +0 -1
  497. package/src/assets/icons/browser-uc.svg +0 -1
  498. package/src/assets/icons/change-org.svg +0 -1
  499. package/src/assets/icons/empty-data.svg +0 -1
  500. package/src/assets/icons/favorites.svg +0 -1
  501. package/src/assets/icons/image-load-fail.svg +0 -1
  502. package/src/assets/icons/logo-sig.svg +0 -1
  503. package/src/assets/icons/logo.svg +0 -1
  504. package/src/assets/icons/mima.svg +0 -1
  505. package/src/assets/icons/process-management.svg +0 -1
  506. package/src/assets/icons/project-management.svg +0 -1
  507. package/src/assets/icons/rbac.svg +0 -1
  508. package/src/assets/icons/test.svg +0 -1
  509. package/src/assets/icons/toolbar-collapse.svg +0 -1
  510. package/src/assets/icons/tree_icon.svg +0 -1
  511. package/src/assets/icons/tree_icon_checked.svg +0 -1
  512. package/src/assets/icons/workbench.svg +0 -1
  513. package/src/views/organization/components/roleSelect.vue +0 -258
  514. package/src/views/role_group/components/roleSelect.vue +0 -224
  515. package/src/views/user/components/roleSelect.vue +0 -258
@@ -2,12 +2,16 @@
2
2
  import type { Rule } from 'ant-design-vue/es/form';
3
3
  import type { FormExpose } from 'ant-design-vue/es/form/Form';
4
4
  import type { AddForm, EditForm, Form, TreeNode } from '../interface';
5
- import { getRbacResourceInfo, postRbacResourceAddResource, postRbacResourceResourceUpdate } from '@/api/modules/rbac';
6
- import { DATA_PERMISSION_TYPE, dataPermissionOptions } from '@/views/data-permission/enum';
7
5
  import { useToggle } from '@vueuse/core';
8
6
  import { message } from 'ant-design-vue';
9
7
  import { cloneDeep } from 'lodash-es';
10
- import { ACTION, RESOURCE_TYPE, resourceOptions } from '../enum';
8
+ import { getRbacResourceInfo, postRbacResourceAddResource, postRbacResourceResourceUpdate } from '@/api/modules/rbac';
9
+ import { DATA_PERMISSION_TYPE } from '@/views/data-permission/enum';
10
+ import { ACTION, RESOURCE_COLOR, RESOURCE_TYPE, resourceOptions } from '../enum';
11
+ import { useMetaForm } from '../hooks/useMetaForm';
12
+ import { defaultMeta } from '../model';
13
+ import DynamicRoutesForm from './DynamicRoutesForm.vue';
14
+ import MetaForm from './MetaForm.vue';
11
15
 
12
16
  defineOptions({
13
17
  name: 'ResourceEdit',
@@ -27,11 +31,15 @@ const state = reactive<{
27
31
  title: '',
28
32
  record: {},
29
33
  initData: {
30
- type: RESOURCE_TYPE.APP,
34
+ type: RESOURCE_TYPE.DYNAMIC_APP,
31
35
  sort: 0,
32
36
  enable: true,
33
37
  enableDataPermission: false,
34
38
  dataPermissionType: DATA_PERMISSION_TYPE.ALL,
39
+ meta: {
40
+ url: '',
41
+ component: '',
42
+ },
35
43
  },
36
44
  });
37
45
 
@@ -44,7 +52,7 @@ const rules: Record<string, Rule[]> = {
44
52
  };
45
53
 
46
54
  const parentNode = computed(() => {
47
- return recursiveTreeFind(props.dataSource, node => node.id === form.value.parentId);
55
+ return recursiveTreeFind(props.dataSource, node => node.id === form.value.parentId) ?? {};
48
56
  });
49
57
  function recursiveTreeFind<T extends { children?: T[] }>(tree: T[], fn: (node: T) => boolean) {
50
58
  const list = [...tree];
@@ -62,41 +70,60 @@ function recursiveTreeFind<T extends { children?: T[] }>(tree: T[], fn: (node: T
62
70
  const resourceComputedOptions = computed(() => {
63
71
  switch (parentNode.value?.type) {
64
72
  case RESOURCE_TYPE.APP:
73
+ case RESOURCE_TYPE.MICRO_APP:
74
+ case RESOURCE_TYPE.DYNAMIC_APP:
75
+ return resourceOptions.filter(node => [RESOURCE_TYPE.INDEX, RESOURCE_TYPE.MENU, RESOURCE_TYPE.IFRAME, RESOURCE_TYPE.LINK].includes(node.value));
76
+
65
77
  case RESOURCE_TYPE.INDEX:
66
- return resourceOptions.filter(node => node.value !== RESOURCE_TYPE.APP);
78
+ return resourceOptions.filter(node => [RESOURCE_TYPE.INDEX, RESOURCE_TYPE.MENU, RESOURCE_TYPE.IFRAME, RESOURCE_TYPE.LINK, RESOURCE_TYPE.NON_MENU].includes(node.value));
67
79
 
68
80
  case RESOURCE_TYPE.MENU:
69
81
  case RESOURCE_TYPE.NON_MENU:
70
- return resourceOptions.filter(node => (node.value === RESOURCE_TYPE.BUTTON || node.value === RESOURCE_TYPE.NON_MENU));
82
+ return resourceOptions.filter(node => [RESOURCE_TYPE.BUTTON, RESOURCE_TYPE.NON_MENU].includes(node.value));
71
83
 
72
84
  case RESOURCE_TYPE.BUTTON:
85
+ case RESOURCE_TYPE.IFRAME:
86
+ case RESOURCE_TYPE.LINK:
73
87
  return [];
74
88
 
75
89
  default:
76
- return resourceOptions.filter(node => node.value === RESOURCE_TYPE.APP);
90
+ return resourceOptions.filter(node => [RESOURCE_TYPE.APP, RESOURCE_TYPE.MICRO_APP, RESOURCE_TYPE.DYNAMIC_APP].includes(node.value));
77
91
  }
78
92
  });
79
93
 
80
- const dataPermissionVisible = computed(() => {
81
- return form.value.type === RESOURCE_TYPE.BUTTON || form.value.type === RESOURCE_TYPE.MENU || form.value.type === RESOURCE_TYPE.NON_MENU;
82
- });
94
+ const { show, resetIncompatibleOptions } = useMetaForm(form);
83
95
 
96
+ const [formLoading, setFormLoading] = useToggle(false);
84
97
  async function onOpen(key: ACTION, record?: Form) {
85
98
  state.title = key;
86
99
  form.value = cloneDeep(state.initData);
87
100
  setOpen(true);
88
101
 
89
- if (key === ACTION.ADD_CHILD) {
90
- form.value.parentId = record?.id as string;
91
- form.value.type = resourceComputedOptions.value[0].value;
92
- }
102
+ try {
103
+ setFormLoading(true);
104
+ if (key === ACTION.ADD_CHILD) {
105
+ form.value.parentId = record?.id as string;
106
+ form.value.type = resourceComputedOptions.value[0].value;
93
107
 
94
- if (key === ACTION.EDIT) {
95
- const res = await getRbacResourceInfo({ id: record?.id as string });
96
- if (res.success) {
97
- form.value = res.data ?? {};
108
+ // 清除不适用于当前资源类型的配置项,确保业务逻辑一致性
109
+ resetIncompatibleOptions();
110
+ }
111
+
112
+ if (key === ACTION.EDIT) {
113
+ const res = await getRbacResourceInfo({ id: record?.id as string });
114
+ if (res.success) {
115
+ form.value = res.data ?? {};
116
+ // 合并默认 meta 对象和返回的 meta 对象,form.value.meta 优先
117
+ form.value.meta = { ...defaultMeta, ...res.data?.meta };
118
+
119
+ // 确保编辑现有资源时也遵循业务规则约束
120
+ resetIncompatibleOptions();
121
+ }
98
122
  }
99
123
  }
124
+ finally {
125
+ setFormLoading(false);
126
+ }
100
127
  }
101
128
 
102
129
  const [loading, setLoading] = useToggle(false);
@@ -104,13 +131,22 @@ function onSubmit() {
104
131
  formRef.value?.validate().then(() => {
105
132
  const params = {
106
133
  ...form.value,
134
+ icon: form.value.icon || undefined,
107
135
  };
108
136
 
109
137
  // app, 目录等不参与数据权限筛选
110
- if (!dataPermissionVisible.value) {
138
+ if (!show.value.dataPermission) {
111
139
  params.enableDataPermission = false;
112
140
  }
113
141
 
142
+ // 如果是开发模式的应用,给出警告提示
143
+ if (show.value.devMode && form.value.meta?.isDev) {
144
+ console.warn('开发模式应用的子路由将不会在生产环境中注册到vue-router,请确保这是预期行为。');
145
+ }
146
+
147
+ // 可以在提交前检查目录下是否有有效的子菜单,如果没有则给出提示
148
+ // 这部分逻辑可能需要额外的API调用来检查子资源
149
+
114
150
  const promise
115
151
  = state.title === ACTION.EDIT
116
152
  ? postRbacResourceResourceUpdate(params as EditForm)
@@ -138,62 +174,97 @@ defineExpose({
138
174
  v-model:open="open"
139
175
  :title="state.title"
140
176
  placement="right"
141
- :width="520"
177
+ :width="800"
142
178
  destroy-on-close
143
179
  :footer-style="{ textAlign: 'right' }"
144
180
  >
145
- <a-form
146
- ref="formRef"
147
- :model="form"
148
- :rules="rules"
149
- :label-col="{ span: 6 }"
150
- >
151
- <a-form-item v-if="parentNode?.name" name="parentId">
152
- <template #label>
153
- <DatabaseOutlined class="mr-1" />
154
- 父资源
155
- </template>
156
- {{ parentNode?.name }}
157
- </a-form-item>
158
- <a-form-item label="资源名称" name="name">
159
- <a-input v-model:value="form.name" placeholder="请输入资源名称" :maxlength="128" />
160
- </a-form-item>
161
- <a-form-item label="资源类型" name="type">
162
- <a-radio-group
163
- v-model:value="form.type"
164
- :options="resourceComputedOptions"
165
- option-type="button"
166
- button-style="solid"
167
- />
168
- </a-form-item>
169
- <a-form-item label="资源编码" name="code">
170
- <a-input v-model:value="form.code" placeholder="请输入资源编码" :maxlength="50" />
171
- </a-form-item>
172
- <a-form-item label="显示顺序" name="sort">
173
- <a-input-number v-model:value="form.sort" :max="999" />
174
- </a-form-item>
175
- <a-form-item label="是否启用" name="enable">
176
- <a-switch v-model:checked="form.enable" />
177
- </a-form-item>
178
- <a-form-item label="权限标识" name="permissionCode">
179
- <a-input v-model:value="form.permissionCode" placeholder="请输入权限标识" :maxlength="128" />
180
- </a-form-item>
181
- <a-form-item label="描述" name="description">
182
- <a-textarea
183
- v-model:value="form.description"
184
- placeholder="请输入描述"
185
- :maxlength="255"
186
- :auto-size="{ minRows: 2 }"
187
- show-count
188
- />
189
- </a-form-item>
190
- <a-form-item v-if="dataPermissionVisible" label="启用数据权限" name="enableDataPermission">
191
- <a-switch v-model:checked="form.enableDataPermission" />
192
- </a-form-item>
193
- <a-form-item v-if="dataPermissionVisible && form.enableDataPermission" label="数据权限规则" name="dataPermissionType">
194
- <a-select v-model:value="form.dataPermissionType" :options="dataPermissionOptions" />
195
- </a-form-item>
196
- </a-form>
181
+ <a-spin :spinning="formLoading">
182
+ <a-form
183
+ ref="formRef"
184
+ :model="form"
185
+ :rules="rules"
186
+ :label-col="{ style: { width: '100px' } }"
187
+ >
188
+ <a-row :gutter="8">
189
+ <a-col v-if="parentNode?.name" :span="24">
190
+ <a-form-item name="parentId">
191
+ <template #label>
192
+ <DatabaseOutlined class="mr-1" />
193
+ 父资源
194
+ </template>
195
+ {{ parentNode?.name }}
196
+ </a-form-item>
197
+ </a-col>
198
+ <a-col :span="24">
199
+ <a-form-item label="资源类型" name="type">
200
+ <div
201
+ v-if="state.title === ACTION.EDIT"
202
+ class="flex items-center space-x-1"
203
+ >
204
+ <!-- <PubinfoIcon v-if="form.type" :name="`resource-${RESOURCE_ICON[Number(form.type)]}`" class="text-xl" />
205
+ <span>
206
+ {{ resourceComputedOptions.find(e => e.value === form.type)?.label }}
207
+ </span> -->
208
+
209
+ <a-tag v-if="form.type" :color="RESOURCE_COLOR[Number(form.type)]" :bordered="false">
210
+ {{ resourceComputedOptions.find(e => e.value === form.type)?.label }}
211
+ </a-tag>
212
+ </div>
213
+ <a-radio-group
214
+ v-else
215
+ v-model:value="form.type"
216
+ :options="resourceComputedOptions"
217
+ option-type="button"
218
+ button-style="solid"
219
+ />
220
+ </a-form-item>
221
+ </a-col>
222
+ </a-row>
223
+ <a-row :gutter="8">
224
+ <a-col :span="12">
225
+ <a-form-item label="资源名称" name="name">
226
+ <a-input v-model:value="form.name" placeholder="请输入资源名称" :maxlength="128" />
227
+ </a-form-item>
228
+ </a-col>
229
+
230
+ <DynamicRoutesForm v-model="form" :parent="parentNode" />
231
+
232
+ <a-col :span="12">
233
+ <a-form-item label="资源编码" name="code">
234
+ <a-input v-model:value="form.code" placeholder="请输入资源编码(权限码)" :maxlength="50" />
235
+ </a-form-item>
236
+ </a-col>
237
+
238
+ <a-col :span="12">
239
+ <a-form-item label="接口权限" name="permissionCode">
240
+ <a-input v-model:value="form.permissionCode" placeholder="请输入接口权限(接口地址,多个使用逗号分隔)" :maxlength="256" />
241
+ </a-form-item>
242
+ </a-col>
243
+
244
+ <a-col :span="12">
245
+ <a-form-item label="显示顺序" name="sort">
246
+ <a-input-number v-model:value="form.sort" :max="999" />
247
+ </a-form-item>
248
+ </a-col>
249
+ </a-row>
250
+
251
+ <a-row :gutter="8">
252
+ <a-col :span="24">
253
+ <a-form-item label="描述" name="description" :label-col="{ span: 3 }">
254
+ <a-textarea
255
+ v-model:value="form.description"
256
+ placeholder="请输入描述"
257
+ :maxlength="255"
258
+ :auto-size="{ minRows: 2 }"
259
+ show-count
260
+ />
261
+ </a-form-item>
262
+ </a-col>
263
+ </a-row>
264
+
265
+ <MetaForm v-model="form" />
266
+ </a-form>
267
+ </a-spin>
197
268
 
198
269
  <template #footer>
199
270
  <a-space>
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
2
  import type { ColumnsType } from 'ant-design-vue/es/table';
3
3
  import type { TreeNode } from '../interface';
4
- import { getRbacResourceGetRoleListByResourceId } from '@/api/modules/rbac';
5
4
  import { useToggle } from '@vueuse/core';
6
5
  import { useRequest } from 'alova/client';
7
6
  import { theme } from 'ant-design-vue';
7
+ import { getRbacResourceGetRoleListByResourceId } from '@/api/modules/rbac';
8
8
 
9
9
  defineOptions({
10
10
  name: 'RoleRelation',
@@ -1,3 +1,5 @@
1
+ import { RESOURCE_TYPE } from 'pubinfo';
2
+
1
3
  /** 操作按钮 */
2
4
  export enum ACTION {
3
5
  /** 分配查看 */
@@ -6,30 +8,27 @@ export enum ACTION {
6
8
  ADD = '新建',
7
9
  /** 新建下级 */
8
10
  ADD_CHILD = '新建下级',
11
+ /** 导入/导出 */
12
+ IMPORT_EXPORT = '导入 / 导出',
9
13
  /** 修改 */
10
14
  EDIT = '修改',
11
15
  /** 删除 */
12
16
  REMOVE = '删除',
13
17
  }
14
18
 
15
- /** 资源类型 */
16
- export enum RESOURCE_TYPE {
17
- /** 应用 */
18
- APP = '1',
19
- /** 目录 */
20
- INDEX = '2',
21
- /** 菜单 */
22
- MENU = '3',
23
- /** 按钮 */
24
- BUTTON = '4',
25
- /** 非菜单页 */
26
- NON_MENU = '5',
27
- }
19
+ export { RESOURCE_TYPE };
20
+
21
+ export const RESOURCE_ICON = ['', 'app', 'index', 'menu', 'btn', 'nonmenu', 'micro', 'dynamic', 'iframe', 'link'];
22
+ export const RESOURCE_COLOR = ['', 'geekblue', 'blue', 'default', 'cyan', 'default', 'geekblue', 'geekblue', 'default', 'default'];
28
23
 
29
24
  export const resourceOptions = [
25
+ { label: '动态应用', value: RESOURCE_TYPE.DYNAMIC_APP },
30
26
  { label: '应用', value: RESOURCE_TYPE.APP },
27
+ { label: '微应用', value: RESOURCE_TYPE.MICRO_APP },
31
28
  { label: '目录', value: RESOURCE_TYPE.INDEX },
32
29
  { label: '菜单', value: RESOURCE_TYPE.MENU },
33
30
  { label: '按钮', value: RESOURCE_TYPE.BUTTON },
34
31
  { label: '非菜单页', value: RESOURCE_TYPE.NON_MENU },
32
+ { label: '内嵌', value: RESOURCE_TYPE.IFRAME },
33
+ { label: '外链', value: RESOURCE_TYPE.LINK },
35
34
  ];
@@ -0,0 +1,103 @@
1
+ import type { Ref } from 'vue';
2
+ import type { Form } from '../interface';
3
+ import { RESOURCE_TYPE } from '../enum';
4
+ import { defaultMeta } from '../model';
5
+
6
+ export function useMetaForm(form: Ref<Form>) {
7
+ const show = computed(() => {
8
+ const type = form.value.type as RESOURCE_TYPE;
9
+
10
+ return {
11
+ dataPermission: [RESOURCE_TYPE.BUTTON, RESOURCE_TYPE.MENU, RESOURCE_TYPE.NON_MENU].includes(type),
12
+
13
+ // 开发模式选项可见性:只在应用或动态应用中显示
14
+ devMode: [RESOURCE_TYPE.APP, RESOURCE_TYPE.DYNAMIC_APP].includes(type),
15
+
16
+ // 缓存标签页和固定标签页选项可见性:只在菜单中显示
17
+ cacheAndPin: [RESOURCE_TYPE.MENU].includes(type),
18
+
19
+ // 侧边栏显示选项可见性:应用和动态应用不显示此选项
20
+ sidebar: ![RESOURCE_TYPE.APP, RESOURCE_TYPE.DYNAMIC_APP, RESOURCE_TYPE.BUTTON, RESOURCE_TYPE.NON_MENU].includes(type),
21
+
22
+ // 标签栏显示选项可见性:应用、动态应用和目录不显示此选项
23
+ tabbar: ![RESOURCE_TYPE.APP, RESOURCE_TYPE.DYNAMIC_APP, RESOURCE_TYPE.INDEX, RESOURCE_TYPE.BUTTON].includes(type),
24
+
25
+ breadcrumb: ![RESOURCE_TYPE.BUTTON].includes(type),
26
+ };
27
+ });
28
+
29
+ // 监听资源类型变化,自动重置不适用的配置项
30
+ watch(
31
+ () => form.value.type,
32
+ (newType, oldType) => {
33
+ // 只有在资源类型真正改变时才执行重置逻辑
34
+ if (newType !== oldType && newType && oldType) {
35
+ resetIncompatibleOptions();
36
+ }
37
+ },
38
+ { immediate: false },
39
+ );
40
+
41
+ // 监听开发模式状态变化,自动处理开发模式文本
42
+ watch(
43
+ () => form.value.meta?.isDev,
44
+ (newIsDev, oldIsDev) => {
45
+ // 当开发模式从开启变为关闭时,重置文本
46
+ if (oldIsDev === true && newIsDev === false) {
47
+ if (form.value.meta) {
48
+ form.value.meta.devText = defaultMeta.devText;
49
+ }
50
+ }
51
+ // 当首次开启开发模式且文本为空时,设置默认文本
52
+ if (oldIsDev === false && newIsDev === true) {
53
+ if (form.value.meta && !form.value.meta.devText) {
54
+ form.value.meta.devText = defaultMeta.devText;
55
+ }
56
+ }
57
+ },
58
+ { immediate: false },
59
+ );
60
+
61
+ // 根据当前资源类型重置不适用的配置项
62
+ function resetIncompatibleOptions() {
63
+ if (!form.value.meta) {
64
+ form.value.meta = { ...defaultMeta };
65
+ }
66
+
67
+ // 如果当前资源类型不支持开发模式,则重置为false
68
+ if (!show.value.devMode) {
69
+ form.value.meta.isDev = false;
70
+ // 重置开发模式文本
71
+ form.value.meta.devText = defaultMeta.devText;
72
+ }
73
+
74
+ // 如果开发模式被关闭,重置开发模式文本为默认值
75
+ if (!form.value.meta.isDev) {
76
+ form.value.meta.devText = defaultMeta.devText;
77
+ }
78
+
79
+ // 如果当前资源类型不支持缓存和固定标签页,则重置为false
80
+ if (!show.value.cacheAndPin) {
81
+ form.value.meta.cache = false;
82
+ form.value.meta.pin = false;
83
+ }
84
+
85
+ // 如果当前资源类型不支持侧边栏显示,则重置为true(默认显示)
86
+ if (!show.value.sidebar) {
87
+ form.value.meta.sidebar = true;
88
+ }
89
+
90
+ // 如果当前资源类型不支持标签栏显示,则重置为true(默认显示)
91
+ if (!show.value.tabbar) {
92
+ form.value.meta.tabbar = true;
93
+ }
94
+
95
+ // 当应用或动态应用开启开发模式时,需要确保其子路由不会被注册到vue-router
96
+ // 这个逻辑主要在路由生成阶段处理,此处仅做数据一致性保证
97
+ }
98
+
99
+ return {
100
+ show,
101
+ resetIncompatibleOptions,
102
+ };
103
+ }
@@ -1,14 +1,16 @@
1
1
  <script setup lang="tsx">
2
2
  import type { ProColumns } from '@pubinfo/pro-components';
3
3
  import type { AddForm, TreeNode } from './interface';
4
- import { getRbacResourceResourceDelete, getRbacResourceResourceTree } from '@/api/modules/rbac';
4
+ import { SwapOutlined } from '@ant-design/icons-vue';
5
5
  import { ProTable } from '@pubinfo/pro-components';
6
- import { Badge, message, Modal } from 'ant-design-vue';
6
+ import { Badge, message, Modal, Tag } from 'ant-design-vue';
7
7
  import { cloneDeep } from 'lodash-es';
8
8
  import { PubinfoIcon } from 'pubinfo';
9
+ import { getRbacResourceResourceDelete, getRbacResourceResourceTree } from '@/api/modules/rbac';
10
+ import ImportExport from './components/ImportExport.vue';
9
11
  import ResourceEdit from './components/ResourceEdit.vue';
10
12
  import RoleRelation from './components/RoleRelation.vue';
11
- import { ACTION, RESOURCE_TYPE, resourceOptions } from './enum';
13
+ import { ACTION, RESOURCE_COLOR, RESOURCE_TYPE, resourceOptions } from './enum';
12
14
 
13
15
  defineOptions({
14
16
  name: 'Resource',
@@ -28,16 +30,6 @@ const columns: ProColumns<TreeNode> = [
28
30
  allowClear: true,
29
31
  },
30
32
  },
31
- {
32
- valueType: 'a-input',
33
- title: '资源编码',
34
- dataIndex: 'code',
35
- ellipsis: true,
36
- fieldProps: {
37
- placeholder: '请输入资源编码',
38
- allowClear: true,
39
- },
40
- },
41
33
  {
42
34
  valueType: 'a-select',
43
35
  title: '资源类型',
@@ -48,20 +40,47 @@ const columns: ProColumns<TreeNode> = [
48
40
  options: resourceOptions,
49
41
  },
50
42
  customRender({ text }) {
51
- const icon = ['', 'app', 'index', 'menu', 'btn', 'nonmenu'];
52
43
  return (
53
44
  <div class="flex items-center space-x-1">
54
- <PubinfoIcon name={`resource-${icon[text]}`} class="text-xl" />
55
- <span>{resourceOptions.find(item => item.value === text)?.label}</span>
45
+ {/* <PubinfoIcon name={`resource-${RESOURCE_ICON[text]}`} class="text-xl" />
46
+ <span>{resourceOptions.find(item => item.value === text)?.label}</span> */}
47
+
48
+ <Tag color={RESOURCE_COLOR[text]} bordered={false}>{resourceOptions.find(item => item.value === text)?.label}</Tag>
56
49
  </div>
57
50
  );
58
51
  },
59
52
  },
53
+ {
54
+ valueType: 'a-input',
55
+ title: '资源编码',
56
+ dataIndex: 'code',
57
+ ellipsis: true,
58
+ fieldProps: {
59
+ placeholder: '请输入资源编码',
60
+ allowClear: true,
61
+ },
62
+ },
63
+ {
64
+ title: '资源路径',
65
+ dataIndex: 'meta',
66
+ ellipsis: true,
67
+ hideInSearch: true,
68
+ customRender({ text }) {
69
+ return text?.url || '-';
70
+ },
71
+ },
72
+ {
73
+ title: '接口权限',
74
+ dataIndex: 'permissionCode',
75
+ ellipsis: true,
76
+ hideInSearch: true,
77
+ },
60
78
  {
61
79
  valueType: 'a-select',
62
80
  title: '是否启用',
63
81
  dataIndex: 'enable',
64
- width: 100,
82
+ width: 80,
83
+ align: 'center',
65
84
  fieldProps: {
66
85
  placeholder: '请选择是否启用',
67
86
  allowClear: true,
@@ -78,22 +97,18 @@ const columns: ProColumns<TreeNode> = [
78
97
  );
79
98
  },
80
99
  },
81
- {
82
- title: '权限标识',
83
- dataIndex: 'permissionCode',
84
- ellipsis: true,
85
- hideInSearch: true,
86
- },
87
100
  {
88
101
  title: '排序',
89
102
  dataIndex: 'sort',
103
+ width: 60,
104
+ align: 'center',
90
105
  hideInSearch: true,
91
106
  },
92
107
  {
93
108
  title: '操作',
94
109
  dataIndex: 'action',
95
110
  fixed: 'right',
96
- width: 320,
111
+ width: 300,
97
112
  hideInSearch: true,
98
113
  hideInTable() {
99
114
  return !auth([
@@ -120,10 +135,9 @@ function getTreeData() {
120
135
  }
121
136
 
122
137
  async function request(query: any) {
123
- const { pageSize, current, enabled, ...rest } = cloneDeep(query);
138
+ const { pageSize, current, ...rest } = cloneDeep(query);
124
139
  const params: AddForm = {
125
140
  ...rest,
126
- enabled: Boolean(enabled),
127
141
  };
128
142
  const dataSource = await getRbacResourceResourceTree(params, {
129
143
  transform(data) {
@@ -141,6 +155,7 @@ async function request(query: any) {
141
155
 
142
156
  const editRef = ref();
143
157
  const relationRef = ref();
158
+ const importExportRef = ref();
144
159
  function onAction(key: string, record?: TreeNode) {
145
160
  switch (key) {
146
161
  case ACTION.ROLE_RELATION:
@@ -159,6 +174,10 @@ function onAction(key: string, record?: TreeNode) {
159
174
  editRef.value.open(key, record);
160
175
  break;
161
176
 
177
+ case ACTION.IMPORT_EXPORT:
178
+ importExportRef.value.open();
179
+ break;
180
+
162
181
  case ACTION.REMOVE:
163
182
  if (!record?.leaf) {
164
183
  message.info('非叶子节点不能删除');
@@ -193,14 +212,21 @@ function onAction(key: string, record?: TreeNode) {
193
212
  :columns="columns"
194
213
  :request="request"
195
214
  :pagination="false"
196
- :scroll="{ x: 1024 }"
215
+ :scroll="{ x: 1280 }"
197
216
  auto-height
198
217
  >
199
218
  <template #toolbar>
200
- <a-button v-auth="'resource_app_add'" type="primary" @click="onAction(ACTION.ADD)">
201
- <PlusCircleOutlined />
202
- {{ ACTION.ADD }}
203
- </a-button>
219
+ <a-space>
220
+ <a-button v-auth="'resource_app_add'" type="primary" @click="onAction(ACTION.ADD)">
221
+ <PlusCircleOutlined />
222
+ {{ ACTION.ADD }}
223
+ </a-button>
224
+
225
+ <a-button @click="onAction(ACTION.IMPORT_EXPORT)">
226
+ <SwapOutlined />
227
+ {{ ACTION.IMPORT_EXPORT }}
228
+ </a-button>
229
+ </a-space>
204
230
  </template>
205
231
 
206
232
  <template #bodyCell="{ column, record }">
@@ -211,7 +237,7 @@ function onAction(key: string, record?: TreeNode) {
211
237
  <span>{{ ACTION.ROLE_RELATION }}</span>
212
238
  </a>
213
239
  <a
214
- v-if="record.type !== RESOURCE_TYPE.BUTTON"
240
+ v-if="![RESOURCE_TYPE.BUTTON, RESOURCE_TYPE.IFRAME, RESOURCE_TYPE.LINK].includes(record.type)"
215
241
  v-auth="'resource_add_child'"
216
242
  class="flex items-center"
217
243
  @click="onAction(ACTION.ADD_CHILD, record)"
@@ -233,5 +259,6 @@ function onAction(key: string, record?: TreeNode) {
233
259
  </ProTable>
234
260
  <ResourceEdit ref="editRef" :data-source="dataSource" @submit="getTreeData" />
235
261
  <RoleRelation ref="relationRef" />
262
+ <ImportExport ref="importExportRef" :data-source="dataSource" @submit="getTreeData" />
236
263
  </div>
237
264
  </template>
@@ -1,4 +1,8 @@
1
- export type Form = API.PubResource;
1
+ import type { CustomMeta } from './model';
2
+
3
+ export type Form = Omit<API.PubResource, 'meta'> & {
4
+ meta?: CustomMeta | API.PubResource['meta']
5
+ };
2
6
  export type AddForm = API.PubResourceAddDto;
3
7
  export type EditForm = API.PubResourceUpdateDto;
4
8
  export type TreeNode = Form & {