smart-admin-web 10.5.0
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/LICENSE +201 -0
- package/README.md +78 -0
- package/dist/App.vue.d.ts +3 -0
- package/dist/App.vue.js +54 -0
- package/dist/App.vue.js.map +1 -0
- package/dist/App2.vue.js +5 -0
- package/dist/App2.vue.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
- package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
- package/dist/api/client.d.ts +29 -0
- package/dist/api/client.js +139 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +672 -0
- package/dist/api/index.js +638 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/reauthGate.d.ts +16 -0
- package/dist/api/reauthGate.js +21 -0
- package/dist/api/reauthGate.js.map +1 -0
- package/dist/api/schema.d.ts +10230 -0
- package/dist/assets/icons/ph-subset.json.js +16 -0
- package/dist/assets/icons/ph-subset.json.js.map +1 -0
- package/dist/assets/oauth/dingtalk.svg.js +5 -0
- package/dist/assets/oauth/dingtalk.svg.js.map +1 -0
- package/dist/assets/oauth/gitee.svg.js +5 -0
- package/dist/assets/oauth/gitee.svg.js.map +1 -0
- package/dist/assets/oauth/github.svg.js +5 -0
- package/dist/assets/oauth/github.svg.js.map +1 -0
- package/dist/assets/oauth/qq.svg.js +5 -0
- package/dist/assets/oauth/qq.svg.js.map +1 -0
- package/dist/assets/oauth/wechat.svg.js +5 -0
- package/dist/assets/oauth/wechat.svg.js.map +1 -0
- package/dist/assets/oauth/wecom.svg.js +5 -0
- package/dist/assets/oauth/wecom.svg.js.map +1 -0
- package/dist/assets/svg/star.svg.js +6 -0
- package/dist/assets/svg/star.svg.js.map +1 -0
- package/dist/components/ApiSelect/index.vue.d.ts +22 -0
- package/dist/components/ApiSelect/index.vue.js +50 -0
- package/dist/components/ApiSelect/index.vue.js.map +1 -0
- package/dist/components/ApiSelect/index2.vue.js +5 -0
- package/dist/components/ApiSelect/index2.vue.js.map +1 -0
- package/dist/components/AppIcon.vue.d.ts +7 -0
- package/dist/components/AppIcon.vue.js +33 -0
- package/dist/components/AppIcon.vue.js.map +1 -0
- package/dist/components/AppIcon2.vue.js +5 -0
- package/dist/components/AppIcon2.vue.js.map +1 -0
- package/dist/components/Chart/BarChart.vue.d.ts +13 -0
- package/dist/components/Chart/BarChart.vue.js +27 -0
- package/dist/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/components/Chart/BarChart2.vue.js +5 -0
- package/dist/components/Chart/BarChart2.vue.js.map +1 -0
- package/dist/components/Chart/LineChart.vue.d.ts +15 -0
- package/dist/components/Chart/LineChart.vue.js +33 -0
- package/dist/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/components/Chart/LineChart2.vue.js +5 -0
- package/dist/components/Chart/LineChart2.vue.js.map +1 -0
- package/dist/components/Chart/PieChart.vue.d.ts +14 -0
- package/dist/components/Chart/PieChart.vue.js +31 -0
- package/dist/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/components/Chart/PieChart2.vue.js +5 -0
- package/dist/components/Chart/PieChart2.vue.js.map +1 -0
- package/dist/components/Chart/echarts.d.ts +57 -0
- package/dist/components/Chart/echarts.js +47 -0
- package/dist/components/Chart/echarts.js.map +1 -0
- package/dist/components/Chart/index.vue.d.ts +12 -0
- package/dist/components/Chart/index.vue.js +8 -0
- package/dist/components/Chart/index.vue.js.map +1 -0
- package/dist/components/Chart/index2.vue.js +27 -0
- package/dist/components/Chart/index2.vue.js.map +1 -0
- package/dist/components/CodeBlock/index.vue.d.ts +17 -0
- package/dist/components/CodeBlock/index.vue.js +8 -0
- package/dist/components/CodeBlock/index.vue.js.map +1 -0
- package/dist/components/CodeBlock/index2.vue.js +48 -0
- package/dist/components/CodeBlock/index2.vue.js.map +1 -0
- package/dist/components/CronEditor/index.vue.d.ts +15 -0
- package/dist/components/CronEditor/index.vue.js +8 -0
- package/dist/components/CronEditor/index.vue.js.map +1 -0
- package/dist/components/CronEditor/index2.vue.js +528 -0
- package/dist/components/CronEditor/index2.vue.js.map +1 -0
- package/dist/components/DetailPage/index.vue.d.ts +26 -0
- package/dist/components/DetailPage/index.vue.js +8 -0
- package/dist/components/DetailPage/index.vue.js.map +1 -0
- package/dist/components/DetailPage/index2.vue.js +51 -0
- package/dist/components/DetailPage/index2.vue.js.map +1 -0
- package/dist/components/DictCheckbox/index.vue.d.ts +6 -0
- package/dist/components/DictCheckbox/index.vue.js +43 -0
- package/dist/components/DictCheckbox/index.vue.js.map +1 -0
- package/dist/components/DictCheckbox/index2.vue.js +5 -0
- package/dist/components/DictCheckbox/index2.vue.js.map +1 -0
- package/dist/components/DictRadio/index.vue.d.ts +6 -0
- package/dist/components/DictRadio/index.vue.js +38 -0
- package/dist/components/DictRadio/index.vue.js.map +1 -0
- package/dist/components/DictRadio/index2.vue.js +5 -0
- package/dist/components/DictRadio/index2.vue.js.map +1 -0
- package/dist/components/DictSelect/index.vue.d.ts +6 -0
- package/dist/components/DictSelect/index.vue.js +37 -0
- package/dist/components/DictSelect/index.vue.js.map +1 -0
- package/dist/components/DictSelect/index2.vue.js +5 -0
- package/dist/components/DictSelect/index2.vue.js.map +1 -0
- package/dist/components/DictTag/index.vue.d.ts +10 -0
- package/dist/components/DictTag/index.vue.js +48 -0
- package/dist/components/DictTag/index.vue.js.map +1 -0
- package/dist/components/DictTag/index2.vue.js +5 -0
- package/dist/components/DictTag/index2.vue.js.map +1 -0
- package/dist/components/ErrorBoundary/index.vue.d.ts +13 -0
- package/dist/components/ErrorBoundary/index.vue.js +8 -0
- package/dist/components/ErrorBoundary/index.vue.js.map +1 -0
- package/dist/components/ErrorBoundary/index2.vue.js +61 -0
- package/dist/components/ErrorBoundary/index2.vue.js.map +1 -0
- package/dist/components/ExportColumnsModal/index.vue.d.ts +19 -0
- package/dist/components/ExportColumnsModal/index.vue.js +8 -0
- package/dist/components/ExportColumnsModal/index.vue.js.map +1 -0
- package/dist/components/ExportColumnsModal/index2.vue.js +121 -0
- package/dist/components/ExportColumnsModal/index2.vue.js.map +1 -0
- package/dist/components/FileUpload/index.vue.d.ts +24 -0
- package/dist/components/FileUpload/index.vue.js +42 -0
- package/dist/components/FileUpload/index.vue.js.map +1 -0
- package/dist/components/FileUpload/index2.vue.js +5 -0
- package/dist/components/FileUpload/index2.vue.js.map +1 -0
- package/dist/components/FormContainer/index.vue.d.ts +51 -0
- package/dist/components/FormContainer/index.vue.js +160 -0
- package/dist/components/FormContainer/index.vue.js.map +1 -0
- package/dist/components/FormContainer/index3.vue.js +6 -0
- package/dist/components/FormContainer/index3.vue.js.map +1 -0
- package/dist/components/IconPicker/index.vue.d.ts +18 -0
- package/dist/components/IconPicker/index.vue.js +43 -0
- package/dist/components/IconPicker/index.vue.js.map +1 -0
- package/dist/components/IconPicker/index2.vue.js +5 -0
- package/dist/components/IconPicker/index2.vue.js.map +1 -0
- package/dist/components/ImportWizard/index.vue.d.ts +39 -0
- package/dist/components/ImportWizard/index.vue.js +8 -0
- package/dist/components/ImportWizard/index.vue.js.map +1 -0
- package/dist/components/ImportWizard/index2.vue.js +634 -0
- package/dist/components/ImportWizard/index2.vue.js.map +1 -0
- package/dist/components/JsonEditor/index.vue.d.ts +12 -0
- package/dist/components/JsonEditor/index.vue.js +87 -0
- package/dist/components/JsonEditor/index.vue.js.map +1 -0
- package/dist/components/JsonEditor/index2.vue.js +5 -0
- package/dist/components/JsonEditor/index2.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/MarkdownView.vue.d.ts +6 -0
- package/dist/components/MarkdownEditor/MarkdownView.vue.js +33 -0
- package/dist/components/MarkdownEditor/MarkdownView.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/MarkdownView2.vue.js +5 -0
- package/dist/components/MarkdownEditor/MarkdownView2.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/index.vue.d.ts +10 -0
- package/dist/components/MarkdownEditor/index.vue.js +35 -0
- package/dist/components/MarkdownEditor/index.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/index2.vue.js +5 -0
- package/dist/components/MarkdownEditor/index2.vue.js.map +1 -0
- package/dist/components/MenuSearch.vue.d.ts +10 -0
- package/dist/components/MenuSearch.vue.js +8 -0
- package/dist/components/MenuSearch.vue.js.map +1 -0
- package/dist/components/MenuSearch2.vue.js +121 -0
- package/dist/components/MenuSearch2.vue.js.map +1 -0
- package/dist/components/OrgTreeSelect/index.vue.d.ts +6 -0
- package/dist/components/OrgTreeSelect/index.vue.js +42 -0
- package/dist/components/OrgTreeSelect/index.vue.js.map +1 -0
- package/dist/components/OrgTreeSelect/index2.vue.js +5 -0
- package/dist/components/OrgTreeSelect/index2.vue.js.map +1 -0
- package/dist/components/PasswordStrength/index.vue.d.ts +6 -0
- package/dist/components/PasswordStrength/index.vue.js +8 -0
- package/dist/components/PasswordStrength/index.vue.js.map +1 -0
- package/dist/components/PasswordStrength/index2.vue.js +91 -0
- package/dist/components/PasswordStrength/index2.vue.js.map +1 -0
- package/dist/components/ReauthModal.vue.d.ts +3 -0
- package/dist/components/ReauthModal.vue.js +8 -0
- package/dist/components/ReauthModal.vue.js.map +1 -0
- package/dist/components/ReauthModal2.vue.js +139 -0
- package/dist/components/ReauthModal2.vue.js.map +1 -0
- package/dist/components/RoleSelect/index.vue.d.ts +8 -0
- package/dist/components/RoleSelect/index.vue.js +26 -0
- package/dist/components/RoleSelect/index.vue.js.map +1 -0
- package/dist/components/RoleSelect/index2.vue.js +5 -0
- package/dist/components/RoleSelect/index2.vue.js.map +1 -0
- package/dist/components/SelectTable/index.vue.d.ts +76 -0
- package/dist/components/SelectTable/index.vue.js +8 -0
- package/dist/components/SelectTable/index.vue.js.map +1 -0
- package/dist/components/SelectTable/index2.vue.js +256 -0
- package/dist/components/SelectTable/index2.vue.js.map +1 -0
- package/dist/components/SmartLogo.vue.d.ts +8 -0
- package/dist/components/SmartLogo.vue.js +8 -0
- package/dist/components/SmartLogo.vue.js.map +1 -0
- package/dist/components/SmartLogo2.vue.js +74 -0
- package/dist/components/SmartLogo2.vue.js.map +1 -0
- package/dist/components/StatusSwitch/index.vue.d.ts +21 -0
- package/dist/components/StatusSwitch/index.vue.js +45 -0
- package/dist/components/StatusSwitch/index.vue.js.map +1 -0
- package/dist/components/StatusSwitch/index2.vue.js +5 -0
- package/dist/components/StatusSwitch/index2.vue.js.map +1 -0
- package/dist/components/TableZoomButton/index.vue.d.ts +13 -0
- package/dist/components/TableZoomButton/index.vue.js +42 -0
- package/dist/components/TableZoomButton/index.vue.js.map +1 -0
- package/dist/components/TableZoomButton/index2.vue.js +5 -0
- package/dist/components/TableZoomButton/index2.vue.js.map +1 -0
- package/dist/components/UserPicker/index.vue.d.ts +13 -0
- package/dist/components/UserPicker/index.vue.js +8 -0
- package/dist/components/UserPicker/index.vue.js.map +1 -0
- package/dist/components/UserPicker/index2.vue.js +214 -0
- package/dist/components/UserPicker/index2.vue.js.map +1 -0
- package/dist/components/UserSelect/index.vue.d.ts +9 -0
- package/dist/components/UserSelect/index.vue.js +32 -0
- package/dist/components/UserSelect/index.vue.js.map +1 -0
- package/dist/components/UserSelect/index2.vue.js +5 -0
- package/dist/components/UserSelect/index2.vue.js.map +1 -0
- package/dist/components/oauth/BrandIcon.vue.d.ts +12 -0
- package/dist/components/oauth/BrandIcon.vue.js +8 -0
- package/dist/components/oauth/BrandIcon.vue.js.map +1 -0
- package/dist/components/oauth/BrandIcon2.vue.js +95 -0
- package/dist/components/oauth/BrandIcon2.vue.js.map +1 -0
- package/dist/composables/authMenuRoute.d.ts +32 -0
- package/dist/composables/authMenuRoute.js +37 -0
- package/dist/composables/authMenuRoute.js.map +1 -0
- package/dist/composables/clearClientCache.d.ts +10 -0
- package/dist/composables/clearClientCache.js +17 -0
- package/dist/composables/clearClientCache.js.map +1 -0
- package/dist/composables/useAuthMenu.d.ts +3 -0
- package/dist/composables/useAuthMenu.js +61 -0
- package/dist/composables/useAuthMenu.js.map +1 -0
- package/dist/composables/useBatchDelete.d.ts +18 -0
- package/dist/composables/useBatchDelete.js +21 -0
- package/dist/composables/useBatchDelete.js.map +1 -0
- package/dist/composables/useCompactScreen.d.ts +12 -0
- package/dist/composables/useCompactScreen.js +17 -0
- package/dist/composables/useCompactScreen.js.map +1 -0
- package/dist/composables/useConfirm.d.ts +18 -0
- package/dist/composables/useConfirm.js +61 -0
- package/dist/composables/useConfirm.js.map +1 -0
- package/dist/composables/useFullscreenToggle.d.ts +11 -0
- package/dist/composables/useFullscreenToggle.js +64 -0
- package/dist/composables/useFullscreenToggle.js.map +1 -0
- package/dist/composables/useHeaderTools.d.ts +31 -0
- package/dist/composables/useHeaderTools.js +15 -0
- package/dist/composables/useHeaderTools.js.map +1 -0
- package/dist/composables/useLayoutMenu.d.ts +17 -0
- package/dist/composables/useLayoutMenu.js +93 -0
- package/dist/composables/useLayoutMenu.js.map +1 -0
- package/dist/composables/useMenuBadge.d.ts +11 -0
- package/dist/composables/useMenuBadge.js +17 -0
- package/dist/composables/useMenuBadge.js.map +1 -0
- package/dist/composables/useMenuFlat.d.ts +8 -0
- package/dist/composables/useMenuFlat.js +29 -0
- package/dist/composables/useMenuFlat.js.map +1 -0
- package/dist/composables/useModule.d.ts +16 -0
- package/dist/composables/useModule.js +44 -0
- package/dist/composables/useModule.js.map +1 -0
- package/dist/composables/useNoticeAction.d.ts +8 -0
- package/dist/composables/useNoticeAction.js +79 -0
- package/dist/composables/useNoticeAction.js.map +1 -0
- package/dist/composables/usePageTitle.d.ts +1 -0
- package/dist/composables/usePageTitle.js +20 -0
- package/dist/composables/usePageTitle.js.map +1 -0
- package/dist/composables/useRealtime.d.ts +31 -0
- package/dist/composables/useRealtime.js +59 -0
- package/dist/composables/useRealtime.js.map +1 -0
- package/dist/composables/useSite.d.ts +24 -0
- package/dist/composables/useSite.js +27 -0
- package/dist/composables/useSite.js.map +1 -0
- package/dist/composables/useTabTitle.d.ts +1 -0
- package/dist/composables/useTabTitle.js +10 -0
- package/dist/composables/useTabTitle.js.map +1 -0
- package/dist/composables/useTableRowSort.d.ts +20 -0
- package/dist/composables/useTableRowSort.js +59 -0
- package/dist/composables/useTableRowSort.js.map +1 -0
- package/dist/composables/useTableZoom.d.ts +5 -0
- package/dist/composables/useTableZoom.js +30 -0
- package/dist/composables/useTableZoom.js.map +1 -0
- package/dist/composables/useTheme.d.ts +13 -0
- package/dist/composables/useTheme.js +30 -0
- package/dist/composables/useTheme.js.map +1 -0
- package/dist/composables/useVisualViewportHeight.d.ts +3 -0
- package/dist/composables/useVisualViewportHeight.js +16 -0
- package/dist/composables/useVisualViewportHeight.js.map +1 -0
- package/dist/createSmartAdmin.d.ts +56 -0
- package/dist/createSmartAdmin.js +76 -0
- package/dist/createSmartAdmin.js.map +1 -0
- package/dist/directives/auth.d.ts +16 -0
- package/dist/directives/auth.js +19 -0
- package/dist/directives/auth.js.map +1 -0
- package/dist/env.d.ts +10 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.js +273 -0
- package/dist/index.js.map +1 -0
- package/dist/layouts/AppHeader.vue.d.ts +12 -0
- package/dist/layouts/AppHeader.vue.js +8 -0
- package/dist/layouts/AppHeader.vue.js.map +1 -0
- package/dist/layouts/AppHeader2.vue.js +352 -0
- package/dist/layouts/AppHeader2.vue.js.map +1 -0
- package/dist/layouts/LayoutModeCards.vue.d.ts +3 -0
- package/dist/layouts/LayoutModeCards.vue.js +8 -0
- package/dist/layouts/LayoutModeCards.vue.js.map +1 -0
- package/dist/layouts/LayoutModeCards2.vue.js +67 -0
- package/dist/layouts/LayoutModeCards2.vue.js.map +1 -0
- package/dist/layouts/NoticeBell.vue.d.ts +3 -0
- package/dist/layouts/NoticeBell.vue.js +8 -0
- package/dist/layouts/NoticeBell.vue.js.map +1 -0
- package/dist/layouts/NoticeBell2.vue.js +292 -0
- package/dist/layouts/NoticeBell2.vue.js.map +1 -0
- package/dist/layouts/PersonalLayout.vue.d.ts +3 -0
- package/dist/layouts/PersonalLayout.vue.js +8 -0
- package/dist/layouts/PersonalLayout.vue.js.map +1 -0
- package/dist/layouts/PersonalLayout2.vue.js +65 -0
- package/dist/layouts/PersonalLayout2.vue.js.map +1 -0
- package/dist/layouts/SettingRow.vue.d.ts +16 -0
- package/dist/layouts/SettingRow.vue.js +8 -0
- package/dist/layouts/SettingRow.vue.js.map +1 -0
- package/dist/layouts/SettingRow2.vue.js +23 -0
- package/dist/layouts/SettingRow2.vue.js.map +1 -0
- package/dist/layouts/SettingsDrawer.vue.d.ts +10 -0
- package/dist/layouts/SettingsDrawer.vue.js +8 -0
- package/dist/layouts/SettingsDrawer.vue.js.map +1 -0
- package/dist/layouts/SettingsDrawer2.vue.js +380 -0
- package/dist/layouts/SettingsDrawer2.vue.js.map +1 -0
- package/dist/layouts/TabsBar.vue.d.ts +3 -0
- package/dist/layouts/TabsBar.vue.js +8 -0
- package/dist/layouts/TabsBar.vue.js.map +1 -0
- package/dist/layouts/TabsBar2.vue.js +132 -0
- package/dist/layouts/TabsBar2.vue.js.map +1 -0
- package/dist/layouts/components/SideNav.vue.d.ts +15 -0
- package/dist/layouts/components/SideNav.vue.js +8 -0
- package/dist/layouts/components/SideNav.vue.js.map +1 -0
- package/dist/layouts/components/SideNav2.vue.js +49 -0
- package/dist/layouts/components/SideNav2.vue.js.map +1 -0
- package/dist/layouts/default.vue.d.ts +3 -0
- package/dist/layouts/default.vue.js +8 -0
- package/dist/layouts/default.vue.js.map +1 -0
- package/dist/layouts/default2.vue.js +213 -0
- package/dist/layouts/default2.vue.js.map +1 -0
- package/dist/lib/chunkReload.d.ts +9 -0
- package/dist/lib/chunkReload.js +24 -0
- package/dist/lib/chunkReload.js.map +1 -0
- package/dist/lib/icons.d.ts +2 -0
- package/dist/lib/icons.js +39 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/loadingBar.d.ts +7 -0
- package/dist/lib/loadingBar.js +18 -0
- package/dist/lib/loadingBar.js.map +1 -0
- package/dist/lib/markdown.d.ts +8 -0
- package/dist/lib/markdown.js +16 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/markdownLinks.d.ts +26 -0
- package/dist/lib/markdownLinks.js +21 -0
- package/dist/lib/markdownLinks.js.map +1 -0
- package/dist/lib/noticeActions.d.ts +13 -0
- package/dist/lib/noticeActions.js +16 -0
- package/dist/lib/noticeActions.js.map +1 -0
- package/dist/lib/runtime.d.ts +21 -0
- package/dist/lib/runtime.js +13 -0
- package/dist/lib/runtime.js.map +1 -0
- package/dist/locales/en-US.d.ts +1358 -0
- package/dist/locales/en-US.js +1362 -0
- package/dist/locales/en-US.js.map +1 -0
- package/dist/locales/index.d.ts +30 -0
- package/dist/locales/index.js +46 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/menuTitle.d.ts +8 -0
- package/dist/locales/menuTitle.js +19 -0
- package/dist/locales/menuTitle.js.map +1 -0
- package/dist/locales/zh-CN.d.ts +1358 -0
- package/dist/locales/zh-CN.js +1368 -0
- package/dist/locales/zh-CN.js.map +1 -0
- package/dist/router/bootFailure.d.ts +8 -0
- package/dist/router/bootFailure.js +11 -0
- package/dist/router/bootFailure.js.map +1 -0
- package/dist/router/detailRoutes.d.ts +2 -0
- package/dist/router/detailRoutes.js +19 -0
- package/dist/router/detailRoutes.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.js +58 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/namedPage.d.ts +13 -0
- package/dist/router/namedPage.js +12 -0
- package/dist/router/namedPage.js.map +1 -0
- package/dist/router/routes.d.ts +2 -0
- package/dist/router/routes.js +121 -0
- package/dist/router/routes.js.map +1 -0
- package/dist/router/viewRegistry.d.ts +18 -0
- package/dist/router/viewRegistry.js +26 -0
- package/dist/router/viewRegistry.js.map +1 -0
- package/dist/stores/app.d.ts +83 -0
- package/dist/stores/app.js +82 -0
- package/dist/stores/app.js.map +1 -0
- package/dist/stores/auth.d.ts +106 -0
- package/dist/stores/auth.js +59 -0
- package/dist/stores/auth.js.map +1 -0
- package/dist/stores/dict.d.ts +11 -0
- package/dist/stores/dict.js +36 -0
- package/dist/stores/dict.js.map +1 -0
- package/dist/stores/tabs.d.ts +53 -0
- package/dist/stores/tabs.js +88 -0
- package/dist/stores/tabs.js.map +1 -0
- package/dist/stores/user.d.ts +64 -0
- package/dist/stores/user.js +64 -0
- package/dist/stores/user.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/theme/accents.d.ts +2 -0
- package/dist/theme/accents.js +5 -0
- package/dist/theme/accents.js.map +1 -0
- package/dist/theme/mix.d.ts +26 -0
- package/dist/theme/mix.js +43 -0
- package/dist/theme/mix.js.map +1 -0
- package/dist/theme/naive-theme.d.ts +9 -0
- package/dist/theme/naive-theme.js +89 -0
- package/dist/theme/naive-theme.js.map +1 -0
- package/dist/types/api.d.ts +714 -0
- package/dist/types/api.js +15 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/menu.d.ts +67 -0
- package/dist/types/menu.js +26 -0
- package/dist/types/menu.js.map +1 -0
- package/dist/utils/chunkUpload.d.ts +6 -0
- package/dist/utils/chunkUpload.js +35 -0
- package/dist/utils/chunkUpload.js.map +1 -0
- package/dist/utils/download.d.ts +8 -0
- package/dist/utils/download.js +8 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/error.d.ts +14 -0
- package/dist/utils/error.js +50 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/format.d.ts +20 -0
- package/dist/utils/format.js +19 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/importDup.d.ts +17 -0
- package/dist/utils/importDup.js +18 -0
- package/dist/utils/importDup.js.map +1 -0
- package/dist/utils/oauthBrand.d.ts +100 -0
- package/dist/utils/oauthBrand.js +97 -0
- package/dist/utils/oauthBrand.js.map +1 -0
- package/dist/utils/tree.d.ts +33 -0
- package/dist/utils/tree.js +47 -0
- package/dist/utils/tree.js.map +1 -0
- package/dist/utils/ua.d.ts +7 -0
- package/dist/utils/ua.js +33 -0
- package/dist/utils/ua.js.map +1 -0
- package/dist/utils/url.d.ts +16 -0
- package/dist/utils/url.js +13 -0
- package/dist/utils/url.js.map +1 -0
- package/dist/views/dashboard/biz.vue.d.ts +3 -0
- package/dist/views/dashboard/biz.vue.js +8 -0
- package/dist/views/dashboard/biz.vue.js.map +1 -0
- package/dist/views/dashboard/biz2.vue.js +136 -0
- package/dist/views/dashboard/biz2.vue.js.map +1 -0
- package/dist/views/dashboard/workbench.vue.d.ts +3 -0
- package/dist/views/dashboard/workbench.vue.js +8 -0
- package/dist/views/dashboard/workbench.vue.js.map +1 -0
- package/dist/views/dashboard/workbench2.vue.js +195 -0
- package/dist/views/dashboard/workbench2.vue.js.map +1 -0
- package/dist/views/embed/iframe.vue.d.ts +3 -0
- package/dist/views/embed/iframe.vue.js +8 -0
- package/dist/views/embed/iframe.vue.js.map +1 -0
- package/dist/views/embed/iframe2.vue.js +21 -0
- package/dist/views/embed/iframe2.vue.js.map +1 -0
- package/dist/views/error/404.vue.d.ts +3 -0
- package/dist/views/error/404.vue.js +8 -0
- package/dist/views/error/404.vue.js.map +1 -0
- package/dist/views/error/4042.vue.js +31 -0
- package/dist/views/error/4042.vue.js.map +1 -0
- package/dist/views/error/BootError.vue.d.ts +3 -0
- package/dist/views/error/BootError.vue.js +8 -0
- package/dist/views/error/BootError.vue.js.map +1 -0
- package/dist/views/error/BootError2.vue.js +57 -0
- package/dist/views/error/BootError2.vue.js.map +1 -0
- package/dist/views/error/MissingRoute.vue.d.ts +3 -0
- package/dist/views/error/MissingRoute.vue.js +8 -0
- package/dist/views/error/MissingRoute.vue.js.map +1 -0
- package/dist/views/error/MissingRoute2.vue.js +23 -0
- package/dist/views/error/MissingRoute2.vue.js.map +1 -0
- package/dist/views/login/LoginForm.vue.d.ts +12 -0
- package/dist/views/login/LoginForm.vue.js +8 -0
- package/dist/views/login/LoginForm.vue.js.map +1 -0
- package/dist/views/login/LoginForm2.vue.js +642 -0
- package/dist/views/login/LoginForm2.vue.js.map +1 -0
- package/dist/views/login/index.vue.d.ts +3 -0
- package/dist/views/login/index.vue.js +8 -0
- package/dist/views/login/index.vue.js.map +1 -0
- package/dist/views/login/index2.vue.js +79 -0
- package/dist/views/login/index2.vue.js.map +1 -0
- package/dist/views/login/skins/AuroraGlass.vue.d.ts +3 -0
- package/dist/views/login/skins/AuroraGlass.vue.js +8 -0
- package/dist/views/login/skins/AuroraGlass.vue.js.map +1 -0
- package/dist/views/login/skins/AuroraGlass2.vue.js +80 -0
- package/dist/views/login/skins/AuroraGlass2.vue.js.map +1 -0
- package/dist/views/login/skins/SplitPanel.vue.d.ts +3 -0
- package/dist/views/login/skins/SplitPanel.vue.js +8 -0
- package/dist/views/login/skins/SplitPanel.vue.js.map +1 -0
- package/dist/views/login/skins/SplitPanel2.vue.js +85 -0
- package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -0
- package/dist/views/login/skins/Spotlight.vue.d.ts +3 -0
- package/dist/views/login/skins/Spotlight.vue.js +8 -0
- package/dist/views/login/skins/Spotlight.vue.js.map +1 -0
- package/dist/views/login/skins/Spotlight2.vue.js +36 -0
- package/dist/views/login/skins/Spotlight2.vue.js.map +1 -0
- package/dist/views/login/skins.d.ts +8 -0
- package/dist/views/login/skins.js +13 -0
- package/dist/views/login/skins.js.map +1 -0
- package/dist/views/mfa/bindComplete.d.ts +7 -0
- package/dist/views/mfa/bindComplete.js +8 -0
- package/dist/views/mfa/bindComplete.js.map +1 -0
- package/dist/views/mfa/index.vue.d.ts +3 -0
- package/dist/views/mfa/index.vue.js +8 -0
- package/dist/views/mfa/index.vue.js.map +1 -0
- package/dist/views/mfa/index2.vue.js +425 -0
- package/dist/views/mfa/index2.vue.js.map +1 -0
- package/dist/views/module/index.vue.d.ts +3 -0
- package/dist/views/module/index.vue.js +8 -0
- package/dist/views/module/index.vue.js.map +1 -0
- package/dist/views/module/index2.vue.js +142 -0
- package/dist/views/module/index2.vue.js.map +1 -0
- package/dist/views/oauth/callback.vue.d.ts +3 -0
- package/dist/views/oauth/callback.vue.js +8 -0
- package/dist/views/oauth/callback.vue.js.map +1 -0
- package/dist/views/oauth/callback2.vue.js +86 -0
- package/dist/views/oauth/callback2.vue.js.map +1 -0
- package/dist/views/personal/bindings.vue.d.ts +3 -0
- package/dist/views/personal/bindings.vue.js +8 -0
- package/dist/views/personal/bindings.vue.js.map +1 -0
- package/dist/views/personal/bindings2.vue.js +220 -0
- package/dist/views/personal/bindings2.vue.js.map +1 -0
- package/dist/views/personal/notice.vue.d.ts +3 -0
- package/dist/views/personal/notice.vue.js +5 -0
- package/dist/views/personal/notice.vue.js.map +1 -0
- package/dist/views/personal/notice2.vue.js +163 -0
- package/dist/views/personal/notice2.vue.js.map +1 -0
- package/dist/views/personal/password.vue.d.ts +3 -0
- package/dist/views/personal/password.vue.js +5 -0
- package/dist/views/personal/password.vue.js.map +1 -0
- package/dist/views/personal/password2.vue.js +147 -0
- package/dist/views/personal/password2.vue.js.map +1 -0
- package/dist/views/personal/profile.vue.d.ts +3 -0
- package/dist/views/personal/profile.vue.js +8 -0
- package/dist/views/personal/profile.vue.js.map +1 -0
- package/dist/views/personal/profile2.vue.js +264 -0
- package/dist/views/personal/profile2.vue.js.map +1 -0
- package/dist/views/personal/security.vue.d.ts +3 -0
- package/dist/views/personal/security.vue.js +8 -0
- package/dist/views/personal/security.vue.js.map +1 -0
- package/dist/views/personal/security2.vue.js +82 -0
- package/dist/views/personal/security2.vue.js.map +1 -0
- package/dist/views/personal/sessions.vue.d.ts +3 -0
- package/dist/views/personal/sessions.vue.js +8 -0
- package/dist/views/personal/sessions.vue.js.map +1 -0
- package/dist/views/personal/sessions2.vue.js +101 -0
- package/dist/views/personal/sessions2.vue.js.map +1 -0
- package/dist/views/system/cache/index.vue.d.ts +3 -0
- package/dist/views/system/cache/index.vue.js +8 -0
- package/dist/views/system/cache/index.vue.js.map +1 -0
- package/dist/views/system/cache/index2.vue.js +113 -0
- package/dist/views/system/cache/index2.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.d.ts +16 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal2.vue.js +177 -0
- package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -0
- package/dist/views/system/config/components/ExternalAuthConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js +8 -0
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +218 -0
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/GroupExtraConfig.vue.d.ts +9 -0
- package/dist/views/system/config/components/GroupExtraConfig.vue.js +8 -0
- package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js +108 -0
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/HighSensConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/HighSensConfig.vue.js +5 -0
- package/dist/views/system/config/components/HighSensConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/HighSensConfig2.vue.js +134 -0
- package/dist/views/system/config/components/HighSensConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/JobConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/JobConfig.vue.js +5 -0
- package/dist/views/system/config/components/JobConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/JobConfig2.vue.js +116 -0
- package/dist/views/system/config/components/JobConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/OtherConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/OtherConfig.vue.js +5 -0
- package/dist/views/system/config/components/OtherConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/OtherConfig2.vue.js +121 -0
- package/dist/views/system/config/components/OtherConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/SecurityConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/SecurityConfig.vue.js +8 -0
- package/dist/views/system/config/components/SecurityConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/SecurityConfig2.vue.js +456 -0
- package/dist/views/system/config/components/SecurityConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/SysBaseConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/SysBaseConfig.vue.js +5 -0
- package/dist/views/system/config/components/SysBaseConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/SysBaseConfig2.vue.js +107 -0
- package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/UploadConfig.vue.js +5 -0
- package/dist/views/system/config/components/UploadConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadConfig2.vue.js +135 -0
- package/dist/views/system/config/components/UploadConfig2.vue.js.map +1 -0
- package/dist/views/system/config/groups.d.ts +9 -0
- package/dist/views/system/config/groups.js +18 -0
- package/dist/views/system/config/groups.js.map +1 -0
- package/dist/views/system/config/index.vue.d.ts +3 -0
- package/dist/views/system/config/index.vue.js +5 -0
- package/dist/views/system/config/index.vue.js.map +1 -0
- package/dist/views/system/config/index2.vue.js +127 -0
- package/dist/views/system/config/index2.vue.js.map +1 -0
- package/dist/views/system/dict/index.vue.d.ts +3 -0
- package/dist/views/system/dict/index.vue.js +8 -0
- package/dist/views/system/dict/index.vue.js.map +1 -0
- package/dist/views/system/dict/index2.vue.js +560 -0
- package/dist/views/system/dict/index2.vue.js.map +1 -0
- package/dist/views/system/file/index.vue.d.ts +3 -0
- package/dist/views/system/file/index.vue.js +5 -0
- package/dist/views/system/file/index.vue.js.map +1 -0
- package/dist/views/system/file/index2.vue.js +186 -0
- package/dist/views/system/file/index2.vue.js.map +1 -0
- package/dist/views/system/job/index.vue.d.ts +3 -0
- package/dist/views/system/job/index.vue.js +8 -0
- package/dist/views/system/job/index.vue.js.map +1 -0
- package/dist/views/system/job/index2.vue.js +1167 -0
- package/dist/views/system/job/index2.vue.js.map +1 -0
- package/dist/views/system/job-log/index.vue.d.ts +3 -0
- package/dist/views/system/job-log/index.vue.js +8 -0
- package/dist/views/system/job-log/index.vue.js.map +1 -0
- package/dist/views/system/job-log/index2.vue.js +411 -0
- package/dist/views/system/job-log/index2.vue.js.map +1 -0
- package/dist/views/system/job-monitor/index.vue.d.ts +3 -0
- package/dist/views/system/job-monitor/index.vue.js +8 -0
- package/dist/views/system/job-monitor/index.vue.js.map +1 -0
- package/dist/views/system/job-monitor/index2.vue.js +253 -0
- package/dist/views/system/job-monitor/index2.vue.js.map +1 -0
- package/dist/views/system/log/exception/index.vue.d.ts +3 -0
- package/dist/views/system/log/exception/index.vue.js +8 -0
- package/dist/views/system/log/exception/index.vue.js.map +1 -0
- package/dist/views/system/log/exception/index2.vue.js +216 -0
- package/dist/views/system/log/exception/index2.vue.js.map +1 -0
- package/dist/views/system/log/login/index.vue.d.ts +3 -0
- package/dist/views/system/log/login/index.vue.js +5 -0
- package/dist/views/system/log/login/index.vue.js.map +1 -0
- package/dist/views/system/log/login/index2.vue.js +113 -0
- package/dist/views/system/log/login/index2.vue.js.map +1 -0
- package/dist/views/system/log/op/index.vue.d.ts +3 -0
- package/dist/views/system/log/op/index.vue.js +8 -0
- package/dist/views/system/log/op/index.vue.js.map +1 -0
- package/dist/views/system/log/op/index2.vue.js +332 -0
- package/dist/views/system/log/op/index2.vue.js.map +1 -0
- package/dist/views/system/menu/components/ButtonManager.vue.d.ts +21 -0
- package/dist/views/system/menu/components/ButtonManager.vue.js +8 -0
- package/dist/views/system/menu/components/ButtonManager.vue.js.map +1 -0
- package/dist/views/system/menu/components/ButtonManager2.vue.js +498 -0
- package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -0
- package/dist/views/system/menu/components/MenuFormModal.vue.d.ts +22 -0
- package/dist/views/system/menu/components/MenuFormModal.vue.js +8 -0
- package/dist/views/system/menu/components/MenuFormModal.vue.js.map +1 -0
- package/dist/views/system/menu/components/MenuFormModal2.vue.js +259 -0
- package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -0
- package/dist/views/system/menu/index.vue.d.ts +3 -0
- package/dist/views/system/menu/index.vue.js +8 -0
- package/dist/views/system/menu/index.vue.js.map +1 -0
- package/dist/views/system/menu/index2.vue.js +391 -0
- package/dist/views/system/menu/index2.vue.js.map +1 -0
- package/dist/views/system/module/index.vue.d.ts +3 -0
- package/dist/views/system/module/index.vue.js +8 -0
- package/dist/views/system/module/index.vue.js.map +1 -0
- package/dist/views/system/module/index2.vue.js +344 -0
- package/dist/views/system/module/index2.vue.js.map +1 -0
- package/dist/views/system/monitor/index.vue.d.ts +3 -0
- package/dist/views/system/monitor/index.vue.js +8 -0
- package/dist/views/system/monitor/index.vue.js.map +1 -0
- package/dist/views/system/monitor/index2.vue.js +184 -0
- package/dist/views/system/monitor/index2.vue.js.map +1 -0
- package/dist/views/system/notice/index.vue.d.ts +3 -0
- package/dist/views/system/notice/index.vue.js +8 -0
- package/dist/views/system/notice/index.vue.js.map +1 -0
- package/dist/views/system/notice/index2.vue.js +401 -0
- package/dist/views/system/notice/index2.vue.js.map +1 -0
- package/dist/views/system/org/index.vue.d.ts +3 -0
- package/dist/views/system/org/index.vue.js +8 -0
- package/dist/views/system/org/index.vue.js.map +1 -0
- package/dist/views/system/org/index2.vue.js +397 -0
- package/dist/views/system/org/index2.vue.js.map +1 -0
- package/dist/views/system/position/index.vue.d.ts +3 -0
- package/dist/views/system/position/index.vue.js +5 -0
- package/dist/views/system/position/index.vue.js.map +1 -0
- package/dist/views/system/position/index2.vue.js +211 -0
- package/dist/views/system/position/index2.vue.js.map +1 -0
- package/dist/views/system/recycle/index.vue.d.ts +3 -0
- package/dist/views/system/recycle/index.vue.js +8 -0
- package/dist/views/system/recycle/index.vue.js.map +1 -0
- package/dist/views/system/recycle/index2.vue.js +121 -0
- package/dist/views/system/recycle/index2.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +18 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.js +8 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuTable2.vue.js +212 -0
- package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -0
- package/dist/views/system/role/components/grantMenuGroups.d.ts +31 -0
- package/dist/views/system/role/components/grantMenuGroups.js +76 -0
- package/dist/views/system/role/components/grantMenuGroups.js.map +1 -0
- package/dist/views/system/role/index.vue.d.ts +3 -0
- package/dist/views/system/role/index.vue.js +5 -0
- package/dist/views/system/role/index.vue.js.map +1 -0
- package/dist/views/system/role/index2.vue.js +476 -0
- package/dist/views/system/role/index2.vue.js.map +1 -0
- package/dist/views/system/session/index.vue.d.ts +3 -0
- package/dist/views/system/session/index.vue.js +5 -0
- package/dist/views/system/session/index.vue.js.map +1 -0
- package/dist/views/system/session/index2.vue.js +80 -0
- package/dist/views/system/session/index2.vue.js.map +1 -0
- package/dist/views/system/user/components/ResetPasswordModal.vue.d.ts +10 -0
- package/dist/views/system/user/components/ResetPasswordModal.vue.js +8 -0
- package/dist/views/system/user/components/ResetPasswordModal.vue.js.map +1 -0
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js +111 -0
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -0
- package/dist/views/system/user/components/UserFormModal.vue.d.ts +30 -0
- package/dist/views/system/user/components/UserFormModal.vue.js +8 -0
- package/dist/views/system/user/components/UserFormModal.vue.js.map +1 -0
- package/dist/views/system/user/components/UserFormModal2.vue.js +415 -0
- package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -0
- package/dist/views/system/user/index.vue.d.ts +3 -0
- package/dist/views/system/user/index.vue.js +8 -0
- package/dist/views/system/user/index.vue.js.map +1 -0
- package/dist/views/system/user/index2.vue.js +427 -0
- package/dist/views/system/user/index2.vue.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrantMenuTable2.vue.js","sources":["../../../../../src/views/system/role/components/GrantMenuTable.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 角色授权表格:目录 | 页面 | 按钮 三列。分组逻辑在 grantMenuGroups.ts(纯函数,有单测),这里只管渲染与勾选联动。\n// 直接挂在目录下的按钮(无页面权限项,如只给移动端 / 第三方调的接口)渲染成该目录组里的一行,\n// 页面列显示「接口权限(无页面)」;勾选提交时只提交按钮 id,不需要为它们建假页面。\nimport { computed, reactive, ref, watch } from 'vue'\nimport { NButton, NCheckbox, NInput, NSelect, NTag } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport AppIcon from '#/components/AppIcon.vue'\nimport type { MenuTreeNode } from '#/types/menu'\nimport type { ModuleRow } from '#/types/api'\nimport {\n buildGroups,\n collectChecked as collect,\n recomputeGroup,\n type CatalogGroup,\n type MenuRow,\n} from './grantMenuGroups'\n\nconst UNASSIGNED = 0\n\nconst props = defineProps<{\n tree: MenuTreeNode[]\n granted: number[]\n modules: ModuleRow[]\n defaultModuleId: number\n}>()\n\nconst emit = defineEmits<{ (e: 'update:checked', ids: number[]): void }>()\n\nconst { t } = useI18n()\nconst search = ref('')\nconst moduleId = ref(props.defaultModuleId)\nwatch(\n () => props.defaultModuleId,\n v => {\n moduleId.value = v\n },\n)\n\nconst moduleOptions = computed(() => [\n ...props.modules.map(m => ({ label: m.title, value: m.id })),\n { label: t('menu.moduleUnassigned'), value: UNASSIGNED },\n])\n\nconst allGroups = reactive<CatalogGroup[]>([])\n\nwatch(\n () => [props.tree, props.granted] as const,\n ([tree, granted]) => {\n const groups = buildGroups(tree, new Set(granted), t('role.apiOnlyRow'))\n allGroups.splice(0, allGroups.length, ...groups)\n },\n { immediate: true },\n)\n\nconst filteredByModule = computed(() =>\n allGroups.filter(g => {\n const node = props.tree.find(n => n.id === g.id)\n return moduleId.value === UNASSIGNED\n ? node?.moduleId == null\n : node?.moduleId === moduleId.value\n }),\n)\n\nconst filteredGroups = computed(() => {\n const q = search.value.trim().toLowerCase()\n if (!q) return filteredByModule.value\n return filteredByModule.value\n .map(g => {\n if (g.title.toLowerCase().includes(q)) return g\n const menus = g.menus.filter(\n m =>\n m.title.toLowerCase().includes(q) ||\n m.buttons.some(b => b.title.toLowerCase().includes(q)),\n )\n return menus.length ? { ...g, menus } : null\n })\n .filter(Boolean) as CatalogGroup[]\n})\n\nfunction toggleCatalog(group: CatalogGroup, val: boolean) {\n group.checked = val\n group.indeterminate = false\n group.menus.forEach(m => {\n m.checked = val\n m.buttons.forEach(b => {\n b.checked = val\n })\n })\n emitChecked()\n}\n\nfunction toggleMenu(group: CatalogGroup, menu: MenuRow, val: boolean) {\n menu.checked = val\n menu.buttons.forEach(b => {\n b.checked = val\n })\n recomputeGroup(group)\n emitChecked()\n}\n\nfunction toggleButton(group: CatalogGroup, menu: MenuRow) {\n const allChecked = menu.buttons.length > 0 && menu.buttons.every(b => b.checked)\n // 页面行:按钮全勾时顺手把页面勾上;anchor 行自身不是节点,勾选态就等于\"按钮是否全勾\"\n if (allChecked || menu.anchor) menu.checked = allChecked\n recomputeGroup(group)\n emitChecked()\n}\n\nfunction collectChecked(): number[] {\n return collect(allGroups)\n}\n\nfunction emitChecked() {\n emit('update:checked', collectChecked())\n}\n\n// ── 折叠/展开 ──\nconst collapsed = reactive(new Set<number>())\nconst allCollapsed = computed(\n () => filteredGroups.value.length > 0 && filteredGroups.value.every(g => collapsed.has(g.id)),\n)\n\nfunction toggleCollapse(id: number) {\n if (collapsed.has(id)) collapsed.delete(id)\n else collapsed.add(id)\n}\nfunction toggleCollapseAll() {\n if (allCollapsed.value) {\n collapsed.clear()\n } else {\n for (const g of filteredGroups.value) collapsed.add(g.id)\n }\n}\n\ndefineExpose({ collectChecked })\n</script>\n\n<template>\n <div class=\"grant-menu-table\">\n <div class=\"grant-toolbar\">\n <n-select\n v-model:value=\"moduleId\"\n :options=\"moduleOptions\"\n :placeholder=\"t('menu.module')\"\n size=\"small\"\n style=\"width: 180px\"\n />\n <n-input\n v-model:value=\"search\"\n :placeholder=\"t('common.search')\"\n clearable\n size=\"small\"\n style=\"flex: 1\"\n />\n <n-button size=\"small\" quaternary @click=\"toggleCollapseAll\">\n <template #icon>\n <AppIcon\n :icon=\"allCollapsed ? 'ph:arrows-out-line-vertical' : 'ph:arrows-in-line-vertical'\"\n :size=\"16\"\n />\n </template>\n {{ allCollapsed ? t('common.expandAll') : t('common.collapseAll') }}\n </n-button>\n </div>\n <div class=\"grant-grid\">\n <div class=\"grant-header\">\n <div class=\"col-catalog\">{{ t('role.catalog') }}</div>\n <div class=\"col-menu\">{{ t('role.menuCol') }}</div>\n <div class=\"col-buttons\">{{ t('role.buttonsCol') }}</div>\n </div>\n <template v-for=\"group in filteredGroups\" :key=\"group.id\">\n <div class=\"grant-group\" :style=\"{ '--rows': group.menus.length }\">\n <div class=\"col-catalog\" @click=\"toggleCollapse(group.id)\">\n <span class=\"collapse-arrow\" :class=\"{ 'is-collapsed': collapsed.has(group.id) }\">\n ▾\n </span>\n <n-checkbox\n :checked=\"group.checked\"\n :indeterminate=\"group.indeterminate\"\n @click.stop\n @update:checked=\"toggleCatalog(group, $event)\"\n >\n {{ group.title }}\n </n-checkbox>\n </div>\n <div v-show=\"!collapsed.has(group.id)\" class=\"group-rows\">\n <div\n v-for=\"menu in group.menus\"\n :key=\"menu.anchor ? `anchor-${menu.id}` : menu.id\"\n class=\"grant-row\"\n >\n <div class=\"col-menu\">\n <n-checkbox\n :checked=\"menu.checked\"\n @update:checked=\"toggleMenu(group, menu, $event)\"\n >\n <n-tag v-if=\"menu.anchor\" size=\"tiny\" :bordered=\"false\" class=\"anchor-tag\">\n {{ menu.title }}\n </n-tag>\n <template v-else>{{ menu.title }}</template>\n </n-checkbox>\n </div>\n <div class=\"col-buttons\">\n <n-checkbox\n v-for=\"btn in menu.buttons\"\n :key=\"btn.id\"\n :checked=\"btn.checked\"\n @update:checked=\"\n (v: boolean) => {\n btn.checked = v\n toggleButton(group, menu)\n }\n \"\n >\n {{ btn.title }}\n </n-checkbox>\n <span v-if=\"!menu.buttons.length\" class=\"no-buttons\">—</span>\n </div>\n </div>\n </div>\n </div>\n </template>\n <div v-if=\"filteredGroups.length === 0\" class=\"grant-empty\">—</div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.grant-menu-table {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n.grant-toolbar {\n display: flex;\n gap: 8px;\n}\n.grant-grid {\n border: 1px solid var(--n-border-color, #e0e0e6);\n border-radius: 4px;\n font-size: 13px;\n overflow: hidden;\n}\n.grant-header {\n display: flex;\n background: var(--n-th-color, #fafafc);\n font-weight: 600;\n font-size: 12px;\n border-bottom: 1px solid var(--n-border-color, #e0e0e6);\n}\n.grant-header > div {\n padding: 8px 12px;\n}\n.grant-group {\n display: flex;\n border-bottom: 1px solid var(--n-border-color, #e0e0e6);\n}\n.grant-group:last-child {\n border-bottom: none;\n}\n.grant-group > .col-catalog {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px 12px;\n border-right: 1px solid var(--n-border-color, #e0e0e6);\n cursor: pointer;\n user-select: none;\n}\n.collapse-arrow {\n display: inline-block;\n font-size: 10px;\n transition: transform 0.2s;\n color: var(--n-text-color-disabled, #999);\n}\n.collapse-arrow.is-collapsed {\n transform: rotate(-90deg);\n}\n.group-rows {\n flex: 1;\n min-width: 0;\n}\n.grant-row {\n display: flex;\n border-bottom: 1px solid var(--n-border-color, #e0e0e6);\n}\n.grant-row:last-child {\n border-bottom: none;\n}\n.col-catalog {\n width: 130px;\n flex-shrink: 0;\n}\n.col-menu {\n width: 140px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n padding: 6px 12px;\n border-right: 1px solid var(--n-border-color, #e0e0e6);\n}\n.anchor-tag {\n font-size: 12px;\n}\n.col-buttons {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px 12px;\n padding: 6px 12px;\n min-width: 0;\n}\n.no-buttons {\n color: var(--n-text-color-disabled, #c0c0c0);\n}\n.grant-empty {\n text-align: center;\n padding: 24px;\n color: var(--n-text-color-disabled, #c0c0c0);\n}\n</style>\n"],"names":["UNASSIGNED","props","__props","emit","__emit","t","useI18n","search","ref","moduleId","watch","v","moduleOptions","computed","m","allGroups","reactive","tree","granted","groups","buildGroups","filteredByModule","g","node","n","filteredGroups","q","menus","b","toggleCatalog","group","val","emitChecked","toggleMenu","menu","recomputeGroup","toggleButton","allChecked","collectChecked","collect","collapsed","allCollapsed","toggleCollapse","id","toggleCollapseAll","__expose","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createVNode","_unref","NSelect","$event","NInput","NButton","AppIcon","_createTextVNode","_toDisplayString","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_Fragment","_renderList","_normalizeStyle","_normalizeClass","NCheckbox","_withDirectives","_hoisted_9","_hoisted_10","_createBlock","NTag","_hoisted_11","btn","_hoisted_12","_vShow","_hoisted_13"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { MenuTreeNode } from '../../../../types/menu';
|
|
2
|
+
export interface ButtonItem {
|
|
3
|
+
id: number;
|
|
4
|
+
title: string;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface MenuRow {
|
|
8
|
+
id: number;
|
|
9
|
+
title: string;
|
|
10
|
+
checked: boolean;
|
|
11
|
+
buttons: ButtonItem[];
|
|
12
|
+
/** 无页面权限项行:承载目录直属按钮。id 是所属目录的 id,只作 key,不进 collectChecked。 */
|
|
13
|
+
anchor?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface CatalogGroup {
|
|
16
|
+
id: number;
|
|
17
|
+
title: string;
|
|
18
|
+
checked: boolean;
|
|
19
|
+
indeterminate: boolean;
|
|
20
|
+
menus: MenuRow[];
|
|
21
|
+
/** 根级直挂按钮的合成分组(id=0),自身不是可授权节点,不进 collectChecked。 */
|
|
22
|
+
synthetic?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function recomputeGroup(group: CatalogGroup): void;
|
|
25
|
+
/**
|
|
26
|
+
* 顶层节点 → 分组。顶级页面(如工作台)自成一组;顶级目录一组;根级直挂按钮并进一个合成组。
|
|
27
|
+
* @param anchorTitle 无页面权限项行的显示文案(i18n 由调用方给)
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildGroups(tree: MenuTreeNode[], grantedSet: Set<number>, anchorTitle: string): CatalogGroup[];
|
|
30
|
+
/** 勾选态 → 要提交的菜单 id:目录(全勾或半勾)、页面、按钮;anchor 行与合成组自身不算节点。 */
|
|
31
|
+
export declare function collectChecked(groups: CatalogGroup[]): number[];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { MenuType as u } from "../../../../types/menu.js";
|
|
2
|
+
function h(n, e) {
|
|
3
|
+
return n.filter((t) => t.type === u.Button).map((t) => ({ id: t.id, title: t.title, checked: e.has(t.id) }));
|
|
4
|
+
}
|
|
5
|
+
function r(n, e, t = "") {
|
|
6
|
+
return {
|
|
7
|
+
id: n.id,
|
|
8
|
+
title: t + n.title,
|
|
9
|
+
checked: e.has(n.id),
|
|
10
|
+
buttons: h(n.children, e)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function l(n, e, t, c = "") {
|
|
14
|
+
return {
|
|
15
|
+
id: n,
|
|
16
|
+
title: c + t,
|
|
17
|
+
checked: e.length > 0 && e.every((i) => i.checked),
|
|
18
|
+
buttons: e,
|
|
19
|
+
anchor: !0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function p(n, e, t, c = "") {
|
|
23
|
+
const i = [], o = h(n.children, e);
|
|
24
|
+
o.length && i.push(l(n.id, o, t, c));
|
|
25
|
+
for (const s of n.children)
|
|
26
|
+
s.type === u.Menu ? i.push(r(s, e, c)) : s.type === u.Catalog && i.push(...p(s, e, t, `${c}${s.title} / `));
|
|
27
|
+
return i;
|
|
28
|
+
}
|
|
29
|
+
function f(n) {
|
|
30
|
+
const e = n.menus.flatMap((c) => c.anchor ? c.buttons : [c, ...c.buttons]), t = e.filter((c) => c.checked).length;
|
|
31
|
+
n.checked = t > 0 && t === e.length, n.indeterminate = t > 0 && t < e.length;
|
|
32
|
+
}
|
|
33
|
+
function a(n, e, t) {
|
|
34
|
+
const c = [];
|
|
35
|
+
for (const o of n) {
|
|
36
|
+
if (o.type === u.Button) continue;
|
|
37
|
+
const s = o.type === u.Menu ? [r(o, e)] : p(o, e, t), d = {
|
|
38
|
+
id: o.id,
|
|
39
|
+
title: o.title,
|
|
40
|
+
checked: e.has(o.id),
|
|
41
|
+
indeterminate: !1,
|
|
42
|
+
menus: s
|
|
43
|
+
};
|
|
44
|
+
f(d), c.push(d);
|
|
45
|
+
}
|
|
46
|
+
const i = h(n, e);
|
|
47
|
+
if (i.length) {
|
|
48
|
+
const o = {
|
|
49
|
+
id: 0,
|
|
50
|
+
title: t,
|
|
51
|
+
checked: !1,
|
|
52
|
+
indeterminate: !1,
|
|
53
|
+
menus: [l(0, i, t)],
|
|
54
|
+
synthetic: !0
|
|
55
|
+
};
|
|
56
|
+
f(o), c.push(o);
|
|
57
|
+
}
|
|
58
|
+
return c;
|
|
59
|
+
}
|
|
60
|
+
function y(n) {
|
|
61
|
+
const e = [];
|
|
62
|
+
for (const t of n) {
|
|
63
|
+
!t.synthetic && (t.checked || t.indeterminate) && e.push(t.id);
|
|
64
|
+
for (const c of t.menus) {
|
|
65
|
+
!c.anchor && c.checked && e.push(c.id);
|
|
66
|
+
for (const i of c.buttons) i.checked && e.push(i.id);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return e;
|
|
70
|
+
}
|
|
71
|
+
export {
|
|
72
|
+
a as buildGroups,
|
|
73
|
+
y as collectChecked,
|
|
74
|
+
f as recomputeGroup
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=grantMenuGroups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grantMenuGroups.js","sources":["../../../../../src/views/system/role/components/grantMenuGroups.ts"],"sourcesContent":["// 角色授权表格的分组逻辑(纯函数,GrantMenuTable.vue 只管渲染与勾选联动)。\n// 三列:目录 | 页面 | 按钮。按钮正常挂在页面下;直接挂在目录下的按钮是\"无页面权限项\"\n//(只给移动端 / 第三方调的接口,没有对应页面),渲染成该目录组里的一行 anchor 行,否则它们勾不到。\nimport { MenuType, type MenuTreeNode } from '#/types/menu'\n\nexport interface ButtonItem {\n id: number\n title: string\n checked: boolean\n}\nexport interface MenuRow {\n id: number\n title: string\n checked: boolean\n buttons: ButtonItem[]\n /** 无页面权限项行:承载目录直属按钮。id 是所属目录的 id,只作 key,不进 collectChecked。 */\n anchor?: boolean\n}\nexport interface CatalogGroup {\n id: number\n title: string\n checked: boolean\n indeterminate: boolean\n menus: MenuRow[]\n /** 根级直挂按钮的合成分组(id=0),自身不是可授权节点,不进 collectChecked。 */\n synthetic?: boolean\n}\n\nfunction toButtons(nodes: MenuTreeNode[], grantedSet: Set<number>): ButtonItem[] {\n return nodes\n .filter(b => b.type === MenuType.Button)\n .map(b => ({ id: b.id, title: b.title, checked: grantedSet.has(b.id) }))\n}\n\nfunction toMenuRow(m: MenuTreeNode, grantedSet: Set<number>, prefix = ''): MenuRow {\n return {\n id: m.id,\n title: prefix + m.title,\n checked: grantedSet.has(m.id),\n buttons: toButtons(m.children, grantedSet),\n }\n}\n\nfunction anchorRow(\n ownerId: number,\n buttons: ButtonItem[],\n anchorTitle: string,\n prefix = '',\n): MenuRow {\n return {\n id: ownerId,\n title: prefix + anchorTitle,\n checked: buttons.length > 0 && buttons.every(b => b.checked),\n buttons,\n anchor: true,\n }\n}\n\n/**\n * 一个目录的全部行:直属按钮 → anchor 行(有才出);直属页面 → 各一行;嵌套目录 → 递归,标题带上父目录前缀。\n */\nfunction catalogRows(\n node: MenuTreeNode,\n grantedSet: Set<number>,\n anchorTitle: string,\n prefix = '',\n): MenuRow[] {\n const rows: MenuRow[] = []\n const buttons = toButtons(node.children, grantedSet)\n if (buttons.length) rows.push(anchorRow(node.id, buttons, anchorTitle, prefix))\n for (const child of node.children) {\n if (child.type === MenuType.Menu) rows.push(toMenuRow(child, grantedSet, prefix))\n else if (child.type === MenuType.Catalog)\n rows.push(...catalogRows(child, grantedSet, anchorTitle, `${prefix}${child.title} / `))\n }\n return rows\n}\n\nexport function recomputeGroup(group: CatalogGroup) {\n // anchor 行自身不是节点,只数它的按钮\n const items = group.menus.flatMap(m => (m.anchor ? m.buttons : [m, ...m.buttons]))\n const checkedCount = items.filter(x => x.checked).length\n group.checked = checkedCount > 0 && checkedCount === items.length\n group.indeterminate = checkedCount > 0 && checkedCount < items.length\n}\n\n/**\n * 顶层节点 → 分组。顶级页面(如工作台)自成一组;顶级目录一组;根级直挂按钮并进一个合成组。\n * @param anchorTitle 无页面权限项行的显示文案(i18n 由调用方给)\n */\nexport function buildGroups(\n tree: MenuTreeNode[],\n grantedSet: Set<number>,\n anchorTitle: string,\n): CatalogGroup[] {\n const groups: CatalogGroup[] = []\n for (const node of tree) {\n if (node.type === MenuType.Button) continue\n const menus =\n node.type === MenuType.Menu\n ? [toMenuRow(node, grantedSet)]\n : catalogRows(node, grantedSet, anchorTitle)\n const group: CatalogGroup = {\n id: node.id,\n title: node.title,\n checked: grantedSet.has(node.id),\n indeterminate: false,\n menus,\n }\n recomputeGroup(group)\n groups.push(group)\n }\n const rootButtons = toButtons(tree, grantedSet)\n if (rootButtons.length) {\n const group: CatalogGroup = {\n id: 0,\n title: anchorTitle,\n checked: false,\n indeterminate: false,\n menus: [anchorRow(0, rootButtons, anchorTitle)],\n synthetic: true,\n }\n recomputeGroup(group)\n groups.push(group)\n }\n return groups\n}\n\n/** 勾选态 → 要提交的菜单 id:目录(全勾或半勾)、页面、按钮;anchor 行与合成组自身不算节点。 */\nexport function collectChecked(groups: CatalogGroup[]): number[] {\n const ids: number[] = []\n for (const g of groups) {\n if (!g.synthetic && (g.checked || g.indeterminate)) ids.push(g.id)\n for (const m of g.menus) {\n if (!m.anchor && m.checked) ids.push(m.id)\n for (const b of m.buttons) if (b.checked) ids.push(b.id)\n }\n }\n return ids\n}\n"],"names":["toButtons","nodes","grantedSet","b","MenuType","toMenuRow","m","prefix","anchorRow","ownerId","buttons","anchorTitle","catalogRows","node","rows","child","recomputeGroup","group","items","checkedCount","x","buildGroups","tree","groups","menus","rootButtons","collectChecked","ids","g"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
import { defineComponent as he, ref as m, shallowRef as M, onMounted as be, reactive as K, computed as W, resolveDirective as ge, openBlock as g, createElementBlock as we, Fragment as ke, createVNode as a, unref as o, withCtx as s, withDirectives as H, createBlock as C, createTextVNode as L, toDisplayString as J, createCommentVNode as D, h as b } from "vue";
|
|
2
|
+
import { useMessage as Se, NButton as w, NForm as Q, NFormItem as f, NInput as R, NInputNumber as Ue, NSwitch as X, NSelect as Te, NSpace as Ce, NDropdown as De } from "naive-ui";
|
|
3
|
+
import { useI18n as Ie } from "vue-i18n";
|
|
4
|
+
import { SmartTable as Oe } from "smart-naive-table";
|
|
5
|
+
import Y from "../../../components/AppIcon.vue.js";
|
|
6
|
+
import _ from "../../../components/FormContainer/index.vue.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import Ae from "../../../components/StatusSwitch/index.vue.js";
|
|
9
|
+
import Ne from "../../../components/OrgTreeSelect/index.vue.js";
|
|
10
|
+
import Pe from "../../../components/UserPicker/index.vue.js";
|
|
11
|
+
import xe from "./components/GrantMenuTable.vue.js";
|
|
12
|
+
import { useConfirm as Me } from "../../../composables/useConfirm.js";
|
|
13
|
+
import { useBatchDelete as Re } from "../../../composables/useBatchDelete.js";
|
|
14
|
+
import { moduleApi as _e, roleApi as d, userApi as qe, menuApi as ze } from "../../../api/index.js";
|
|
15
|
+
import { useAuthStore as Ee } from "../../../stores/auth.js";
|
|
16
|
+
import { translateError as v } from "../../../utils/error.js";
|
|
17
|
+
import { DataScopeType as y } from "../../../types/api.js";
|
|
18
|
+
const Z = 0, ol = /* @__PURE__ */ he({
|
|
19
|
+
__name: "index",
|
|
20
|
+
setup(Be) {
|
|
21
|
+
const { t } = Ie(), c = Se(), { confirm: ee } = Me(), i = Ee(), k = m(), I = M([]);
|
|
22
|
+
be(async () => {
|
|
23
|
+
try {
|
|
24
|
+
I.value = await _e.list();
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
async function q(l) {
|
|
29
|
+
try {
|
|
30
|
+
const { total: e } = await qe.page({ page: 1, pageSize: 1, roleId: l });
|
|
31
|
+
return e;
|
|
32
|
+
} catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const {
|
|
37
|
+
checkedKeys: z,
|
|
38
|
+
hasSelection: le,
|
|
39
|
+
run: te
|
|
40
|
+
} = Re({
|
|
41
|
+
remove: d.batchRemove,
|
|
42
|
+
refresh: () => {
|
|
43
|
+
var l;
|
|
44
|
+
return (l = k.value) == null ? void 0 : l.refresh();
|
|
45
|
+
},
|
|
46
|
+
successMsg: t("role.deleted"),
|
|
47
|
+
content: async (l) => {
|
|
48
|
+
const e = await Promise.all(l.map(q));
|
|
49
|
+
if (e.some((r) => r === null)) return t("common.batchDeleteConfirm", { count: l.length });
|
|
50
|
+
const n = e.reduce((r, T) => r + T, 0);
|
|
51
|
+
return n === 0 ? t("common.batchDeleteConfirm", { count: l.length }) : t("role.batchDeleteWithUsers", { count: l.length, users: n });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
async function oe(l) {
|
|
55
|
+
var T;
|
|
56
|
+
const e = await q(l.id), n = e === null ? t("role.deleteConfirm", { name: l.name }) : e === 0 ? t("role.deleteConfirmNoUsers", { name: l.name }) : t("role.deleteConfirmWithUsers", { name: l.name, count: e });
|
|
57
|
+
await ee({
|
|
58
|
+
content: n,
|
|
59
|
+
type: "error",
|
|
60
|
+
action: () => d.remove(l.id),
|
|
61
|
+
successMsg: t("role.deleted")
|
|
62
|
+
}) && ((T = k.value) == null || T.refresh());
|
|
63
|
+
}
|
|
64
|
+
const E = (l) => ({
|
|
65
|
+
name: l.name,
|
|
66
|
+
code: l.code,
|
|
67
|
+
sort: l.sort,
|
|
68
|
+
enabled: l.enabled,
|
|
69
|
+
remark: l.remark ?? "",
|
|
70
|
+
isDelegatable: l.isDelegatable ?? !1
|
|
71
|
+
}), re = [
|
|
72
|
+
{ type: "selection" },
|
|
73
|
+
{ type: "index", title: () => t("common.rowNo"), width: 64, align: "center" },
|
|
74
|
+
{ key: "code", title: () => t("role.code") },
|
|
75
|
+
{ key: "name", title: () => t("role.name"), search: !0 },
|
|
76
|
+
{ key: "sort", title: () => t("role.sort"), width: 80 },
|
|
77
|
+
{
|
|
78
|
+
key: "enabled",
|
|
79
|
+
title: () => t("common.status"),
|
|
80
|
+
width: 90,
|
|
81
|
+
render: (l) => b(Ae, {
|
|
82
|
+
value: l.enabled,
|
|
83
|
+
disabled: !i.isSuperAdmin || !i.hasPerm("PUT:/api/v1/sys/role/{id}"),
|
|
84
|
+
request: (e) => d.update(l.id, { ...E(l), enabled: e }),
|
|
85
|
+
"onUpdate:value": (e) => {
|
|
86
|
+
l.enabled = e;
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
key: "remark",
|
|
92
|
+
title: () => t("role.remark"),
|
|
93
|
+
ellipsis: { tooltip: !0 },
|
|
94
|
+
render: (l) => l.remark || "—"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: "op",
|
|
98
|
+
title: () => t("common.operation"),
|
|
99
|
+
width: 240,
|
|
100
|
+
fixed: "right",
|
|
101
|
+
hideInSetting: !0,
|
|
102
|
+
render: (l) => {
|
|
103
|
+
const e = [
|
|
104
|
+
i.isSuperAdmin && i.hasPerm("PUT:/api/v1/sys/role/menu") ? { label: t("role.grantMenus"), key: "menus" } : null,
|
|
105
|
+
i.isSuperAdmin && i.hasPerm("PUT:/api/v1/sys/role/datascope") ? { label: t("role.dataScope"), key: "scope" } : null,
|
|
106
|
+
i.hasPerm("PUT:/api/v1/sys/role/users") ? { label: t("role.grantUsers"), key: "users" } : null
|
|
107
|
+
].filter((n) => n !== null);
|
|
108
|
+
return b(Ce, { size: 4, wrapItem: !1 }, () => [
|
|
109
|
+
i.isSuperAdmin && i.hasPerm("PUT:/api/v1/sys/role/{id}") ? b(
|
|
110
|
+
w,
|
|
111
|
+
{ size: "small", quaternary: !0, type: "primary", onClick: () => se(l) },
|
|
112
|
+
() => t("common.edit")
|
|
113
|
+
) : null,
|
|
114
|
+
i.isSuperAdmin && i.hasPerm("DELETE:/api/v1/sys/role/{id}") ? b(
|
|
115
|
+
w,
|
|
116
|
+
{ size: "small", quaternary: !0, type: "error", onClick: () => oe(l) },
|
|
117
|
+
() => t("common.delete")
|
|
118
|
+
) : null,
|
|
119
|
+
e.length ? b(
|
|
120
|
+
De,
|
|
121
|
+
{
|
|
122
|
+
options: e,
|
|
123
|
+
onSelect: (n) => {
|
|
124
|
+
n === "menus" ? ie(l) : n === "scope" ? ve(l) : me(l);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
() => b(w, { size: "small", quaternary: !0 }, () => t("common.more"))
|
|
128
|
+
) : null
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
], S = m(!1), B = m(null), h = m(null), ae = {
|
|
133
|
+
code: {
|
|
134
|
+
required: !0,
|
|
135
|
+
whitespace: !0,
|
|
136
|
+
message: () => t("role.codeRequired"),
|
|
137
|
+
trigger: ["input", "blur"]
|
|
138
|
+
},
|
|
139
|
+
name: {
|
|
140
|
+
required: !0,
|
|
141
|
+
whitespace: !0,
|
|
142
|
+
message: () => t("role.nameRequired"),
|
|
143
|
+
trigger: ["input", "blur"]
|
|
144
|
+
}
|
|
145
|
+
}, F = () => ({
|
|
146
|
+
name: "",
|
|
147
|
+
code: "",
|
|
148
|
+
sort: 0,
|
|
149
|
+
enabled: !0,
|
|
150
|
+
remark: "",
|
|
151
|
+
isDelegatable: !1
|
|
152
|
+
}), u = K(F());
|
|
153
|
+
function ne() {
|
|
154
|
+
h.value = null, Object.assign(u, F()), S.value = !0;
|
|
155
|
+
}
|
|
156
|
+
function se(l) {
|
|
157
|
+
h.value = l.id, Object.assign(u, E(l)), S.value = !0;
|
|
158
|
+
}
|
|
159
|
+
async function ue() {
|
|
160
|
+
var l, e;
|
|
161
|
+
await ((l = B.value) == null ? void 0 : l.validate());
|
|
162
|
+
try {
|
|
163
|
+
h.value === null ? await d.add({ ...u }) : await d.update(h.value, { ...u }), c.success(t("role.saved")), await ((e = k.value) == null ? void 0 : e.refresh());
|
|
164
|
+
} catch (n) {
|
|
165
|
+
return c.error(v(n)), !1;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const O = m(!1), $ = M([]), U = M([]), A = m(null), G = m(Z);
|
|
169
|
+
async function ie(l) {
|
|
170
|
+
var e;
|
|
171
|
+
A.value = l.id;
|
|
172
|
+
try {
|
|
173
|
+
const [n, r] = await Promise.all([ze.tree(), d.getMenus(l.id)]);
|
|
174
|
+
$.value = n, U.value = r, G.value = i.currentModuleId ?? ((e = I.value[0]) == null ? void 0 : e.id) ?? Z, O.value = !0;
|
|
175
|
+
} catch (n) {
|
|
176
|
+
c.error(v(n));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function ce(l) {
|
|
180
|
+
U.value = l;
|
|
181
|
+
}
|
|
182
|
+
async function de() {
|
|
183
|
+
if (A.value !== null)
|
|
184
|
+
try {
|
|
185
|
+
await d.setMenus(A.value, U.value), c.success(t("role.grantSaved"));
|
|
186
|
+
} catch (l) {
|
|
187
|
+
return c.error(v(l)), !1;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const V = m(null), N = m(null);
|
|
191
|
+
async function me(l) {
|
|
192
|
+
var e;
|
|
193
|
+
N.value = l.id;
|
|
194
|
+
try {
|
|
195
|
+
const n = await d.getUsers(l.id);
|
|
196
|
+
(e = V.value) == null || e.open(n);
|
|
197
|
+
} catch (n) {
|
|
198
|
+
c.error(v(n));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async function pe(l) {
|
|
202
|
+
if (N.value !== null)
|
|
203
|
+
try {
|
|
204
|
+
await d.setUsers(N.value, l), c.success(t("role.grantUsersSaved"));
|
|
205
|
+
} catch (e) {
|
|
206
|
+
c.error(v(e));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const P = m(!1), x = m(null), p = K({
|
|
210
|
+
scopeType: y.Org,
|
|
211
|
+
customOrgIds: []
|
|
212
|
+
}), j = W(() => p.scopeType === y.Custom), fe = W(() => [
|
|
213
|
+
{ label: t("role.scope.all"), value: y.All },
|
|
214
|
+
{ label: t("role.scope.org"), value: y.Org },
|
|
215
|
+
{ label: t("role.scope.orgAndChildren"), value: y.OrgAndChildren },
|
|
216
|
+
{ label: t("role.scope.self"), value: y.Self },
|
|
217
|
+
{ label: t("role.scope.custom"), value: y.Custom }
|
|
218
|
+
]);
|
|
219
|
+
async function ve(l) {
|
|
220
|
+
x.value = l.id;
|
|
221
|
+
try {
|
|
222
|
+
const e = await d.getDataScope(l.id);
|
|
223
|
+
p.scopeType = (e == null ? void 0 : e.scopeType) ?? y.Org, p.customOrgIds = e != null && e.customOrgIds ? e.customOrgIds.split(",").filter(Boolean).map(Number) : [], P.value = !0;
|
|
224
|
+
} catch (e) {
|
|
225
|
+
c.error(v(e));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
async function ye() {
|
|
229
|
+
if (x.value !== null)
|
|
230
|
+
try {
|
|
231
|
+
await d.setDataScope(
|
|
232
|
+
x.value,
|
|
233
|
+
p.scopeType,
|
|
234
|
+
j.value ? p.customOrgIds : void 0
|
|
235
|
+
), c.success(t("role.scopeSaved"));
|
|
236
|
+
} catch (l) {
|
|
237
|
+
return c.error(v(l)), !1;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return (l, e) => {
|
|
241
|
+
const n = ge("auth");
|
|
242
|
+
return g(), we(ke, null, [
|
|
243
|
+
a(o(Oe), {
|
|
244
|
+
"default-page-size": 100,
|
|
245
|
+
ref_key: "tableRef",
|
|
246
|
+
ref: k,
|
|
247
|
+
columns: re,
|
|
248
|
+
fetcher: o(d).page,
|
|
249
|
+
"flex-height": "",
|
|
250
|
+
"virtual-scroll": "",
|
|
251
|
+
"storage-key": "sys-role",
|
|
252
|
+
"checked-row-keys": o(z),
|
|
253
|
+
"onUpdate:checkedRowKeys": e[0] || (e[0] = (r) => z.value = r),
|
|
254
|
+
onError: e[1] || (e[1] = (r) => o(c).error(o(v)(r)))
|
|
255
|
+
}, {
|
|
256
|
+
toolbar: s(() => [
|
|
257
|
+
o(i).isSuperAdmin ? H((g(), C(o(w), {
|
|
258
|
+
key: 0,
|
|
259
|
+
type: "primary",
|
|
260
|
+
onClick: ne
|
|
261
|
+
}, {
|
|
262
|
+
icon: s(() => [
|
|
263
|
+
a(Y, {
|
|
264
|
+
icon: "ph:plus",
|
|
265
|
+
size: 16
|
|
266
|
+
})
|
|
267
|
+
]),
|
|
268
|
+
default: s(() => [
|
|
269
|
+
L(" " + J(o(t)("common.add")), 1)
|
|
270
|
+
]),
|
|
271
|
+
_: 1
|
|
272
|
+
})), [
|
|
273
|
+
[n, "POST:/api/v1/sys/role/add"]
|
|
274
|
+
]) : D("", !0),
|
|
275
|
+
o(i).isSuperAdmin ? H((g(), C(o(w), {
|
|
276
|
+
key: 1,
|
|
277
|
+
type: "error",
|
|
278
|
+
disabled: !o(le),
|
|
279
|
+
onClick: o(te)
|
|
280
|
+
}, {
|
|
281
|
+
icon: s(() => [
|
|
282
|
+
a(Y, {
|
|
283
|
+
icon: "ph:trash",
|
|
284
|
+
size: 16
|
|
285
|
+
})
|
|
286
|
+
]),
|
|
287
|
+
default: s(() => [
|
|
288
|
+
L(" " + J(o(t)("common.batchDelete")), 1)
|
|
289
|
+
]),
|
|
290
|
+
_: 1
|
|
291
|
+
}, 8, ["disabled", "onClick"])), [
|
|
292
|
+
[n, "POST:/api/v1/sys/role/batch-delete"]
|
|
293
|
+
]) : D("", !0)
|
|
294
|
+
]),
|
|
295
|
+
_: 1
|
|
296
|
+
}, 8, ["fetcher", "checked-row-keys"]),
|
|
297
|
+
a(_, {
|
|
298
|
+
show: S.value,
|
|
299
|
+
"onUpdate:show": e[8] || (e[8] = (r) => S.value = r),
|
|
300
|
+
title: h.value === null ? o(t)("role.addTitle") : o(t)("role.editTitle"),
|
|
301
|
+
width: 480,
|
|
302
|
+
"on-confirm": ue,
|
|
303
|
+
"confirm-text": o(t)("common.save")
|
|
304
|
+
}, {
|
|
305
|
+
default: s(() => [
|
|
306
|
+
a(o(Q), {
|
|
307
|
+
ref_key: "formRef",
|
|
308
|
+
ref: B,
|
|
309
|
+
model: u,
|
|
310
|
+
rules: ae,
|
|
311
|
+
"label-placement": "left",
|
|
312
|
+
"label-width": 80
|
|
313
|
+
}, {
|
|
314
|
+
default: s(() => [
|
|
315
|
+
a(o(f), {
|
|
316
|
+
label: o(t)("role.code"),
|
|
317
|
+
path: "code"
|
|
318
|
+
}, {
|
|
319
|
+
default: s(() => [
|
|
320
|
+
a(o(R), {
|
|
321
|
+
value: u.code,
|
|
322
|
+
"onUpdate:value": e[2] || (e[2] = (r) => u.code = r),
|
|
323
|
+
placeholder: o(t)("role.code"),
|
|
324
|
+
disabled: h.value !== null
|
|
325
|
+
}, null, 8, ["value", "placeholder", "disabled"])
|
|
326
|
+
]),
|
|
327
|
+
_: 1
|
|
328
|
+
}, 8, ["label"]),
|
|
329
|
+
a(o(f), {
|
|
330
|
+
label: o(t)("role.name"),
|
|
331
|
+
path: "name"
|
|
332
|
+
}, {
|
|
333
|
+
default: s(() => [
|
|
334
|
+
a(o(R), {
|
|
335
|
+
value: u.name,
|
|
336
|
+
"onUpdate:value": e[3] || (e[3] = (r) => u.name = r),
|
|
337
|
+
placeholder: o(t)("role.name")
|
|
338
|
+
}, null, 8, ["value", "placeholder"])
|
|
339
|
+
]),
|
|
340
|
+
_: 1
|
|
341
|
+
}, 8, ["label"]),
|
|
342
|
+
a(o(f), {
|
|
343
|
+
label: o(t)("role.sort")
|
|
344
|
+
}, {
|
|
345
|
+
default: s(() => [
|
|
346
|
+
a(o(Ue), {
|
|
347
|
+
value: u.sort,
|
|
348
|
+
"onUpdate:value": e[4] || (e[4] = (r) => u.sort = r),
|
|
349
|
+
min: 0,
|
|
350
|
+
style: { width: "160px" }
|
|
351
|
+
}, null, 8, ["value"])
|
|
352
|
+
]),
|
|
353
|
+
_: 1
|
|
354
|
+
}, 8, ["label"]),
|
|
355
|
+
a(o(f), {
|
|
356
|
+
label: o(t)("role.remark")
|
|
357
|
+
}, {
|
|
358
|
+
default: s(() => [
|
|
359
|
+
a(o(R), {
|
|
360
|
+
value: u.remark,
|
|
361
|
+
"onUpdate:value": e[5] || (e[5] = (r) => u.remark = r),
|
|
362
|
+
type: "textarea",
|
|
363
|
+
rows: 2,
|
|
364
|
+
placeholder: o(t)("role.remark")
|
|
365
|
+
}, null, 8, ["value", "placeholder"])
|
|
366
|
+
]),
|
|
367
|
+
_: 1
|
|
368
|
+
}, 8, ["label"]),
|
|
369
|
+
a(o(f), {
|
|
370
|
+
label: o(t)("common.status")
|
|
371
|
+
}, {
|
|
372
|
+
default: s(() => [
|
|
373
|
+
a(o(X), {
|
|
374
|
+
value: u.enabled,
|
|
375
|
+
"onUpdate:value": e[6] || (e[6] = (r) => u.enabled = r)
|
|
376
|
+
}, null, 8, ["value"])
|
|
377
|
+
]),
|
|
378
|
+
_: 1
|
|
379
|
+
}, 8, ["label"]),
|
|
380
|
+
o(i).isSuperAdmin ? (g(), C(o(f), {
|
|
381
|
+
key: 0,
|
|
382
|
+
label: o(t)("role.isDelegatable")
|
|
383
|
+
}, {
|
|
384
|
+
default: s(() => [
|
|
385
|
+
a(o(X), {
|
|
386
|
+
value: u.isDelegatable,
|
|
387
|
+
"onUpdate:value": e[7] || (e[7] = (r) => u.isDelegatable = r)
|
|
388
|
+
}, null, 8, ["value"])
|
|
389
|
+
]),
|
|
390
|
+
_: 1
|
|
391
|
+
}, 8, ["label"])) : D("", !0)
|
|
392
|
+
]),
|
|
393
|
+
_: 1
|
|
394
|
+
}, 8, ["model"])
|
|
395
|
+
]),
|
|
396
|
+
_: 1
|
|
397
|
+
}, 8, ["show", "title", "confirm-text"]),
|
|
398
|
+
a(_, {
|
|
399
|
+
show: O.value,
|
|
400
|
+
"onUpdate:show": e[9] || (e[9] = (r) => O.value = r),
|
|
401
|
+
title: o(t)("role.grantMenus"),
|
|
402
|
+
width: 820,
|
|
403
|
+
"on-confirm": de,
|
|
404
|
+
"confirm-text": o(t)("common.save")
|
|
405
|
+
}, {
|
|
406
|
+
default: s(() => [
|
|
407
|
+
a(xe, {
|
|
408
|
+
tree: $.value,
|
|
409
|
+
granted: U.value,
|
|
410
|
+
modules: I.value,
|
|
411
|
+
"default-module-id": G.value,
|
|
412
|
+
"onUpdate:checked": ce
|
|
413
|
+
}, null, 8, ["tree", "granted", "modules", "default-module-id"])
|
|
414
|
+
]),
|
|
415
|
+
_: 1
|
|
416
|
+
}, 8, ["show", "title", "confirm-text"]),
|
|
417
|
+
a(Pe, {
|
|
418
|
+
ref_key: "userPickerRef",
|
|
419
|
+
ref: V,
|
|
420
|
+
onConfirm: pe
|
|
421
|
+
}, null, 512),
|
|
422
|
+
a(_, {
|
|
423
|
+
show: P.value,
|
|
424
|
+
"onUpdate:show": e[12] || (e[12] = (r) => P.value = r),
|
|
425
|
+
title: o(t)("role.dataScope"),
|
|
426
|
+
width: 480,
|
|
427
|
+
"on-confirm": ye,
|
|
428
|
+
"confirm-text": o(t)("common.save")
|
|
429
|
+
}, {
|
|
430
|
+
default: s(() => [
|
|
431
|
+
a(o(Q), {
|
|
432
|
+
model: p,
|
|
433
|
+
"label-placement": "left",
|
|
434
|
+
"label-width": 90
|
|
435
|
+
}, {
|
|
436
|
+
default: s(() => [
|
|
437
|
+
a(o(f), {
|
|
438
|
+
label: o(t)("role.scopeType")
|
|
439
|
+
}, {
|
|
440
|
+
default: s(() => [
|
|
441
|
+
a(o(Te), {
|
|
442
|
+
value: p.scopeType,
|
|
443
|
+
"onUpdate:value": e[10] || (e[10] = (r) => p.scopeType = r),
|
|
444
|
+
options: fe.value
|
|
445
|
+
}, null, 8, ["value", "options"])
|
|
446
|
+
]),
|
|
447
|
+
_: 1
|
|
448
|
+
}, 8, ["label"]),
|
|
449
|
+
j.value ? (g(), C(o(f), {
|
|
450
|
+
key: 0,
|
|
451
|
+
label: o(t)("role.customOrgs")
|
|
452
|
+
}, {
|
|
453
|
+
default: s(() => [
|
|
454
|
+
a(Ne, {
|
|
455
|
+
value: p.customOrgIds,
|
|
456
|
+
"onUpdate:value": e[11] || (e[11] = (r) => p.customOrgIds = r),
|
|
457
|
+
multiple: "",
|
|
458
|
+
placeholder: o(t)("role.customOrgsHint")
|
|
459
|
+
}, null, 8, ["value", "placeholder"])
|
|
460
|
+
]),
|
|
461
|
+
_: 1
|
|
462
|
+
}, 8, ["label"])) : D("", !0)
|
|
463
|
+
]),
|
|
464
|
+
_: 1
|
|
465
|
+
}, 8, ["model"])
|
|
466
|
+
]),
|
|
467
|
+
_: 1
|
|
468
|
+
}, 8, ["show", "title", "confirm-text"])
|
|
469
|
+
], 64);
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
export {
|
|
474
|
+
ol as default
|
|
475
|
+
};
|
|
476
|
+
//# sourceMappingURL=index2.vue.js.map
|