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,214 @@
|
|
|
1
|
+
import { defineComponent as G, ref as p, computed as m, onMounted as H, reactive as J, openBlock as h, createBlock as I, unref as l, withCtx as v, createElementVNode as s, toDisplayString as i, createVNode as u, createTextVNode as _, createElementBlock as N, Fragment as Q, renderList as W, createCommentVNode as X, h as Y } from "vue";
|
|
2
|
+
import { useMessage as Z, NTree as ee, NButton as y, NInput as te, NEmpty as ne } from "naive-ui";
|
|
3
|
+
import { SmartTable as le } from "smart-naive-table";
|
|
4
|
+
import { useI18n as oe } from "vue-i18n";
|
|
5
|
+
import ae from "../AppIcon.vue.js";
|
|
6
|
+
import se from "../FormContainer/index.vue.js";
|
|
7
|
+
/* empty css */
|
|
8
|
+
import { orgApi as re, userApi as P } from "../../api/index.js";
|
|
9
|
+
import { buildTree as ie } from "../../utils/tree.js";
|
|
10
|
+
import { translateError as ce } from "../../utils/error.js";
|
|
11
|
+
const de = { class: "user-picker" }, ue = { class: "picker-tree" }, pe = { class: "panel-header" }, me = { class: "picker-table" }, fe = { class: "panel-header" }, he = { class: "picker-selected" }, ve = { class: "panel-header" }, ye = { class: "selected-list" }, ke = { class: "selected-name" }, ge = { class: "selected-account" }, Ue = /* @__PURE__ */ G({
|
|
12
|
+
__name: "index",
|
|
13
|
+
props: {
|
|
14
|
+
excludeIds: {}
|
|
15
|
+
},
|
|
16
|
+
emits: ["confirm"],
|
|
17
|
+
setup(U, { expose: E, emit: T }) {
|
|
18
|
+
const q = U, B = T, { t: a } = oe(), K = Z(), k = p(!1), g = p(), w = p([]), L = m(() => [{ id: 0, parentId: -1, name: a("common.all"), children: ie(w.value) }]), c = p(null), V = m(
|
|
19
|
+
() => c.value && c.value !== 0 ? c.value : void 0
|
|
20
|
+
);
|
|
21
|
+
H(async () => {
|
|
22
|
+
try {
|
|
23
|
+
w.value = await re.list();
|
|
24
|
+
} catch {
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
function R(t) {
|
|
28
|
+
var e;
|
|
29
|
+
c.value = t[0] ?? null, (e = g.value) == null || e.refresh();
|
|
30
|
+
}
|
|
31
|
+
const d = p([]), S = m(() => new Set(q.excludeIds ?? [])), $ = (t) => P.page({
|
|
32
|
+
page: t.page,
|
|
33
|
+
pageSize: t.pageSize,
|
|
34
|
+
name: t.name,
|
|
35
|
+
orgId: V.value
|
|
36
|
+
}), A = [
|
|
37
|
+
{ type: "selection" },
|
|
38
|
+
{ key: "name", title: () => a("user.name"), width: 100 },
|
|
39
|
+
{ key: "account", title: () => a("user.account"), width: 120, search: !0 },
|
|
40
|
+
{
|
|
41
|
+
key: "op",
|
|
42
|
+
title: () => a("common.operation"),
|
|
43
|
+
width: 70,
|
|
44
|
+
render: (t) => {
|
|
45
|
+
const e = b.value.has(t.id) || S.value.has(t.id);
|
|
46
|
+
return Y(
|
|
47
|
+
y,
|
|
48
|
+
{
|
|
49
|
+
size: "tiny",
|
|
50
|
+
type: "primary",
|
|
51
|
+
quaternary: !0,
|
|
52
|
+
disabled: e,
|
|
53
|
+
onClick: () => C([t])
|
|
54
|
+
},
|
|
55
|
+
() => a(e ? "userPicker.added" : "userPicker.add")
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
], o = J([]), b = m(() => new Set(o.map((t) => t.id))), f = p(""), x = m(() => {
|
|
60
|
+
const t = f.value.trim().toLowerCase();
|
|
61
|
+
return t ? o.filter(
|
|
62
|
+
(e) => e.name.toLowerCase().includes(t) || e.account.toLowerCase().includes(t)
|
|
63
|
+
) : o;
|
|
64
|
+
});
|
|
65
|
+
function C(t) {
|
|
66
|
+
for (const e of t)
|
|
67
|
+
!b.value.has(e.id) && !S.value.has(e.id) && o.push(e);
|
|
68
|
+
}
|
|
69
|
+
function D() {
|
|
70
|
+
var e;
|
|
71
|
+
const t = (l((e = g.value) == null ? void 0 : e.rows) ?? []).filter((n) => d.value.includes(n.id));
|
|
72
|
+
C(t), d.value = [];
|
|
73
|
+
}
|
|
74
|
+
function F(t) {
|
|
75
|
+
const e = o.findIndex((n) => n.id === t);
|
|
76
|
+
e >= 0 && o.splice(e, 1);
|
|
77
|
+
}
|
|
78
|
+
function M() {
|
|
79
|
+
o.splice(0, o.length);
|
|
80
|
+
}
|
|
81
|
+
async function O(t) {
|
|
82
|
+
if (o.splice(0, o.length), d.value = [], f.value = "", c.value = null, k.value = !0, t != null && t.length)
|
|
83
|
+
try {
|
|
84
|
+
const { items: e } = await P.page({ page: 1, pageSize: 200 }), n = e.filter((r) => t.includes(r.id)), z = new Set(n.map((r) => r.id));
|
|
85
|
+
for (const r of n) o.push(r);
|
|
86
|
+
for (const r of t)
|
|
87
|
+
z.has(r) || o.push({ id: r, account: String(r), name: String(r) });
|
|
88
|
+
} catch {
|
|
89
|
+
for (const e of t) o.push({ id: e, account: String(e), name: String(e) });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function j() {
|
|
93
|
+
const t = o.map((e) => e.id);
|
|
94
|
+
B("confirm", t);
|
|
95
|
+
}
|
|
96
|
+
return E({ open: O }), (t, e) => (h(), I(se, {
|
|
97
|
+
show: k.value,
|
|
98
|
+
"onUpdate:show": e[3] || (e[3] = (n) => k.value = n),
|
|
99
|
+
title: l(a)("userPicker.title"),
|
|
100
|
+
width: 1100,
|
|
101
|
+
"on-confirm": j,
|
|
102
|
+
"confirm-text": l(a)("common.confirm")
|
|
103
|
+
}, {
|
|
104
|
+
default: v(() => [
|
|
105
|
+
s("div", de, [
|
|
106
|
+
s("div", ue, [
|
|
107
|
+
s("div", pe, i(l(a)("org.title")), 1),
|
|
108
|
+
u(l(ee), {
|
|
109
|
+
data: L.value,
|
|
110
|
+
"key-field": "id",
|
|
111
|
+
"label-field": "name",
|
|
112
|
+
"children-field": "children",
|
|
113
|
+
selectable: "",
|
|
114
|
+
"block-line": "",
|
|
115
|
+
"default-expand-all": "",
|
|
116
|
+
"selected-keys": c.value != null ? [c.value] : [],
|
|
117
|
+
"onUpdate:selectedKeys": R
|
|
118
|
+
}, null, 8, ["data", "selected-keys"])
|
|
119
|
+
]),
|
|
120
|
+
s("div", me, [
|
|
121
|
+
s("div", fe, [
|
|
122
|
+
s("span", null, i(l(a)("userPicker.available")), 1),
|
|
123
|
+
u(l(y), {
|
|
124
|
+
size: "tiny",
|
|
125
|
+
type: "primary",
|
|
126
|
+
disabled: d.value.length === 0,
|
|
127
|
+
onClick: D
|
|
128
|
+
}, {
|
|
129
|
+
default: v(() => [
|
|
130
|
+
_(i(l(a)("userPicker.addChecked")) + "(" + i(d.value.length) + ") ", 1)
|
|
131
|
+
]),
|
|
132
|
+
_: 1
|
|
133
|
+
}, 8, ["disabled"])
|
|
134
|
+
]),
|
|
135
|
+
u(l(le), {
|
|
136
|
+
"default-page-size": 100,
|
|
137
|
+
ref_key: "tableRef",
|
|
138
|
+
ref: g,
|
|
139
|
+
columns: A,
|
|
140
|
+
fetcher: $,
|
|
141
|
+
pagination: { pageSize: 10 },
|
|
142
|
+
size: "small",
|
|
143
|
+
"storage-key": "user-picker",
|
|
144
|
+
"tool-button": !1,
|
|
145
|
+
"checked-row-keys": d.value,
|
|
146
|
+
"onUpdate:checkedRowKeys": e[0] || (e[0] = (n) => d.value = n),
|
|
147
|
+
onError: e[1] || (e[1] = (n) => l(K).error(l(ce)(n)))
|
|
148
|
+
}, null, 8, ["checked-row-keys"])
|
|
149
|
+
]),
|
|
150
|
+
s("div", he, [
|
|
151
|
+
s("div", ve, [
|
|
152
|
+
s("span", null, i(l(a)("userPicker.selected")) + "(" + i(o.length) + ")", 1),
|
|
153
|
+
u(l(y), {
|
|
154
|
+
size: "tiny",
|
|
155
|
+
quaternary: "",
|
|
156
|
+
type: "error",
|
|
157
|
+
disabled: o.length === 0,
|
|
158
|
+
onClick: M
|
|
159
|
+
}, {
|
|
160
|
+
default: v(() => [
|
|
161
|
+
_(i(l(a)("userPicker.clear")), 1)
|
|
162
|
+
]),
|
|
163
|
+
_: 1
|
|
164
|
+
}, 8, ["disabled"])
|
|
165
|
+
]),
|
|
166
|
+
u(l(te), {
|
|
167
|
+
value: f.value,
|
|
168
|
+
"onUpdate:value": e[2] || (e[2] = (n) => f.value = n),
|
|
169
|
+
size: "small",
|
|
170
|
+
clearable: "",
|
|
171
|
+
placeholder: l(a)("common.search"),
|
|
172
|
+
style: { "margin-bottom": "8px" }
|
|
173
|
+
}, null, 8, ["value", "placeholder"]),
|
|
174
|
+
s("div", ye, [
|
|
175
|
+
(h(!0), N(Q, null, W(x.value, (n) => (h(), N("div", {
|
|
176
|
+
key: n.id,
|
|
177
|
+
class: "selected-item"
|
|
178
|
+
}, [
|
|
179
|
+
s("span", ke, [
|
|
180
|
+
_(i(n.name) + " ", 1),
|
|
181
|
+
s("span", ge, "(" + i(n.account) + ")", 1)
|
|
182
|
+
]),
|
|
183
|
+
u(l(y), {
|
|
184
|
+
size: "tiny",
|
|
185
|
+
quaternary: "",
|
|
186
|
+
type: "error",
|
|
187
|
+
onClick: (z) => F(n.id)
|
|
188
|
+
}, {
|
|
189
|
+
icon: v(() => [
|
|
190
|
+
u(ae, {
|
|
191
|
+
icon: "ph:x",
|
|
192
|
+
size: 14
|
|
193
|
+
})
|
|
194
|
+
]),
|
|
195
|
+
_: 1
|
|
196
|
+
}, 8, ["onClick"])
|
|
197
|
+
]))), 128)),
|
|
198
|
+
x.value.length === 0 ? (h(), I(l(ne), {
|
|
199
|
+
key: 0,
|
|
200
|
+
description: l(a)("common.noData"),
|
|
201
|
+
style: { padding: "24px 0" }
|
|
202
|
+
}, null, 8, ["description"])) : X("", !0)
|
|
203
|
+
])
|
|
204
|
+
])
|
|
205
|
+
])
|
|
206
|
+
]),
|
|
207
|
+
_: 1
|
|
208
|
+
}, 8, ["show", "title", "confirm-text"]));
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
export {
|
|
212
|
+
Ue as default
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=index2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":["../../../src/components/UserPicker/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, onMounted, reactive, ref, unref } from 'vue'\nimport { NButton, NEmpty, NInput, NTree, useMessage } from 'naive-ui'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport { useI18n } from 'vue-i18n'\nimport AppIcon from '#/components/AppIcon.vue'\nimport FormContainer from '#/components/FormContainer/index.vue'\nimport { orgApi, userApi } from '#/api'\nimport { buildTree } from '#/utils/tree'\nimport { translateError } from '#/utils/error'\nimport type { SysOrg, UserItem } from '#/types/api'\n\nconst props = defineProps<{ excludeIds?: number[] }>()\nconst emit = defineEmits<{ (e: 'confirm', ids: number[]): void }>()\n\nconst { t } = useI18n()\nconst message = useMessage()\n\nconst show = ref(false)\nconst tableRef = ref<SmartTableInst<UserItem>>()\n\n// ── 机构树(左面板) ──\nconst orgFlat = ref<SysOrg[]>([])\nconst orgTree = computed(() => {\n const all = { id: 0, parentId: -1, name: t('common.all'), children: buildTree(orgFlat.value) }\n return [all]\n})\nconst selectedOrgKey = ref<number | null>(null)\nconst orgId = computed(() =>\n selectedOrgKey.value && selectedOrgKey.value !== 0 ? selectedOrgKey.value : undefined,\n)\n\nonMounted(async () => {\n try {\n orgFlat.value = await orgApi.list()\n } catch {\n /* 静默 */\n }\n})\n\nfunction onOrgSelect(keys: Array<string | number>) {\n selectedOrgKey.value = (keys[0] as number) ?? null\n tableRef.value?.refresh()\n}\n\n// ── 可选用户表(中间面板) ──\nconst checkedKeys = ref<(string | number)[]>([])\nconst excludeSet = computed(() => new Set(props.excludeIds ?? []))\n\nconst fetcher = (params: { page: number; pageSize: number; name?: string }) =>\n userApi.page({\n page: params.page,\n pageSize: params.pageSize,\n name: params.name,\n orgId: orgId.value,\n })\n\nconst columns: SmartTableColumn<UserItem>[] = [\n { type: 'selection' },\n { key: 'name', title: () => t('user.name'), width: 100 },\n { key: 'account', title: () => t('user.account'), width: 120, search: true },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 70,\n render: r => {\n const already = selectedSet.value.has(r.id) || excludeSet.value.has(r.id)\n return h(\n NButton,\n {\n size: 'tiny',\n type: 'primary',\n quaternary: true,\n disabled: already,\n onClick: () => addUsers([r]),\n },\n () => (already ? t('userPicker.added') : t('userPicker.add')),\n )\n },\n },\n]\n\n// ── 已选用户(右面板) ──\nconst selected = reactive<UserItem[]>([])\nconst selectedSet = computed(() => new Set(selected.map(u => u.id)))\nconst selectedSearch = ref('')\nconst filteredSelected = computed(() => {\n const q = selectedSearch.value.trim().toLowerCase()\n if (!q) return selected\n return selected.filter(\n u => u.name.toLowerCase().includes(q) || u.account.toLowerCase().includes(q),\n )\n})\n\nfunction addUsers(users: UserItem[]) {\n for (const u of users) {\n if (!selectedSet.value.has(u.id) && !excludeSet.value.has(u.id)) {\n selected.push(u)\n }\n }\n}\n\nfunction addChecked() {\n // SmartTable 只 expose rows,别改用未公开的 tableData —— 恒为 undefined。\n // unref 兼容类型声明的 Ref 与运行时 expose 解包两种形态。\n const rows = (unref(tableRef.value?.rows) ?? []).filter(r => checkedKeys.value.includes(r.id))\n addUsers(rows)\n checkedKeys.value = []\n}\n\nfunction removeUser(id: number) {\n const idx = selected.findIndex(u => u.id === id)\n if (idx >= 0) selected.splice(idx, 1)\n}\n\nfunction clearSelected() {\n selected.splice(0, selected.length)\n}\n\n// ── 公共 API ──\nasync function open(ids?: number[]) {\n selected.splice(0, selected.length)\n checkedKeys.value = []\n selectedSearch.value = ''\n selectedOrgKey.value = null\n show.value = true\n\n if (ids?.length) {\n try {\n // ponytail: 拉一页,靠 id 过滤。200 是内核 Api:MaxPageSize 的默认上限,再大后端直接回 48001。\n // 用户超过 200 个时,排在后面的 id 解析不出名字,走下面那条退回显示 id 的分支;\n // 真要支持更大规模的用户名单,再改成分页搜索。\n const { items } = await userApi.page({ page: 1, pageSize: 200 })\n const all = items.filter(u => ids.includes(u.id))\n // 没拉到的 id(翻页之外),退回只显示 id\n const found = new Set(all.map(u => u.id))\n for (const u of all) selected.push(u)\n for (const id of ids) {\n if (!found.has(id)) selected.push({ id, account: String(id), name: String(id) } as UserItem)\n }\n } catch {\n for (const id of ids) selected.push({ id, account: String(id), name: String(id) } as UserItem)\n }\n }\n}\n\nasync function handleConfirm() {\n const ids = selected.map(u => u.id)\n emit('confirm', ids)\n}\n\ndefineExpose({ open })\n</script>\n\n<template>\n <FormContainer\n v-model:show=\"show\"\n :title=\"t('userPicker.title')\"\n :width=\"1100\"\n :on-confirm=\"handleConfirm\"\n :confirm-text=\"t('common.confirm')\"\n >\n <div class=\"user-picker\">\n <!-- 左面板:机构树 -->\n <div class=\"picker-tree\">\n <div class=\"panel-header\">{{ t('org.title') }}</div>\n <n-tree\n :data=\"orgTree\"\n key-field=\"id\"\n label-field=\"name\"\n children-field=\"children\"\n selectable\n block-line\n default-expand-all\n :selected-keys=\"selectedOrgKey != null ? [selectedOrgKey] : []\"\n @update:selected-keys=\"onOrgSelect\"\n />\n </div>\n\n <!-- 中间面板:可选用户 -->\n <div class=\"picker-table\">\n <div class=\"panel-header\">\n <span>{{ t('userPicker.available') }}</span>\n <n-button\n size=\"tiny\"\n type=\"primary\"\n :disabled=\"checkedKeys.length === 0\"\n @click=\"addChecked\"\n >\n {{ t('userPicker.addChecked') }}({{ checkedKeys.length }})\n </n-button>\n </div>\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"fetcher\"\n :pagination=\"{ pageSize: 10 }\"\n size=\"small\"\n storage-key=\"user-picker\"\n :tool-button=\"false\"\n :checked-row-keys=\"checkedKeys\"\n @update:checked-row-keys=\"(keys: (string | number)[]) => (checkedKeys = keys)\"\n @error=\"e => message.error(translateError(e))\"\n />\n </div>\n\n <!-- 右面板:已选用户 -->\n <div class=\"picker-selected\">\n <div class=\"panel-header\">\n <span>{{ t('userPicker.selected') }}({{ selected.length }})</span>\n <n-button\n size=\"tiny\"\n quaternary\n type=\"error\"\n :disabled=\"selected.length === 0\"\n @click=\"clearSelected\"\n >\n {{ t('userPicker.clear') }}\n </n-button>\n </div>\n <n-input\n v-model:value=\"selectedSearch\"\n size=\"small\"\n clearable\n :placeholder=\"t('common.search')\"\n style=\"margin-bottom: 8px\"\n />\n <div class=\"selected-list\">\n <div v-for=\"u in filteredSelected\" :key=\"u.id\" class=\"selected-item\">\n <span class=\"selected-name\">\n {{ u.name }}\n <span class=\"selected-account\">({{ u.account }})</span>\n </span>\n <n-button size=\"tiny\" quaternary type=\"error\" @click=\"removeUser(u.id)\">\n <template #icon><AppIcon icon=\"ph:x\" :size=\"14\" /></template>\n </n-button>\n </div>\n <n-empty\n v-if=\"filteredSelected.length === 0\"\n :description=\"t('common.noData')\"\n style=\"padding: 24px 0\"\n />\n </div>\n </div>\n </div>\n </FormContainer>\n</template>\n\n<style scoped>\n.user-picker {\n display: flex;\n gap: 12px;\n min-height: 400px;\n}\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 13px;\n font-weight: 600;\n padding: 0 0 8px;\n border-bottom: 1px solid var(--n-border-color, #e0e0e6);\n margin-bottom: 8px;\n}\n.picker-tree {\n width: 160px;\n flex-shrink: 0;\n overflow: auto;\n border-right: 1px solid var(--n-border-color, #e0e0e6);\n padding-right: 12px;\n}\n.picker-table {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n.picker-selected {\n width: 200px;\n flex-shrink: 0;\n border-left: 1px solid var(--n-border-color, #e0e0e6);\n padding-left: 12px;\n display: flex;\n flex-direction: column;\n}\n.selected-list {\n flex: 1;\n overflow: auto;\n max-height: 380px;\n}\n.selected-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 0;\n font-size: 13px;\n border-bottom: 1px solid var(--n-border-color, #e0e0e6);\n}\n.selected-item:last-child {\n border-bottom: none;\n}\n.selected-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.selected-account {\n color: var(--n-text-color-disabled, #999);\n font-size: 12px;\n margin-left: 2px;\n}\n</style>\n"],"names":["props","__props","emit","__emit","t","useI18n","message","useMessage","show","ref","tableRef","orgFlat","orgTree","computed","buildTree","selectedOrgKey","orgId","onMounted","orgApi","onOrgSelect","keys","_a","checkedKeys","excludeSet","fetcher","params","userApi","columns","r","already","selectedSet","h","NButton","addUsers","selected","reactive","u","selectedSearch","filteredSelected","q","users","addChecked","rows","unref","removeUser","id","idx","clearSelected","open","ids","items","all","found","handleConfirm","__expose","_createBlock","FormContainer","$event","_unref","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_3","_toDisplayString","_createVNode","NTree","_hoisted_4","_hoisted_5","_createTextVNode","SmartTable","_cache","e","translateError","_hoisted_6","_hoisted_7","NInput","_hoisted_8","_createElementBlock","_Fragment","_renderList","_hoisted_9","_hoisted_10","AppIcon","NEmpty"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
orgId?: number | null;
|
|
3
|
+
pageSize?: number;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
6
|
+
pageSize: number;
|
|
7
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
8
|
+
declare const _default: typeof __VLS_export;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { defineComponent as i, computed as c, openBlock as s, createBlock as m, mergeProps as d } from "vue";
|
|
2
|
+
import l from "../ApiSelect/index.vue.js";
|
|
3
|
+
import { userApi as f } from "../../api/index.js";
|
|
4
|
+
const v = /* @__PURE__ */ i({
|
|
5
|
+
inheritAttrs: !1,
|
|
6
|
+
__name: "index",
|
|
7
|
+
props: {
|
|
8
|
+
orgId: {},
|
|
9
|
+
pageSize: { default: 50 }
|
|
10
|
+
},
|
|
11
|
+
setup(t) {
|
|
12
|
+
const e = t;
|
|
13
|
+
async function n(o) {
|
|
14
|
+
const { items: a } = await f.page({
|
|
15
|
+
page: 1,
|
|
16
|
+
pageSize: e.pageSize,
|
|
17
|
+
name: o || void 0,
|
|
18
|
+
orgId: e.orgId ?? void 0
|
|
19
|
+
});
|
|
20
|
+
return a.map((r) => ({ label: `${r.name}(${r.account})`, value: r.id }));
|
|
21
|
+
}
|
|
22
|
+
const p = c(() => e.orgId);
|
|
23
|
+
return (o, a) => (s(), m(l, d({
|
|
24
|
+
fetch: n,
|
|
25
|
+
"reload-on": p.value
|
|
26
|
+
}, o.$attrs), null, 16, ["reload-on"]));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
export {
|
|
30
|
+
v as default
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=index.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../src/components/UserSelect/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 人员选择器:基于 ApiSelect,fetch=userApi.page(name 搜索 + 可选 orgId 部门过滤)。\n// 选项 label 为「姓名(账号)」,value 为用户 id。单/多选、placeholder 等一切经 $attrs 透传。\nimport { computed } from 'vue'\nimport type { SelectOption } from 'naive-ui'\nimport ApiSelect from '#/components/ApiSelect/index.vue'\nimport { userApi } from '#/api'\n\ndefineOptions({ inheritAttrs: false })\nconst props = withDefaults(defineProps<{ orgId?: number | null; pageSize?: number }>(), {\n pageSize: 50,\n})\n\nasync function fetch(keyword: string): Promise<SelectOption[]> {\n const { items } = await userApi.page({\n page: 1,\n pageSize: props.pageSize,\n name: keyword || undefined,\n orgId: props.orgId ?? undefined,\n })\n return items.map(u => ({ label: `${u.name}(${u.account})`, value: u.id }))\n}\nconst reloadOn = computed(() => props.orgId) // 部门过滤变化 → 重新拉\n</script>\n\n<template>\n <ApiSelect :fetch=\"fetch\" :reload-on=\"reloadOn\" v-bind=\"$attrs\" />\n</template>\n"],"names":["props","__props","fetch","keyword","items","userApi","u","reloadOn","computed","_openBlock","_createBlock","ApiSelect","_mergeProps","$attrs"],"mappings":";;;;;;;;;;;AASA,UAAMA,IAAQC;AAId,mBAAeC,EAAMC,GAA0C;AAC7D,YAAM,EAAE,OAAAC,EAAA,IAAU,MAAMC,EAAQ,KAAK;AAAA,QACnC,MAAM;AAAA,QACN,UAAUL,EAAM;AAAA,QAChB,MAAMG,KAAW;AAAA,QACjB,OAAOH,EAAM,SAAS;AAAA,MAAA,CACvB;AACD,aAAOI,EAAM,IAAI,CAAAE,OAAM,EAAE,OAAO,GAAGA,EAAE,IAAI,IAAIA,EAAE,OAAO,KAAK,OAAOA,EAAE,KAAK;AAAA,IAC3E;AACA,UAAMC,IAAWC,EAAS,MAAMR,EAAM,KAAK;sBAIzCS,EAAA,GAAAC,EAAkEC,GAAlEC,EAAkE;AAAA,MAAtD,OAAAV;AAAA,MAAe,aAAWK,EAAA;AAAA,IAAA,GAAkBM,EAAAA,MAAM,GAAA,MAAA,IAAA,CAAA,WAAA,CAAA;AAAA;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
code: string;
|
|
3
|
+
icon?: string | null;
|
|
4
|
+
size?: number;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {
|
|
7
|
+
isBadge: import('vue').ComputedRef<boolean>;
|
|
8
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
9
|
+
size: number;
|
|
10
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrandIcon.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import y from "../../assets/oauth/dingtalk.svg.js";
|
|
2
|
+
import q from "../../assets/oauth/gitee.svg.js";
|
|
3
|
+
import x from "../../assets/oauth/github.svg.js";
|
|
4
|
+
import B from "../../assets/oauth/qq.svg.js";
|
|
5
|
+
import C from "../../assets/oauth/wechat.svg.js";
|
|
6
|
+
import I from "../../assets/oauth/wecom.svg.js";
|
|
7
|
+
import { defineComponent as S, computed as n, openBlock as a, createElementBlock as r, normalizeStyle as j, createBlock as h, unref as m, toDisplayString as L } from "vue";
|
|
8
|
+
import { SmartIcon as b } from "smart-naive-icon";
|
|
9
|
+
import { resolveProviderIcon as O } from "../../utils/oauthBrand.js";
|
|
10
|
+
const U = ["src", "width", "height"], $ = {
|
|
11
|
+
key: 2,
|
|
12
|
+
class: "oauth-brand-letter"
|
|
13
|
+
}, N = /* @__PURE__ */ S({
|
|
14
|
+
__name: "BrandIcon",
|
|
15
|
+
props: {
|
|
16
|
+
code: {},
|
|
17
|
+
icon: {},
|
|
18
|
+
size: { default: 22 }
|
|
19
|
+
},
|
|
20
|
+
setup(t, { expose: v }) {
|
|
21
|
+
const d = t, e = n(() => O(d.code, d.icon)), _ = /* @__PURE__ */ Object.assign({
|
|
22
|
+
"../../assets/oauth/dingtalk.svg": y,
|
|
23
|
+
"../../assets/oauth/gitee.svg": q,
|
|
24
|
+
"../../assets/oauth/github.svg": x,
|
|
25
|
+
"../../assets/oauth/qq.svg": B,
|
|
26
|
+
"../../assets/oauth/wechat.svg": C,
|
|
27
|
+
"../../assets/oauth/wecom.svg": I
|
|
28
|
+
});
|
|
29
|
+
function k(o) {
|
|
30
|
+
const u = o.toLowerCase();
|
|
31
|
+
for (const l of ["svg", "png", "webp"]) {
|
|
32
|
+
const i = Object.entries(_).find(([z, g]) => {
|
|
33
|
+
var f;
|
|
34
|
+
return !g || typeof g != "string" ? !1 : (((f = z.replace(/\\/g, "/").split("/").pop()) == null ? void 0 : f.toLowerCase()) ?? "") === `${u}.${l}`;
|
|
35
|
+
});
|
|
36
|
+
if (i) return i[1];
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const s = n(() => e.value.kind !== "brand" ? null : k(e.value.code)), p = {
|
|
41
|
+
github: "ant-design:github-filled",
|
|
42
|
+
wechat: "ant-design:wechat-filled",
|
|
43
|
+
wecom: "ant-design:wechat-work-filled",
|
|
44
|
+
dingtalk: "ant-design:dingtalk-circle-filled",
|
|
45
|
+
qq: "ant-design:qq-circle-filled"
|
|
46
|
+
}, w = {
|
|
47
|
+
github: "#24292f",
|
|
48
|
+
wechat: "#07c160",
|
|
49
|
+
wecom: "#2b7de9",
|
|
50
|
+
dingtalk: "#0089ff",
|
|
51
|
+
qq: "#12b7f5",
|
|
52
|
+
gitee: "#c71d23"
|
|
53
|
+
}, c = n(() => {
|
|
54
|
+
if (e.value.kind !== "brand") return null;
|
|
55
|
+
const o = e.value.code;
|
|
56
|
+
return {
|
|
57
|
+
icon: p[o],
|
|
58
|
+
color: w[o] ?? "#666"
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
return v({ isBadge: n(() => !!s.value) }), (o, u) => {
|
|
62
|
+
var l, i;
|
|
63
|
+
return s.value ? (a(), r("img", {
|
|
64
|
+
key: 0,
|
|
65
|
+
class: "oauth-brand-badge",
|
|
66
|
+
src: s.value,
|
|
67
|
+
width: t.size,
|
|
68
|
+
height: t.size,
|
|
69
|
+
alt: "",
|
|
70
|
+
draggable: "false"
|
|
71
|
+
}, null, 8, U)) : (a(), r("span", {
|
|
72
|
+
key: 1,
|
|
73
|
+
class: "oauth-brand-icon",
|
|
74
|
+
style: j({ width: t.size + "px", height: t.size + "px", color: (l = c.value) == null ? void 0 : l.color }),
|
|
75
|
+
"aria-hidden": "true"
|
|
76
|
+
}, [
|
|
77
|
+
(i = c.value) != null && i.icon ? (a(), h(m(b), {
|
|
78
|
+
key: 0,
|
|
79
|
+
icon: c.value.icon,
|
|
80
|
+
size: t.size,
|
|
81
|
+
fallback: "ph:link-simple"
|
|
82
|
+
}, null, 8, ["icon", "size"])) : e.value.kind === "iconify" ? (a(), h(m(b), {
|
|
83
|
+
key: 1,
|
|
84
|
+
icon: e.value.name,
|
|
85
|
+
size: t.size,
|
|
86
|
+
fallback: "ph:link-simple"
|
|
87
|
+
}, null, 8, ["icon", "size"])) : (a(), r("span", $, L(e.value.kind === "letter" ? e.value.letter : "?"), 1))
|
|
88
|
+
], 4));
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
export {
|
|
93
|
+
N as default
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=BrandIcon2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrandIcon2.vue.js","sources":["../../../src/components/oauth/BrandIcon.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 外部登录品牌标:\n// 1) 优先本地 assets/oauth/{code}.svg|png(彩色圆标,Gitee 风)\n// 2) 再 Iconify 名\n// 3) 首字母\nimport { computed } from 'vue'\nimport { SmartIcon } from 'smart-naive-icon'\nimport { resolveProviderIcon, type BrandCode } from '#/utils/oauthBrand'\n\nconst props = withDefaults(\n defineProps<{\n code: string\n icon?: string | null\n size?: number\n }>(),\n { size: 22 },\n)\n\nconst resolved = computed(() => resolveProviderIcon(props.code, props.icon))\n\n// 内核自带的品牌圆标(assets/oauth/),库构建时内联进产物\nconst assetModules = import.meta.glob('../../assets/oauth/*.{svg,png,webp}', {\n eager: true,\n import: 'default',\n query: '?url',\n}) as Record<string, string>\n\nfunction localBadgeUrl(code: string): string | null {\n const c = code.toLowerCase()\n for (const ext of ['svg', 'png', 'webp'] as const) {\n const hit = Object.entries(assetModules).find(([path, url]) => {\n if (!url || typeof url !== 'string') return false\n const base = path.replace(/\\\\/g, '/').split('/').pop()?.toLowerCase() ?? ''\n return base === `${c}.${ext}`\n })\n if (hit) return hit[1]\n }\n return null\n}\n\nconst badgeUrl = computed(() => {\n if (resolved.value.kind !== 'brand') return null\n return localBadgeUrl(resolved.value.code)\n})\n\n/** 无本地图时的线标回退(仅占位,真正观感靠你放的本地圆标) */\nconst fallbackIconify: Partial<Record<BrandCode, string>> = {\n github: 'ant-design:github-filled',\n wechat: 'ant-design:wechat-filled',\n wecom: 'ant-design:wechat-work-filled',\n dingtalk: 'ant-design:dingtalk-circle-filled',\n qq: 'ant-design:qq-circle-filled',\n}\n\nconst fallbackColor: Partial<Record<BrandCode, string>> = {\n github: '#24292f',\n wechat: '#07c160',\n wecom: '#2b7de9',\n dingtalk: '#0089ff',\n qq: '#12b7f5',\n gitee: '#c71d23',\n}\n\nconst fallback = computed(() => {\n if (resolved.value.kind !== 'brand') return null\n const code = resolved.value.code\n return {\n icon: fallbackIconify[code],\n color: fallbackColor[code] ?? '#666',\n }\n})\n\n// 给父级判断:是否整图圆标(用于去掉按钮灰边)\ndefineExpose({ isBadge: computed(() => !!badgeUrl.value) })\n</script>\n\n<template>\n <!-- 本地彩色圆标:铺满按钮,图自带圆底 -->\n <img\n v-if=\"badgeUrl\"\n class=\"oauth-brand-badge\"\n :src=\"badgeUrl\"\n :width=\"size\"\n :height=\"size\"\n alt=\"\"\n draggable=\"false\"\n />\n <span\n v-else\n class=\"oauth-brand-icon\"\n :style=\"{ width: size + 'px', height: size + 'px', color: fallback?.color }\"\n aria-hidden=\"true\"\n >\n <SmartIcon v-if=\"fallback?.icon\" :icon=\"fallback.icon\" :size=\"size\" fallback=\"ph:link-simple\" />\n <SmartIcon\n v-else-if=\"resolved.kind === 'iconify'\"\n :icon=\"resolved.name\"\n :size=\"size\"\n fallback=\"ph:link-simple\"\n />\n <span v-else class=\"oauth-brand-letter\">\n {{ resolved.kind === 'letter' ? resolved.letter : '?' }}\n </span>\n </span>\n</template>\n\n<style scoped>\n/* 方形素材也强制裁成圆(Gitee 风);cover 铺满避免留白变「方块」 */\n.oauth-brand-badge {\n display: block;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n border-radius: 50%;\n overflow: hidden;\n pointer-events: none;\n user-select: none;\n flex-shrink: 0;\n}\n.oauth-brand-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n}\n.oauth-brand-letter {\n font-size: 12px;\n font-weight: 700;\n color: var(--color-text-secondary, #666);\n line-height: 1;\n}\n</style>\n"],"names":["props","__props","resolved","computed","resolveProviderIcon","assetModules","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","localBadgeUrl","code","c","ext","hit","path","url","_a","badgeUrl","fallbackIconify","fallbackColor","fallback","__expose","_createElementBlock","_b","_createBlock","_unref","SmartIcon","_hoisted_2","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAQC,GASRC,IAAWC,EAAS,MAAMC,EAAoBJ,EAAM,MAAMA,EAAM,IAAI,CAAC,GAGrEK,IAAe,uBAAA,OAAA;AAAA,MAAA,mCAAAC;AAAA,MAAA,gCAAAC;AAAA,MAAA,iCAAAC;AAAA,MAAA,6BAAAC;AAAA,MAAA,iCAAAC;AAAA,MAAA,gCAAAC;AAAA,IAAA,CAAA;AAMrB,aAASC,EAAcC,GAA6B;AAClD,YAAMC,IAAID,EAAK,YAAA;AACf,iBAAWE,KAAO,CAAC,OAAO,OAAO,MAAM,GAAY;AACjD,cAAMC,IAAM,OAAO,QAAQX,CAAY,EAAE,KAAK,CAAC,CAACY,GAAMC,CAAG,MAAM;;AAC7D,iBAAI,CAACA,KAAO,OAAOA,KAAQ,WAAiB,QAC/BC,IAAAF,EAAK,QAAQ,OAAO,GAAG,EAAE,MAAM,GAAG,EAAE,UAApC,gBAAAE,EAA2C,kBAAiB,QACzD,GAAGL,CAAC,IAAIC,CAAG;AAAA,QAC7B,CAAC;AACD,YAAIC,EAAK,QAAOA,EAAI,CAAC;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,UAAMI,IAAWjB,EAAS,MACpBD,EAAS,MAAM,SAAS,UAAgB,OACrCU,EAAcV,EAAS,MAAM,IAAI,CACzC,GAGKmB,IAAsD;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU;AAAA,MACV,IAAI;AAAA,IAAA,GAGAC,IAAoD;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,IAAA,GAGHC,IAAWpB,EAAS,MAAM;AAC9B,UAAID,EAAS,MAAM,SAAS,QAAS,QAAO;AAC5C,YAAMW,IAAOX,EAAS,MAAM;AAC5B,aAAO;AAAA,QACL,MAAMmB,EAAgBR,CAAI;AAAA,QAC1B,OAAOS,EAAcT,CAAI,KAAK;AAAA,MAAA;AAAA,IAElC,CAAC;AAGD,WAAAW,EAAa,EAAE,SAASrB,EAAS,MAAM,CAAC,CAACiB,EAAS,KAAK,GAAG;;aAMhDA,EAAA,cADRK,EAQE,OAAA;AAAA;QANA,OAAM;AAAA,QACL,KAAKL,EAAA;AAAA,QACL,OAAOnB,EAAA;AAAA,QACP,QAAQA,EAAA;AAAA,QACT,KAAI;AAAA,QACJ,WAAU;AAAA,MAAA,wBAEZwB,EAgBO,QAAA;AAAA;QAdL,OAAM;AAAA,QACL,kBAAgBxB,EAAA,OAAI,MAAA,QAAiBA,SAAI,MAAA,QAAgBkB,IAAAI,EAAA,UAAA,gBAAAJ,EAAU,OAAK;AAAA,QACzE,eAAY;AAAA,MAAA;SAEKO,IAAAH,EAAA,UAAA,QAAAG,EAAU,aAA3BC,EAAgGC,EAAAC,CAAA,GAAA;AAAA;UAA9D,MAAMN,EAAA,MAAS;AAAA,UAAO,MAAMtB,EAAA;AAAA,UAAM,UAAS;AAAA,QAAA,iCAEhEC,EAAA,MAAS,SAAI,kBAD1ByB,EAKEC,EAAAC,CAAA,GAAA;AAAA;UAHC,MAAM3B,EAAA,MAAS;AAAA,UACf,MAAMD,EAAA;AAAA,UACP,UAAS;AAAA,QAAA,uCAEXwB,EAEO,QAFPK,GAEOC,EADF7B,EAAA,MAAS,SAAI,WAAgBA,EAAA,MAAS,SAAM,GAAA,GAAA,CAAA;AAAA,MAAA;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { MenuNode } from '../types/menu';
|
|
2
|
+
/**
|
|
3
|
+
* 菜单节点的可物化结果。三种变体把 iframe/view/missing 各自所需的数据收窄,调用方无需再次
|
|
4
|
+
* 解释后端的 `component` 字符串。
|
|
5
|
+
*/
|
|
6
|
+
export type MenuRouteDescriptor = {
|
|
7
|
+
kind: 'iframe';
|
|
8
|
+
path: string;
|
|
9
|
+
name: string;
|
|
10
|
+
title: string;
|
|
11
|
+
icon?: string;
|
|
12
|
+
iframeSrc: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'view';
|
|
15
|
+
path: string;
|
|
16
|
+
name: string;
|
|
17
|
+
title: string;
|
|
18
|
+
icon?: string;
|
|
19
|
+
viewKey: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'missing';
|
|
22
|
+
path: string;
|
|
23
|
+
name: string;
|
|
24
|
+
title: string;
|
|
25
|
+
icon?: string;
|
|
26
|
+
component: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* 只负责菜单路由决策,让分支逻辑能脱离 vue-router 做单测;路由注册与组件物化仍由
|
|
30
|
+
* `useAuthMenu` 负责。`viewKeys` 必须来自同一张页面 glob,避免存在性判断与 loader 来源漂移。
|
|
31
|
+
*/
|
|
32
|
+
export declare function describeMenuRoute(node: MenuNode, viewKeys: ReadonlySet<string>): MenuRouteDescriptor | null;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isHttpUrl as n } from "../utils/url.js";
|
|
2
|
+
import { menuTitleKey as p } from "../locales/menuTitle.js";
|
|
3
|
+
import { MenuType as u } from "../types/menu.js";
|
|
4
|
+
function s(t, a) {
|
|
5
|
+
if (t.type !== u.Menu || !t.path || n(t.path)) return null;
|
|
6
|
+
const r = t.path.startsWith("/") ? t.path : `/${t.path}`, e = `menu-${t.id}`, i = t.component;
|
|
7
|
+
if (i && n(i))
|
|
8
|
+
return {
|
|
9
|
+
kind: "iframe",
|
|
10
|
+
path: r,
|
|
11
|
+
name: e,
|
|
12
|
+
title: p(t.title, t.path),
|
|
13
|
+
icon: t.icon,
|
|
14
|
+
iframeSrc: i
|
|
15
|
+
};
|
|
16
|
+
if (!i) return null;
|
|
17
|
+
const c = i.replace(/^\/+/, "").replace(/\.vue$/, "");
|
|
18
|
+
return a.has(c) ? {
|
|
19
|
+
kind: "view",
|
|
20
|
+
path: r,
|
|
21
|
+
name: e,
|
|
22
|
+
title: p(t.title, t.path),
|
|
23
|
+
icon: t.icon,
|
|
24
|
+
viewKey: c
|
|
25
|
+
} : {
|
|
26
|
+
kind: "missing",
|
|
27
|
+
path: r,
|
|
28
|
+
name: e,
|
|
29
|
+
title: p(t.title, t.path),
|
|
30
|
+
icon: t.icon,
|
|
31
|
+
component: i
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
s as describeMenuRoute
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=authMenuRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authMenuRoute.js","sources":["../../src/composables/authMenuRoute.ts"],"sourcesContent":["import { isHttpUrl } from '#/utils/url'\nimport { menuTitleKey } from '#/locales/menuTitle'\nimport { MenuType, type MenuNode } from '#/types/menu'\n\n/**\n * 菜单节点的可物化结果。三种变体把 iframe/view/missing 各自所需的数据收窄,调用方无需再次\n * 解释后端的 `component` 字符串。\n */\nexport type MenuRouteDescriptor =\n | { kind: 'iframe'; path: string; name: string; title: string; icon?: string; iframeSrc: string }\n | { kind: 'view'; path: string; name: string; title: string; icon?: string; viewKey: string }\n | { kind: 'missing'; path: string; name: string; title: string; icon?: string; component: string }\n\n/**\n * 只负责菜单路由决策,让分支逻辑能脱离 vue-router 做单测;路由注册与组件物化仍由\n * `useAuthMenu` 负责。`viewKeys` 必须来自同一张页面 glob,避免存在性判断与 loader 来源漂移。\n */\nexport function describeMenuRoute(\n node: MenuNode,\n viewKeys: ReadonlySet<string>,\n): MenuRouteDescriptor | null {\n if (node.type !== MenuType.Menu || !node.path || isHttpUrl(node.path)) return null\n\n const path = node.path.startsWith('/') ? node.path : `/${node.path}`\n const name = `menu-${node.id}`\n const component = node.component\n if (component && isHttpUrl(component)) {\n return {\n kind: 'iframe',\n path,\n name,\n title: menuTitleKey(node.title, node.path),\n icon: node.icon,\n iframeSrc: component,\n }\n }\n if (!component) return null\n\n // 页面表的 key 形如 system/user/index;容忍存量配置带前导斜杠或 .vue 后缀\n const viewKey = component.replace(/^\\/+/, '').replace(/\\.vue$/, '')\n if (viewKeys.has(viewKey))\n return {\n kind: 'view',\n path,\n name,\n title: menuTitleKey(node.title, node.path),\n icon: node.icon,\n viewKey,\n }\n return {\n kind: 'missing',\n path,\n name,\n title: menuTitleKey(node.title, node.path),\n icon: node.icon,\n component,\n }\n}\n"],"names":["describeMenuRoute","node","viewKeys","MenuType","isHttpUrl","path","name","component","menuTitleKey","viewKey"],"mappings":";;;AAiBO,SAASA,EACdC,GACAC,GAC4B;AAC5B,MAAID,EAAK,SAASE,EAAS,QAAQ,CAACF,EAAK,QAAQG,EAAUH,EAAK,IAAI,EAAG,QAAO;AAE9E,QAAMI,IAAOJ,EAAK,KAAK,WAAW,GAAG,IAAIA,EAAK,OAAO,IAAIA,EAAK,IAAI,IAC5DK,IAAO,QAAQL,EAAK,EAAE,IACtBM,IAAYN,EAAK;AACvB,MAAIM,KAAaH,EAAUG,CAAS;AAClC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAAF;AAAA,MACA,MAAAC;AAAA,MACA,OAAOE,EAAaP,EAAK,OAAOA,EAAK,IAAI;AAAA,MACzC,MAAMA,EAAK;AAAA,MACX,WAAWM;AAAA,IAAA;AAGf,MAAI,CAACA,EAAW,QAAO;AAGvB,QAAME,IAAUF,EAAU,QAAQ,QAAQ,EAAE,EAAE,QAAQ,UAAU,EAAE;AAClE,SAAIL,EAAS,IAAIO,CAAO,IACf;AAAA,IACL,MAAM;AAAA,IACN,MAAAJ;AAAA,IACA,MAAAC;AAAA,IACA,OAAOE,EAAaP,EAAK,OAAOA,EAAK,IAAI;AAAA,IACzC,MAAMA,EAAK;AAAA,IACX,SAAAQ;AAAA,EAAA,IAEG;AAAA,IACL,MAAM;AAAA,IACN,MAAAJ;AAAA,IACA,MAAAC;AAAA,IACA,OAAOE,EAAaP,EAAK,OAAOA,EAAK,IAAI;AAAA,IACzC,MAAMA,EAAK;AAAA,IACX,WAAAM;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { personalApi as i } from "../api/index.js";
|
|
2
|
+
import { buildRoutesForModule as s } from "./useAuthMenu.js";
|
|
3
|
+
import { loadSite as a } from "./useSite.js";
|
|
4
|
+
import { useAuthStore as m } from "../stores/auth.js";
|
|
5
|
+
import { useDictStore as d } from "../stores/dict.js";
|
|
6
|
+
async function f() {
|
|
7
|
+
d().invalidate(), await a(!0);
|
|
8
|
+
const e = m(), [r, t] = await Promise.all([
|
|
9
|
+
i.permissions().then((o) => ({ ok: !0, codes: o })).catch(() => ({ ok: !1, codes: [] })),
|
|
10
|
+
i.profile().then((o) => ({ sadm: o.isSuperAdmin })).catch(() => ({ sadm: !1 }))
|
|
11
|
+
]);
|
|
12
|
+
e.permissionCodes = r.codes, e.permissionsLoaded = r.ok, e.isSuperAdmin = t.sadm, e.currentModuleId != null && await s(e.currentModuleId);
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
f as clearClientCache
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=clearClientCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearClientCache.js","sources":["../../src/composables/clearClientCache.ts"],"sourcesContent":["import { personalApi } from '#/api'\nimport { buildRoutesForModule } from '#/composables/useAuthMenu'\nimport { loadSite } from '#/composables/useSite'\nimport { useAuthStore } from '#/stores/auth'\nimport { useDictStore } from '#/stores/dict'\n\n/**\n * 清除前端会话缓存并尽量从服务端重拉:\n * - 字典内存缓存全清\n * - 站点品牌配置强制重取\n * - 权限码 / 超管标记重取\n * - 当前应用菜单树与动态路由重建\n *\n * 不碰登录态、外观偏好、标签页——只解决\"改了字典/菜单/权限还看到旧数据\"。\n */\nexport async function clearClientCache(): Promise<void> {\n useDictStore().invalidate()\n await loadSite(true)\n\n const auth = useAuthStore()\n const [perm, profile] = await Promise.all([\n personalApi\n .permissions()\n .then(codes => ({ ok: true as const, codes }))\n .catch(() => ({ ok: false as const, codes: [] as string[] })),\n personalApi\n .profile()\n .then(p => ({ sadm: p.isSuperAdmin }))\n .catch(() => ({ sadm: false })),\n ])\n auth.permissionCodes = perm.codes\n auth.permissionsLoaded = perm.ok\n auth.isSuperAdmin = profile.sadm\n\n if (auth.currentModuleId != null) {\n await buildRoutesForModule(auth.currentModuleId)\n }\n}\n"],"names":["clearClientCache","useDictStore","loadSite","auth","useAuthStore","perm","profile","personalApi","codes","p","buildRoutesForModule"],"mappings":";;;;;AAeA,eAAsBA,IAAkC;AACtD,EAAAC,EAAA,EAAe,WAAA,GACf,MAAMC,EAAS,EAAI;AAEnB,QAAMC,IAAOC,EAAA,GACP,CAACC,GAAMC,CAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,IACxCC,EACG,YAAA,EACA,KAAK,CAAAC,OAAU,EAAE,IAAI,IAAe,OAAAA,EAAA,EAAQ,EAC5C,MAAM,OAAO,EAAE,IAAI,IAAgB,OAAO,CAAA,IAAiB;AAAA,IAC9DD,EACG,QAAA,EACA,KAAK,CAAAE,OAAM,EAAE,MAAMA,EAAE,aAAA,EAAe,EACpC,MAAM,OAAO,EAAE,MAAM,KAAQ;AAAA,EAAA,CACjC;AACD,EAAAN,EAAK,kBAAkBE,EAAK,OAC5BF,EAAK,oBAAoBE,EAAK,IAC9BF,EAAK,eAAeG,EAAQ,MAExBH,EAAK,mBAAmB,QAC1B,MAAMO,EAAqBP,EAAK,eAAe;AAEnD;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { resetRouter as s, router as n, registerDynamic as r } from "../router/index.js";
|
|
2
|
+
import { namedPage as m } from "../router/namedPage.js";
|
|
3
|
+
import { registerDetailRoutes as l } from "../router/detailRoutes.js";
|
|
4
|
+
import { viewComponentPaths as f, getView as d } from "../router/viewRegistry.js";
|
|
5
|
+
import { registerViews as D } from "../router/viewRegistry.js";
|
|
6
|
+
import { useAuthStore as h } from "../stores/auth.js";
|
|
7
|
+
import { personalApi as R } from "../api/index.js";
|
|
8
|
+
import { describeMenuRoute as g } from "./authMenuRoute.js";
|
|
9
|
+
function a(i) {
|
|
10
|
+
return i.flatMap((t) => {
|
|
11
|
+
var o;
|
|
12
|
+
return [t, ...(o = t.children) != null && o.length ? a(t.children) : []];
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
async function b(i) {
|
|
16
|
+
const t = h(), o = await R.menu(i);
|
|
17
|
+
t.menuTree = o, t.currentModuleId = i;
|
|
18
|
+
const u = new Set(f());
|
|
19
|
+
s();
|
|
20
|
+
for (const c of a(o)) {
|
|
21
|
+
const e = g(c, u);
|
|
22
|
+
if (!e) continue;
|
|
23
|
+
if (n.hasRoute(e.name) && n.removeRoute(e.name), e.kind === "iframe") {
|
|
24
|
+
n.addRoute("layout", {
|
|
25
|
+
path: e.path,
|
|
26
|
+
name: e.name,
|
|
27
|
+
component: m(e.name, () => import("../views/embed/iframe.vue.js")),
|
|
28
|
+
meta: { title: e.title, icon: e.icon, keepAlive: !0, iframeSrc: e.iframeSrc }
|
|
29
|
+
}), r(e.name);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (e.kind === "missing") {
|
|
33
|
+
console.warn("[menu] 缺少视图组件:", e.component), n.addRoute("layout", {
|
|
34
|
+
path: e.path,
|
|
35
|
+
name: e.name,
|
|
36
|
+
component: m(e.name, () => import("../views/error/MissingRoute.vue.js")),
|
|
37
|
+
meta: {
|
|
38
|
+
title: e.title,
|
|
39
|
+
icon: e.icon,
|
|
40
|
+
keepAlive: !0,
|
|
41
|
+
missingComponent: e.component
|
|
42
|
+
}
|
|
43
|
+
}), r(e.name);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const p = d(e.viewKey);
|
|
47
|
+
n.addRoute("layout", {
|
|
48
|
+
path: e.path,
|
|
49
|
+
name: e.name,
|
|
50
|
+
component: m(e.name, p),
|
|
51
|
+
meta: { title: e.title, icon: e.icon, keepAlive: !0 }
|
|
52
|
+
}), r(e.name);
|
|
53
|
+
}
|
|
54
|
+
l(), t.routesReady = !0;
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
b as buildRoutesForModule,
|
|
58
|
+
D as registerViews,
|
|
59
|
+
f as viewComponentPaths
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=useAuthMenu.js.map
|