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":"bindComplete.js","sources":["../../../src/views/mfa/bindComplete.ts"],"sourcesContent":["/**\n * bindComplete 已在服务端完成绑定;前端只能在拿到非空恢复码后进入展示步。\n * 缺字段 / null / 空数组 / 仅空白串 一律视为响应不完整,避免空白成功屏。\n */\nexport function takeRecoveryCodes(out: { recoveryCodes?: string[] | null }): string[] | null {\n const codes = (out.recoveryCodes ?? [])\n .map(c => (typeof c === 'string' ? c.trim() : ''))\n .filter(c => c.length > 0)\n return codes.length > 0 ? codes : null\n}\n"],"names":["takeRecoveryCodes","out","codes","c"],"mappings":"AAIO,SAASA,EAAkBC,GAA2D;AAC3F,QAAMC,KAASD,EAAI,iBAAiB,CAAA,GACjC,IAAI,OAAM,OAAOE,KAAM,WAAWA,EAAE,KAAA,IAAS,EAAG,EAChD,OAAO,CAAAA,MAAKA,EAAE,SAAS,CAAC;AAC3B,SAAOD,EAAM,SAAS,IAAIA,IAAQ;AACpC;"}
|
|
@@ -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,425 @@
|
|
|
1
|
+
import { defineComponent as J, ref as _, reactive as L, computed as W, openBlock as p, createElementBlock as C, createVNode as o, unref as e, withCtx as r, Fragment as P, createBlock as R, withKeys as S, createTextVNode as s, toDisplayString as c, createElementVNode as h, renderList as X } from "vue";
|
|
2
|
+
import { useRoute as Y, useRouter as Z } from "vue-router";
|
|
3
|
+
import { useMessage as ee, NCard as te, NSteps as oe, NStep as I, NForm as U, NAlert as g, NFormItem as v, NInput as b, NButton as f, NQrCode as ae } from "naive-ui";
|
|
4
|
+
import { useI18n as re } from "vue-i18n";
|
|
5
|
+
import { mfaApi as N } from "../../api/index.js";
|
|
6
|
+
import { translateError as B } from "../../utils/error.js";
|
|
7
|
+
import { triggerBlobDownload as le } from "../../utils/download.js";
|
|
8
|
+
import { useUserStore as ne } from "../../stores/user.js";
|
|
9
|
+
import { useAuthStore as ue } from "../../stores/auth.js";
|
|
10
|
+
import { resetRouter as ce } from "../../router/index.js";
|
|
11
|
+
import { takeRecoveryCodes as se } from "./bindComplete.js";
|
|
12
|
+
const de = { class: "mfa-page" }, ie = { class: "mfa-header" }, me = { class: "mfa-qr-wrap" }, pe = { class: "mfa-manual-hint" }, fe = {
|
|
13
|
+
key: 2,
|
|
14
|
+
class: "recovery-codes"
|
|
15
|
+
}, Ie = /* @__PURE__ */ J({
|
|
16
|
+
__name: "index",
|
|
17
|
+
setup(ye) {
|
|
18
|
+
var K;
|
|
19
|
+
const { t } = re(), x = Y(), M = Z(), i = ee(), q = ne(), V = ue(), $ = x.query.mode === "recovery" ? "recovery" : "bind", w = _($), y = _(1), m = _(!1), k = _(!1), A = (typeof x.query.account == "string" ? x.query.account : "") || ((K = q.userInfo) == null ? void 0 : K.account) || "", a = L({
|
|
20
|
+
account: A,
|
|
21
|
+
currentPassword: "",
|
|
22
|
+
bindChallengeId: "",
|
|
23
|
+
otpauthUri: "",
|
|
24
|
+
seed: "",
|
|
25
|
+
totpCode: "",
|
|
26
|
+
recoveryCodes: []
|
|
27
|
+
}), d = L({
|
|
28
|
+
account: A,
|
|
29
|
+
currentPassword: "",
|
|
30
|
+
recoveryCode: ""
|
|
31
|
+
}), j = W(() => !!a.account.trim() && !!a.currentPassword);
|
|
32
|
+
async function T(u) {
|
|
33
|
+
try {
|
|
34
|
+
await navigator.clipboard.writeText(u), i.success(t("mfa.copied"));
|
|
35
|
+
} catch {
|
|
36
|
+
i.error(t("mfa.copyFailed"));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function z() {
|
|
40
|
+
const u = a.account.trim() || "account", l = [
|
|
41
|
+
t("mfa.recoveryDownloadHeader", { account: u }),
|
|
42
|
+
"",
|
|
43
|
+
...a.recoveryCodes,
|
|
44
|
+
"",
|
|
45
|
+
t("mfa.recoveryDownloadFooter")
|
|
46
|
+
], n = new Blob([l.join(`
|
|
47
|
+
`)], { type: "text/plain;charset=utf-8" }), Q = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10), G = u.replace(/[^\w.\-@]+/g, "_");
|
|
48
|
+
le(n, `smart-recovery-codes-${G}-${Q}.txt`), i.success(t("mfa.recoveryDownloaded"));
|
|
49
|
+
}
|
|
50
|
+
async function D() {
|
|
51
|
+
if (!j.value) {
|
|
52
|
+
i.warning(t("mfa.bindRequired"));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
m.value = !0;
|
|
56
|
+
try {
|
|
57
|
+
const u = await N.bindStart({
|
|
58
|
+
account: a.account.trim(),
|
|
59
|
+
currentPassword: a.currentPassword
|
|
60
|
+
});
|
|
61
|
+
if (a.bindChallengeId = u.bindChallengeId ?? "", a.otpauthUri = u.otpauthUri ?? "", a.seed = u.seed ?? "", !a.bindChallengeId || !a.otpauthUri || !a.seed)
|
|
62
|
+
throw new Error(t("mfa.bindStartResponseIncomplete"));
|
|
63
|
+
a.currentPassword = "", y.value = 2;
|
|
64
|
+
} catch (u) {
|
|
65
|
+
i.error(B(u));
|
|
66
|
+
} finally {
|
|
67
|
+
m.value = !1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function E() {
|
|
71
|
+
if (!a.totpCode) {
|
|
72
|
+
i.warning(t("mfa.codeRequired"));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
m.value = !0;
|
|
76
|
+
try {
|
|
77
|
+
const u = await N.bindComplete({
|
|
78
|
+
bindChallengeId: a.bindChallengeId,
|
|
79
|
+
totpCode: a.totpCode
|
|
80
|
+
}), l = se(u);
|
|
81
|
+
if (!l) throw new Error(t("mfa.bindCompleteResponseIncomplete"));
|
|
82
|
+
a.recoveryCodes = l, a.seed = "", a.otpauthUri = "", a.totpCode = "", k.value = !0, y.value = 3;
|
|
83
|
+
} catch (u) {
|
|
84
|
+
i.error(B(u));
|
|
85
|
+
} finally {
|
|
86
|
+
m.value = !1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function F() {
|
|
90
|
+
if (!d.account || !d.currentPassword || !d.recoveryCode) {
|
|
91
|
+
i.warning(t("mfa.recoveryRequired"));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
m.value = !0;
|
|
95
|
+
try {
|
|
96
|
+
await N.recovery(d), d.currentPassword = "", d.recoveryCode = "", k.value = !0;
|
|
97
|
+
} catch (u) {
|
|
98
|
+
i.error(B(u));
|
|
99
|
+
} finally {
|
|
100
|
+
m.value = !1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function H() {
|
|
104
|
+
ce(), V.reset(), q.clear(), M.replace("/login");
|
|
105
|
+
}
|
|
106
|
+
function O() {
|
|
107
|
+
w.value === "bind" && y.value === 3 && (a.recoveryCodes = [], y.value = 1), k.value = !1, w.value = w.value === "bind" ? "recovery" : "bind";
|
|
108
|
+
}
|
|
109
|
+
return (u, l) => (p(), C("main", de, [
|
|
110
|
+
o(e(te), {
|
|
111
|
+
class: "mfa-card",
|
|
112
|
+
bordered: !0
|
|
113
|
+
}, {
|
|
114
|
+
header: r(() => [
|
|
115
|
+
h("div", ie, [
|
|
116
|
+
h("span", null, c(w.value === "bind" ? e(t)("mfa.bindTitle") : e(t)("mfa.recoveryTitle")), 1),
|
|
117
|
+
o(e(f), {
|
|
118
|
+
text: "",
|
|
119
|
+
type: "primary",
|
|
120
|
+
onClick: O
|
|
121
|
+
}, {
|
|
122
|
+
default: r(() => [
|
|
123
|
+
s(c(w.value === "bind" ? e(t)("mfa.useRecovery") : e(t)("mfa.backToBind")), 1)
|
|
124
|
+
]),
|
|
125
|
+
_: 1
|
|
126
|
+
})
|
|
127
|
+
])
|
|
128
|
+
]),
|
|
129
|
+
default: r(() => [
|
|
130
|
+
w.value === "bind" ? (p(), C(P, { key: 0 }, [
|
|
131
|
+
o(e(oe), {
|
|
132
|
+
current: y.value,
|
|
133
|
+
size: "small",
|
|
134
|
+
style: { "margin-bottom": "24px" }
|
|
135
|
+
}, {
|
|
136
|
+
default: r(() => [
|
|
137
|
+
o(e(I), {
|
|
138
|
+
title: e(t)("mfa.stepVerify")
|
|
139
|
+
}, null, 8, ["title"]),
|
|
140
|
+
o(e(I), {
|
|
141
|
+
title: e(t)("mfa.stepAuthenticator")
|
|
142
|
+
}, null, 8, ["title"]),
|
|
143
|
+
o(e(I), {
|
|
144
|
+
title: e(t)("mfa.stepRecovery")
|
|
145
|
+
}, null, 8, ["title"])
|
|
146
|
+
]),
|
|
147
|
+
_: 1
|
|
148
|
+
}, 8, ["current"]),
|
|
149
|
+
y.value === 1 ? (p(), R(e(U), {
|
|
150
|
+
key: 0,
|
|
151
|
+
"label-placement": "top",
|
|
152
|
+
onKeyup: S(D, ["enter"])
|
|
153
|
+
}, {
|
|
154
|
+
default: r(() => [
|
|
155
|
+
o(e(g), {
|
|
156
|
+
type: "info",
|
|
157
|
+
bordered: !1,
|
|
158
|
+
style: { "margin-bottom": "16px" }
|
|
159
|
+
}, {
|
|
160
|
+
default: r(() => [
|
|
161
|
+
s(c(e(t)("mfa.bindHint")), 1)
|
|
162
|
+
]),
|
|
163
|
+
_: 1
|
|
164
|
+
}),
|
|
165
|
+
o(e(v), {
|
|
166
|
+
label: e(t)("mfa.account")
|
|
167
|
+
}, {
|
|
168
|
+
default: r(() => [
|
|
169
|
+
o(e(b), {
|
|
170
|
+
value: a.account,
|
|
171
|
+
"onUpdate:value": l[0] || (l[0] = (n) => a.account = n),
|
|
172
|
+
autocomplete: "username"
|
|
173
|
+
}, null, 8, ["value"])
|
|
174
|
+
]),
|
|
175
|
+
_: 1
|
|
176
|
+
}, 8, ["label"]),
|
|
177
|
+
o(e(v), {
|
|
178
|
+
label: e(t)("mfa.currentPassword")
|
|
179
|
+
}, {
|
|
180
|
+
default: r(() => [
|
|
181
|
+
o(e(b), {
|
|
182
|
+
value: a.currentPassword,
|
|
183
|
+
"onUpdate:value": l[1] || (l[1] = (n) => a.currentPassword = n),
|
|
184
|
+
type: "password",
|
|
185
|
+
"show-password-on": "click",
|
|
186
|
+
autocomplete: "current-password"
|
|
187
|
+
}, null, 8, ["value"])
|
|
188
|
+
]),
|
|
189
|
+
_: 1
|
|
190
|
+
}, 8, ["label"]),
|
|
191
|
+
o(e(f), {
|
|
192
|
+
type: "primary",
|
|
193
|
+
block: "",
|
|
194
|
+
loading: m.value,
|
|
195
|
+
onClick: D
|
|
196
|
+
}, {
|
|
197
|
+
default: r(() => [
|
|
198
|
+
s(c(e(t)("mfa.startBind")), 1)
|
|
199
|
+
]),
|
|
200
|
+
_: 1
|
|
201
|
+
}, 8, ["loading"])
|
|
202
|
+
]),
|
|
203
|
+
_: 1
|
|
204
|
+
})) : y.value === 2 ? (p(), R(e(U), {
|
|
205
|
+
key: 1,
|
|
206
|
+
"label-placement": "top",
|
|
207
|
+
onKeyup: S(E, ["enter"])
|
|
208
|
+
}, {
|
|
209
|
+
default: r(() => [
|
|
210
|
+
o(e(g), {
|
|
211
|
+
type: "info",
|
|
212
|
+
bordered: !1,
|
|
213
|
+
style: { "margin-bottom": "16px" }
|
|
214
|
+
}, {
|
|
215
|
+
default: r(() => [
|
|
216
|
+
s(c(e(t)("mfa.scanSetupHint")), 1)
|
|
217
|
+
]),
|
|
218
|
+
_: 1
|
|
219
|
+
}),
|
|
220
|
+
h("div", me, [
|
|
221
|
+
o(e(ae), {
|
|
222
|
+
value: a.otpauthUri,
|
|
223
|
+
size: 200,
|
|
224
|
+
"error-correction-level": "M"
|
|
225
|
+
}, null, 8, ["value"])
|
|
226
|
+
]),
|
|
227
|
+
o(e(v), {
|
|
228
|
+
label: e(t)("mfa.manualKey")
|
|
229
|
+
}, {
|
|
230
|
+
default: r(() => [
|
|
231
|
+
o(e(b), {
|
|
232
|
+
value: a.seed,
|
|
233
|
+
readonly: ""
|
|
234
|
+
}, {
|
|
235
|
+
suffix: r(() => [
|
|
236
|
+
o(e(f), {
|
|
237
|
+
text: "",
|
|
238
|
+
type: "primary",
|
|
239
|
+
onClick: l[2] || (l[2] = (n) => T(a.seed))
|
|
240
|
+
}, {
|
|
241
|
+
default: r(() => [
|
|
242
|
+
s(c(e(t)("mfa.copy")), 1)
|
|
243
|
+
]),
|
|
244
|
+
_: 1
|
|
245
|
+
})
|
|
246
|
+
]),
|
|
247
|
+
_: 1
|
|
248
|
+
}, 8, ["value"])
|
|
249
|
+
]),
|
|
250
|
+
_: 1
|
|
251
|
+
}, 8, ["label"]),
|
|
252
|
+
h("p", pe, c(e(t)("mfa.manualSetupHint")), 1),
|
|
253
|
+
o(e(v), {
|
|
254
|
+
label: e(t)("mfa.authenticatorCode")
|
|
255
|
+
}, {
|
|
256
|
+
default: r(() => [
|
|
257
|
+
o(e(b), {
|
|
258
|
+
value: a.totpCode,
|
|
259
|
+
"onUpdate:value": l[3] || (l[3] = (n) => a.totpCode = n),
|
|
260
|
+
maxlength: 6,
|
|
261
|
+
autocomplete: "one-time-code"
|
|
262
|
+
}, null, 8, ["value"])
|
|
263
|
+
]),
|
|
264
|
+
_: 1
|
|
265
|
+
}, 8, ["label"]),
|
|
266
|
+
o(e(f), {
|
|
267
|
+
type: "primary",
|
|
268
|
+
block: "",
|
|
269
|
+
loading: m.value,
|
|
270
|
+
onClick: E
|
|
271
|
+
}, {
|
|
272
|
+
default: r(() => [
|
|
273
|
+
s(c(e(t)("mfa.completeBind")), 1)
|
|
274
|
+
]),
|
|
275
|
+
_: 1
|
|
276
|
+
}, 8, ["loading"])
|
|
277
|
+
]),
|
|
278
|
+
_: 1
|
|
279
|
+
})) : (p(), C("div", fe, [
|
|
280
|
+
o(e(g), {
|
|
281
|
+
type: "warning",
|
|
282
|
+
bordered: !1,
|
|
283
|
+
style: { "margin-bottom": "16px" }
|
|
284
|
+
}, {
|
|
285
|
+
default: r(() => [
|
|
286
|
+
s(c(e(t)("mfa.recoveryOnce")), 1)
|
|
287
|
+
]),
|
|
288
|
+
_: 1
|
|
289
|
+
}),
|
|
290
|
+
(p(!0), C(P, null, X(a.recoveryCodes, (n) => (p(), C("div", {
|
|
291
|
+
key: n,
|
|
292
|
+
class: "recovery-code"
|
|
293
|
+
}, c(n), 1))), 128)),
|
|
294
|
+
o(e(f), {
|
|
295
|
+
type: "primary",
|
|
296
|
+
block: "",
|
|
297
|
+
style: { "margin-top": "16px" },
|
|
298
|
+
onClick: z
|
|
299
|
+
}, {
|
|
300
|
+
default: r(() => [
|
|
301
|
+
s(c(e(t)("mfa.downloadCodes")), 1)
|
|
302
|
+
]),
|
|
303
|
+
_: 1
|
|
304
|
+
}),
|
|
305
|
+
o(e(f), {
|
|
306
|
+
block: "",
|
|
307
|
+
style: { "margin-top": "8px" },
|
|
308
|
+
onClick: l[4] || (l[4] = (n) => T(a.recoveryCodes.join(`
|
|
309
|
+
`)))
|
|
310
|
+
}, {
|
|
311
|
+
default: r(() => [
|
|
312
|
+
s(c(e(t)("mfa.copyAll")), 1)
|
|
313
|
+
]),
|
|
314
|
+
_: 1
|
|
315
|
+
}),
|
|
316
|
+
o(e(f), {
|
|
317
|
+
block: "",
|
|
318
|
+
style: { "margin-top": "8px" },
|
|
319
|
+
onClick: H
|
|
320
|
+
}, {
|
|
321
|
+
default: r(() => [
|
|
322
|
+
s(c(e(t)("mfa.backToLogin")), 1)
|
|
323
|
+
]),
|
|
324
|
+
_: 1
|
|
325
|
+
})
|
|
326
|
+
]))
|
|
327
|
+
], 64)) : k.value ? (p(), C(P, { key: 2 }, [
|
|
328
|
+
o(e(g), {
|
|
329
|
+
type: "success",
|
|
330
|
+
bordered: !1
|
|
331
|
+
}, {
|
|
332
|
+
default: r(() => [
|
|
333
|
+
s(c(e(t)("mfa.recoveryDone")), 1)
|
|
334
|
+
]),
|
|
335
|
+
_: 1
|
|
336
|
+
}),
|
|
337
|
+
o(e(f), {
|
|
338
|
+
type: "primary",
|
|
339
|
+
block: "",
|
|
340
|
+
style: { "margin-top": "16px" },
|
|
341
|
+
onClick: H
|
|
342
|
+
}, {
|
|
343
|
+
default: r(() => [
|
|
344
|
+
s(c(e(t)("mfa.backToLogin")), 1)
|
|
345
|
+
]),
|
|
346
|
+
_: 1
|
|
347
|
+
})
|
|
348
|
+
], 64)) : (p(), R(e(U), {
|
|
349
|
+
key: 1,
|
|
350
|
+
"label-placement": "top",
|
|
351
|
+
onKeyup: S(F, ["enter"])
|
|
352
|
+
}, {
|
|
353
|
+
default: r(() => [
|
|
354
|
+
o(e(g), {
|
|
355
|
+
type: "warning",
|
|
356
|
+
bordered: !1,
|
|
357
|
+
style: { "margin-bottom": "16px" }
|
|
358
|
+
}, {
|
|
359
|
+
default: r(() => [
|
|
360
|
+
s(c(e(t)("mfa.recoveryHint")), 1)
|
|
361
|
+
]),
|
|
362
|
+
_: 1
|
|
363
|
+
}),
|
|
364
|
+
o(e(v), {
|
|
365
|
+
label: e(t)("mfa.account")
|
|
366
|
+
}, {
|
|
367
|
+
default: r(() => [
|
|
368
|
+
o(e(b), {
|
|
369
|
+
value: d.account,
|
|
370
|
+
"onUpdate:value": l[5] || (l[5] = (n) => d.account = n),
|
|
371
|
+
autocomplete: "username"
|
|
372
|
+
}, null, 8, ["value"])
|
|
373
|
+
]),
|
|
374
|
+
_: 1
|
|
375
|
+
}, 8, ["label"]),
|
|
376
|
+
o(e(v), {
|
|
377
|
+
label: e(t)("mfa.currentPassword")
|
|
378
|
+
}, {
|
|
379
|
+
default: r(() => [
|
|
380
|
+
o(e(b), {
|
|
381
|
+
value: d.currentPassword,
|
|
382
|
+
"onUpdate:value": l[6] || (l[6] = (n) => d.currentPassword = n),
|
|
383
|
+
type: "password",
|
|
384
|
+
"show-password-on": "click",
|
|
385
|
+
autocomplete: "current-password"
|
|
386
|
+
}, null, 8, ["value"])
|
|
387
|
+
]),
|
|
388
|
+
_: 1
|
|
389
|
+
}, 8, ["label"]),
|
|
390
|
+
o(e(v), {
|
|
391
|
+
label: e(t)("mfa.recoveryCode")
|
|
392
|
+
}, {
|
|
393
|
+
default: r(() => [
|
|
394
|
+
o(e(b), {
|
|
395
|
+
value: d.recoveryCode,
|
|
396
|
+
"onUpdate:value": l[7] || (l[7] = (n) => d.recoveryCode = n),
|
|
397
|
+
autocomplete: "one-time-code"
|
|
398
|
+
}, null, 8, ["value"])
|
|
399
|
+
]),
|
|
400
|
+
_: 1
|
|
401
|
+
}, 8, ["label"]),
|
|
402
|
+
o(e(f), {
|
|
403
|
+
type: "primary",
|
|
404
|
+
block: "",
|
|
405
|
+
loading: m.value,
|
|
406
|
+
onClick: F
|
|
407
|
+
}, {
|
|
408
|
+
default: r(() => [
|
|
409
|
+
s(c(e(t)("mfa.submitRecovery")), 1)
|
|
410
|
+
]),
|
|
411
|
+
_: 1
|
|
412
|
+
}, 8, ["loading"])
|
|
413
|
+
]),
|
|
414
|
+
_: 1
|
|
415
|
+
}))
|
|
416
|
+
]),
|
|
417
|
+
_: 1
|
|
418
|
+
})
|
|
419
|
+
]));
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
export {
|
|
423
|
+
Ie as default
|
|
424
|
+
};
|
|
425
|
+
//# sourceMappingURL=index2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":["../../../src/views/mfa/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, reactive, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport {\n NAlert,\n NButton,\n NCard,\n NForm,\n NFormItem,\n NInput,\n NQrCode,\n NSteps,\n NStep,\n useMessage,\n} from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { mfaApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { triggerBlobDownload } from '#/utils/download'\nimport { useUserStore } from '#/stores/user'\nimport { useAuthStore } from '#/stores/auth'\nimport { resetRouter } from '#/router'\nimport { takeRecoveryCodes } from './bindComplete'\n\nconst { t } = useI18n()\nconst route = useRoute()\nconst router = useRouter()\nconst message = useMessage()\nconst userStore = useUserStore()\nconst authStore = useAuthStore()\n\nconst queryMode = route.query.mode === 'recovery' ? 'recovery' : 'bind'\nconst mode = ref<'bind' | 'recovery'>(queryMode)\nconst step = ref(1)\nconst loading = ref(false)\nconst completed = ref(false)\n\nconst queryAccount = typeof route.query.account === 'string' ? route.query.account : ''\nconst knownAccount = queryAccount || userStore.userInfo?.account || ''\nconst bind = reactive({\n account: knownAccount,\n currentPassword: '',\n bindChallengeId: '',\n otpauthUri: '',\n seed: '',\n totpCode: '',\n recoveryCodes: [] as string[],\n})\nconst recovery = reactive({\n account: knownAccount,\n currentPassword: '',\n recoveryCode: '',\n})\nconst canStart = computed(() => !!bind.account.trim() && !!bind.currentPassword)\n\nasync function copy(value: string) {\n try {\n await navigator.clipboard.writeText(value)\n message.success(t('mfa.copied'))\n } catch {\n message.error(t('mfa.copyFailed'))\n }\n}\n\n/** 恢复码下载到本地 txt(一次性展示后用户可离线保管)。 */\nfunction downloadRecoveryCodes() {\n const account = bind.account.trim() || 'account'\n const lines = [\n t('mfa.recoveryDownloadHeader', { account }),\n '',\n ...bind.recoveryCodes,\n '',\n t('mfa.recoveryDownloadFooter'),\n ]\n const blob = new Blob([lines.join('\\n')], { type: 'text/plain;charset=utf-8' })\n const stamp = new Date().toISOString().slice(0, 10)\n const safe = account.replace(/[^\\w.\\-@]+/g, '_')\n triggerBlobDownload(blob, `smart-recovery-codes-${safe}-${stamp}.txt`)\n message.success(t('mfa.recoveryDownloaded'))\n}\n\nasync function startBind() {\n if (!canStart.value) {\n message.warning(t('mfa.bindRequired'))\n return\n }\n loading.value = true\n try {\n const result = await mfaApi.bindStart({\n account: bind.account.trim(),\n currentPassword: bind.currentPassword,\n })\n bind.bindChallengeId = result.bindChallengeId ?? ''\n bind.otpauthUri = result.otpauthUri ?? ''\n bind.seed = result.seed ?? ''\n if (!bind.bindChallengeId || !bind.otpauthUri || !bind.seed)\n throw new Error(t('mfa.bindStartResponseIncomplete'))\n bind.currentPassword = ''\n step.value = 2\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nasync function completeBind() {\n if (!bind.totpCode) {\n message.warning(t('mfa.codeRequired'))\n return\n }\n loading.value = true\n try {\n const result = await mfaApi.bindComplete({\n bindChallengeId: bind.bindChallengeId,\n totpCode: bind.totpCode,\n })\n const codes = takeRecoveryCodes(result)\n if (!codes) throw new Error(t('mfa.bindCompleteResponseIncomplete'))\n bind.recoveryCodes = codes\n bind.seed = ''\n bind.otpauthUri = ''\n bind.totpCode = ''\n completed.value = true\n step.value = 3\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nasync function submitRecovery() {\n if (!recovery.account || !recovery.currentPassword || !recovery.recoveryCode) {\n message.warning(t('mfa.recoveryRequired'))\n return\n }\n loading.value = true\n try {\n await mfaApi.recovery(recovery)\n recovery.currentPassword = ''\n recovery.recoveryCode = ''\n completed.value = true\n } catch (e) {\n message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nfunction backToLogin() {\n // 绑定页可能仍挂着旧登录会话;清会话后再进登录,避免守卫直接弹回壳子且不重建路由。\n resetRouter()\n authStore.reset()\n userStore.clear()\n router.replace('/login')\n}\n\nfunction switchMode() {\n if (mode.value === 'bind' && step.value === 3) {\n bind.recoveryCodes = []\n step.value = 1\n }\n completed.value = false\n mode.value = mode.value === 'bind' ? 'recovery' : 'bind'\n}\n</script>\n\n<template>\n <main class=\"mfa-page\">\n <n-card class=\"mfa-card\" :bordered=\"true\">\n <template #header>\n <div class=\"mfa-header\">\n <span>{{ mode === 'bind' ? t('mfa.bindTitle') : t('mfa.recoveryTitle') }}</span>\n <n-button text type=\"primary\" @click=\"switchMode\">\n {{ mode === 'bind' ? t('mfa.useRecovery') : t('mfa.backToBind') }}\n </n-button>\n </div>\n </template>\n\n <template v-if=\"mode === 'bind'\">\n <n-steps :current=\"step\" size=\"small\" style=\"margin-bottom: 24px\">\n <n-step :title=\"t('mfa.stepVerify')\" />\n <n-step :title=\"t('mfa.stepAuthenticator')\" />\n <n-step :title=\"t('mfa.stepRecovery')\" />\n </n-steps>\n\n <n-form v-if=\"step === 1\" label-placement=\"top\" @keyup.enter=\"startBind\">\n <n-alert type=\"info\" :bordered=\"false\" style=\"margin-bottom: 16px\">\n {{ t('mfa.bindHint') }}\n </n-alert>\n <n-form-item :label=\"t('mfa.account')\">\n <n-input v-model:value=\"bind.account\" autocomplete=\"username\" />\n </n-form-item>\n <n-form-item :label=\"t('mfa.currentPassword')\">\n <n-input\n v-model:value=\"bind.currentPassword\"\n type=\"password\"\n show-password-on=\"click\"\n autocomplete=\"current-password\"\n />\n </n-form-item>\n <n-button type=\"primary\" block :loading=\"loading\" @click=\"startBind\">\n {{ t('mfa.startBind') }}\n </n-button>\n </n-form>\n\n <n-form v-else-if=\"step === 2\" label-placement=\"top\" @keyup.enter=\"completeBind\">\n <n-alert type=\"info\" :bordered=\"false\" style=\"margin-bottom: 16px\">\n {{ t('mfa.scanSetupHint') }}\n </n-alert>\n <div class=\"mfa-qr-wrap\">\n <n-qr-code :value=\"bind.otpauthUri\" :size=\"200\" error-correction-level=\"M\" />\n </div>\n <n-form-item :label=\"t('mfa.manualKey')\">\n <n-input :value=\"bind.seed\" readonly>\n <template #suffix>\n <n-button text type=\"primary\" @click=\"copy(bind.seed)\">\n {{ t('mfa.copy') }}\n </n-button>\n </template>\n </n-input>\n </n-form-item>\n <p class=\"mfa-manual-hint\">{{ t('mfa.manualSetupHint') }}</p>\n <n-form-item :label=\"t('mfa.authenticatorCode')\">\n <n-input v-model:value=\"bind.totpCode\" :maxlength=\"6\" autocomplete=\"one-time-code\" />\n </n-form-item>\n <n-button type=\"primary\" block :loading=\"loading\" @click=\"completeBind\">\n {{ t('mfa.completeBind') }}\n </n-button>\n </n-form>\n\n <div v-else class=\"recovery-codes\">\n <n-alert type=\"warning\" :bordered=\"false\" style=\"margin-bottom: 16px\">\n {{ t('mfa.recoveryOnce') }}\n </n-alert>\n <div v-for=\"code in bind.recoveryCodes\" :key=\"code\" class=\"recovery-code\">{{ code }}</div>\n <n-button type=\"primary\" block style=\"margin-top: 16px\" @click=\"downloadRecoveryCodes\">\n {{ t('mfa.downloadCodes') }}\n </n-button>\n <n-button block style=\"margin-top: 8px\" @click=\"copy(bind.recoveryCodes.join('\\n'))\">\n {{ t('mfa.copyAll') }}\n </n-button>\n <n-button block style=\"margin-top: 8px\" @click=\"backToLogin\">\n {{ t('mfa.backToLogin') }}\n </n-button>\n </div>\n </template>\n\n <n-form v-else-if=\"!completed\" label-placement=\"top\" @keyup.enter=\"submitRecovery\">\n <n-alert type=\"warning\" :bordered=\"false\" style=\"margin-bottom: 16px\">\n {{ t('mfa.recoveryHint') }}\n </n-alert>\n <n-form-item :label=\"t('mfa.account')\">\n <n-input v-model:value=\"recovery.account\" autocomplete=\"username\" />\n </n-form-item>\n <n-form-item :label=\"t('mfa.currentPassword')\">\n <n-input\n v-model:value=\"recovery.currentPassword\"\n type=\"password\"\n show-password-on=\"click\"\n autocomplete=\"current-password\"\n />\n </n-form-item>\n <n-form-item :label=\"t('mfa.recoveryCode')\">\n <n-input v-model:value=\"recovery.recoveryCode\" autocomplete=\"one-time-code\" />\n </n-form-item>\n <n-button type=\"primary\" block :loading=\"loading\" @click=\"submitRecovery\">\n {{ t('mfa.submitRecovery') }}\n </n-button>\n </n-form>\n <template v-else>\n <n-alert type=\"success\" :bordered=\"false\">{{ t('mfa.recoveryDone') }}</n-alert>\n <n-button type=\"primary\" block style=\"margin-top: 16px\" @click=\"backToLogin\">\n {{ t('mfa.backToLogin') }}\n </n-button>\n </template>\n </n-card>\n </main>\n</template>\n\n<style scoped>\n.mfa-page {\n min-height: 100dvh;\n display: grid;\n place-items: center;\n padding: 24px;\n background: var(--color-body, #f5f7fa);\n}\n.mfa-card {\n width: min(100%, 520px);\n}\n.mfa-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n.mfa-qr-wrap {\n display: flex;\n justify-content: center;\n margin: 0 0 16px;\n padding: 16px;\n background: #fff;\n border-radius: 8px;\n border: 1px solid var(--color-border, #e5e7eb);\n}\n.mfa-manual-hint {\n margin: -8px 0 12px;\n font-size: 12px;\n color: var(--color-text-tertiary, #9ca3af);\n line-height: 1.5;\n}\n.recovery-codes {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 8px;\n}\n.recovery-codes :deep(.n-alert),\n.recovery-codes :deep(.n-button) {\n grid-column: 1 / -1;\n}\n.recovery-code {\n padding: 8px 10px;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n background: var(--color-hover, #f4f4f5);\n border-radius: 4px;\n}\n@media (max-width: 480px) {\n .mfa-page {\n padding: 12px;\n }\n .recovery-codes {\n grid-template-columns: 1fr;\n }\n}\n</style>\n"],"names":["useI18n","route","useRoute","router","useRouter","message","useMessage","userStore","useUserStore","authStore","useAuthStore","queryMode","mode","ref","step","loading","completed","knownAccount","_a","bind","reactive","recovery","canStart","computed","copy","value","downloadRecoveryCodes","account","lines","blob","stamp","safe","triggerBlobDownload","startBind","result","mfaApi","e","translateError","completeBind","codes","takeRecoveryCodes","submitRecovery","backToLogin","resetRouter","switchMode","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","NCard","_createElementVNode","_hoisted_2","_toDisplayString","NButton","_Fragment","NSteps","NStep","_createBlock","NForm","NAlert","NFormItem","NInput","_cache","$event","_hoisted_3","NQrCode","_hoisted_4","_hoisted_5","_renderList","code"],"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,142 @@
|
|
|
1
|
+
import { defineComponent as D, ref as S, openBlock as o, createElementBlock as u, createElementVNode as r, createVNode as c, toDisplayString as i, unref as e, createBlock as m, withCtx as l, createCommentVNode as V, createTextVNode as y, Fragment as $, renderList as B, withKeys as v, withModifiers as g, normalizeClass as E } from "vue";
|
|
2
|
+
import { useRouter as I } from "vue-router";
|
|
3
|
+
import { useMessage as L, NButton as k, NSpin as K, NEmpty as R, NTag as A } from "naive-ui";
|
|
4
|
+
import { Icon as x } from "@iconify/vue";
|
|
5
|
+
import { useI18n as T } from "vue-i18n";
|
|
6
|
+
import { useAuthStore as F } from "../../stores/auth.js";
|
|
7
|
+
import { useUserStore as U } from "../../stores/user.js";
|
|
8
|
+
import { useModule as C } from "../../composables/useModule.js";
|
|
9
|
+
import { beginVoluntaryLogout as j } from "../../composables/useRealtime.js";
|
|
10
|
+
import { resetRouter as q } from "../../router/index.js";
|
|
11
|
+
import { translateError as b } from "../../utils/error.js";
|
|
12
|
+
import { authApi as G } from "../../api/index.js";
|
|
13
|
+
import H from "../../components/SmartLogo.vue.js";
|
|
14
|
+
const J = { class: "wrap" }, O = { class: "head" }, P = { style: { "margin-left": "4px" } }, Q = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "grid"
|
|
17
|
+
}, W = ["onClick", "onKeydown"], X = { class: "ico" }, Y = { class: "body" }, Z = { class: "name" }, ee = { class: "code" }, _e = /* @__PURE__ */ D({
|
|
18
|
+
__name: "index",
|
|
19
|
+
setup(te) {
|
|
20
|
+
const w = I(), p = L(), { t: s } = T(), n = F(), N = U(), f = S(!1);
|
|
21
|
+
async function _(d) {
|
|
22
|
+
f.value = !0;
|
|
23
|
+
try {
|
|
24
|
+
await C().switchModule(d);
|
|
25
|
+
} catch (a) {
|
|
26
|
+
p.error(b(a));
|
|
27
|
+
} finally {
|
|
28
|
+
f.value = !1;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function z() {
|
|
32
|
+
await j();
|
|
33
|
+
try {
|
|
34
|
+
await G.logout();
|
|
35
|
+
} catch {
|
|
36
|
+
}
|
|
37
|
+
q(), n.reset(), N.clear(), w.replace("/login");
|
|
38
|
+
}
|
|
39
|
+
async function M(d) {
|
|
40
|
+
try {
|
|
41
|
+
await C().setDefault(d), p.success(s("common.success"));
|
|
42
|
+
} catch (a) {
|
|
43
|
+
p.error(b(a));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return (d, a) => (o(), u("div", J, [
|
|
47
|
+
r("div", O, [
|
|
48
|
+
c(H, { size: 34 }),
|
|
49
|
+
r("h1", null, i(e(s)("module.choose")), 1),
|
|
50
|
+
e(n).routesReady ? (o(), m(e(k), {
|
|
51
|
+
key: 0,
|
|
52
|
+
text: "",
|
|
53
|
+
size: "small",
|
|
54
|
+
class: "back",
|
|
55
|
+
onClick: a[0] || (a[0] = (t) => e(w).back())
|
|
56
|
+
}, {
|
|
57
|
+
default: l(() => [
|
|
58
|
+
c(e(x), {
|
|
59
|
+
icon: "ph:arrow-left",
|
|
60
|
+
width: 16
|
|
61
|
+
}),
|
|
62
|
+
r("span", P, i(e(s)("module.back")), 1)
|
|
63
|
+
]),
|
|
64
|
+
_: 1
|
|
65
|
+
})) : V("", !0)
|
|
66
|
+
]),
|
|
67
|
+
c(e(K), { show: f.value }, {
|
|
68
|
+
default: l(() => [
|
|
69
|
+
e(n).modules.length ? (o(), u("div", Q, [
|
|
70
|
+
(o(!0), u($, null, B(e(n).modules, (t) => (o(), u("div", {
|
|
71
|
+
key: t.id,
|
|
72
|
+
class: E(["card", { current: t.id === e(n).currentModuleId }]),
|
|
73
|
+
role: "button",
|
|
74
|
+
tabindex: "0",
|
|
75
|
+
onClick: (h) => _(t.id),
|
|
76
|
+
onKeydown: [
|
|
77
|
+
v((h) => _(t.id), ["enter"]),
|
|
78
|
+
v(g((h) => _(t.id), ["prevent"]), ["space"])
|
|
79
|
+
]
|
|
80
|
+
}, [
|
|
81
|
+
r("div", X, [
|
|
82
|
+
c(e(x), {
|
|
83
|
+
icon: t.icon || "ph:app-window-duotone",
|
|
84
|
+
width: 28
|
|
85
|
+
}, null, 8, ["icon"])
|
|
86
|
+
]),
|
|
87
|
+
r("div", Y, [
|
|
88
|
+
r("div", Z, i(t.title), 1),
|
|
89
|
+
r("div", ee, i(t.code), 1)
|
|
90
|
+
]),
|
|
91
|
+
t.id === e(n).defaultModuleId ? (o(), m(e(A), {
|
|
92
|
+
key: 0,
|
|
93
|
+
size: "small",
|
|
94
|
+
type: "primary",
|
|
95
|
+
bordered: !1,
|
|
96
|
+
class: "def"
|
|
97
|
+
}, {
|
|
98
|
+
default: l(() => [
|
|
99
|
+
y(i(e(s)("module.isDefault")), 1)
|
|
100
|
+
]),
|
|
101
|
+
_: 1
|
|
102
|
+
})) : (o(), m(e(k), {
|
|
103
|
+
key: 1,
|
|
104
|
+
text: "",
|
|
105
|
+
size: "tiny",
|
|
106
|
+
class: "def",
|
|
107
|
+
onClick: g((h) => M(t.id), ["stop"])
|
|
108
|
+
}, {
|
|
109
|
+
default: l(() => [
|
|
110
|
+
y(i(e(s)("module.setDefault")), 1)
|
|
111
|
+
]),
|
|
112
|
+
_: 1
|
|
113
|
+
}, 8, ["onClick"]))
|
|
114
|
+
], 42, W))), 128))
|
|
115
|
+
])) : (o(), m(e(R), {
|
|
116
|
+
key: 0,
|
|
117
|
+
description: e(s)("module.empty"),
|
|
118
|
+
style: { padding: "60px 0" }
|
|
119
|
+
}, {
|
|
120
|
+
extra: l(() => [
|
|
121
|
+
c(e(k), {
|
|
122
|
+
size: "small",
|
|
123
|
+
onClick: z
|
|
124
|
+
}, {
|
|
125
|
+
default: l(() => [
|
|
126
|
+
y(i(e(s)("app.logout")), 1)
|
|
127
|
+
]),
|
|
128
|
+
_: 1
|
|
129
|
+
})
|
|
130
|
+
]),
|
|
131
|
+
_: 1
|
|
132
|
+
}, 8, ["description"]))
|
|
133
|
+
]),
|
|
134
|
+
_: 1
|
|
135
|
+
}, 8, ["show"])
|
|
136
|
+
]));
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
export {
|
|
140
|
+
_e as default
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=index2.vue.js.map
|