@pubinfo/module-rbac 2.0.0-beta.9 → 2.0.0-rc.1
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.
- package/dist/ComponentSelect-AWuDE4De.js +2 -0
- package/dist/ComponentSelect-CFoCrAFh.js +483 -0
- package/dist/DynamicRoutesForm-DmQMP8-p.js +376 -0
- package/dist/DynamicRoutesForm-xXTdh5EX.js +4 -0
- package/dist/HCheckList-DDP7S_nc.js +37 -0
- package/dist/HCheckList-u43x0KiD.js +2 -0
- package/dist/ImportExport-BbZkZEW_.js +4 -0
- package/dist/ImportExport-Yt6dABIv.js +354 -0
- package/dist/MetaForm-BB80P4w6.js +284 -0
- package/dist/MetaForm-D_na1CP8.js +4 -0
- package/dist/OrgAndPosition-BK5MTlOO.js +188 -0
- package/dist/OrgAndPosition-CDCim7yM.js +2 -0
- package/dist/ResourceEdit-CVwNJMVm.js +309 -0
- package/dist/ResourceEdit-D1e8tLAA.js +8 -0
- package/dist/ResourceRelation-DJDFQYFT.js +93 -0
- package/dist/ResourceRelation-DWhWzKQJ.js +3 -0
- package/dist/ResourceRelation-cfGS-erP.js +78 -0
- package/dist/ResourceSelector-B4AXXCxI.js +247 -0
- package/dist/RoleRelation-BlWDNAM1.js +79 -0
- package/dist/RoleRelation-CAMzPMFz.js +2 -0
- package/dist/RoleSelector-Bqv2p_7X.js +279 -0
- package/dist/TenantEdit-6rMUS9EP.js +253 -0
- package/dist/TenantEdit-BhpSW4w7.js +6 -0
- package/dist/UserAuthorization-Cx9oYms2.js +238 -0
- package/dist/UserAuthorization-D5rSSagE.js +4 -0
- package/dist/UserEdit-CqH6hxTZ.js +336 -0
- package/dist/UserEdit-CqrRx717.js +4 -0
- package/dist/_plugin-vue_export-helper-Cmy-mbsL.js +6 -0
- package/dist/add-child-CJM7MvB2.js +2 -0
- package/dist/animation_item-Bf_Y_nyf.js +4536 -0
- package/dist/animation_item-Wmcl4yBo.js +2 -0
- package/dist/api/modules/assist/qunzujiekou.d.ts +7 -0
- package/dist/api/modules/configData/index.d.ts +1 -1
- package/dist/api/modules/configData/{zidianfuwu.d.ts → zidifuwu.d.ts} +14 -0
- package/dist/api/modules/rbac/gangweijiekou.d.ts +7 -0
- package/dist/api/modules/rbac/index.d.ts +1 -0
- package/dist/api/modules/rbac/pubJiaosezukongzhiqi.d.ts +7 -0
- package/dist/api/modules/rbac/yonghujiekou.d.ts +21 -0
- package/dist/api/modules/rbac/ziyuandaorudaochuxiangguanjiekou.d.ts +43 -0
- package/dist/api/modules/rbac/ziyuanjiekou.d.ts +7 -0
- package/dist/api/request.d.ts +1 -1
- package/dist/authority-BofK2fFE.js +2 -0
- package/dist/authorize-Ck1i_5K5.js +2 -0
- package/dist/blackWhiteList-B-EAyXzG.js +213 -0
- package/dist/blacklist-disable-BgMERGDX.js +2 -0
- package/dist/blacklist-enable-D8ds6NgH.js +2 -0
- package/dist/breadcrumb_setting-Bv12pA15.js +111 -0
- package/dist/browser-chrome-BVvmyPYW.js +2 -0
- package/dist/browser-edge-Bc36eH7f.js +2 -0
- package/dist/browser-ie-BiDFft9C.js +2 -0
- package/dist/browser-other-BzyOvDmB.js +2 -0
- package/dist/browser-safari-CBxgFrI_.js +2 -0
- package/dist/browserType-BJeH2o0t.js +26 -0
- package/dist/browserType-pMY0VZ_3.js +2 -0
- package/dist/chunk-B3eAFu3c.js +11 -0
- package/dist/cloneDeep-BnvyNhik.js +7 -0
- package/dist/components/DirectoryIcones/ComponentsIcones.vue.d.ts +7 -0
- package/dist/components/DirectoryIcones/FolderIcones.vue.d.ts +7 -0
- package/dist/components/DirectoryIcones/ModuleIcones.vue.d.ts +7 -0
- package/dist/components/DirectoryIcones/PackagesIcones.vue.d.ts +7 -0
- package/dist/components/DirectoryIcones/SrcIcones.vue.d.ts +7 -0
- package/dist/components/DirectoryIcones/ViewIcones.vue.d.ts +7 -0
- package/dist/components/DirectoryIcones/VueIcones.vue.d.ts +2 -0
- package/dist/components/GroupSelector/index.vue.d.ts +4 -4
- package/dist/components/OrgTree/index.vue.d.ts +1 -1
- package/dist/components/OrgUserSelector/OrgSelector.vue.d.ts +7 -7
- package/dist/components/OrgUserSelector/UserSelector.vue.d.ts +7 -7
- package/dist/components/OrgUserSelector/index.d.ts +3 -2
- package/dist/components/ResourceIcones/Select.vue.d.ts +9 -0
- package/dist/components/ResourceSelector/index.vue.d.ts +5 -5
- package/dist/components/RoleSelector/RoleSearch.vue.d.ts +19 -0
- package/dist/components/RoleSelector/RoleSelector.vue.d.ts +20 -0
- package/dist/components/RoleSelector/TooltipLabel.vue.d.ts +8 -0
- package/dist/components/RoleSelector/index.d.ts +2 -0
- package/dist/components/RoleSelector/interface.d.ts +4 -0
- package/dist/components/RoleSelector/useRole.d.ts +13 -0
- package/dist/composables/useLottie.d.ts +1 -1
- package/dist/configData-BoeH9I4s.js +86 -0
- package/dist/context.d.ts +3 -0
- package/dist/createAndEditDataPermission-BFmD3zpY.js +443 -0
- package/dist/createAndEditDataPermission-Ll6GWW-p.js +8 -0
- package/dist/data-permission-Dz4eCdAg.js +156 -0
- package/dist/dayjs.min-KffHrkDe.js +297 -0
- package/dist/dictionary-C8UVX_8l.js +180 -0
- package/dist/drawerBlackWhiteList-opDsd2_O.js +125 -0
- package/dist/drawerBlackWhiteList-taaV8A5D.js +3 -0
- package/dist/drawerDictionary-CzT9KJGw.js +130 -0
- package/dist/drawerDictionary-D0Bi75vl.js +4 -0
- package/dist/drawerDictionaryItem-BqQojUNh.js +4 -0
- package/dist/drawerDictionaryItem-LBeuvrE8.js +142 -0
- package/dist/drawerGroup-BI0pYuIO.js +3 -0
- package/dist/drawerGroup-B_pYqrpy.js +188 -0
- package/dist/drawerOrganization-BeDsW0ah.js +251 -0
- package/dist/drawerOrganization-RbLK6k_c.js +3 -0
- package/dist/drawerPosition-CKZCt-Yc.js +3 -0
- package/dist/drawerPosition-DRacJCCQ.js +170 -0
- package/dist/drawerRegion-BM__zqtq.js +187 -0
- package/dist/drawerRegion-CaXvxWEn.js +3 -0
- package/dist/drawerRole-27ggtdnJ.js +6 -0
- package/dist/drawerRole-BOf6UXMc.js +172 -0
- package/dist/drawerRole-CQURGn5D.js +215 -0
- package/dist/drawerRole-D9Dt3l7O.js +5 -0
- package/dist/drawerRole-DPC9SVDe.js +3 -0
- package/dist/drawerRole-DhU_4L0Z.js +159 -0
- package/dist/edit-DF7Qsxtl.js +2 -0
- package/dist/enum-BMY6bmPA.js +54 -0
- package/dist/enum-BZtNAeJC.js +23 -0
- package/dist/enum-CtIne-Ul.js +61 -0
- package/dist/enum-DfCD4cL8.js +4 -0
- package/dist/enum-e5LlvaOv.js +4 -0
- package/dist/group-C0rajn0e.js +174 -0
- package/dist/icard-CtletXtq.js +2 -0
- package/dist/icon_animation-Do8Rw-K9.js +2 -0
- package/dist/icon_breadcrumb-CmZgmswj.js +2 -0
- package/dist/icon_copyright--7CIXSE1.js +2 -0
- package/dist/icon_jt--G-Amuu4.js +2 -0
- package/dist/icon_layout-BkQems5J.js +2 -0
- package/dist/icon_mainpage-98dHnXRL.js +2 -0
- package/dist/icon_menu-8foYPA9U.js +2 -0
- package/dist/icon_page_size-CPjiZpP2.js +2 -0
- package/dist/icon_position_type-Do71e9Ov.js +2 -0
- package/dist/icon_safe_manage-DiBn-uSS.js +2 -0
- package/dist/icon_screen_scale-Ct8iHVKy.js +2 -0
- package/dist/icon_system_manage-CzBNNisy.js +2 -0
- package/dist/icon_tabbar-BajHaWfA.js +2 -0
- package/dist/icon_toolbar-DHKFZD2w.js +2 -0
- package/dist/icon_topbar-C4mu7up7.js +2 -0
- package/dist/icon_watermark-2Wtjrft3.js +2 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6873 -5
- package/dist/interface.d.ts +27 -3
- package/dist/itemlist-CZBPz_rC.js +157 -0
- package/dist/layout_setting-oQd8BfKx.js +74 -0
- package/dist/log-CQfCPTsC.js +14 -0
- package/dist/log-center-qtOWNEaD.js +2 -0
- package/dist/loginHistoryDetail-Abn9eS5-.js +78 -0
- package/dist/loginHistoryDetail-DDEuFbYB.js +4 -0
- package/dist/login_history-Btv9KB0x.js +196 -0
- package/dist/menu_setting-Cju5OkSE.js +158 -0
- package/dist/not-data-BA50qHBT.js +2 -0
- package/dist/not-data-BzaRFolb.js +2 -0
- package/dist/operateHistoryDetail-Br_M3mhI.js +90 -0
- package/dist/operateHistoryDetail-CLsHDBp7.js +4 -0
- package/dist/operate_history-D7jq2IH-.js +191 -0
- package/dist/org-main-D0M4-Mu2.js +2 -0
- package/dist/org-unmain-Bh9hzLgK.js +2 -0
- package/dist/organization-CeOyltjo.js +15605 -0
- package/dist/other_setting-rbUoVood.js +220 -0
- package/dist/page_animation_setting-Diclx4mg.js +117 -0
- package/dist/page_w_setting-Dr2tu_oS.js +69 -0
- package/dist/position-Bodjtnh9.js +168 -0
- package/dist/region-B9xObK4Z.js +185 -0
- package/dist/remove-B3pgrGrf.js +2 -0
- package/dist/resource-DhkRTloI.js +270 -0
- package/dist/resource-app-BKgfDs09.js +2 -0
- package/dist/resource-btn-BXLyUStb.js +2 -0
- package/dist/resource-dynamic-Dx3RhbQk.js +2 -0
- package/dist/resource-index-C2COvmY-.js +2 -0
- package/dist/resource-menu-C_Q6AEFw.js +2 -0
- package/dist/resource-micro-D_OBvoET.js +2 -0
- package/dist/resource-nonmenu-CCpeV9Km.js +2 -0
- package/dist/role-DoBrQ1zG.js +196 -0
- package/dist/role_group-BMNZ1M1A.js +172 -0
- package/dist/routes/index.d.ts +3 -1
- package/dist/routes/modules/authority.manage.menu.d.ts +1 -1
- package/dist/routes/modules/log.manage.menu.d.ts +1 -1
- package/dist/routes/modules/safe.manage.menu.d.ts +1 -1
- package/dist/routes/modules/stylesetting.manage.menu.d.ts +1 -1
- package/dist/routes/modules/system.manage.menu.d.ts +1 -1
- package/dist/safe_setting-J6GWqrZx.js +232 -0
- package/dist/setItem-CcNK_f8V.js +77 -0
- package/dist/setItem-CqHPfTBZ.js +5 -0
- package/dist/setting-manage-Di7-Ks18.js +2 -0
- package/dist/stores-DXQ1Ibt6.js +2 -0
- package/dist/style.css +2 -1
- package/dist/tabbar_setting-Di3OcDig.js +142 -0
- package/dist/tenant-pPYq3xtM.js +183 -0
- package/dist/theme-check-mark-DhhsmM5v.js +2 -0
- package/dist/theme-title-DEVFVYNh.js +2 -0
- package/dist/theme_setting-DMyPJp3M.js +117 -0
- package/dist/{index-BleenJqT.js → toolbar_setting-ChcZxAJJ.js} +155 -167
- package/dist/useAppAndResource-DWQG9bqY.js +57 -0
- package/dist/user-BJL1Sw0q.js +345 -0
- package/dist/view-FR2dRATN.js +2 -0
- package/dist/views/blackWhiteList/components/drawerBlackWhiteList.vue.d.ts +4 -4
- package/dist/views/blackWhiteList/index.vue.d.ts +319 -319
- package/dist/views/breadcrumb_setting/index.vue.d.ts +1 -1
- package/dist/views/components/HCheckList.vue.d.ts +5 -5
- package/dist/views/components/animation_item.vue.d.ts +5 -5
- package/dist/views/components/setItem.vue.d.ts +18 -18
- package/dist/views/data-permission/components/createAndEditDataPermission.vue.d.ts +35 -35
- package/dist/views/data-permission/index.vue.d.ts +350 -350
- package/dist/views/dictionary/components/drawerDictionary.vue.d.ts +4 -4
- package/dist/views/dictionary/components/drawerDictionaryItem.vue.d.ts +4 -4
- package/dist/views/dictionary/index.vue.d.ts +319 -319
- package/dist/views/dictionary/itemlist.vue.d.ts +319 -319
- package/dist/views/group/components/drawerGroup.vue.d.ts +4 -4
- package/dist/views/group/index.vue.d.ts +319 -319
- package/dist/views/layout_setting/index.vue.d.ts +1 -1
- package/dist/views/log_center/components/browserType.vue.d.ts +3 -3
- package/dist/views/log_center/components/loginHistoryDetail.vue.d.ts +4 -4
- package/dist/views/log_center/components/operateHistoryDetail.vue.d.ts +4 -4
- package/dist/views/log_center/login_history.vue.d.ts +315 -315
- package/dist/views/log_center/operate_history.vue.d.ts +315 -315
- package/dist/views/menu_setting/index.vue.d.ts +1 -1
- package/dist/views/organization/components/drawerOrganization.vue.d.ts +4 -4
- package/dist/views/organization/components/drawerRole.vue.d.ts +18 -10
- package/dist/views/organization/index.vue.d.ts +23 -15
- package/dist/views/other_setting/index.vue.d.ts +1 -1
- package/dist/views/page_animation_setting/index.vue.d.ts +1 -1
- package/dist/views/page_w_setting/index.vue.d.ts +1 -1
- package/dist/views/position/components/drawerPosition.vue.d.ts +4 -4
- package/dist/views/position/index.vue.d.ts +319 -319
- package/dist/views/region/components/drawerRegion.vue.d.ts +4 -4
- package/dist/views/region/index.vue.d.ts +319 -319
- package/dist/views/resource/components/ComponentSelect.vue.d.ts +12 -0
- package/dist/views/resource/components/DynamicRoutesForm.vue.d.ts +13 -0
- package/dist/views/resource/components/ImportExport.vue.d.ts +13 -0
- package/dist/views/resource/components/MetaForm.vue.d.ts +10 -0
- package/dist/views/resource/components/ResourceEdit.vue.d.ts +4 -4
- package/dist/views/resource/components/RoleRelation.vue.d.ts +2 -2
- package/dist/views/resource/enum.d.ts +6 -13
- package/dist/views/resource/hooks/useMetaForm.d.ts +6 -0
- package/dist/views/resource/index.vue.d.ts +343 -321
- package/dist/views/resource/interface.d.ts +4 -1
- package/dist/views/resource/model.d.ts +37 -0
- package/dist/views/role/components/ResourceRelation.vue.d.ts +316 -316
- package/dist/views/role/components/drawerRole.vue.d.ts +10 -10
- package/dist/views/role/index.vue.d.ts +642 -642
- package/dist/views/role_group/components/drawerRole.vue.d.ts +18 -10
- package/dist/views/role_group/index.vue.d.ts +333 -325
- package/dist/views/safe_setting/index.vue.d.ts +1 -1
- package/dist/views/tabbar_setting/index.vue.d.ts +1 -1
- package/dist/views/tenant/components/TenantEdit.vue.d.ts +10 -10
- package/dist/views/tenant/index.vue.d.ts +325 -325
- package/dist/views/theme_setting/index.vue.d.ts +1 -1
- package/dist/views/toolbar_setting/index.vue.d.ts +1 -1
- package/dist/views/user/components/OrgAndPosition.vue.d.ts +3 -3
- package/dist/views/user/components/UserAuthorization.vue.d.ts +18 -10
- package/dist/views/user/components/UserEdit.vue.d.ts +4 -4
- package/dist/views/user/index.vue.d.ts +337 -329
- package/dist/views/watermark_setting/index.vue.d.ts +9 -9
- package/dist/watermark_setting-tqYUcPzF.js +199 -0
- package/dist/zddata-D9x-CcqP.js +2 -0
- package/dist/zy_checked-B0r0BaR-.js +2 -0
- package/dist/zy_default-BHbIn4if.js +2 -0
- package/package.json +14 -14
- package/src/api/modules/assist/gonggaofuwu.ts +24 -9
- package/src/api/modules/assist/index.ts +0 -2
- package/src/api/modules/assist/qunzujiekou.ts +37 -7
- package/src/api/modules/assist/quyujiekou.ts +12 -3
- package/src/api/modules/assist/typings.d.ts +62 -58
- package/src/api/modules/configData/heibaimingdanfuwu.ts +12 -3
- package/src/api/modules/configData/index.ts +1 -3
- package/src/api/modules/configData/typings.d.ts +84 -74
- package/src/api/modules/configData/xitongpeizhifuwu.ts +39 -15
- package/src/api/modules/configData/{zidianfuwu.ts → zidifuwu.ts} +80 -8
- package/src/api/modules/log/caozuorizhifuwu.ts +8 -2
- package/src/api/modules/log/denglurizhifuwu.ts +8 -2
- package/src/api/modules/log/index.ts +0 -2
- package/src/api/modules/log/typings.d.ts +29 -25
- package/src/api/modules/rbac/gangweijiekou.ts +44 -8
- package/src/api/modules/rbac/index.ts +1 -2
- package/src/api/modules/rbac/jiaosejiekou.ts +24 -9
- package/src/api/modules/rbac/pubJiaosezukongzhiqi.ts +45 -6
- package/src/api/modules/rbac/shujuquanxianzhubiaokongzhiqi.ts +26 -12
- package/src/api/modules/rbac/typings.d.ts +419 -296
- package/src/api/modules/rbac/yonghujiekou.ts +115 -13
- package/src/api/modules/rbac/yonghushoucangbiaojiekou.ts +20 -5
- package/src/api/modules/rbac/yonghuzuijinchangyongbiaojiekou.ts +12 -3
- package/src/api/modules/rbac/ziyuandaorudaochuxiangguanjiekou.ts +158 -0
- package/src/api/modules/rbac/ziyuanjiekou.ts +43 -4
- package/src/api/modules/rbac/zuhuguanlijiekou.ts +20 -11
- package/src/api/modules/rbac/zuzhijiaosebiaokongzhiqi.ts +12 -3
- package/src/api/modules/rbac/zuzhijiekou.ts +28 -10
- package/src/api/request.ts +3 -2
- package/src/assets/icons/resource-dynamic.svg +39 -0
- package/src/assets/icons/resource-micro.svg +40 -0
- package/src/components/DirectoryIcones/ComponentsIcones.vue +18 -0
- package/src/components/DirectoryIcones/FolderIcones.vue +18 -0
- package/src/components/DirectoryIcones/ModuleIcones.vue +18 -0
- package/src/components/DirectoryIcones/PackagesIcones.vue +18 -0
- package/src/components/DirectoryIcones/SrcIcones.vue +18 -0
- package/src/components/DirectoryIcones/ViewIcones.vue +18 -0
- package/src/components/DirectoryIcones/VueIcones.vue +9 -0
- package/src/components/GroupSelector/index.vue +64 -89
- package/src/components/OrgTree/index.vue +2 -2
- package/src/components/OrgUserSelector/index.ts +5 -0
- package/src/components/OrgUserSelector/provider.ts +1 -1
- package/src/components/ResourceIcones/Select.vue +240 -0
- package/src/components/ResourceSelector/index.vue +33 -50
- package/src/components/RoleSelector/RoleSearch.vue +60 -0
- package/src/components/RoleSelector/RoleSelector.vue +174 -0
- package/src/components/RoleSelector/TooltipLabel.vue +24 -0
- package/src/components/RoleSelector/index.ts +2 -0
- package/src/components/RoleSelector/interface.ts +4 -0
- package/src/components/RoleSelector/useRole.ts +56 -0
- package/src/context.ts +20 -0
- package/src/index.ts +21 -18
- package/src/interface.ts +31 -2
- package/src/routes/index.ts +9 -5
- package/src/routes/modules/authority.manage.menu.ts +0 -13
- package/src/routes/modules/log.manage.menu.ts +0 -8
- package/src/routes/modules/safe.manage.menu.ts +0 -12
- package/src/routes/modules/stylesetting.manage.menu.ts +0 -16
- package/src/routes/modules/system.manage.menu.ts +0 -10
- package/src/views/blackWhiteList/components/drawerBlackWhiteList.vue +1 -1
- package/src/views/blackWhiteList/index.vue +14 -26
- package/src/views/breadcrumb_setting/index.vue +3 -3
- package/src/views/components/animation_item.vue +2 -2
- package/src/views/components/setItem.vue +13 -20
- package/src/views/data-permission/components/createAndEditDataPermission.vue +4 -4
- package/src/views/data-permission/enum.ts +7 -7
- package/src/views/data-permission/index.vue +9 -12
- package/src/views/dictionary/components/drawerDictionary.vue +1 -1
- package/src/views/dictionary/components/drawerDictionaryItem.vue +1 -1
- package/src/views/dictionary/index.vue +3 -3
- package/src/views/dictionary/itemlist.vue +3 -3
- package/src/views/group/components/drawerGroup.vue +2 -2
- package/src/views/group/index.vue +13 -18
- package/src/views/layout_setting/index.vue +154 -164
- package/src/views/log_center/components/loginHistoryDetail.vue +6 -8
- package/src/views/log_center/components/operateHistoryDetail.vue +6 -8
- package/src/views/log_center/login_history.vue +6 -11
- package/src/views/log_center/operate_history.vue +6 -11
- package/src/views/menu_setting/index.vue +3 -3
- package/src/views/organization/components/drawerOrganization.vue +3 -3
- package/src/views/organization/components/drawerRole.vue +9 -7
- package/src/views/organization/index.vue +23 -49
- package/src/views/other_setting/index.vue +2 -2
- package/src/views/page_animation_setting/index.vue +10 -18
- package/src/views/page_w_setting/index.vue +133 -116
- package/src/views/position/components/drawerPosition.vue +2 -2
- package/src/views/position/index.vue +1 -1
- package/src/views/region/components/drawerRegion.vue +2 -2
- package/src/views/region/index.vue +1 -1
- package/src/views/resource/components/ComponentSelect.vue +375 -0
- package/src/views/resource/components/DynamicRoutesForm.vue +92 -0
- package/src/views/resource/components/ImportExport.vue +313 -0
- package/src/views/resource/components/MetaForm.vue +119 -0
- package/src/views/resource/components/ResourceEdit.vue +144 -73
- package/src/views/resource/components/RoleRelation.vue +1 -1
- package/src/views/resource/enum.ts +12 -13
- package/src/views/resource/hooks/useMetaForm.ts +103 -0
- package/src/views/resource/index.vue +59 -32
- package/src/views/resource/interface.ts +5 -1
- package/src/views/resource/model.ts +53 -0
- package/src/views/role/components/ResourceRelation.vue +3 -4
- package/src/views/role/components/drawerRole.vue +3 -3
- package/src/views/role/index.vue +1 -1
- package/src/views/role_group/components/ResourceRelation.vue +3 -4
- package/src/views/role_group/components/drawerRole.vue +8 -7
- package/src/views/role_group/index.vue +1 -1
- package/src/views/safe_setting/index.vue +5 -7
- package/src/views/tabbar_setting/index.vue +2 -2
- package/src/views/tenant/components/TenantEdit.vue +1 -1
- package/src/views/tenant/index.vue +1 -1
- package/src/views/theme_setting/index.vue +202 -231
- package/src/views/toolbar_setting/index.vue +3 -3
- package/src/views/user/components/OrgAndPosition.vue +2 -2
- package/src/views/user/components/UserAuthorization.vue +13 -12
- package/src/views/user/components/UserEdit.vue +1 -1
- package/src/views/user/index.vue +1 -1
- package/src/views/watermark_setting/index.vue +8 -15
- package/dist/OrgSelector.vue_vue_type_script_setup_true_lang-BcL0IFuA.js +0 -567
- package/dist/_baseClone-CQ44TFeq.js +0 -191
- package/dist/_commonjsHelpers-C6fGbg64.js +0 -6
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
- package/dist/animation_item.vue_vue_type_script_setup_true_lang-BQvmwheq.js +0 -4864
- package/dist/browserType.vue_vue_type_script_setup_true_lang-Cv8wph6G.js +0 -38
- package/dist/cloneDeep-BI4WNBQ9.js +0 -8
- package/dist/enum-BEHz_Q18.js +0 -74
- package/dist/enum-C9ihxJe7.js +0 -4
- package/dist/enum-CTUzwCYG.js +0 -4
- package/dist/enum-DDKThkSw.js +0 -24
- package/dist/gangweijiekou-BxJq_m0o.js +0 -46
- package/dist/index-BS45K9vK.js +0 -685
- package/dist/index-Bbsiwecf.js +0 -1631
- package/dist/index-BhcAk-IH.js +0 -399
- package/dist/index-Bl4v-7On.js +0 -125
- package/dist/index-CFPhIFyG.js +0 -140
- package/dist/index-CLSeuhTv.js +0 -872
- package/dist/index-CLxqmFPw.js +0 -317
- package/dist/index-CTiFd9M0.js +0 -303
- package/dist/index-Cej8u1qo.js +0 -274
- package/dist/index-Cr17VOfm.js +0 -389
- package/dist/index-CsHj-xDw.js +0 -283
- package/dist/index-D0yB_8b0.js +0 -181
- package/dist/index-DFR8dd2B.js +0 -785
- package/dist/index-DNf0NPrD.js +0 -131
- package/dist/index-Dm4sOX43.js +0 -27
- package/dist/index-KboUdpTh.js +0 -18588
- package/dist/index-MtXfNGqS.js +0 -1246
- package/dist/index-U8kjKY6p.js +0 -462
- package/dist/index-UZeQsp70.js +0 -177
- package/dist/index-a0E9oj3q.js +0 -703
- package/dist/index-gmUZUdNl.js +0 -634
- package/dist/index-j_ln_NSt.js +0 -455
- package/dist/index-s32GbmsJ.js +0 -164
- package/dist/index-yEpViVkx.js +0 -409
- package/dist/index-zh8PZXw2.js +0 -862
- package/dist/itemlist-xAbIKRVj.js +0 -369
- package/dist/jiaosejiekou-BfY4h7uI.js +0 -58
- package/dist/login_history-CuQv9Iw3.js +0 -430
- package/dist/operate_history-CGP-1Xy2.js +0 -468
- package/dist/pubJiaosezukongzhiqi-CvYfc8Uz.js +0 -57
- package/dist/request-DQLgc7lT.js +0 -5
- package/dist/setItem-DkOvmWXP.js +0 -152
- package/dist/shujuquanxianzhubiaokongzhiqi-DyNgf1y6.js +0 -65
- package/dist/useAppAndResource-D_b19V4t.js +0 -55
- package/dist/views/organization/components/roleSelect.vue.d.ts +0 -14
- package/dist/views/role_group/components/roleSelect.vue.d.ts +0 -14
- package/dist/views/user/components/roleSelect.vue.d.ts +0 -14
- package/dist/xitongpeizhifuwu-C1Vm-W1B.js +0 -23
- package/dist/zidianfuwu-yCWHhOfO.js +0 -65
- package/dist/ziyuanjiekou-DhrAbneq.js +0 -69
- package/dist/zuzhijiaosebiaokongzhiqi-B1g74RqL.js +0 -28
- package/dist/zuzhijiekou-PeZuFtCO.js +0 -85
- package/src/assets/icons/403.svg +0 -1
- package/src/assets/icons/403_dark.svg +0 -1
- package/src/assets/icons/404.svg +0 -1
- package/src/assets/icons/404_dark.svg +0 -1
- package/src/assets/icons/browser-360.svg +0 -1
- package/src/assets/icons/browser-qq.svg +0 -1
- package/src/assets/icons/browser-uc.svg +0 -1
- package/src/assets/icons/change-org.svg +0 -1
- package/src/assets/icons/empty-data.svg +0 -1
- package/src/assets/icons/favorites.svg +0 -1
- package/src/assets/icons/image-load-fail.svg +0 -1
- package/src/assets/icons/logo-sig.svg +0 -1
- package/src/assets/icons/logo.svg +0 -1
- package/src/assets/icons/mima.svg +0 -1
- package/src/assets/icons/process-management.svg +0 -1
- package/src/assets/icons/project-management.svg +0 -1
- package/src/assets/icons/rbac.svg +0 -1
- package/src/assets/icons/test.svg +0 -1
- package/src/assets/icons/toolbar-collapse.svg +0 -1
- package/src/assets/icons/tree_icon.svg +0 -1
- package/src/assets/icons/tree_icon_checked.svg +0 -1
- package/src/assets/icons/workbench.svg +0 -1
- package/src/views/organization/components/roleSelect.vue +0 -258
- package/src/views/role_group/components/roleSelect.vue +0 -224
- package/src/views/user/components/roleSelect.vue +0 -258
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import * as AntdIcons from '@ant-design/icons-vue';
|
|
3
|
+
import { Empty } from 'ant-design-vue';
|
|
4
|
+
import { getAllIconModules, PubinfoIcon } from 'pubinfo';
|
|
5
|
+
|
|
6
|
+
defineOptions({ name: 'ResourceIconesSelect' });
|
|
7
|
+
|
|
8
|
+
// v-model
|
|
9
|
+
const modelValueRef = defineModel<string>();
|
|
10
|
+
|
|
11
|
+
// 弹窗
|
|
12
|
+
const visibleRef = ref(false);
|
|
13
|
+
function handleOpenModal() {
|
|
14
|
+
visibleRef.value = true;
|
|
15
|
+
}
|
|
16
|
+
function handleClose() {
|
|
17
|
+
visibleRef.value = false;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// 基础数据
|
|
21
|
+
interface IconItem { name: string, module?: string }
|
|
22
|
+
|
|
23
|
+
// 提取文件名(去后缀)
|
|
24
|
+
function extractName(path: string) {
|
|
25
|
+
const seg = path.split(/[\\/]/).pop() || path;
|
|
26
|
+
return seg.replace(/\.(svg|png|jpe?g)$/i, '');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// 资产图标模块 -> 图标列表 (Map 迭代)
|
|
30
|
+
const moduleIconMap = computed(() => {
|
|
31
|
+
const m = new Map<string, string[]>();
|
|
32
|
+
const all = getAllIconModules();
|
|
33
|
+
for (const [mod, record] of all.entries()) {
|
|
34
|
+
const arr = Object.keys(record)
|
|
35
|
+
.map(extractName)
|
|
36
|
+
.sort();
|
|
37
|
+
m.set(mod, arr);
|
|
38
|
+
}
|
|
39
|
+
return m;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// AntD 图标(带前缀 antd:)
|
|
43
|
+
const antdIcons = computed<string[]>(() => Object.keys(AntdIcons)
|
|
44
|
+
.filter(n => /(?:Outlined|Filled|TwoTone)$/.test(n))
|
|
45
|
+
.map(n => `antd:${n}`)
|
|
46
|
+
.sort(),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
// 模块列表(全部 + 本地(local) 优先 + 其余模块 + Ant Design)
|
|
50
|
+
const moduleOptions = computed(() => {
|
|
51
|
+
const keys = Array.from(moduleIconMap.value.keys());
|
|
52
|
+
const hasLocal = keys.includes('local');
|
|
53
|
+
const others = keys.filter(k => k !== 'local').sort();
|
|
54
|
+
return [
|
|
55
|
+
{ label: '全部', value: 'all' },
|
|
56
|
+
...(hasLocal ? [{ label: '本地', value: 'local' }] : []),
|
|
57
|
+
...others.map(v => ({ label: v, value: v })),
|
|
58
|
+
{ label: 'Ant Design', value: 'antd' },
|
|
59
|
+
];
|
|
60
|
+
});
|
|
61
|
+
const activeModule = ref('all');
|
|
62
|
+
|
|
63
|
+
// 搜索关键字
|
|
64
|
+
const keyword = ref('');
|
|
65
|
+
|
|
66
|
+
// 所有图标集合
|
|
67
|
+
const allIcons = computed<IconItem[]>(() => {
|
|
68
|
+
const list: IconItem[] = [];
|
|
69
|
+
for (const [mod, arr] of moduleIconMap.value.entries()) {
|
|
70
|
+
arr.forEach((n) => {
|
|
71
|
+
if (mod === 'local') {
|
|
72
|
+
list.push({ name: n, module: mod });
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
list.push({ name: `${mod}-[${n}]`, module: mod });
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
antdIcons.value.forEach(n => list.push({ name: n, module: 'antd' }));
|
|
80
|
+
return list;
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// 模块过滤
|
|
84
|
+
const moduleFiltered = computed(() => {
|
|
85
|
+
if (activeModule.value === 'all') {
|
|
86
|
+
return allIcons.value;
|
|
87
|
+
}
|
|
88
|
+
if (activeModule.value === 'antd') {
|
|
89
|
+
return allIcons.value.filter(i => i.module === 'antd');
|
|
90
|
+
}
|
|
91
|
+
return allIcons.value.filter(i => i.module === activeModule.value);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// 搜索过滤(名称包含)
|
|
95
|
+
const filtered = computed(() => {
|
|
96
|
+
const k = keyword.value.trim().toLowerCase();
|
|
97
|
+
if (!k) {
|
|
98
|
+
return moduleFiltered.value;
|
|
99
|
+
}
|
|
100
|
+
return moduleFiltered.value.filter(i => i.name.toLowerCase().includes(k));
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// 计数
|
|
104
|
+
function moduleCount(val: string) {
|
|
105
|
+
if (val === 'all') {
|
|
106
|
+
return allIcons.value.length;
|
|
107
|
+
}
|
|
108
|
+
if (val === 'antd') {
|
|
109
|
+
return allIcons.value.filter(i => i.module === 'antd').length;
|
|
110
|
+
}
|
|
111
|
+
return allIcons.value.filter(i => i.module === val).length;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 分页 (30/页)
|
|
115
|
+
const pageSize = 30;
|
|
116
|
+
const currentPage = ref(1);
|
|
117
|
+
const pageCount = computed(() => Math.max(1, Math.ceil(filtered.value.length / pageSize)));
|
|
118
|
+
const pageIcons = computed(() => {
|
|
119
|
+
const start = (currentPage.value - 1) * pageSize;
|
|
120
|
+
return filtered.value.slice(start, start + pageSize);
|
|
121
|
+
});
|
|
122
|
+
watch([keyword, activeModule], () => {
|
|
123
|
+
currentPage.value = 1;
|
|
124
|
+
});
|
|
125
|
+
// 当过滤结果长度变化时,若当前页超出范围则回退到最后一页
|
|
126
|
+
watch(filtered, () => {
|
|
127
|
+
if (currentPage.value > pageCount.value) {
|
|
128
|
+
currentPage.value = pageCount.value;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
function onPageChange(page: number) {
|
|
132
|
+
currentPage.value = page;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// 选择
|
|
136
|
+
function handleSelect(icon: IconItem) {
|
|
137
|
+
modelValueRef.value = icon.name;
|
|
138
|
+
handleClose();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
|
|
142
|
+
</script>
|
|
143
|
+
|
|
144
|
+
<template>
|
|
145
|
+
<a-input v-model:value="modelValueRef" @click="handleOpenModal">
|
|
146
|
+
<template #addonAfter>
|
|
147
|
+
<a-tooltip>
|
|
148
|
+
<template #title>
|
|
149
|
+
<PubinfoIcon :name="modelValueRef || ''" size="40px" class="cursor-default" />
|
|
150
|
+
</template>
|
|
151
|
+
<PubinfoIcon :name="modelValueRef || ''" size="20px" class="cursor-default" />
|
|
152
|
+
</a-tooltip>
|
|
153
|
+
</template>
|
|
154
|
+
</a-input>
|
|
155
|
+
<a-form-item-rest>
|
|
156
|
+
<a-modal
|
|
157
|
+
v-model:open="visibleRef"
|
|
158
|
+
title="选择图标"
|
|
159
|
+
width="1200px"
|
|
160
|
+
:footer="null"
|
|
161
|
+
destroy-on-close
|
|
162
|
+
@cancel="handleClose"
|
|
163
|
+
>
|
|
164
|
+
<div class="flex gap-4 min-h-[600px]">
|
|
165
|
+
<!-- 左侧模块列表 -->
|
|
166
|
+
<div class="w-58 flex flex-col border-r border-[#e5e7eb] dark:border-[#30363d] pr-3">
|
|
167
|
+
<div class="mb-3">
|
|
168
|
+
<a-input
|
|
169
|
+
v-model:value="keyword"
|
|
170
|
+
allow-clear
|
|
171
|
+
:bordered="true"
|
|
172
|
+
placeholder="搜索图标"
|
|
173
|
+
class="h-9 text-13px"
|
|
174
|
+
>
|
|
175
|
+
<template #prefix>
|
|
176
|
+
<PubinfoIcon name="i-carbon-search" size="16" class="text-[#7a869a]" />
|
|
177
|
+
</template>
|
|
178
|
+
</a-input>
|
|
179
|
+
</div>
|
|
180
|
+
<div class="flex-1 overflow-auto space-y-1 pr-1">
|
|
181
|
+
<div
|
|
182
|
+
v-for="m in moduleOptions"
|
|
183
|
+
:key="m.value"
|
|
184
|
+
class="flex items-center justify-between px-3 py-2 rounded-md cursor-pointer text-13px border border-transparent hover:bg-[#f3f6fa] dark:hover:bg-[#262c33] transition"
|
|
185
|
+
:class="activeModule === m.value ? 'bg-[#eef5ff] dark:bg-[#1e2a33] border-[#1677ff] text-[#1677ff] font-medium' : 'text-[#4b5563]'"
|
|
186
|
+
@click="activeModule = m.value"
|
|
187
|
+
>
|
|
188
|
+
<span class="truncate max-w-[120px]">{{ m.label }}</span>
|
|
189
|
+
<span class="ml-2 inline-block min-w-6 text-center text-11px rounded bg-[#eef1f5] dark:bg-[#2d3339] px-1 text-[#5d6671] dark:text-[#9aa3ad]">{{ moduleCount(m.value) }}</span>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
<!-- 主体 -->
|
|
194
|
+
<div class="flex-1 flex flex-col min-w-0">
|
|
195
|
+
<template v-if="filtered.length">
|
|
196
|
+
<div class="grid grid-cols-6 gap-3 auto-rows-[96px] overflow-auto flex-1 p-1">
|
|
197
|
+
<a-tooltip
|
|
198
|
+
v-for="icon in pageIcons"
|
|
199
|
+
:key="`${icon.module || ''}:${icon.name}`"
|
|
200
|
+
:mouse-enter-delay="0.35"
|
|
201
|
+
>
|
|
202
|
+
<template #title>
|
|
203
|
+
<div class="text-12px leading-tight space-y-1">
|
|
204
|
+
<div class="font-medium">
|
|
205
|
+
{{ icon.name }}
|
|
206
|
+
</div>
|
|
207
|
+
<div v-if="icon.module" class="opacity-70">
|
|
208
|
+
模块: {{ icon.module }}
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
</template>
|
|
212
|
+
<div
|
|
213
|
+
class="group relative flex flex-col items-center justify-center cursor-pointer rounded-md"
|
|
214
|
+
:class="modelValueRef === icon.name ? 'border-[#1677ff] ring-2 ring-[#1677ff80]' : ''"
|
|
215
|
+
@click="handleSelect(icon)"
|
|
216
|
+
>
|
|
217
|
+
<PubinfoIcon :name="icon.name" size="30px" />
|
|
218
|
+
</div>
|
|
219
|
+
</a-tooltip>
|
|
220
|
+
</div>
|
|
221
|
+
<!-- 分页 -->
|
|
222
|
+
<div class="mt-4 flex justify-center select-none">
|
|
223
|
+
<a-pagination
|
|
224
|
+
:current="currentPage"
|
|
225
|
+
:page-size="pageSize"
|
|
226
|
+
:total="filtered.length"
|
|
227
|
+
:show-size-changer="false"
|
|
228
|
+
show-quick-jumper
|
|
229
|
+
@change="onPageChange"
|
|
230
|
+
/>
|
|
231
|
+
</div>
|
|
232
|
+
</template>
|
|
233
|
+
<div v-else class="flex-1 flex items-center justify-center">
|
|
234
|
+
<a-empty :image="simpleImage" description="没有匹配的图标" />
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</a-modal>
|
|
239
|
+
</a-form-item-rest>
|
|
240
|
+
</template>
|
|
@@ -349,83 +349,66 @@ defineExpose({
|
|
|
349
349
|
</a-modal>
|
|
350
350
|
</template>
|
|
351
351
|
|
|
352
|
-
<style
|
|
352
|
+
<style scoped>
|
|
353
353
|
.border_color {
|
|
354
|
-
|
|
354
|
+
--at-apply: border-[#e5e6eb];
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
[data-theme="dark"] {
|
|
358
|
-
|
|
359
|
-
border-color: rgb(253 253 253 / 12%);
|
|
360
|
-
}
|
|
357
|
+
[data-theme="dark"] .border_color {
|
|
358
|
+
--at-apply: border-[#fdfdfd1f];
|
|
361
359
|
}
|
|
362
360
|
|
|
363
361
|
.border_c {
|
|
364
|
-
|
|
365
|
-
border-radius: 10px;
|
|
362
|
+
--at-apply: border rounded-[10px] border-dashed border-[#ccc];
|
|
366
363
|
}
|
|
367
364
|
|
|
368
365
|
:deep(.ant-dropdown-link) {
|
|
369
|
-
|
|
370
|
-
font-size: 12px;
|
|
371
|
-
border-radius: 2px;
|
|
372
|
-
transform: scale(0.7);
|
|
366
|
+
--at-apply: text-xs px-1.5 py-1 rounded-sm scale-[0.7];
|
|
373
367
|
}
|
|
374
368
|
</style>
|
|
375
369
|
|
|
376
|
-
<style lang='
|
|
377
|
-
.custom_modal {
|
|
378
|
-
:
|
|
379
|
-
|
|
380
|
-
border-radius: 0;
|
|
381
|
-
}
|
|
370
|
+
<style lang='css' scoped>
|
|
371
|
+
.custom_modal :deep(.ant-modal-content) {
|
|
372
|
+
--at-apply: p-0 rounded-none;
|
|
373
|
+
}
|
|
382
374
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
border-bottom: 1px solid #e5e6eb;
|
|
387
|
-
}
|
|
375
|
+
.custom_modal :deep(.ant-modal-header) {
|
|
376
|
+
--at-apply: mb-0 px-4 py-3 border-b-[#e5e6eb] border-b border-solid;
|
|
377
|
+
}
|
|
388
378
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
color: #1d2129;
|
|
393
|
-
}
|
|
379
|
+
.custom_modal :deep(.ant-modal-title) {
|
|
380
|
+
--at-apply: text-base font-medium text-[#1d2129];
|
|
381
|
+
}
|
|
394
382
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
383
|
+
.custom_modal :deep(.ant-modal-body) {
|
|
384
|
+
--at-apply: p-4;
|
|
385
|
+
}
|
|
398
386
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
387
|
+
.custom_modal :deep(.ant-modal-footer) {
|
|
388
|
+
--at-apply: p-4 border-t-[#e5e6eb] border-t border-solid;
|
|
389
|
+
}
|
|
402
390
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
}
|
|
406
|
-
}
|
|
391
|
+
.custom_modal :deep(.ant-modal-footer) .ant-btn {
|
|
392
|
+
--at-apply: rounded-sm;
|
|
407
393
|
}
|
|
408
394
|
|
|
409
395
|
:deep(.ant-tree-checkbox) {
|
|
410
|
-
|
|
411
|
-
margin-inline-end: 2px;
|
|
396
|
+
--at-apply: mt-0 mr-2px;
|
|
412
397
|
}
|
|
413
398
|
|
|
414
399
|
:deep(.ant-tree-checkbox + span .ant-tree-iconEle) {
|
|
415
|
-
|
|
400
|
+
--at-apply: mr-1;
|
|
416
401
|
}
|
|
417
402
|
|
|
418
403
|
.custom_tag {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
border-radius: 2px;
|
|
404
|
+
--at-apply: px-2 py-[3px] rounded-sm border-0;
|
|
405
|
+
}
|
|
422
406
|
|
|
423
|
-
|
|
424
|
-
|
|
407
|
+
.custom_tag :deep(.ant-tag-close-icon) {
|
|
408
|
+
--at-apply: text-[#165dff] text-op-60;
|
|
409
|
+
}
|
|
425
410
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
}
|
|
429
|
-
}
|
|
411
|
+
.custom_tag :deep(.ant-tag-close-icon):hover {
|
|
412
|
+
--at-apply: text-[#165dff] text-op-100;
|
|
430
413
|
}
|
|
431
414
|
</style>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectValue } from 'ant-design-vue/es/select';
|
|
3
|
+
import { SearchOutlined } from '@ant-design/icons-vue';
|
|
4
|
+
import { getRbacPubRoleGroupGetAll } from '@/api/modules/rbac';
|
|
5
|
+
|
|
6
|
+
defineOptions({
|
|
7
|
+
name: 'RoleSearch',
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<{
|
|
11
|
+
group?: boolean
|
|
12
|
+
}>(), {
|
|
13
|
+
group: false,
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const emit = defineEmits(['select']);
|
|
17
|
+
|
|
18
|
+
const searchContent = defineModel<string>();
|
|
19
|
+
const groupId = defineModel<string>('groupId');
|
|
20
|
+
|
|
21
|
+
const groups = ref<API.PubRoleGroup[]>([]);
|
|
22
|
+
|
|
23
|
+
async function getRoleGroup() {
|
|
24
|
+
const res = await getRbacPubRoleGroupGetAll({ name: '' });
|
|
25
|
+
if (res.success) {
|
|
26
|
+
groups.value = res.data ?? [];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
onMounted(() => {
|
|
31
|
+
if (props.group) {
|
|
32
|
+
getRoleGroup();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<template>
|
|
38
|
+
<a-input v-model:value="searchContent" placeholder="请输入" allow-clear>
|
|
39
|
+
<template #addonBefore>
|
|
40
|
+
<a-select v-if="group" v-model:value="groupId" style="width: 90px;" @change="($event: SelectValue) => emit('select', $event)">
|
|
41
|
+
<a-select-option value="">
|
|
42
|
+
全部
|
|
43
|
+
</a-select-option>
|
|
44
|
+
<a-select-option v-for="item in groups" :key="item.id" :value="item.id">
|
|
45
|
+
<a-tooltip :title="item.name">
|
|
46
|
+
{{ item.name }}
|
|
47
|
+
</a-tooltip>
|
|
48
|
+
</a-select-option>
|
|
49
|
+
</a-select>
|
|
50
|
+
|
|
51
|
+
<div v-else>
|
|
52
|
+
全部
|
|
53
|
+
</div>
|
|
54
|
+
</template>
|
|
55
|
+
|
|
56
|
+
<template #suffix>
|
|
57
|
+
<SearchOutlined />
|
|
58
|
+
</template>
|
|
59
|
+
</a-input>
|
|
60
|
+
</template>
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { CheckboxChangeEvent } from 'ant-design-vue/es/checkbox/interface';
|
|
3
|
+
import type { SelectValue } from './interface';
|
|
4
|
+
import type { Role } from './useRole';
|
|
5
|
+
import { CloseOutlined } from '@ant-design/icons-vue';
|
|
6
|
+
import { useToggle } from '@vueuse/core';
|
|
7
|
+
import { Card, Checkbox, CheckboxGroup, Modal, Spin, theme } from 'ant-design-vue';
|
|
8
|
+
import RoleSearch from './RoleSearch.vue';
|
|
9
|
+
import TooltipLabel from './TooltipLabel.vue';
|
|
10
|
+
import { useRole, useRoleGroup } from './useRole';
|
|
11
|
+
|
|
12
|
+
defineOptions({
|
|
13
|
+
name: 'RoleSelector',
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
withDefaults(defineProps<{
|
|
17
|
+
group?: boolean
|
|
18
|
+
}>(), {
|
|
19
|
+
group: false,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const emit = defineEmits(['select']);
|
|
23
|
+
|
|
24
|
+
const { token } = theme.useToken();
|
|
25
|
+
|
|
26
|
+
const open = defineModel<boolean>('open');
|
|
27
|
+
const setOpen = useToggle(open);
|
|
28
|
+
|
|
29
|
+
const selectValue = ref<SelectValue[]>([]);
|
|
30
|
+
|
|
31
|
+
const role = reactive(useRole());
|
|
32
|
+
const roleGroup = reactive(useRoleGroup());
|
|
33
|
+
|
|
34
|
+
const search = ref('');
|
|
35
|
+
const groupId = ref('');
|
|
36
|
+
async function onSearchSelect(id: string) {
|
|
37
|
+
await roleGroup.getData(id);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function onOpen(value: SelectValue[] = []) {
|
|
41
|
+
selectValue.value = value;
|
|
42
|
+
search.value = '';
|
|
43
|
+
groupId.value = '';
|
|
44
|
+
await role.getData();
|
|
45
|
+
setOpen(true);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const roleData = computed(() => {
|
|
49
|
+
return groupId.value === '' ? role.roles : roleGroup.roles;
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
function filterName(v: Role) {
|
|
53
|
+
return roleData.value.findIndex(item => item.id === v.id) > -1 && v.name?.includes(search.value);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function onCheck(e: CheckboxChangeEvent, item: Role) {
|
|
57
|
+
if (e.target.checked) {
|
|
58
|
+
selectValue.value.push({ value: item.id, label: item.name } as SelectValue);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
selectValue.value = selectValue.value.filter(e => e.value !== item.id);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function onClose(value: SelectValue['value']) {
|
|
66
|
+
selectValue.value = selectValue.value.filter(e => e.value !== value);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function onSubmit() {
|
|
70
|
+
emit('select', selectValue.value);
|
|
71
|
+
setOpen(false);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function onClear() {
|
|
75
|
+
const disabledData = selectValue.value.filter(e => !role.roles.some(role => role.id === e.value));
|
|
76
|
+
selectValue.value = disabledData;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
defineExpose({
|
|
80
|
+
open: onOpen,
|
|
81
|
+
});
|
|
82
|
+
</script>
|
|
83
|
+
|
|
84
|
+
<template>
|
|
85
|
+
<Modal
|
|
86
|
+
v-model:open="open"
|
|
87
|
+
title="角色选择"
|
|
88
|
+
:mask-closable="false"
|
|
89
|
+
:width="750"
|
|
90
|
+
:z-index="1001"
|
|
91
|
+
ok-text="确认"
|
|
92
|
+
cancel-text="取消"
|
|
93
|
+
destroy-on-close
|
|
94
|
+
@ok="onSubmit()"
|
|
95
|
+
>
|
|
96
|
+
<div class="border border-solid h-[400px]" :style="{ borderColor: token.colorBorder }">
|
|
97
|
+
<div class="h-full flex">
|
|
98
|
+
<Card
|
|
99
|
+
:bordered="false"
|
|
100
|
+
size="small"
|
|
101
|
+
:head-style="{ backgroundColor: token.colorBgLayout, borderRadius: 0, borderWidth: 0, borderBottomWidth: '1px', padding: 0 }"
|
|
102
|
+
:body-style="{ flex: 1, padding: 0, height: 'calc(100% - 38px)' }"
|
|
103
|
+
:style="{ boxShadow: 'none', borderRadius: 0, borderColor: token.colorBorder }"
|
|
104
|
+
class="flex h-full flex-col w-1/2"
|
|
105
|
+
>
|
|
106
|
+
<div class="p-2 flex flex-col h-full gap-2">
|
|
107
|
+
<RoleSearch v-model="search" v-model:group-id="groupId" :group="group" @select="onSearchSelect" />
|
|
108
|
+
|
|
109
|
+
<div class="flex-1 overflow-y-auto overflow-x-hidden">
|
|
110
|
+
<div v-if="role.loading || roleGroup.loading" class="flex items-center justify-center size-full">
|
|
111
|
+
<Spin />
|
|
112
|
+
</div>
|
|
113
|
+
<CheckboxGroup v-else :value="selectValue.map(e => e.value)" class="w-full overflow-x-hidden">
|
|
114
|
+
<div
|
|
115
|
+
v-for="item in roleData"
|
|
116
|
+
v-show="filterName(item)"
|
|
117
|
+
:key="item.id"
|
|
118
|
+
class="w-full py-2 border-0 border-b border-solid truncate"
|
|
119
|
+
:style="{ borderColor: token.colorBorder }"
|
|
120
|
+
>
|
|
121
|
+
<Checkbox :value="item.id" @change="($event) => onCheck($event, item)">
|
|
122
|
+
<TooltipLabel :name="item.name" />
|
|
123
|
+
</Checkbox>
|
|
124
|
+
</div>
|
|
125
|
+
</CheckboxGroup>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</Card>
|
|
129
|
+
|
|
130
|
+
<div
|
|
131
|
+
:style="{ borderColor: token.colorBorder }"
|
|
132
|
+
class="h-full border-0 border-r border-solid"
|
|
133
|
+
/>
|
|
134
|
+
|
|
135
|
+
<Card
|
|
136
|
+
:bordered="false"
|
|
137
|
+
size="small"
|
|
138
|
+
:head-style="{ backgroundColor: token.colorBgLayout, borderRadius: 0, borderWidth: 0, borderBottomWidth: '1px' }"
|
|
139
|
+
:body-style="{ flex: 1, padding: 0, overflow: 'hidden' }"
|
|
140
|
+
:style="{ boxShadow: 'none', borderRadius: 0 }"
|
|
141
|
+
class="flex h-full flex-col flex-1"
|
|
142
|
+
>
|
|
143
|
+
<template #title>
|
|
144
|
+
<span class="font-normal">
|
|
145
|
+
已选角色
|
|
146
|
+
</span>
|
|
147
|
+
</template>
|
|
148
|
+
<template #extra>
|
|
149
|
+
<a :style="{ color: token.colorPrimary }" @click="onClear()">
|
|
150
|
+
清空
|
|
151
|
+
</a>
|
|
152
|
+
</template>
|
|
153
|
+
|
|
154
|
+
<div class="gap-1 p-2 h-full overflow-y-auto">
|
|
155
|
+
<div
|
|
156
|
+
v-for="item in selectValue"
|
|
157
|
+
:key="item.value"
|
|
158
|
+
class="inline-block mb-1 py-1 px-2 mx-0.5 max-w-full rounded"
|
|
159
|
+
:style="{ backgroundColor: token.colorPrimaryBg }"
|
|
160
|
+
>
|
|
161
|
+
<TooltipLabel :name="item.label" :size="20" />
|
|
162
|
+
<CloseOutlined
|
|
163
|
+
v-if="role.roles.some(role => role.id === item.value)"
|
|
164
|
+
class="ml-1 cursor-pointer text-xs"
|
|
165
|
+
:style="{ color: token.colorPrimary }"
|
|
166
|
+
@click="onClose(item.value)"
|
|
167
|
+
/>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
</Card>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
</Modal>
|
|
174
|
+
</template>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { Tooltip } from 'ant-design-vue';
|
|
3
|
+
|
|
4
|
+
defineOptions({
|
|
5
|
+
name: 'TooltipLabel',
|
|
6
|
+
inheritAttrs: false,
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
withDefaults(defineProps<{
|
|
10
|
+
name?: string
|
|
11
|
+
size?: number
|
|
12
|
+
}>(), {
|
|
13
|
+
size: 21,
|
|
14
|
+
});
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<Tooltip v-if="(name || '').length > size" :title="name">
|
|
19
|
+
<span v-bind="$attrs">{{ `${name?.slice(0, size)}...` }}</span>
|
|
20
|
+
</Tooltip>
|
|
21
|
+
<span v-else v-bind="$attrs">
|
|
22
|
+
{{ name }}
|
|
23
|
+
</span>
|
|
24
|
+
</template>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useToggle } from '@vueuse/core';
|
|
2
|
+
import { getRbacPubRoleGroupGetById, getRbacRoleRoleList } from '@/api/modules/rbac';
|
|
3
|
+
|
|
4
|
+
export type Role = API.PubRole;
|
|
5
|
+
|
|
6
|
+
export function useRole() {
|
|
7
|
+
const [loading, setLoading] = useToggle(false);
|
|
8
|
+
|
|
9
|
+
const roles = ref<Role[]>([]);
|
|
10
|
+
|
|
11
|
+
async function getData() {
|
|
12
|
+
try {
|
|
13
|
+
setLoading(true);
|
|
14
|
+
const res = await getRbacRoleRoleList();
|
|
15
|
+
if (res.success) {
|
|
16
|
+
roles.value = res.data ?? [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
setLoading(false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
loading,
|
|
26
|
+
setLoading,
|
|
27
|
+
roles,
|
|
28
|
+
getData,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function useRoleGroup() {
|
|
33
|
+
const [loading, setLoading] = useToggle(false);
|
|
34
|
+
|
|
35
|
+
const roles = ref<Role[]>([]);
|
|
36
|
+
|
|
37
|
+
async function getData(id: string) {
|
|
38
|
+
try {
|
|
39
|
+
setLoading(true);
|
|
40
|
+
const res = await getRbacPubRoleGroupGetById({ id });
|
|
41
|
+
if (res.success) {
|
|
42
|
+
roles.value = res.data?.roles ?? [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
setLoading(false);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return {
|
|
51
|
+
loading,
|
|
52
|
+
setLoading,
|
|
53
|
+
roles,
|
|
54
|
+
getData,
|
|
55
|
+
};
|
|
56
|
+
}
|