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":"index2.vue.js","sources":["../../../../src/views/system/role/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 角色管理 = SmartTable CRUD(照职位范式)+ 两个专属抽屉:授权菜单(勾选菜单树)、数据范围(选范围类型 + 自定义机构)。\n// 删角色会**物理**删掉用户↔角色关联(不可恢复)——所以删前先查一次持有人数当面告知,单删与批量删都盖到,\n// 只给行内按钮加警告的话,勾选 + 批量删就绕过去了。\nimport { computed, h, onMounted, reactive, ref, shallowRef } from 'vue'\nimport {\n NButton,\n NSpace,\n NInput,\n NInputNumber,\n NSwitch,\n NForm,\n NFormItem,\n NSelect,\n NDropdown,\n useMessage,\n type FormInst,\n type FormRules,\n} from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport FormContainer from '#/components/FormContainer/index.vue'\nimport StatusSwitch from '#/components/StatusSwitch/index.vue'\nimport OrgTreeSelect from '#/components/OrgTreeSelect/index.vue'\nimport UserPicker from '#/components/UserPicker/index.vue'\nimport GrantMenuTable from './components/GrantMenuTable.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { useBatchDelete } from '#/composables/useBatchDelete'\nimport { roleApi, menuApi, moduleApi, userApi } from '#/api'\nimport { useAuthStore } from '#/stores/auth'\nimport { translateError } from '#/utils/error'\nimport { DataScopeType, type ModuleRow, type RoleInput, type SysRole } from '#/types/api'\nimport type { MenuTreeNode } from '#/types/menu'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { confirm } = useConfirm()\nconst auth = useAuthStore()\nconst tableRef = ref<SmartTableInst<SysRole>>()\n\n/** 「未分配」哨兵:雪花 id 无 0,用它表示 moduleId==null 的顶级目录分组。 */\nconst UNASSIGNED = 0\n/** 授权抽屉的「所属应用」下拉数据源。 */\nconst modules = shallowRef<ModuleRow[]>([])\nonMounted(async () => {\n try {\n modules.value = await moduleApi.list()\n } catch {\n // 模块列表仅供授权抽屉的「所属应用」下拉;拉取失败不阻塞角色管理主流程。\n }\n})\n\n/**\n * 持有该角色的用户数。复用用户分页端点(Size=1 只要 total),不新开接口。\n * 查不到(如只有角色 CRUD、没有用户查询权限的管理员会 403)返回 null → 退回通用文案,不阻断删除:\n * 用户数只用来让删除者知情,不改变谁能删什么。\n */\nasync function countUsers(roleId: number): Promise<number | null> {\n try {\n const { total } = await userApi.page({ page: 1, pageSize: 1, roleId })\n return total\n } catch {\n return null\n }\n}\n\nconst {\n checkedKeys,\n hasSelection,\n run: batchDelete,\n} = useBatchDelete({\n remove: roleApi.batchRemove,\n refresh: () => tableRef.value?.refresh(),\n successMsg: t('role.deleted'),\n content: async ids => {\n const counts = await Promise.all(ids.map(countUsers))\n if (counts.some(n => n === null)) return t('common.batchDeleteConfirm', { count: ids.length })\n const users = counts.reduce<number>((sum, n) => sum + n!, 0)\n return users === 0\n ? t('common.batchDeleteConfirm', { count: ids.length })\n : t('role.batchDeleteWithUsers', { count: ids.length, users })\n },\n})\n\nasync function askDelete(r: SysRole) {\n const n = await countUsers(r.id)\n const content =\n n === null\n ? t('role.deleteConfirm', { name: r.name })\n : n === 0\n ? t('role.deleteConfirmNoUsers', { name: r.name })\n : t('role.deleteConfirmWithUsers', { name: r.name, count: n })\n const ok = await confirm({\n content,\n type: 'error',\n action: () => roleApi.remove(r.id),\n successMsg: t('role.deleted'),\n })\n if (ok) tableRef.value?.refresh()\n}\n\nconst toInput = (r: SysRole): RoleInput => ({\n name: r.name,\n code: r.code,\n sort: r.sort,\n enabled: r.enabled,\n remark: r.remark ?? '',\n isDelegatable: r.isDelegatable ?? false,\n})\n\nconst columns: SmartTableColumn<SysRole>[] = [\n { type: 'selection' },\n\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n { key: 'code', title: () => t('role.code') },\n { key: 'name', title: () => t('role.name'), search: true },\n { key: 'sort', title: () => t('role.sort'), width: 80 },\n {\n key: 'enabled',\n title: () => t('common.status'),\n width: 90,\n render: r =>\n h(StatusSwitch, {\n value: r.enabled,\n disabled: !auth.isSuperAdmin || !auth.hasPerm('PUT:/api/v1/sys/role/{id}'),\n request: (next: boolean) => roleApi.update(r.id, { ...toInput(r), enabled: next }),\n 'onUpdate:value': (v: boolean) => {\n r.enabled = v\n },\n }),\n },\n {\n key: 'remark',\n title: () => t('role.remark'),\n ellipsis: { tooltip: true },\n render: r => r.remark || '—',\n },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 240,\n fixed: 'right',\n hideInSetting: true,\n render: r => {\n // 角色定义(编辑/删除)与角色授权面(授权菜单/数据范围)为超管专属;\n // 仅\"授权用户\"(角色指派面)对普通管理员开放(经 RoleGrantPolicy 收口校验)。\n const dropdownOptions = [\n auth.isSuperAdmin && auth.hasPerm('PUT:/api/v1/sys/role/menu')\n ? { label: t('role.grantMenus'), key: 'menus' }\n : null,\n auth.isSuperAdmin && auth.hasPerm('PUT:/api/v1/sys/role/datascope')\n ? { label: t('role.dataScope'), key: 'scope' }\n : null,\n auth.hasPerm('PUT:/api/v1/sys/role/users')\n ? { label: t('role.grantUsers'), key: 'users' }\n : null,\n ].filter((o): o is { label: string; key: string } => o !== null)\n return h(NSpace, { size: 4, wrapItem: false }, () => [\n auth.isSuperAdmin && auth.hasPerm('PUT:/api/v1/sys/role/{id}')\n ? h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openEdit(r) },\n () => t('common.edit'),\n )\n : null,\n auth.isSuperAdmin && auth.hasPerm('DELETE:/api/v1/sys/role/{id}')\n ? h(\n NButton,\n { size: 'small', quaternary: true, type: 'error', onClick: () => askDelete(r) },\n () => t('common.delete'),\n )\n : null,\n dropdownOptions.length\n ? h(\n NDropdown,\n {\n options: dropdownOptions,\n onSelect: (key: string) => {\n if (key === 'menus') openMenus(r)\n else if (key === 'scope') openScope(r)\n else openUsers(r)\n },\n },\n () => h(NButton, { size: 'small', quaternary: true }, () => t('common.more')),\n )\n : null,\n ])\n },\n },\n]\n\n// ── 新增/编辑弹窗 ──\nconst show = ref(false)\nconst formRef = ref<FormInst | null>(null)\nconst editingId = ref<number | null>(null)\nconst rules: FormRules = {\n code: {\n required: true,\n whitespace: true,\n message: () => t('role.codeRequired'),\n trigger: ['input', 'blur'],\n },\n name: {\n required: true,\n whitespace: true,\n message: () => t('role.nameRequired'),\n trigger: ['input', 'blur'],\n },\n}\nconst blank = (): RoleInput => ({\n name: '',\n code: '',\n sort: 0,\n enabled: true,\n remark: '',\n isDelegatable: false,\n})\nconst form = reactive<RoleInput>(blank())\n\nfunction openAdd() {\n editingId.value = null\n Object.assign(form, blank())\n show.value = true\n}\nfunction openEdit(r: SysRole) {\n editingId.value = r.id\n Object.assign(form, toInput(r))\n show.value = true\n}\nasync function save() {\n await formRef.value?.validate()\n try {\n if (editingId.value === null) await roleApi.add({ ...form })\n else await roleApi.update(editingId.value, { ...form })\n message.success(t('role.saved'))\n await tableRef.value?.refresh()\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n\n// ── 授权菜单抽屉(分组表格 → 全量替换角色授权)──\nconst showMenus = ref(false)\n// 整份替换 + 只读(勾选态在 GrantMenuTable 自己的 reactive 里),不需要深响应\nconst menuTree = shallowRef<MenuTreeNode[]>([])\nconst menuGranted = shallowRef<number[]>([])\nconst menuRoleId = ref<number | null>(null)\nconst defaultModuleId = ref(UNASSIGNED)\n\nasync function openMenus(r: SysRole) {\n menuRoleId.value = r.id\n try {\n const [tree, granted] = await Promise.all([menuApi.tree(), roleApi.getMenus(r.id)])\n menuTree.value = tree\n menuGranted.value = granted\n defaultModuleId.value = auth.currentModuleId ?? modules.value[0]?.id ?? UNASSIGNED\n showMenus.value = true\n } catch (e) {\n message.error(translateError(e))\n }\n}\nfunction onMenuCheckedUpdate(ids: number[]) {\n menuGranted.value = ids\n}\nasync function saveMenus() {\n if (menuRoleId.value === null) return\n try {\n await roleApi.setMenus(menuRoleId.value, menuGranted.value)\n message.success(t('role.grantSaved'))\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n\n// ── 授权用户(UserPicker) ──\nconst userPickerRef = ref<InstanceType<typeof UserPicker> | null>(null)\nconst userRoleId = ref<number | null>(null)\n\nasync function openUsers(r: SysRole) {\n userRoleId.value = r.id\n try {\n const ids = await roleApi.getUsers(r.id)\n userPickerRef.value?.open(ids)\n } catch (e) {\n message.error(translateError(e))\n }\n}\nasync function onUserConfirm(ids: number[]) {\n if (userRoleId.value === null) return\n try {\n await roleApi.setUsers(userRoleId.value, ids)\n message.success(t('role.grantUsersSaved'))\n } catch (e) {\n message.error(translateError(e))\n }\n}\n\n// ── 数据范围抽屉 ──\nconst showScope = ref(false)\nconst scopeRoleId = ref<number | null>(null)\nconst scopeForm = reactive<{ scopeType: DataScopeType; customOrgIds: number[] }>({\n scopeType: DataScopeType.Org,\n customOrgIds: [],\n})\nconst isCustom = computed(() => scopeForm.scopeType === DataScopeType.Custom)\nconst scopeOptions = computed(() => [\n { label: t('role.scope.all'), value: DataScopeType.All },\n { label: t('role.scope.org'), value: DataScopeType.Org },\n { label: t('role.scope.orgAndChildren'), value: DataScopeType.OrgAndChildren },\n { label: t('role.scope.self'), value: DataScopeType.Self },\n { label: t('role.scope.custom'), value: DataScopeType.Custom },\n])\nasync function openScope(r: SysRole) {\n scopeRoleId.value = r.id\n try {\n const cfg = await roleApi.getDataScope(r.id)\n scopeForm.scopeType = cfg?.scopeType ?? DataScopeType.Org\n scopeForm.customOrgIds = cfg?.customOrgIds\n ? cfg.customOrgIds.split(',').filter(Boolean).map(Number)\n : []\n showScope.value = true\n } catch (e) {\n message.error(translateError(e))\n }\n}\nasync function saveScope() {\n if (scopeRoleId.value === null) return\n try {\n await roleApi.setDataScope(\n scopeRoleId.value,\n scopeForm.scopeType,\n isCustom.value ? scopeForm.customOrgIds : undefined,\n )\n message.success(t('role.scopeSaved'))\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n</script>\n\n<template>\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"roleApi.page\"\n flex-height\n virtual-scroll\n storage-key=\"sys-role\"\n :checked-row-keys=\"checkedKeys\"\n @update:checked-row-keys=\"(keys: (string | number)[]) => (checkedKeys = keys)\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button\n v-if=\"auth.isSuperAdmin\"\n v-auth=\"'POST:/api/v1/sys/role/add'\"\n type=\"primary\"\n @click=\"openAdd\"\n >\n <template #icon><AppIcon icon=\"ph:plus\" :size=\"16\" /></template>\n {{ t('common.add') }}\n </n-button>\n <n-button\n v-if=\"auth.isSuperAdmin\"\n v-auth=\"'POST:/api/v1/sys/role/batch-delete'\"\n type=\"error\"\n :disabled=\"!hasSelection\"\n @click=\"batchDelete\"\n >\n <template #icon><AppIcon icon=\"ph:trash\" :size=\"16\" /></template>\n {{ t('common.batchDelete') }}\n </n-button>\n </template>\n </SmartTable>\n\n <!-- 新增/编辑 -->\n <FormContainer\n v-model:show=\"show\"\n :title=\"editingId === null ? t('role.addTitle') : t('role.editTitle')\"\n :width=\"480\"\n :on-confirm=\"save\"\n :confirm-text=\"t('common.save')\"\n >\n <n-form ref=\"formRef\" :model=\"form\" :rules=\"rules\" label-placement=\"left\" :label-width=\"80\">\n <n-form-item :label=\"t('role.code')\" path=\"code\">\n <n-input\n v-model:value=\"form.code\"\n :placeholder=\"t('role.code')\"\n :disabled=\"editingId !== null\"\n />\n </n-form-item>\n <n-form-item :label=\"t('role.name')\" path=\"name\">\n <n-input v-model:value=\"form.name\" :placeholder=\"t('role.name')\" />\n </n-form-item>\n <n-form-item :label=\"t('role.sort')\">\n <n-input-number v-model:value=\"form.sort\" :min=\"0\" style=\"width: 160px\" />\n </n-form-item>\n <n-form-item :label=\"t('role.remark')\">\n <n-input\n v-model:value=\"form.remark as string\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"t('role.remark')\"\n />\n </n-form-item>\n <n-form-item :label=\"t('common.status')\">\n <n-switch v-model:value=\"form.enabled\" />\n </n-form-item>\n <n-form-item v-if=\"auth.isSuperAdmin\" :label=\"t('role.isDelegatable')\">\n <n-switch v-model:value=\"form.isDelegatable as boolean\" />\n </n-form-item>\n </n-form>\n </FormContainer>\n\n <!-- 授权菜单 -->\n <FormContainer\n v-model:show=\"showMenus\"\n :title=\"t('role.grantMenus')\"\n :width=\"820\"\n :on-confirm=\"saveMenus\"\n :confirm-text=\"t('common.save')\"\n >\n <GrantMenuTable\n :tree=\"menuTree\"\n :granted=\"menuGranted\"\n :modules=\"modules\"\n :default-module-id=\"defaultModuleId\"\n @update:checked=\"onMenuCheckedUpdate\"\n />\n </FormContainer>\n\n <!-- 授权用户 -->\n <UserPicker ref=\"userPickerRef\" @confirm=\"onUserConfirm\" />\n\n <!-- 数据范围 -->\n <FormContainer\n v-model:show=\"showScope\"\n :title=\"t('role.dataScope')\"\n :width=\"480\"\n :on-confirm=\"saveScope\"\n :confirm-text=\"t('common.save')\"\n >\n <n-form :model=\"scopeForm\" label-placement=\"left\" :label-width=\"90\">\n <n-form-item :label=\"t('role.scopeType')\">\n <n-select v-model:value=\"scopeForm.scopeType\" :options=\"scopeOptions\" />\n </n-form-item>\n <n-form-item v-if=\"isCustom\" :label=\"t('role.customOrgs')\">\n <OrgTreeSelect\n v-model:value=\"scopeForm.customOrgIds\"\n multiple\n :placeholder=\"t('role.customOrgsHint')\"\n />\n </n-form-item>\n </n-form>\n </FormContainer>\n</template>\n"],"names":["UNASSIGNED","useI18n","message","useMessage","confirm","useConfirm","auth","useAuthStore","tableRef","ref","modules","shallowRef","onMounted","moduleApi","countUsers","roleId","total","userApi","checkedKeys","hasSelection","batchDelete","useBatchDelete","roleApi","_a","ids","counts","n","users","sum","askDelete","r","content","toInput","columns","h","StatusSwitch","next","v","dropdownOptions","o","NSpace","NButton","openEdit","NDropdown","key","openMenus","openScope","show","formRef","editingId","rules","blank","form","reactive","openAdd","save","_b","e","translateError","showMenus","menuTree","menuGranted","menuRoleId","defaultModuleId","tree","granted","menuApi","onMenuCheckedUpdate","saveMenus","userPickerRef","userRoleId","openUsers","onUserConfirm","showScope","scopeRoleId","scopeForm","DataScopeType","isCustom","computed","scopeOptions","cfg","saveScope","_createVNode","_unref","SmartTable","_cache","keys","_createBlock","AppIcon","_createTextVNode","FormContainer","$event","NForm","NFormItem","NInput","NInputNumber","NSwitch","GrantMenuTable","UserPicker","NSelect","OrgTreeSelect"],"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,80 @@
|
|
|
1
|
+
import { defineComponent as p, ref as d, openBlock as k, createBlock as y, unref as r, h as g } from "vue";
|
|
2
|
+
import { useMessage as h, NButton as x } from "naive-ui";
|
|
3
|
+
import { useI18n as S } from "vue-i18n";
|
|
4
|
+
import { SmartTable as _ } from "smart-naive-table";
|
|
5
|
+
import { useConfirm as I } from "../../../composables/useConfirm.js";
|
|
6
|
+
import { useAuthStore as v } from "../../../stores/auth.js";
|
|
7
|
+
import { useUserStore as A } from "../../../stores/user.js";
|
|
8
|
+
import { sessionApi as n } from "../../../api/index.js";
|
|
9
|
+
import { translateError as E } from "../../../utils/error.js";
|
|
10
|
+
import { uaSummary as b } from "../../../utils/ua.js";
|
|
11
|
+
const P = /* @__PURE__ */ p({
|
|
12
|
+
__name: "index",
|
|
13
|
+
setup(w) {
|
|
14
|
+
const { t: e } = S(), m = h(), { confirm: c } = I(), a = v(), l = A(), i = d();
|
|
15
|
+
function u(t) {
|
|
16
|
+
c({
|
|
17
|
+
type: "warning",
|
|
18
|
+
content: e("session.kickConfirm", { account: t.account }),
|
|
19
|
+
action: () => n.kick(t.sessionId),
|
|
20
|
+
successMsg: e("session.kicked")
|
|
21
|
+
}).then((s) => {
|
|
22
|
+
var o;
|
|
23
|
+
s && ((o = i.value) == null || o.refresh());
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const f = [
|
|
27
|
+
{ type: "index", title: () => e("common.rowNo"), width: 64, align: "center" },
|
|
28
|
+
{ key: "account", title: () => e("session.account") },
|
|
29
|
+
{ key: "ip", title: () => e("session.ip"), render: (t) => t.ip || "—" },
|
|
30
|
+
// 设备:同一账号多端在线时靠它分辨要踢哪台(UA 解析成「浏览器 · 系统」)
|
|
31
|
+
{
|
|
32
|
+
key: "device",
|
|
33
|
+
title: () => e("session.device"),
|
|
34
|
+
ellipsis: { tooltip: !0 },
|
|
35
|
+
render: (t) => b(t.userAgent)
|
|
36
|
+
},
|
|
37
|
+
{ key: "loginTime", title: () => e("session.loginTime"), format: "datetime" },
|
|
38
|
+
{ key: "expiresAt", title: () => e("session.expiresAt"), format: "datetime" },
|
|
39
|
+
{
|
|
40
|
+
key: "op",
|
|
41
|
+
title: () => e("common.operation"),
|
|
42
|
+
width: 120,
|
|
43
|
+
fixed: "right",
|
|
44
|
+
hideInSetting: !0,
|
|
45
|
+
render: (t) => {
|
|
46
|
+
var o;
|
|
47
|
+
if (!a.hasPerm("DELETE:/api/v1/sys/session/{sessionid}")) return null;
|
|
48
|
+
const s = t.userId === ((o = l.userInfo) == null ? void 0 : o.userId);
|
|
49
|
+
return g(
|
|
50
|
+
x,
|
|
51
|
+
{
|
|
52
|
+
size: "small",
|
|
53
|
+
quaternary: !0,
|
|
54
|
+
type: "error",
|
|
55
|
+
// 踢自己的会话置灰:防误把自己下线
|
|
56
|
+
disabled: s,
|
|
57
|
+
onClick: () => u(t)
|
|
58
|
+
},
|
|
59
|
+
() => e(s ? "session.self" : "session.kick")
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
];
|
|
64
|
+
return (t, s) => (k(), y(r(_), {
|
|
65
|
+
"default-page-size": 100,
|
|
66
|
+
ref_key: "tableRef",
|
|
67
|
+
ref: i,
|
|
68
|
+
columns: f,
|
|
69
|
+
fetcher: r(n).online,
|
|
70
|
+
"flex-height": "",
|
|
71
|
+
"virtual-scroll": "",
|
|
72
|
+
"storage-key": "sys-session",
|
|
73
|
+
onError: s[0] || (s[0] = (o) => r(m).error(r(E)(o)))
|
|
74
|
+
}, null, 8, ["fetcher"]));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
export {
|
|
78
|
+
P as default
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=index2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/session/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 在线会话 = 只读 SmartTable + 行内「强制下线」。无表单。踢人走 useConfirm 二次确认(warning),\n// 踢自己的会话置灰(防误踢自己下线)。后端仅按 UserId 过滤,故不设业务搜索列。\nimport { h, ref } from 'vue'\nimport { NButton, useMessage } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { useAuthStore } from '#/stores/auth'\nimport { useUserStore } from '#/stores/user'\nimport { sessionApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { uaSummary } from '#/utils/ua'\nimport type { OnlineSessionItem } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { confirm } = useConfirm()\nconst authStore = useAuthStore()\nconst userStore = useUserStore()\nconst tableRef = ref<SmartTableInst<OnlineSessionItem>>()\n\nfunction kick(r: OnlineSessionItem) {\n confirm({\n type: 'warning',\n content: t('session.kickConfirm', { account: r.account }),\n action: () => sessionApi.kick(r.sessionId),\n successMsg: t('session.kicked'),\n }).then(ok => {\n if (ok) tableRef.value?.refresh()\n })\n}\n\nconst columns: SmartTableColumn<OnlineSessionItem>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n { key: 'account', title: () => t('session.account') },\n { key: 'ip', title: () => t('session.ip'), render: r => r.ip || '—' },\n // 设备:同一账号多端在线时靠它分辨要踢哪台(UA 解析成「浏览器 · 系统」)\n {\n key: 'device',\n title: () => t('session.device'),\n ellipsis: { tooltip: true },\n render: r => uaSummary(r.userAgent),\n },\n { key: 'loginTime', title: () => t('session.loginTime'), format: 'datetime' },\n { key: 'expiresAt', title: () => t('session.expiresAt'), format: 'datetime' },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 120,\n fixed: 'right',\n hideInSetting: true,\n render: r => {\n if (!authStore.hasPerm('DELETE:/api/v1/sys/session/{sessionid}')) return null\n const isSelf = r.userId === userStore.userInfo?.userId\n return h(\n NButton,\n {\n size: 'small',\n quaternary: true,\n type: 'error',\n // 踢自己的会话置灰:防误把自己下线\n disabled: isSelf,\n onClick: () => kick(r),\n },\n () => (isSelf ? t('session.self') : t('session.kick')),\n )\n },\n },\n]\n</script>\n\n<template>\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"sessionApi.online\"\n flex-height\n virtual-scroll\n storage-key=\"sys-session\"\n @error=\"e => message.error(translateError(e))\"\n />\n</template>\n"],"names":["t","useI18n","message","useMessage","confirm","useConfirm","authStore","useAuthStore","userStore","useUserStore","tableRef","ref","kick","r","sessionApi","ok","_a","columns","uaSummary","isSelf","h","NButton","_createBlock","_unref","SmartTable","_cache","e","translateError"],"mappings":";;;;;;;;;;;;;AAeA,UAAM,EAAE,GAAAA,EAAA,IAAMC,EAAA,GACRC,IAAUC,EAAA,GACV,EAAE,SAAAC,EAAA,IAAYC,EAAA,GACdC,IAAYC,EAAA,GACZC,IAAYC,EAAA,GACZC,IAAWC,EAAA;AAEjB,aAASC,EAAKC,GAAsB;AAClC,MAAAT,EAAQ;AAAA,QACN,MAAM;AAAA,QACN,SAASJ,EAAE,uBAAuB,EAAE,SAASa,EAAE,SAAS;AAAA,QACxD,QAAQ,MAAMC,EAAW,KAAKD,EAAE,SAAS;AAAA,QACzC,YAAYb,EAAE,gBAAgB;AAAA,MAAA,CAC/B,EAAE,KAAK,CAAAe,MAAM;;AACZ,QAAIA,OAAIC,IAAAN,EAAS,UAAT,QAAAM,EAAgB;AAAA,MAC1B,CAAC;AAAA,IACH;AAEA,UAAMC,IAAiD;AAAA,MACrD,EAAE,MAAM,SAAS,OAAO,MAAMjB,EAAE,cAAc,GAAG,OAAO,IAAI,OAAO,SAAA;AAAA,MACnE,EAAE,KAAK,WAAW,OAAO,MAAMA,EAAE,iBAAiB,EAAA;AAAA,MAClD,EAAE,KAAK,MAAM,OAAO,MAAMA,EAAE,YAAY,GAAG,QAAQ,CAAAa,MAAKA,EAAE,MAAM,IAAA;AAAA;AAAA,MAEhE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,MAAMb,EAAE,gBAAgB;AAAA,QAC/B,UAAU,EAAE,SAAS,GAAA;AAAA,QACrB,QAAQ,CAAAa,MAAKK,EAAUL,EAAE,SAAS;AAAA,MAAA;AAAA,MAEpC,EAAE,KAAK,aAAa,OAAO,MAAMb,EAAE,mBAAmB,GAAG,QAAQ,WAAA;AAAA,MACjE,EAAE,KAAK,aAAa,OAAO,MAAMA,EAAE,mBAAmB,GAAG,QAAQ,WAAA;AAAA,MACjE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,MAAMA,EAAE,kBAAkB;AAAA,QACjC,OAAO;AAAA,QACP,OAAO;AAAA,QACP,eAAe;AAAA,QACf,QAAQ,CAAAa,MAAK;;AACX,cAAI,CAACP,EAAU,QAAQ,wCAAwC,EAAG,QAAO;AACzE,gBAAMa,IAASN,EAAE,aAAWG,IAAAR,EAAU,aAAV,gBAAAQ,EAAoB;AAChD,iBAAOI;AAAA,YACLC;AAAA,YACA;AAAA,cACE,MAAM;AAAA,cACN,YAAY;AAAA,cACZ,MAAM;AAAA;AAAA,cAEN,UAAUF;AAAA,cACV,SAAS,MAAMP,EAAKC,CAAC;AAAA,YAAA;AAAA,YAEvB,MAAgBb,EAATmB,IAAW,iBAAoB,cAAN;AAAA,UAAoB;AAAA,QAExD;AAAA,MAAA;AAAA,IACF;2BAKAG,EASEC,EAAAC,CAAA,GAAA;AAAA,MARC,qBAAmB;AAAA,eAChB;AAAA,MAAJ,KAAId;AAAA,MACH,SAAAO;AAAA,MACA,SAASM,EAAAT,CAAA,EAAW;AAAA,MACrB,eAAA;AAAA,MACA,kBAAA;AAAA,MACA,eAAY;AAAA,MACX,SAAKW,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAE,CAAAC,MAAKH,EAAArB,CAAA,EAAQ,MAAMqB,EAAAI,CAAA,EAAeD,CAAC,CAAA;AAAA,IAAA;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { UserItem } from '../../../../types/api';
|
|
2
|
+
declare function openReset(r: UserItem): void;
|
|
3
|
+
/** 供新建留空口令路径复用同一结果弹层(父页在 UserFormModal 的 passwordGenerated 回调里调用)。 */
|
|
4
|
+
declare function showResult(pwd: string, fromCreate?: boolean): void;
|
|
5
|
+
declare const __VLS_export: import('vue').DefineComponent<{}, {
|
|
6
|
+
openReset: typeof openReset;
|
|
7
|
+
showResult: typeof showResult;
|
|
8
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
9
|
+
declare const _default: typeof __VLS_export;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import o from "./ResetPasswordModal2.vue.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import t from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const d = /* @__PURE__ */ t(o, [["__scopeId", "data-v-db4d7427"]]);
|
|
5
|
+
export {
|
|
6
|
+
d as default
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=ResetPasswordModal.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResetPasswordModal.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { defineComponent as N, ref as u, reactive as g, openBlock as F, createElementBlock as b, Fragment as k, createVNode as r, unref as e, withCtx as a, createElementVNode as C, toDisplayString as p, createTextVNode as D } from "vue";
|
|
2
|
+
import { useMessage as B, NForm as E, NFormItem as I, NInput as v, NButton as T } from "naive-ui";
|
|
3
|
+
import { useI18n as U } from "vue-i18n";
|
|
4
|
+
import h from "../../../../components/FormContainer/index.vue.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { userApi as V } from "../../../../api/index.js";
|
|
7
|
+
import { translateError as H } from "../../../../utils/error.js";
|
|
8
|
+
const M = { class: "reset-hint" }, K = /* @__PURE__ */ N({
|
|
9
|
+
__name: "ResetPasswordModal",
|
|
10
|
+
setup(A, { expose: x }) {
|
|
11
|
+
const { t } = U(), m = B(), d = u(!1), f = u(null), l = g({ newPassword: "" }), i = u(!1), c = u(""), w = u(!1);
|
|
12
|
+
function y(s) {
|
|
13
|
+
f.value = s, l.newPassword = "", d.value = !0;
|
|
14
|
+
}
|
|
15
|
+
function _(s, o = !0) {
|
|
16
|
+
c.value = s, w.value = o, i.value = !0;
|
|
17
|
+
}
|
|
18
|
+
x({ openReset: y, showResult: _ });
|
|
19
|
+
async function P() {
|
|
20
|
+
if (f.value)
|
|
21
|
+
try {
|
|
22
|
+
c.value = await V.resetPassword(
|
|
23
|
+
f.value.id,
|
|
24
|
+
l.newPassword || null
|
|
25
|
+
), w.value = !1, i.value = !0;
|
|
26
|
+
} catch (s) {
|
|
27
|
+
return m.error(H(s)), !1;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function R() {
|
|
31
|
+
try {
|
|
32
|
+
await navigator.clipboard.writeText(c.value), m.success(t("user.copied"));
|
|
33
|
+
} catch {
|
|
34
|
+
m.error(t("user.copyFailed"));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return (s, o) => (F(), b(k, null, [
|
|
38
|
+
r(h, {
|
|
39
|
+
show: d.value,
|
|
40
|
+
"onUpdate:show": o[1] || (o[1] = (n) => d.value = n),
|
|
41
|
+
title: e(t)("user.resetPassword"),
|
|
42
|
+
width: 420,
|
|
43
|
+
"on-confirm": P,
|
|
44
|
+
"confirm-text": e(t)("common.confirm")
|
|
45
|
+
}, {
|
|
46
|
+
default: a(() => [
|
|
47
|
+
r(e(E), {
|
|
48
|
+
model: l,
|
|
49
|
+
"label-placement": "left",
|
|
50
|
+
"label-width": 90
|
|
51
|
+
}, {
|
|
52
|
+
default: a(() => [
|
|
53
|
+
r(e(I), {
|
|
54
|
+
label: e(t)("user.newPassword")
|
|
55
|
+
}, {
|
|
56
|
+
default: a(() => [
|
|
57
|
+
r(e(v), {
|
|
58
|
+
value: l.newPassword,
|
|
59
|
+
"onUpdate:value": o[0] || (o[0] = (n) => l.newPassword = n),
|
|
60
|
+
type: "password",
|
|
61
|
+
"show-password-on": "click",
|
|
62
|
+
placeholder: e(t)("user.newPasswordHint")
|
|
63
|
+
}, null, 8, ["value", "placeholder"])
|
|
64
|
+
]),
|
|
65
|
+
_: 1
|
|
66
|
+
}, 8, ["label"])
|
|
67
|
+
]),
|
|
68
|
+
_: 1
|
|
69
|
+
}, 8, ["model"])
|
|
70
|
+
]),
|
|
71
|
+
_: 1
|
|
72
|
+
}, 8, ["show", "title", "confirm-text"]),
|
|
73
|
+
r(h, {
|
|
74
|
+
show: i.value,
|
|
75
|
+
"onUpdate:show": o[2] || (o[2] = (n) => i.value = n),
|
|
76
|
+
title: w.value ? e(t)("user.createDone") : e(t)("user.resetDone"),
|
|
77
|
+
width: 420,
|
|
78
|
+
"on-confirm": () => {
|
|
79
|
+
},
|
|
80
|
+
"confirm-text": e(t)("common.confirm")
|
|
81
|
+
}, {
|
|
82
|
+
default: a(() => [
|
|
83
|
+
C("p", M, p(e(t)("user.resetDoneHint")), 1),
|
|
84
|
+
r(e(v), {
|
|
85
|
+
value: c.value,
|
|
86
|
+
readonly: ""
|
|
87
|
+
}, {
|
|
88
|
+
suffix: a(() => [
|
|
89
|
+
r(e(T), {
|
|
90
|
+
text: "",
|
|
91
|
+
type: "primary",
|
|
92
|
+
onClick: R
|
|
93
|
+
}, {
|
|
94
|
+
default: a(() => [
|
|
95
|
+
D(p(e(t)("user.copy")), 1)
|
|
96
|
+
]),
|
|
97
|
+
_: 1
|
|
98
|
+
})
|
|
99
|
+
]),
|
|
100
|
+
_: 1
|
|
101
|
+
}, 8, ["value"])
|
|
102
|
+
]),
|
|
103
|
+
_: 1
|
|
104
|
+
}, 8, ["show", "title", "confirm-text"])
|
|
105
|
+
], 64));
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
export {
|
|
109
|
+
K as default
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=ResetPasswordModal2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResetPasswordModal2.vue.js","sources":["../../../../../src/views/system/user/components/ResetPasswordModal.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 重置密码弹层 + 初始密码结果只读弹层 —— 从 user/index.vue 抽出。\n// 结果弹层被两条路径共用:重置密码后展示新口令,以及新建用户留空口令时展示系统随机口令(父页经 showResult 转交)。\n// 语义相同:明文只此一次,管理员当场转达。\nimport { reactive, ref } from 'vue'\nimport { NButton, NInput, NForm, NFormItem, useMessage } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport FormContainer from '#/components/FormContainer/index.vue'\nimport { userApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport type { UserItem } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\n\nconst showReset = ref(false)\nconst resetTarget = ref<UserItem | null>(null)\nconst resetForm = reactive({ newPassword: '' })\nconst showResetResult = ref(false)\nconst resetResult = ref('')\n/** 结果弹层是\"建号后\"还是\"重置后\"打开的,只影响标题文案。 */\nconst resultFromCreate = ref(false)\n\nfunction openReset(r: UserItem) {\n resetTarget.value = r\n resetForm.newPassword = ''\n showReset.value = true\n}\n/** 供新建留空口令路径复用同一结果弹层(父页在 UserFormModal 的 passwordGenerated 回调里调用)。 */\nfunction showResult(pwd: string, fromCreate = true) {\n resetResult.value = pwd\n resultFromCreate.value = fromCreate\n showResetResult.value = true\n}\ndefineExpose({ openReset, showResult })\n\nasync function doReset() {\n if (!resetTarget.value) return\n try {\n resetResult.value = await userApi.resetPassword(\n resetTarget.value.id,\n resetForm.newPassword || null,\n )\n resultFromCreate.value = false\n showResetResult.value = true // 关闭输入弹层、弹出结果\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\nasync function copyResult() {\n try {\n await navigator.clipboard.writeText(resetResult.value)\n message.success(t('user.copied'))\n } catch {\n message.error(t('user.copyFailed'))\n }\n}\n</script>\n\n<template>\n <!-- 重置密码输入 -->\n <FormContainer\n v-model:show=\"showReset\"\n :title=\"t('user.resetPassword')\"\n :width=\"420\"\n :on-confirm=\"doReset\"\n :confirm-text=\"t('common.confirm')\"\n >\n <n-form :model=\"resetForm\" label-placement=\"left\" :label-width=\"90\">\n <n-form-item :label=\"t('user.newPassword')\">\n <n-input\n v-model:value=\"resetForm.newPassword\"\n type=\"password\"\n show-password-on=\"click\"\n :placeholder=\"t('user.newPasswordHint')\"\n />\n </n-form-item>\n </n-form>\n </FormContainer>\n\n <!-- 初始密码结果(只读,可复制):建号留空口令 / 重置密码 共用 -->\n <FormContainer\n v-model:show=\"showResetResult\"\n :title=\"resultFromCreate ? t('user.createDone') : t('user.resetDone')\"\n :width=\"420\"\n :on-confirm=\"() => {}\"\n :confirm-text=\"t('common.confirm')\"\n >\n <p class=\"reset-hint\">{{ t('user.resetDoneHint') }}</p>\n <n-input :value=\"resetResult\" readonly>\n <template #suffix>\n <n-button text type=\"primary\" @click=\"copyResult\">{{ t('user.copy') }}</n-button>\n </template>\n </n-input>\n </FormContainer>\n</template>\n\n<style scoped>\n.reset-hint {\n margin: 0 0 12px;\n font-size: var(--font-size-sm, 13px);\n color: var(--color-text-secondary, #888);\n}\n</style>\n"],"names":["useI18n","message","useMessage","showReset","ref","resetTarget","resetForm","reactive","showResetResult","resetResult","resultFromCreate","openReset","r","showResult","pwd","fromCreate","__expose","doReset","userApi","e","translateError","copyResult","_createVNode","FormContainer","$event","_unref","NForm","NFormItem","NInput","_cache","_createElementVNode","_hoisted_1","_toDisplayString","NButton"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { UserItem } from '../../../../types/api';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
positionOptions: {
|
|
4
|
+
label: string;
|
|
5
|
+
value: number;
|
|
6
|
+
}[];
|
|
7
|
+
roleOptions: {
|
|
8
|
+
label: string;
|
|
9
|
+
value: number;
|
|
10
|
+
}[];
|
|
11
|
+
directorOptions: {
|
|
12
|
+
label: string;
|
|
13
|
+
value: number;
|
|
14
|
+
}[];
|
|
15
|
+
};
|
|
16
|
+
declare function openAdd(): void;
|
|
17
|
+
/** 编辑:先取 detail(拿 roleIds + 回显),成功再开弹层;失败弹码不开。 */
|
|
18
|
+
declare function openEdit(r: UserItem): Promise<void>;
|
|
19
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {
|
|
20
|
+
openAdd: typeof openAdd;
|
|
21
|
+
openEdit: typeof openEdit;
|
|
22
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
23
|
+
saved: () => any;
|
|
24
|
+
passwordGenerated: (pwd: string) => any;
|
|
25
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
26
|
+
onSaved?: (() => any) | undefined;
|
|
27
|
+
onPasswordGenerated?: ((pwd: string) => any) | undefined;
|
|
28
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
29
|
+
declare const _default: typeof __VLS_export;
|
|
30
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import o from "./UserFormModal2.vue.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import r from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-04e2ffaa"]]);
|
|
5
|
+
export {
|
|
6
|
+
m as default
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=UserFormModal.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserFormModal.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|