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,49 @@
|
|
|
1
|
+
import { defineComponent as c, openBlock as a, createElementBlock as s, normalizeClass as m, createVNode as o, withDirectives as u, createElementVNode as v, toDisplayString as f, unref as t, vShow as h, createCommentVNode as w, withCtx as B } from "vue";
|
|
2
|
+
import { NScrollbar as _, NMenu as N } from "naive-ui";
|
|
3
|
+
import S from "../../components/SmartLogo.vue.js";
|
|
4
|
+
import { useSite as y } from "../../composables/useSite.js";
|
|
5
|
+
const C = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "brand"
|
|
8
|
+
}, z = /* @__PURE__ */ c({
|
|
9
|
+
__name: "SideNav",
|
|
10
|
+
props: {
|
|
11
|
+
options: {},
|
|
12
|
+
value: {},
|
|
13
|
+
collapsed: { type: Boolean },
|
|
14
|
+
rail: { type: Boolean },
|
|
15
|
+
showBrand: { type: Boolean }
|
|
16
|
+
},
|
|
17
|
+
emits: ["select"],
|
|
18
|
+
setup(n, { emit: i }) {
|
|
19
|
+
const { site: r } = y(), e = n, p = i;
|
|
20
|
+
return (b, l) => (a(), s("div", {
|
|
21
|
+
class: m(["sidenav", { rail: e.rail }])
|
|
22
|
+
}, [
|
|
23
|
+
e.showBrand ? (a(), s("div", C, [
|
|
24
|
+
o(S, { size: 30 }),
|
|
25
|
+
u(v("span", { class: "brand-name" }, f(t(r).title), 513), [
|
|
26
|
+
[h, !e.collapsed && !e.rail]
|
|
27
|
+
])
|
|
28
|
+
])) : w("", !0),
|
|
29
|
+
o(t(_), null, {
|
|
30
|
+
default: B(() => [
|
|
31
|
+
o(t(N), {
|
|
32
|
+
options: e.options,
|
|
33
|
+
value: e.value,
|
|
34
|
+
collapsed: e.collapsed || e.rail,
|
|
35
|
+
"collapsed-width": e.rail ? 64 : 76,
|
|
36
|
+
indent: 20,
|
|
37
|
+
"root-indent": 20,
|
|
38
|
+
"onUpdate:value": l[0] || (l[0] = (d) => p("select", d))
|
|
39
|
+
}, null, 8, ["options", "value", "collapsed", "collapsed-width"])
|
|
40
|
+
]),
|
|
41
|
+
_: 1
|
|
42
|
+
})
|
|
43
|
+
], 2));
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
export {
|
|
47
|
+
z as default
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=SideNav2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNav2.vue.js","sources":["../../../src/layouts/components/SideNav.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 侧栏薄壳:对 n-menu 的展示层封装,default.vue 复用于 4 处——完整树/二级子树/一级图标 rail/移动抽屉。\n// collapsed(用户折叠开关) 与 rail(一级细栏,恒图标态、固定窄宽、无品牌字) 是两条独立的\"收窄\"来源,\n// 二者任一为真都令 n-menu 进入 collapsed;rail 另用更窄的 collapsed-width。\nimport { NMenu, NScrollbar, type MenuOption } from 'naive-ui'\nimport SmartLogo from '#/components/SmartLogo.vue'\nimport { useSite } from '#/composables/useSite'\n\nconst { site } = useSite()\n\nconst props = defineProps<{\n options: MenuOption[]\n value?: string\n collapsed?: boolean\n rail?: boolean // 细图标栏(一级),强制图标态、无品牌文字\n showBrand?: boolean\n}>()\nconst emit = defineEmits<{ select: [key: string] }>()\n</script>\n\n<template>\n <div class=\"sidenav\" :class=\"{ rail: props.rail }\">\n <div v-if=\"props.showBrand\" class=\"brand\">\n <SmartLogo :size=\"30\" />\n <span v-show=\"!props.collapsed && !props.rail\" class=\"brand-name\">{{ site.title }}</span>\n </div>\n <n-scrollbar>\n <n-menu\n :options=\"props.options\"\n :value=\"props.value\"\n :collapsed=\"props.collapsed || props.rail\"\n :collapsed-width=\"props.rail ? 64 : 76\"\n :indent=\"20\"\n :root-indent=\"20\"\n @update:value=\"(k: string) => emit('select', k)\"\n />\n </n-scrollbar>\n </div>\n</template>\n\n<style scoped>\n.sidenav {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--color-bg-container);\n overflow: hidden;\n}\n.brand {\n display: flex;\n align-items: center;\n gap: 10px;\n height: var(--header-h);\n padding: 0 22px;\n color: var(--color-text-primary);\n font-weight: 600;\n overflow: hidden;\n white-space: nowrap;\n flex-shrink: 0;\n}\n.rail .brand {\n padding: 0;\n justify-content: center;\n}\n.brand-name {\n font-size: 20px;\n font-weight: 700;\n color: var(--color-text-primary); /* 品牌文字跟随主题文字色:固定深蓝在暗色下看不清 */\n}\n.sidenav :deep(.n-scrollbar) {\n flex: 1;\n min-height: 0;\n}\n</style>\n"],"names":["site","useSite","props","__props","emit","__emit","_createElementBlock","_normalizeClass","_openBlock","_hoisted_1","_createVNode","SmartLogo","_withDirectives","_createElementVNode","_toDisplayString","_unref","_vShow","NScrollbar","NMenu","_cache","k"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,UAAM,EAAE,MAAAA,EAAA,IAASC,EAAA,GAEXC,IAAQC,GAORC,IAAOC;2BAIXC,EAgBM,OAAA;AAAA,MAhBD,OAAKC,EAAA,CAAC,WAAS,EAAA,MAAiBL,EAAM,MAAI,CAAA;AAAA,IAAA;MAClCA,EAAM,aAAjBM,EAAA,GAAAF,EAGM,OAHNG,GAGM;AAAA,QAFJC,EAAwBC,GAAA,EAAZ,MAAM,IAAE;AAAA,QACpBC,EAAAC,EAAyF,UAA1C,OAAM,aAAA,GAAYC,EAAIC,EAAAf,CAAA,EAAK,KAAK,GAAA,GAAA,GAAA;AAAA,UAAhE,CAAAgB,GAAA,CAAAd,EAAM,aAAS,CAAKA,EAAM,IAAI;AAAA,QAAA;;MAE/CQ,EAUcK,EAAAE,CAAA,GAAA,MAAA;AAAA,mBATZ,MAQE;AAAA,UARFP,EAQEK,EAAAG,CAAA,GAAA;AAAA,YAPC,SAAShB,EAAM;AAAA,YACf,OAAOA,EAAM;AAAA,YACb,WAAWA,EAAM,aAAaA,EAAM;AAAA,YACpC,mBAAiBA,EAAM,OAAI,KAAA;AAAA,YAC3B,QAAQ;AAAA,YACR,eAAa;AAAA,YACb,kBAAYiB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAGC,MAAchB,YAAegB,CAAC;AAAA,UAAA;;;;;;;"}
|
|
@@ -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":"default.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { defineComponent as J, onMounted as P, onUnmounted as Q, ref as C, computed as o, watch as X, nextTick as T, openBlock as l, createElementBlock as w, normalizeClass as k, normalizeStyle as Y, Fragment as Z, createVNode as r, unref as e, withDirectives as ee, vShow as te, createBlock as i, createCommentVNode as c, createElementVNode as b, withCtx as s, Transition as ae, KeepAlive as oe, resolveDynamicComponent as re } from "vue";
|
|
2
|
+
import { RouterView as le } from "vue-router";
|
|
3
|
+
import { NButton as ie, NWatermark as se, NDrawer as ne, NDrawerContent as ue } from "naive-ui";
|
|
4
|
+
import { Icon as ce } from "@iconify/vue";
|
|
5
|
+
import { useBreakpoints as de, breakpointsTailwind as pe } from "@vueuse/core";
|
|
6
|
+
import { useI18n as me } from "vue-i18n";
|
|
7
|
+
import { useAppStore as ve } from "../stores/app.js";
|
|
8
|
+
import { useUserStore as he } from "../stores/user.js";
|
|
9
|
+
import { useLayoutMenu as fe } from "../composables/useLayoutMenu.js";
|
|
10
|
+
import { useTabsStore as we } from "../stores/tabs.js";
|
|
11
|
+
import { useSite as be } from "../composables/useSite.js";
|
|
12
|
+
import { useRealtime as ye } from "../composables/useRealtime.js";
|
|
13
|
+
import { useVisualViewportHeight as Se } from "../composables/useVisualViewportHeight.js";
|
|
14
|
+
import ke from "../components/ErrorBoundary/index.vue.js";
|
|
15
|
+
import _e from "./AppHeader.vue.js";
|
|
16
|
+
import d from "./components/SideNav.vue.js";
|
|
17
|
+
import xe from "./TabsBar.vue.js";
|
|
18
|
+
const Ne = { class: "apph" }, ge = { class: "content" }, Be = {
|
|
19
|
+
key: 0,
|
|
20
|
+
class: "tabs"
|
|
21
|
+
}, Ce = { class: "page" }, We = /* @__PURE__ */ J({
|
|
22
|
+
__name: "default",
|
|
23
|
+
setup(Te) {
|
|
24
|
+
const { t: M } = me(), t = ve(), V = he(), p = we(), { site: z } = be(), { menuOptions: _, l1Options: x, l2Options: N, selectedL1: g, activeKey: m, onSelect: y, onSelectL1: B } = fe(), { start: D, stop: O } = ye();
|
|
25
|
+
P(D), Q(O), Se();
|
|
26
|
+
const n = de(pe).smaller("md"), v = C(!1), a = o(() => n.value ? "mobile" : t.layoutMode), R = /* @__PURE__ */ new Set([
|
|
27
|
+
"vertical",
|
|
28
|
+
"vertical-mix",
|
|
29
|
+
"vertical-hybrid-header-first",
|
|
30
|
+
"top-hybrid-sidebar-first",
|
|
31
|
+
"top-hybrid-header-first"
|
|
32
|
+
]), A = /* @__PURE__ */ new Set([
|
|
33
|
+
"horizontal",
|
|
34
|
+
"vertical-hybrid-header-first",
|
|
35
|
+
"top-hybrid-sidebar-first",
|
|
36
|
+
"top-hybrid-header-first"
|
|
37
|
+
]), E = o(() => !n.value && R.has(t.layoutMode)), H = o(() => a.value === "vertical" || a.value === "vertical-mix"), I = o(() => n.value || A.has(a.value)), K = o(() => {
|
|
38
|
+
switch (a.value) {
|
|
39
|
+
case "horizontal":
|
|
40
|
+
return "full";
|
|
41
|
+
case "vertical-hybrid-header-first":
|
|
42
|
+
case "top-hybrid-header-first":
|
|
43
|
+
return "l1";
|
|
44
|
+
case "top-hybrid-sidebar-first":
|
|
45
|
+
return "l2";
|
|
46
|
+
default:
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}), L = /* @__PURE__ */ new Set([
|
|
50
|
+
"vertical",
|
|
51
|
+
"vertical-mix",
|
|
52
|
+
"vertical-hybrid-header-first",
|
|
53
|
+
"top-hybrid-header-first"
|
|
54
|
+
]), U = o(() => !n.value && L.has(a.value)), $ = o(
|
|
55
|
+
() => a.value === "vertical" ? _.value : N.value
|
|
56
|
+
), j = o(() => a.value === "vertical-mix" ? { width: t.collapsed ? "var(--rail-w)" : "calc(var(--rail-w) + var(--sidebar-w))" } : a.value === "top-hybrid-sidebar-first" ? { width: "var(--rail-w)" } : { width: t.collapsed ? "var(--sidebar-w-collapsed)" : "var(--sidebar-w)" }), q = o(
|
|
57
|
+
() => t.pageTransition === "none" ? void 0 : t.pageTransition
|
|
58
|
+
), F = o(
|
|
59
|
+
() => {
|
|
60
|
+
var u;
|
|
61
|
+
return [(u = V.userInfo) == null ? void 0 : u.name, t.watermarkText].filter(Boolean).join(" · ") || z.title;
|
|
62
|
+
}
|
|
63
|
+
), W = o(() => t.isDark ? "rgba(255,255,255,0.12)" : "rgba(0,0,0,0.06)");
|
|
64
|
+
function G(u) {
|
|
65
|
+
y(u), v.value = !1;
|
|
66
|
+
}
|
|
67
|
+
const S = C(!0);
|
|
68
|
+
return X(
|
|
69
|
+
() => p.reloadKey,
|
|
70
|
+
async () => {
|
|
71
|
+
S.value = !1, await T(), S.value = !0, await T(), p.excludeName = "";
|
|
72
|
+
}
|
|
73
|
+
), (u, h) => (l(), w("div", {
|
|
74
|
+
class: k(["layout", `mode-${a.value}`])
|
|
75
|
+
}, [
|
|
76
|
+
E.value ? (l(), w("aside", {
|
|
77
|
+
key: 0,
|
|
78
|
+
class: k(["aside", { "aside--mix": a.value === "vertical-mix" }]),
|
|
79
|
+
style: Y(j.value)
|
|
80
|
+
}, [
|
|
81
|
+
a.value === "vertical-mix" ? (l(), w(Z, { key: 0 }, [
|
|
82
|
+
r(d, {
|
|
83
|
+
class: "rail",
|
|
84
|
+
options: e(x),
|
|
85
|
+
value: e(g),
|
|
86
|
+
rail: "",
|
|
87
|
+
"show-brand": "",
|
|
88
|
+
onSelect: e(B)
|
|
89
|
+
}, null, 8, ["options", "value", "onSelect"]),
|
|
90
|
+
ee(r(d, {
|
|
91
|
+
class: "l2col",
|
|
92
|
+
options: e(N),
|
|
93
|
+
value: e(m),
|
|
94
|
+
onSelect: e(y)
|
|
95
|
+
}, null, 8, ["options", "value", "onSelect"]), [
|
|
96
|
+
[te, !e(t).collapsed]
|
|
97
|
+
])
|
|
98
|
+
], 64)) : a.value === "top-hybrid-sidebar-first" ? (l(), i(d, {
|
|
99
|
+
key: 1,
|
|
100
|
+
options: e(x),
|
|
101
|
+
value: e(g),
|
|
102
|
+
rail: "",
|
|
103
|
+
onSelect: e(B)
|
|
104
|
+
}, null, 8, ["options", "value", "onSelect"])) : (l(), i(d, {
|
|
105
|
+
key: 2,
|
|
106
|
+
options: $.value,
|
|
107
|
+
value: e(m),
|
|
108
|
+
collapsed: e(t).collapsed,
|
|
109
|
+
"show-brand": H.value,
|
|
110
|
+
onSelect: e(y)
|
|
111
|
+
}, null, 8, ["options", "value", "collapsed", "show-brand", "onSelect"]))
|
|
112
|
+
], 6)) : c("", !0),
|
|
113
|
+
b("header", {
|
|
114
|
+
class: k(["header", { "header--static": !e(t).fixedHeader }])
|
|
115
|
+
}, [
|
|
116
|
+
e(n) ? (l(), i(e(ie), {
|
|
117
|
+
key: 0,
|
|
118
|
+
quaternary: "",
|
|
119
|
+
circle: "",
|
|
120
|
+
class: "hbg",
|
|
121
|
+
"aria-label": e(M)("app.openMenu"),
|
|
122
|
+
onClick: h[0] || (h[0] = (f) => v.value = !0)
|
|
123
|
+
}, {
|
|
124
|
+
default: s(() => [
|
|
125
|
+
r(e(ce), {
|
|
126
|
+
icon: "ph:list",
|
|
127
|
+
width: 20
|
|
128
|
+
})
|
|
129
|
+
]),
|
|
130
|
+
_: 1
|
|
131
|
+
}, 8, ["aria-label"])) : c("", !0),
|
|
132
|
+
b("div", Ne, [
|
|
133
|
+
r(_e, {
|
|
134
|
+
"show-collapse": U.value,
|
|
135
|
+
"show-brand": I.value,
|
|
136
|
+
"top-menu": K.value
|
|
137
|
+
}, null, 8, ["show-collapse", "show-brand", "top-menu"])
|
|
138
|
+
])
|
|
139
|
+
], 2),
|
|
140
|
+
b("main", ge, [
|
|
141
|
+
e(t).showTabs ? (l(), w("div", Be, [
|
|
142
|
+
r(xe)
|
|
143
|
+
])) : c("", !0),
|
|
144
|
+
b("div", Ce, [
|
|
145
|
+
r(ke, null, {
|
|
146
|
+
default: s(() => [
|
|
147
|
+
r(e(le), null, {
|
|
148
|
+
default: s(({ Component: f }) => [
|
|
149
|
+
r(ae, {
|
|
150
|
+
name: q.value,
|
|
151
|
+
mode: "out-in"
|
|
152
|
+
}, {
|
|
153
|
+
default: s(() => [
|
|
154
|
+
(l(), i(oe, {
|
|
155
|
+
include: e(p).cachedNames,
|
|
156
|
+
exclude: e(p).excludeName
|
|
157
|
+
}, [
|
|
158
|
+
S.value ? (l(), i(re(f), { key: e(m) })) : c("", !0)
|
|
159
|
+
], 1032, ["include", "exclude"]))
|
|
160
|
+
]),
|
|
161
|
+
_: 2
|
|
162
|
+
}, 1032, ["name"])
|
|
163
|
+
]),
|
|
164
|
+
_: 1
|
|
165
|
+
})
|
|
166
|
+
]),
|
|
167
|
+
_: 1
|
|
168
|
+
})
|
|
169
|
+
]),
|
|
170
|
+
e(t).watermark ? (l(), i(e(se), {
|
|
171
|
+
key: 1,
|
|
172
|
+
content: F.value,
|
|
173
|
+
cross: "",
|
|
174
|
+
fullscreen: "",
|
|
175
|
+
"font-size": 14,
|
|
176
|
+
"line-height": 16,
|
|
177
|
+
width: 192,
|
|
178
|
+
height: 128,
|
|
179
|
+
rotate: -16,
|
|
180
|
+
"font-color": W.value
|
|
181
|
+
}, null, 8, ["content", "font-color"])) : c("", !0)
|
|
182
|
+
]),
|
|
183
|
+
r(e(ne), {
|
|
184
|
+
show: v.value,
|
|
185
|
+
"onUpdate:show": h[1] || (h[1] = (f) => v.value = f),
|
|
186
|
+
placement: "left",
|
|
187
|
+
width: 236
|
|
188
|
+
}, {
|
|
189
|
+
default: s(() => [
|
|
190
|
+
r(e(ue), {
|
|
191
|
+
"native-scrollbar": !1,
|
|
192
|
+
"body-content-style": "padding:0"
|
|
193
|
+
}, {
|
|
194
|
+
default: s(() => [
|
|
195
|
+
r(d, {
|
|
196
|
+
options: e(_),
|
|
197
|
+
value: e(m),
|
|
198
|
+
"show-brand": "",
|
|
199
|
+
onSelect: G
|
|
200
|
+
}, null, 8, ["options", "value"])
|
|
201
|
+
]),
|
|
202
|
+
_: 1
|
|
203
|
+
})
|
|
204
|
+
]),
|
|
205
|
+
_: 1
|
|
206
|
+
}, 8, ["show"])
|
|
207
|
+
], 2));
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
export {
|
|
211
|
+
We as default
|
|
212
|
+
};
|
|
213
|
+
//# sourceMappingURL=default2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default2.vue.js","sources":["../../src/layouts/default.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { RouterView } from 'vue-router'\nimport { NWatermark, NDrawer, NDrawerContent, NButton } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useBreakpoints, breakpointsTailwind } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n'\nimport { useAppStore, type LayoutMode } from '#/stores/app'\nimport { useUserStore } from '#/stores/user'\nimport { useLayoutMenu } from '#/composables/useLayoutMenu'\nimport { useTabsStore } from '#/stores/tabs'\nimport { useSite } from '#/composables/useSite'\nimport { useRealtime } from '#/composables/useRealtime'\nimport { useVisualViewportHeight } from '#/composables/useVisualViewportHeight'\nimport ErrorBoundary from '#/components/ErrorBoundary/index.vue'\nimport AppHeader from './AppHeader.vue'\nimport SideNav from './components/SideNav.vue'\nimport TabsBar from './TabsBar.vue'\n\nconst { t } = useI18n()\nconst app = useAppStore()\nconst user = useUserStore()\nconst tabs = useTabsStore()\nconst { site } = useSite()\nconst { menuOptions, l1Options, l2Options, selectedL1, activeKey, onSelect, onSelectL1 } =\n useLayoutMenu()\n\n// 实时通知(SignalR):鉴权外壳挂载即连、卸载即断。后端未开启实时时连接静默失败,退回轮询/惰性 401(纯增强)。\nconst { start: startRealtime, stop: stopRealtime } = useRealtime()\nonMounted(startRealtime)\nonUnmounted(stopRealtime)\n\n// 维护 --vvh(真实可视高度):软键盘弹起时 dvh 不变,只有 visualViewport 会缩。\n// 布局壳自身用 100dvh 就够,变量留给需要贴着键盘排版的页面(见 composables/useVisualViewportHeight)。\nuseVisualViewportHeight()\n\nconst isMobile = useBreakpoints(breakpointsTailwind).smaller('md')\nconst mobileOpen = ref(false)\n\n// 窄屏忽略 layoutMode,统一走 mobile(单列 + 抽屉侧栏)。\nconst mode = computed<LayoutMode | 'mobile'>(() => (isMobile.value ? 'mobile' : app.layoutMode))\n\n// 除 horizontal(无侧栏)外都有侧栏。\nconst withSider = new Set<LayoutMode>([\n 'vertical',\n 'vertical-mix',\n 'vertical-hybrid-header-first',\n 'top-hybrid-sidebar-first',\n 'top-hybrid-header-first',\n])\n// 顶栏显示品牌的模式(其余由侧栏/rail 顶部显示品牌,保证每种布局品牌只出现一处)。\nconst headerBrandModes = new Set<string>([\n 'horizontal',\n 'vertical-hybrid-header-first',\n 'top-hybrid-sidebar-first',\n 'top-hybrid-header-first',\n])\nconst showSider = computed(() => !isMobile.value && withSider.has(app.layoutMode))\nconst sideShowBrand = computed(() => mode.value === 'vertical' || mode.value === 'vertical-mix')\nconst headerShowBrand = computed(() => isMobile.value || headerBrandModes.has(mode.value))\n// 顶栏菜单:horizontal=完整树;两个 header-first=一级;侧边优先=二级(选中的一级的子菜单)。\nconst headerTopMenu = computed<'full' | 'l1' | 'l2' | null>(() => {\n switch (mode.value) {\n case 'horizontal':\n return 'full'\n case 'vertical-hybrid-header-first':\n case 'top-hybrid-header-first':\n return 'l1'\n case 'top-hybrid-sidebar-first':\n return 'l2'\n default:\n return null\n }\n})\n// 折叠按钮:有可折叠树侧栏的模式(侧边优先的一级 rail 固定宽,不折叠)。\nconst collapsibleSider = new Set<string>([\n 'vertical',\n 'vertical-mix',\n 'vertical-hybrid-header-first',\n 'top-hybrid-header-first',\n])\nconst showCollapse = computed(() => !isMobile.value && collapsibleSider.has(mode.value))\n\n// 非特殊侧栏内容:vertical=完整树;两个 header-first hybrid=二级子菜单树。\nconst asideOptions = computed(() =>\n mode.value === 'vertical' ? menuOptions.value : l2Options.value,\n)\nconst asideStyle = computed(() => {\n if (mode.value === 'vertical-mix') {\n return { width: app.collapsed ? 'var(--rail-w)' : 'calc(var(--rail-w) + var(--sidebar-w))' }\n }\n if (mode.value === 'top-hybrid-sidebar-first') {\n return { width: 'var(--rail-w)' } // 一级 icon rail,固定宽\n }\n return { width: app.collapsed ? 'var(--sidebar-w-collapsed)' : 'var(--sidebar-w)' }\n})\n\nconst transitionName = computed(() =>\n app.pageTransition === 'none' ? undefined : app.pageTransition,\n)\n\nconst watermarkContent = computed(\n () => [user.userInfo?.name, app.watermarkText].filter(Boolean).join(' · ') || site.title,\n)\nconst watermarkColor = computed(() => (app.isDark ? 'rgba(255,255,255,0.12)' : 'rgba(0,0,0,0.06)'))\n\nfunction onMobileSelect(key: string) {\n onSelect(key)\n mobileOpen.value = false\n}\n\n// 刷新标签:store 置 excludeName(逐出缓存)+ 递增 reloadKey;这里 v-if 关开一次令当前页重挂,再放行缓存。\nconst rvShow = ref(true)\nwatch(\n () => tabs.reloadKey,\n async () => {\n rvShow.value = false\n await nextTick()\n rvShow.value = true\n await nextTick()\n tabs.excludeName = ''\n },\n)\n</script>\n\n<template>\n <div class=\"layout\" :class=\"`mode-${mode}`\">\n <!-- 侧栏 -->\n <aside\n v-if=\"showSider\"\n class=\"aside\"\n :class=\"{ 'aside--mix': mode === 'vertical-mix' }\"\n :style=\"asideStyle\"\n >\n <template v-if=\"mode === 'vertical-mix'\">\n <SideNav\n class=\"rail\"\n :options=\"l1Options\"\n :value=\"selectedL1\"\n rail\n show-brand\n @select=\"onSelectL1\"\n />\n <SideNav\n v-show=\"!app.collapsed\"\n class=\"l2col\"\n :options=\"l2Options\"\n :value=\"activeKey\"\n @select=\"onSelect\"\n />\n </template>\n <!-- 顶部混合-侧边优先:侧栏只放一级 icon rail(二级在顶栏) -->\n <SideNav\n v-else-if=\"mode === 'top-hybrid-sidebar-first'\"\n :options=\"l1Options\"\n :value=\"selectedL1\"\n rail\n @select=\"onSelectL1\"\n />\n <SideNav\n v-else\n :options=\"asideOptions\"\n :value=\"activeKey\"\n :collapsed=\"app.collapsed\"\n :show-brand=\"sideShowBrand\"\n @select=\"onSelect\"\n />\n </aside>\n\n <!-- 顶栏 -->\n <header class=\"header\" :class=\"{ 'header--static': !app.fixedHeader }\">\n <n-button\n v-if=\"isMobile\"\n quaternary\n circle\n class=\"hbg\"\n :aria-label=\"t('app.openMenu')\"\n @click=\"mobileOpen = true\"\n >\n <Icon icon=\"ph:list\" :width=\"20\" />\n </n-button>\n <div class=\"apph\">\n <AppHeader\n :show-collapse=\"showCollapse\"\n :show-brand=\"headerShowBrand\"\n :top-menu=\"headerTopMenu\"\n />\n </div>\n </header>\n\n <!-- 内容 -->\n <main class=\"content\">\n <div v-if=\"app.showTabs\" class=\"tabs\"><TabsBar /></div>\n <div class=\"page\">\n <!-- 错误边界包住整个内容区:页面组件抛异常时 Vue 会卸掉整棵子树,没有它就是白屏。\n component :key=路由 path 给稳定身份:out-in 过渡才能正确区分进/出场,否则显示上一页缓存\n (按 path 各自成键,不塌缩缓存)。每个页面经 namedPage 套了一层 <div.page-view> 单元素根,\n out-in 能瞬时过渡任何页,无需卡死自愈的看门狗。 -->\n <ErrorBoundary>\n <router-view v-slot=\"{ Component }\">\n <transition :name=\"transitionName\" mode=\"out-in\">\n <keep-alive :include=\"tabs.cachedNames\" :exclude=\"tabs.excludeName\">\n <component :is=\"Component\" v-if=\"rvShow\" :key=\"activeKey\" />\n </keep-alive>\n </transition>\n </router-view>\n </ErrorBoundary>\n </div>\n <n-watermark\n v-if=\"app.watermark\"\n :content=\"watermarkContent\"\n cross\n fullscreen\n :font-size=\"14\"\n :line-height=\"16\"\n :width=\"192\"\n :height=\"128\"\n :rotate=\"-16\"\n :font-color=\"watermarkColor\"\n />\n </main>\n\n <!-- 移动端抽屉侧栏 -->\n <n-drawer v-model:show=\"mobileOpen\" placement=\"left\" :width=\"236\">\n <n-drawer-content :native-scrollbar=\"false\" body-content-style=\"padding:0\">\n <SideNav :options=\"menuOptions\" :value=\"activeKey\" show-brand @select=\"onMobileSelect\" />\n </n-drawer-content>\n </n-drawer>\n </div>\n</template>\n\n<style scoped>\n.layout {\n display: grid;\n /* dvh 而非 vh:移动端浏览器地址栏收起时 vh 仍按最小视口算,底部会被裁掉一条 */\n height: 100dvh;\n overflow: hidden;\n background: var(--color-bg-app); /* 整页画布跟随 tokens,暗色自动切深蓝黑渐变 */\n}\n/* 竖向壳:侧栏满高在左,顶栏缩进到内容列上方 */\n.mode-vertical,\n.mode-vertical-mix,\n.mode-vertical-hybrid-header-first {\n grid-template-columns: auto 1fr;\n grid-template-rows: var(--header-h) 1fr;\n grid-template-areas: 'aside header' 'aside content';\n}\n/* 顶栏壳:顶栏通栏,侧栏在其下方左侧 */\n.mode-top-hybrid-sidebar-first,\n.mode-top-hybrid-header-first {\n grid-template-columns: auto 1fr;\n grid-template-rows: var(--header-h) 1fr;\n grid-template-areas: 'header header' 'aside content';\n}\n.mode-horizontal,\n.mode-mobile {\n grid-template-columns: 1fr;\n grid-template-rows: var(--header-h) 1fr;\n grid-template-areas: 'header' 'content';\n}\n\n.aside {\n grid-area: aside;\n height: 100%;\n overflow: hidden;\n border-right: 1px solid var(--color-border);\n background: var(--color-bg-container);\n backdrop-filter: blur(18px); /* 侧栏玻璃背景,与顶栏/弹层质感统一 */\n -webkit-backdrop-filter: blur(18px);\n transition: width 0.2s ease;\n}\n.aside--mix {\n display: flex;\n}\n.aside--mix .rail {\n width: var(--rail-w);\n flex-shrink: 0;\n border-right: 1px solid var(--color-border);\n}\n.aside--mix .l2col {\n flex: 1;\n min-width: 0;\n}\n\n.header {\n grid-area: header;\n display: flex;\n align-items: stretch;\n border-bottom: 1px solid var(--color-border);\n background: var(--color-header-bg);\n backdrop-filter: blur(12px);\n z-index: 10;\n}\n.header--static {\n backdrop-filter: none;\n}\n.hbg {\n align-self: center;\n margin-left: 8px;\n}\n.apph {\n flex: 1;\n min-width: 0;\n height: 100%;\n}\n\n.content {\n grid-area: content;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n.tabs {\n flex-shrink: 0;\n}\n.page {\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: var(--pad-page);\n}\n</style>\n"],"names":["t","useI18n","app","useAppStore","user","useUserStore","tabs","useTabsStore","site","useSite","menuOptions","l1Options","l2Options","selectedL1","activeKey","onSelect","onSelectL1","useLayoutMenu","startRealtime","stopRealtime","useRealtime","onMounted","onUnmounted","useVisualViewportHeight","isMobile","useBreakpoints","breakpointsTailwind","mobileOpen","ref","mode","computed","withSider","headerBrandModes","showSider","sideShowBrand","headerShowBrand","headerTopMenu","collapsibleSider","showCollapse","asideOptions","asideStyle","transitionName","watermarkContent","_a","watermarkColor","onMobileSelect","key","rvShow","watch","nextTick","_createElementBlock","_normalizeClass","_Fragment","_createVNode","SideNav","_unref","_vShow","_createBlock","_createElementVNode","NButton","Icon","_hoisted_1","AppHeader","_hoisted_2","_openBlock","_hoisted_3","TabsBar","_hoisted_4","ErrorBoundary","RouterView","_withCtx","Component","_Transition","_KeepAlive","_resolveDynamicComponent","NWatermark","NDrawer","$event","NDrawerContent"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** 是不是「旧 chunk 没了」这类动态导入失败。 */
|
|
2
|
+
export declare function isChunkLoadError(err: unknown): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* 本标签页还没自动重载过就重载,返回是否真的触发了。
|
|
5
|
+
* sessionStorage 读写在隐私模式下会抛 —— 那时宁可不重载,也不能冒死循环的险。
|
|
6
|
+
*/
|
|
7
|
+
export declare function reloadOnce(): boolean;
|
|
8
|
+
/** 是 chunk 失效且本页还没自救过 → 重载。返回 true 表示调用方不必再弹错误。 */
|
|
9
|
+
export declare function reloadOnChunkError(err: unknown): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const t = "smart:chunk-reloaded", o = /dynamically imported module|Importing a module script failed|ChunkLoadError|Loading chunk \d+ failed|css chunk/i;
|
|
2
|
+
function r(n) {
|
|
3
|
+
if (!n) return !1;
|
|
4
|
+
const e = n instanceof Error ? `${n.name}: ${n.message}` : String(n);
|
|
5
|
+
return o.test(e);
|
|
6
|
+
}
|
|
7
|
+
function a() {
|
|
8
|
+
try {
|
|
9
|
+
if (sessionStorage.getItem(t)) return !1;
|
|
10
|
+
sessionStorage.setItem(t, "1");
|
|
11
|
+
} catch {
|
|
12
|
+
return !1;
|
|
13
|
+
}
|
|
14
|
+
return window.location.reload(), !0;
|
|
15
|
+
}
|
|
16
|
+
function s(n) {
|
|
17
|
+
return r(n) && a();
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
r as isChunkLoadError,
|
|
21
|
+
s as reloadOnChunkError,
|
|
22
|
+
a as reloadOnce
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=chunkReload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunkReload.js","sources":["../../src/lib/chunkReload.ts"],"sourcesContent":["// 发版后旧 chunk 404 的兜底。\n//\n// 用户停在旧的 index.html,而懒加载的 JS 文件名带 hash,新版一上线旧文件就没了 ——\n// 再点任何一个还没加载过的页面就是白屏。唯一可靠的修法是重载页面拿新 index.html。\n// 但如果新版本身也加载不了(CDN 没同步完、断网、被网关拦),无条件重载会变成刷新死循环,\n// 所以用 sessionStorage 记一次:每个标签页只自动救一次,之后交给错误边界让用户自己决定。\n\nconst RELOADED_FLAG = 'smart:chunk-reloaded'\n\n// 各浏览器对「动态导入失败」的文案不统一,统一按关键词认。\nconst CHUNK_ERROR_RE =\n /dynamically imported module|Importing a module script failed|ChunkLoadError|Loading chunk \\d+ failed|css chunk/i\n\n/** 是不是「旧 chunk 没了」这类动态导入失败。 */\nexport function isChunkLoadError(err: unknown): boolean {\n if (!err) return false\n const text = err instanceof Error ? `${err.name}: ${err.message}` : String(err)\n return CHUNK_ERROR_RE.test(text)\n}\n\n/**\n * 本标签页还没自动重载过就重载,返回是否真的触发了。\n * sessionStorage 读写在隐私模式下会抛 —— 那时宁可不重载,也不能冒死循环的险。\n */\nexport function reloadOnce(): boolean {\n try {\n if (sessionStorage.getItem(RELOADED_FLAG)) return false\n sessionStorage.setItem(RELOADED_FLAG, '1')\n } catch {\n return false\n }\n window.location.reload()\n return true\n}\n\n/** 是 chunk 失效且本页还没自救过 → 重载。返回 true 表示调用方不必再弹错误。 */\nexport function reloadOnChunkError(err: unknown): boolean {\n return isChunkLoadError(err) && reloadOnce()\n}\n"],"names":["RELOADED_FLAG","CHUNK_ERROR_RE","isChunkLoadError","err","text","reloadOnce","reloadOnChunkError"],"mappings":"AAOA,MAAMA,IAAgB,wBAGhBC,IACJ;AAGK,SAASC,EAAiBC,GAAuB;AACtD,MAAI,CAACA,EAAK,QAAO;AACjB,QAAMC,IAAOD,aAAe,QAAQ,GAAGA,EAAI,IAAI,KAAKA,EAAI,OAAO,KAAK,OAAOA,CAAG;AAC9E,SAAOF,EAAe,KAAKG,CAAI;AACjC;AAMO,SAASC,IAAsB;AACpC,MAAI;AACF,QAAI,eAAe,QAAQL,CAAa,EAAG,QAAO;AAClD,mBAAe,QAAQA,GAAe,GAAG;AAAA,EAC3C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,gBAAO,SAAS,OAAA,GACT;AACT;AAGO,SAASM,EAAmBH,GAAuB;AACxD,SAAOD,EAAiBC,CAAG,KAAKE,EAAA;AAClC;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import o from "../assets/svg/star.svg.js";
|
|
2
|
+
import { addCollection as t } from "@iconify/vue";
|
|
3
|
+
import { setupSmartIcon as n } from "smart-naive-icon";
|
|
4
|
+
import r from "../assets/icons/ph-subset.json.js";
|
|
5
|
+
const i = [
|
|
6
|
+
{
|
|
7
|
+
prefix: "ph",
|
|
8
|
+
name: "Phosphor",
|
|
9
|
+
loader: () => import("@iconify-json/ph/icons.json").then((e) => e.default)
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
prefix: "lucide",
|
|
13
|
+
name: "Lucide",
|
|
14
|
+
loader: () => import("@iconify-json/lucide/icons.json").then((e) => e.default)
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
prefix: "ep",
|
|
18
|
+
name: "Element Plus",
|
|
19
|
+
loader: () => import("@iconify-json/ep/icons.json").then((e) => e.default)
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
prefix: "ant-design",
|
|
23
|
+
name: "Ant Design",
|
|
24
|
+
loader: () => import("@iconify-json/ant-design/icons.json").then((e) => e.default)
|
|
25
|
+
}
|
|
26
|
+
], s = "__none__", a = /* @__PURE__ */ Object.assign({
|
|
27
|
+
"../assets/svg/star.svg": o
|
|
28
|
+
});
|
|
29
|
+
function d(e = {}) {
|
|
30
|
+
t(r), n({
|
|
31
|
+
collections: i,
|
|
32
|
+
localIcons: { ...a, ...e },
|
|
33
|
+
preloadPrefix: s
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
d as setupIcons
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sources":["../../src/lib/icons.ts"],"sourcesContent":["// SmartAdmin 侧图标 bootstrap:把 4 套离线集 + 本地 SVG 注册进 smart-naive-icon,并同步装入 ph 子集。\n// 选择器/渲染器逻辑在该独立 npm 包里(见 components/IconPicker、components/AppIcon.vue),这里只做「注册配置」。\n// SmartAdmin 只保留三个薄封装(本文件 + AppIcon.vue + IconPicker/index.vue)。组件本体的 bug 去组件包的仓库提 issue\n// 或本地 patch,不要把组件逻辑复制进 SmartAdmin 修——那会让重复回来。\nimport { addCollection } from '@iconify/vue'\nimport { setupSmartIcon, type IconCollection, type IconifyJSON } from 'smart-naive-icon'\nimport phSubset from '#/assets/icons/ph-subset.json'\n\n// 增删默认离线集:装/卸 `@iconify-json/<prefix>`,并在此加/删一行同 prefix 的 loader。\n// 每套是独立懒加载 chunk;`ph` 是全站默认集,整集只在选择器打开、或渲染到子集外的图标时才拉。\nconst collections: IconCollection[] = [\n {\n prefix: 'ph',\n name: 'Phosphor',\n loader: () => import('@iconify-json/ph/icons.json').then(m => m.default as IconifyJSON),\n },\n {\n prefix: 'lucide',\n name: 'Lucide',\n loader: () => import('@iconify-json/lucide/icons.json').then(m => m.default as IconifyJSON),\n },\n {\n prefix: 'ep',\n name: 'Element Plus',\n loader: () => import('@iconify-json/ep/icons.json').then(m => m.default as IconifyJSON),\n },\n {\n prefix: 'ant-design',\n name: 'Ant Design',\n loader: () => import('@iconify-json/ant-design/icons.json').then(m => m.default as IconifyJSON),\n },\n]\n\n// 包没有「不预热」的开关:preloadIcons 拿不到 prefix 就退回第一套,故给一个必不存在的前缀把预热顶掉——\n// 只同步注册这份子集:预热整套 9000+ 图标(4.5 MB / 946 KB gz)会让首屏白拉掉 dist 四成的体积。\nconst NO_PRELOAD = '__none__'\n\n// 内核自带的本地 SVG(src/assets/svg/*.svg);消费方的经 createSmartAdmin({ icons }) 以同样的 glob 形状传入。\nconst kernelIcons = import.meta.glob('../assets/svg/*.svg', {\n query: '?raw',\n import: 'default',\n eager: true,\n}) as Record<string, string>\n\n/** 首屏调用一次:同步装入 ph 子集,再注册离线集 + 本地 SVG(内核自带 + 消费方传入)。 */\nexport function setupIcons(extraIcons: Record<string, string> = {}): void {\n // 子集同步入库,首帧即可离线渲染静态图标,不必等异步预热,也不会命中外部 CDN。\n // 子集由 `npm run gen:icons` 从 src 里实际用到的名字生成(scripts/gen-icon-subset.mjs)。\n addCollection(phSubset as IconifyJSON)\n setupSmartIcon({\n collections,\n localIcons: { ...kernelIcons, ...extraIcons },\n preloadPrefix: NO_PRELOAD,\n })\n}\n"],"names":["collections","m","NO_PRELOAD","kernelIcons","__vite_glob_0_0","setupIcons","extraIcons","addCollection","phSubset","setupSmartIcon"],"mappings":";;;;AAUA,MAAMA,IAAgC;AAAA,EACpC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,6BAA6B,EAAE,KAAK,CAAAC,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAAA,EAExF;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,iCAAiC,EAAE,KAAK,CAAAA,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAAA,EAE5F;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,6BAA6B,EAAE,KAAK,CAAAA,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAAA,EAExF;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,qCAAqC,EAAE,KAAK,CAAAA,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAElG,GAIMC,IAAa,YAGbC,IAAc,uBAAA,OAAA;AAAA,EAAA,0BAAAC;AAAA,CAAA;AAOb,SAASC,EAAWC,IAAqC,IAAU;AAGxE,EAAAC,EAAcC,CAAuB,GACrCC,EAAe;AAAA,IACb,aAAAT;AAAA,IACA,YAAY,EAAE,GAAGG,GAAa,GAAGG,EAAA;AAAA,IACjC,eAAeJ;AAAA,EAAA,CAChB;AACH;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const loadingBar: {
|
|
2
|
+
start: () => void | undefined;
|
|
3
|
+
finish: () => void | undefined;
|
|
4
|
+
error: () => void | undefined;
|
|
5
|
+
};
|
|
6
|
+
/** 挂在 n-loading-bar-provider 内的空渲染组件,负责把实例交给模块单例。 */
|
|
7
|
+
export declare const LoadingBarBridge: import('vue').DefineComponent<{}, () => null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineComponent as n } from "vue";
|
|
2
|
+
import { useLoadingBar as o } from "naive-ui";
|
|
3
|
+
let r = null;
|
|
4
|
+
const i = {
|
|
5
|
+
start: () => r == null ? void 0 : r.start(),
|
|
6
|
+
finish: () => r == null ? void 0 : r.finish(),
|
|
7
|
+
error: () => r == null ? void 0 : r.error()
|
|
8
|
+
}, s = n({
|
|
9
|
+
name: "LoadingBarBridge",
|
|
10
|
+
setup() {
|
|
11
|
+
return r = o(), () => null;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
export {
|
|
15
|
+
s as LoadingBarBridge,
|
|
16
|
+
i as loadingBar
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=loadingBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadingBar.js","sources":["../../src/lib/loadingBar.ts"],"sourcesContent":["import { defineComponent } from 'vue'\nimport { useLoadingBar, type LoadingBarApi } from 'naive-ui'\n\n// 路由加载进度条桥:useLoadingBar 只能在 Provider 内的 setup 里调,\n// 路由守卫在组件树外,故用模块单例转接。Provider 未挂载前静默 no-op。\nlet api: LoadingBarApi | null = null\n\nexport const loadingBar = {\n start: () => api?.start(),\n finish: () => api?.finish(),\n error: () => api?.error(),\n}\n\n/** 挂在 n-loading-bar-provider 内的空渲染组件,负责把实例交给模块单例。 */\nexport const LoadingBarBridge = defineComponent({\n name: 'LoadingBarBridge',\n setup() {\n api = useLoadingBar()\n return () => null\n },\n})\n"],"names":["api","loadingBar","LoadingBarBridge","defineComponent","useLoadingBar"],"mappings":";;AAKA,IAAIA,IAA4B;AAEzB,MAAMC,IAAa;AAAA,EACxB,OAAO,MAAMD,KAAA,gBAAAA,EAAK;AAAA,EAClB,QAAQ,MAAMA,KAAA,gBAAAA,EAAK;AAAA,EACnB,OAAO,MAAMA,KAAA,gBAAAA,EAAK;AACpB,GAGaE,IAAmBC,EAAgB;AAAA,EAC9C,MAAM;AAAA,EACN,QAAQ;AACN,WAAAH,IAAMI,EAAA,GACC,MAAM;AAAA,EACf;AACF,CAAC;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MarkdownItConfigPlugin } from 'md-editor-v3';
|
|
2
|
+
/** 把 XSS 过滤插件追加到 markdown-it 预设插件链尾。抽成纯函数便于单测钉住「确实登记了」。 */
|
|
3
|
+
export declare function withXssPlugin(plugins: MarkdownItConfigPlugin[]): MarkdownItConfigPlugin[];
|
|
4
|
+
/**
|
|
5
|
+
* 幂等:全局登记 XSS 过滤 + echarts 空 instance(断 unpkg)。
|
|
6
|
+
* 由 MarkdownEditor / MarkdownView 在 setup 首行调用 —— 放启动入口(createSmartAdmin)会把 md-editor-v3 拖进首屏 chunk。
|
|
7
|
+
*/
|
|
8
|
+
export declare function setupMarkdown(): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { config as i, XSSPlugin as e } from "md-editor-v3";
|
|
2
|
+
function o(n) {
|
|
3
|
+
return [...n, { type: "xss", plugin: e, options: {} }];
|
|
4
|
+
}
|
|
5
|
+
let t = !1;
|
|
6
|
+
function s() {
|
|
7
|
+
t || (t = !0, i({
|
|
8
|
+
markdownItPlugins: (n) => o(n),
|
|
9
|
+
editorExtensions: { echarts: { instance: {} } }
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
s as setupMarkdown,
|
|
14
|
+
o as withXssPlugin
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sources":["../../src/lib/markdown.ts"],"sourcesContent":["// Markdown 渲染的全局安全 + 气隙自包含接线。\n//\n// 1) XSS:md-editor-v3 默认 `html:true`(markdown-it 原样放行内联 HTML)、`sanitize` 恒等空操作、预设插件链\n// **不含** XSS 过滤。通知作者(带权限即可,未必超管)存 `<img src=x onerror=…>`,任意查看者(含读通知的超管)\n// 打开即执行 → 偷 localStorage 里的 JWT 达成账号接管。**这否证了原注释「存纯 Markdown → 无 XSS 面」的说法**\n// (Markdown 天然放行 HTML)。修:挂库自带 `XSSPlugin`(基于已随库打进来的 js-xss,零新依赖)。\n// 2) 气隙:md-editor-v3 挂载即从 unpkg 懒加载 highlight/katex/mermaid/prettier/echarts。前四个在组件上用\n// `no-*` 关掉;echarts 无 `no*` 旗标,只能给空 no-op instance —— 既断 CDN,又避开其默认 `parseOption` 用\n// `new Function` 对通知正文求值的隐患(通知用不到 echarts 代码块)。\nimport { config, XSSPlugin } from 'md-editor-v3'\nimport type { MarkdownItConfigPlugin } from 'md-editor-v3'\n\n/** 把 XSS 过滤插件追加到 markdown-it 预设插件链尾。抽成纯函数便于单测钉住「确实登记了」。 */\nexport function withXssPlugin(plugins: MarkdownItConfigPlugin[]): MarkdownItConfigPlugin[] {\n return [...plugins, { type: 'xss', plugin: XSSPlugin, options: {} }]\n}\n\nlet done = false\n/**\n * 幂等:全局登记 XSS 过滤 + echarts 空 instance(断 unpkg)。\n * 由 MarkdownEditor / MarkdownView 在 setup 首行调用 —— 放启动入口(createSmartAdmin)会把 md-editor-v3 拖进首屏 chunk。\n */\nexport function setupMarkdown(): void {\n if (done) return\n done = true\n config({\n markdownItPlugins: plugins => withXssPlugin(plugins),\n editorExtensions: { echarts: { instance: {} } },\n })\n}\n"],"names":["withXssPlugin","plugins","XSSPlugin","done","setupMarkdown","config"],"mappings":";AAaO,SAASA,EAAcC,GAA6D;AACzF,SAAO,CAAC,GAAGA,GAAS,EAAE,MAAM,OAAO,QAAQC,GAAW,SAAS,CAAA,GAAI;AACrE;AAEA,IAAIC,IAAO;AAKJ,SAASC,IAAsB;AACpC,EAAID,MACJA,IAAO,IACPE,EAAO;AAAA,IACL,mBAAmB,CAAAJ,MAAWD,EAAcC,CAAO;AAAA,IACnD,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAA,IAAG;AAAA,EAAE,CAC/C;AACH;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type MarkdownLinkKind =
|
|
2
|
+
/** 以单个 `/` 开头的站内相对路径:走 vue-router */
|
|
3
|
+
{
|
|
4
|
+
kind: 'route';
|
|
5
|
+
to: string;
|
|
6
|
+
}
|
|
7
|
+
/** http(s) 绝对地址:新标签打开(noopener) */
|
|
8
|
+
| {
|
|
9
|
+
kind: 'external';
|
|
10
|
+
href: string;
|
|
11
|
+
}
|
|
12
|
+
/** 其余(锚点、mailto:、tel:、协议相对 //…):交给浏览器,不干预 */
|
|
13
|
+
| {
|
|
14
|
+
kind: 'native';
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* 只认"单个 `/` 开头"为站内路径:`//evil.com` 与 `/\evil.com` 都是协议相对 URL,
|
|
18
|
+
* 交给 router.push 会被当路径,交给浏览器会跳出站,两边都不该碰。
|
|
19
|
+
*/
|
|
20
|
+
export declare function classifyMarkdownLink(href: string | null | undefined): MarkdownLinkKind;
|
|
21
|
+
/**
|
|
22
|
+
* 容器级 click 委托。命中 `<a href>` 且是站内路径时拦截默认行为改走 `push`;
|
|
23
|
+
* http(s) 外链改为新标签打开;其它情况(含 Ctrl/Cmd/Shift + 点击)原样放行。
|
|
24
|
+
* 返回值是"是否接管了这次点击",便于单测钉住分流结果。
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleMarkdownLinkClick(ev: MouseEvent, push: (to: string) => void): boolean;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isHttpUrl as f } from "../utils/url.js";
|
|
2
|
+
function u(t) {
|
|
3
|
+
const n = (t ?? "").trim();
|
|
4
|
+
return /^\/(?![/\\])/.test(n) ? { kind: "route", to: n } : f(n) ? { kind: "external", href: n } : { kind: "native" };
|
|
5
|
+
}
|
|
6
|
+
function a(t) {
|
|
7
|
+
return t.button !== 0 || t.metaKey || t.ctrlKey || t.shiftKey || t.altKey;
|
|
8
|
+
}
|
|
9
|
+
function s(t, n) {
|
|
10
|
+
var o;
|
|
11
|
+
if (t.defaultPrevented || a(t)) return !1;
|
|
12
|
+
const e = t.target, i = (o = e == null ? void 0 : e.closest) == null ? void 0 : o.call(e, "a[href]");
|
|
13
|
+
if (!i) return !1;
|
|
14
|
+
const r = u(i.getAttribute("href"));
|
|
15
|
+
return r.kind === "route" ? (t.preventDefault(), n(r.to), !0) : r.kind === "external" ? (t.preventDefault(), window.open(r.href, "_blank", "noopener"), !0) : !1;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
u as classifyMarkdownLink,
|
|
19
|
+
s as handleMarkdownLinkClick
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=markdownLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownLinks.js","sources":["../../src/lib/markdownLinks.ts"],"sourcesContent":["// Markdown 正文里链接的点击分流。通知正文写 `[查看详情](/system/notice)` 这种站内相对链接时,\n// 浏览器默认整页跳转:动态路由丢失 → 守卫重建 → 页面闪一下,多标签状态全部重置。\n// 这里按 href 形状分三类,由 MarkdownView 在容器上做一次事件委托,正文里的 <a> 不必逐个改。\nimport { isHttpUrl } from '#/utils/url'\n\nexport type MarkdownLinkKind =\n /** 以单个 `/` 开头的站内相对路径:走 vue-router */\n | { kind: 'route'; to: string }\n /** http(s) 绝对地址:新标签打开(noopener) */\n | { kind: 'external'; href: string }\n /** 其余(锚点、mailto:、tel:、协议相对 //…):交给浏览器,不干预 */\n | { kind: 'native' }\n\n/**\n * 只认\"单个 `/` 开头\"为站内路径:`//evil.com` 与 `/\\evil.com` 都是协议相对 URL,\n * 交给 router.push 会被当路径,交给浏览器会跳出站,两边都不该碰。\n */\nexport function classifyMarkdownLink(href: string | null | undefined): MarkdownLinkKind {\n const h = (href ?? '').trim()\n if (/^\\/(?![/\\\\])/.test(h)) return { kind: 'route', to: h }\n if (isHttpUrl(h)) return { kind: 'external', href: h }\n return { kind: 'native' }\n}\n\n/** 修饰键或非左键:用户明确要\"新开标签 / 另存\",按浏览器原生语义办。 */\nfunction wantsNative(ev: MouseEvent): boolean {\n return ev.button !== 0 || ev.metaKey || ev.ctrlKey || ev.shiftKey || ev.altKey\n}\n\n/**\n * 容器级 click 委托。命中 `<a href>` 且是站内路径时拦截默认行为改走 `push`;\n * http(s) 外链改为新标签打开;其它情况(含 Ctrl/Cmd/Shift + 点击)原样放行。\n * 返回值是\"是否接管了这次点击\",便于单测钉住分流结果。\n */\nexport function handleMarkdownLinkClick(ev: MouseEvent, push: (to: string) => void): boolean {\n if (ev.defaultPrevented || wantsNative(ev)) return false\n const target = ev.target as Element | null\n const anchor = target?.closest?.('a[href]')\n if (!anchor) return false\n const link = classifyMarkdownLink(anchor.getAttribute('href'))\n if (link.kind === 'route') {\n ev.preventDefault()\n push(link.to)\n return true\n }\n if (link.kind === 'external') {\n ev.preventDefault()\n window.open(link.href, '_blank', 'noopener')\n return true\n }\n return false\n}\n"],"names":["classifyMarkdownLink","href","h","isHttpUrl","wantsNative","ev","handleMarkdownLinkClick","push","target","anchor","_a","link"],"mappings":";AAiBO,SAASA,EAAqBC,GAAmD;AACtF,QAAMC,KAAKD,KAAQ,IAAI,KAAA;AACvB,SAAI,eAAe,KAAKC,CAAC,IAAU,EAAE,MAAM,SAAS,IAAIA,EAAA,IACpDC,EAAUD,CAAC,IAAU,EAAE,MAAM,YAAY,MAAMA,EAAA,IAC5C,EAAE,MAAM,SAAA;AACjB;AAGA,SAASE,EAAYC,GAAyB;AAC5C,SAAOA,EAAG,WAAW,KAAKA,EAAG,WAAWA,EAAG,WAAWA,EAAG,YAAYA,EAAG;AAC1E;AAOO,SAASC,EAAwBD,GAAgBE,GAAqC;;AAC3F,MAAIF,EAAG,oBAAoBD,EAAYC,CAAE,EAAG,QAAO;AACnD,QAAMG,IAASH,EAAG,QACZI,KAASC,IAAAF,KAAA,gBAAAA,EAAQ,YAAR,gBAAAE,EAAA,KAAAF,GAAkB;AACjC,MAAI,CAACC,EAAQ,QAAO;AACpB,QAAME,IAAOX,EAAqBS,EAAO,aAAa,MAAM,CAAC;AAC7D,SAAIE,EAAK,SAAS,WAChBN,EAAG,eAAA,GACHE,EAAKI,EAAK,EAAE,GACL,MAELA,EAAK,SAAS,cAChBN,EAAG,eAAA,GACH,OAAO,KAAKM,EAAK,MAAM,UAAU,UAAU,GACpC,MAEF;AACT;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NoticeAction } from '../types/api';
|
|
2
|
+
export type NoticeActionKind =
|
|
3
|
+
/** /api/ 开头:按 method 请求该接口 */
|
|
4
|
+
'api'
|
|
5
|
+
/** 其它单个 / 开头的站内路径:router.push 跳过去(method 忽略) */
|
|
6
|
+
| 'route'
|
|
7
|
+
/** 不是单个 / 开头(含 //host、/\host 这类协议相对 URL):不执行 */
|
|
8
|
+
| 'invalid';
|
|
9
|
+
/** 与后端 NoticeService.IsSiteRelativeUrl 同一条规则:单个 `/` 开头、无空白与反斜杠。 */
|
|
10
|
+
export declare function isSiteRelativeUrl(url: string | null | undefined): boolean;
|
|
11
|
+
export declare function classifyNoticeAction(action: Pick<NoticeAction, 'url'>): NoticeActionKind;
|
|
12
|
+
/** 按钮文案:含 `.` 视为 i18n key(与菜单标题同一条约定),查不到就原样显示。 */
|
|
13
|
+
export declare function noticeActionLabel(label: string, t: (key: string) => string, te: (key: string) => boolean): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function e(t) {
|
|
2
|
+
return !t || t[0] !== "/" || t.length > 1 && (t[1] === "/" || t[1] === "\\") ? !1 : !/[\s\\]/.test(t);
|
|
3
|
+
}
|
|
4
|
+
function r(t) {
|
|
5
|
+
const i = (t.url ?? "").trim();
|
|
6
|
+
return e(i) ? i === "/api" || i.startsWith("/api/") ? "api" : "route" : "invalid";
|
|
7
|
+
}
|
|
8
|
+
function s(t, i, n) {
|
|
9
|
+
return t.includes(".") && n(t) ? i(t) : t;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
r as classifyNoticeAction,
|
|
13
|
+
e as isSiteRelativeUrl,
|
|
14
|
+
s as noticeActionLabel
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=noticeActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noticeActions.js","sources":["../../src/lib/noticeActions.ts"],"sourcesContent":["// 通知动作(NoticeAction)的纯逻辑:url 分类与展示文案。服务端只存不解释,这里决定\"点了怎么办\"。\nimport type { NoticeAction } from '#/types/api'\n\nexport type NoticeActionKind =\n /** /api/ 开头:按 method 请求该接口 */\n | 'api'\n /** 其它单个 / 开头的站内路径:router.push 跳过去(method 忽略) */\n | 'route'\n /** 不是单个 / 开头(含 //host、/\\host 这类协议相对 URL):不执行 */\n | 'invalid'\n\n/** 与后端 NoticeService.IsSiteRelativeUrl 同一条规则:单个 `/` 开头、无空白与反斜杠。 */\nexport function isSiteRelativeUrl(url: string | null | undefined): boolean {\n if (!url || url[0] !== '/') return false\n if (url.length > 1 && (url[1] === '/' || url[1] === '\\\\')) return false\n return !/[\\s\\\\]/.test(url)\n}\n\nexport function classifyNoticeAction(action: Pick<NoticeAction, 'url'>): NoticeActionKind {\n const url = (action.url ?? '').trim()\n if (!isSiteRelativeUrl(url)) return 'invalid'\n return url === '/api' || url.startsWith('/api/') ? 'api' : 'route'\n}\n\n/** 按钮文案:含 `.` 视为 i18n key(与菜单标题同一条约定),查不到就原样显示。 */\nexport function noticeActionLabel(\n label: string,\n t: (key: string) => string,\n te: (key: string) => boolean,\n): string {\n return label.includes('.') && te(label) ? t(label) : label\n}\n"],"names":["isSiteRelativeUrl","url","classifyNoticeAction","action","noticeActionLabel","label","t","te"],"mappings":"AAYO,SAASA,EAAkBC,GAAyC;AAEzE,SADI,CAACA,KAAOA,EAAI,CAAC,MAAM,OACnBA,EAAI,SAAS,MAAMA,EAAI,CAAC,MAAM,OAAOA,EAAI,CAAC,MAAM,QAAc,KAC3D,CAAC,SAAS,KAAKA,CAAG;AAC3B;AAEO,SAASC,EAAqBC,GAAqD;AACxF,QAAMF,KAAOE,EAAO,OAAO,IAAI,KAAA;AAC/B,SAAKH,EAAkBC,CAAG,IACnBA,MAAQ,UAAUA,EAAI,WAAW,OAAO,IAAI,QAAQ,UADvB;AAEtC;AAGO,SAASG,EACdC,GACAC,GACAC,GACQ;AACR,SAAOF,EAAM,SAAS,GAAG,KAAKE,EAAGF,CAAK,IAAIC,EAAED,CAAK,IAAIA;AACvD;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
2
|
+
/** 品牌默认值:sys.site.* 配置有值时以配置为准,为空时用这里。 */
|
|
3
|
+
export interface BrandOptions {
|
|
4
|
+
/** 站点标题默认值;siteInfo 里 sys.site.title 有值时被覆盖 */
|
|
5
|
+
title?: string;
|
|
6
|
+
/** 组件或图片地址;不传则用内置 SmartLogo 矢量标 */
|
|
7
|
+
logo?: Component | string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 运行期配置:由 createSmartAdmin 在挂载前写入,内核各处读这里而不读 import.meta.env ——
|
|
11
|
+
* 库预编译时 import.meta.env 会被静态替换成库自己构建时的值,消费方改不了。
|
|
12
|
+
*/
|
|
13
|
+
export declare const runtime: {
|
|
14
|
+
/** API 根地址;空串 = 同源(dev 由 Vite 代理,生产由反代或后端托管 dist) */
|
|
15
|
+
apiBase: string;
|
|
16
|
+
/** 登录页页脚展示的版本号;默认内核版本,消费方可覆盖为应用版本 */
|
|
17
|
+
version: string;
|
|
18
|
+
/** 开发态:登录页预填超管账号、设置抽屉显示「复制配置」 */
|
|
19
|
+
dev: boolean;
|
|
20
|
+
brand: BrandOptions;
|
|
21
|
+
};
|