smart-admin-web 10.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +78 -0
- package/dist/App.vue.d.ts +3 -0
- package/dist/App.vue.js +54 -0
- package/dist/App.vue.js.map +1 -0
- package/dist/App2.vue.js +5 -0
- package/dist/App2.vue.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
- package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
- package/dist/api/client.d.ts +29 -0
- package/dist/api/client.js +139 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/index.d.ts +672 -0
- package/dist/api/index.js +638 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/reauthGate.d.ts +16 -0
- package/dist/api/reauthGate.js +21 -0
- package/dist/api/reauthGate.js.map +1 -0
- package/dist/api/schema.d.ts +10230 -0
- package/dist/assets/icons/ph-subset.json.js +16 -0
- package/dist/assets/icons/ph-subset.json.js.map +1 -0
- package/dist/assets/oauth/dingtalk.svg.js +5 -0
- package/dist/assets/oauth/dingtalk.svg.js.map +1 -0
- package/dist/assets/oauth/gitee.svg.js +5 -0
- package/dist/assets/oauth/gitee.svg.js.map +1 -0
- package/dist/assets/oauth/github.svg.js +5 -0
- package/dist/assets/oauth/github.svg.js.map +1 -0
- package/dist/assets/oauth/qq.svg.js +5 -0
- package/dist/assets/oauth/qq.svg.js.map +1 -0
- package/dist/assets/oauth/wechat.svg.js +5 -0
- package/dist/assets/oauth/wechat.svg.js.map +1 -0
- package/dist/assets/oauth/wecom.svg.js +5 -0
- package/dist/assets/oauth/wecom.svg.js.map +1 -0
- package/dist/assets/svg/star.svg.js +6 -0
- package/dist/assets/svg/star.svg.js.map +1 -0
- package/dist/components/ApiSelect/index.vue.d.ts +22 -0
- package/dist/components/ApiSelect/index.vue.js +50 -0
- package/dist/components/ApiSelect/index.vue.js.map +1 -0
- package/dist/components/ApiSelect/index2.vue.js +5 -0
- package/dist/components/ApiSelect/index2.vue.js.map +1 -0
- package/dist/components/AppIcon.vue.d.ts +7 -0
- package/dist/components/AppIcon.vue.js +33 -0
- package/dist/components/AppIcon.vue.js.map +1 -0
- package/dist/components/AppIcon2.vue.js +5 -0
- package/dist/components/AppIcon2.vue.js.map +1 -0
- package/dist/components/Chart/BarChart.vue.d.ts +13 -0
- package/dist/components/Chart/BarChart.vue.js +27 -0
- package/dist/components/Chart/BarChart.vue.js.map +1 -0
- package/dist/components/Chart/BarChart2.vue.js +5 -0
- package/dist/components/Chart/BarChart2.vue.js.map +1 -0
- package/dist/components/Chart/LineChart.vue.d.ts +15 -0
- package/dist/components/Chart/LineChart.vue.js +33 -0
- package/dist/components/Chart/LineChart.vue.js.map +1 -0
- package/dist/components/Chart/LineChart2.vue.js +5 -0
- package/dist/components/Chart/LineChart2.vue.js.map +1 -0
- package/dist/components/Chart/PieChart.vue.d.ts +14 -0
- package/dist/components/Chart/PieChart.vue.js +31 -0
- package/dist/components/Chart/PieChart.vue.js.map +1 -0
- package/dist/components/Chart/PieChart2.vue.js +5 -0
- package/dist/components/Chart/PieChart2.vue.js.map +1 -0
- package/dist/components/Chart/echarts.d.ts +57 -0
- package/dist/components/Chart/echarts.js +47 -0
- package/dist/components/Chart/echarts.js.map +1 -0
- package/dist/components/Chart/index.vue.d.ts +12 -0
- package/dist/components/Chart/index.vue.js +8 -0
- package/dist/components/Chart/index.vue.js.map +1 -0
- package/dist/components/Chart/index2.vue.js +27 -0
- package/dist/components/Chart/index2.vue.js.map +1 -0
- package/dist/components/CodeBlock/index.vue.d.ts +17 -0
- package/dist/components/CodeBlock/index.vue.js +8 -0
- package/dist/components/CodeBlock/index.vue.js.map +1 -0
- package/dist/components/CodeBlock/index2.vue.js +48 -0
- package/dist/components/CodeBlock/index2.vue.js.map +1 -0
- package/dist/components/CronEditor/index.vue.d.ts +15 -0
- package/dist/components/CronEditor/index.vue.js +8 -0
- package/dist/components/CronEditor/index.vue.js.map +1 -0
- package/dist/components/CronEditor/index2.vue.js +528 -0
- package/dist/components/CronEditor/index2.vue.js.map +1 -0
- package/dist/components/DetailPage/index.vue.d.ts +26 -0
- package/dist/components/DetailPage/index.vue.js +8 -0
- package/dist/components/DetailPage/index.vue.js.map +1 -0
- package/dist/components/DetailPage/index2.vue.js +51 -0
- package/dist/components/DetailPage/index2.vue.js.map +1 -0
- package/dist/components/DictCheckbox/index.vue.d.ts +6 -0
- package/dist/components/DictCheckbox/index.vue.js +43 -0
- package/dist/components/DictCheckbox/index.vue.js.map +1 -0
- package/dist/components/DictCheckbox/index2.vue.js +5 -0
- package/dist/components/DictCheckbox/index2.vue.js.map +1 -0
- package/dist/components/DictRadio/index.vue.d.ts +6 -0
- package/dist/components/DictRadio/index.vue.js +38 -0
- package/dist/components/DictRadio/index.vue.js.map +1 -0
- package/dist/components/DictRadio/index2.vue.js +5 -0
- package/dist/components/DictRadio/index2.vue.js.map +1 -0
- package/dist/components/DictSelect/index.vue.d.ts +6 -0
- package/dist/components/DictSelect/index.vue.js +37 -0
- package/dist/components/DictSelect/index.vue.js.map +1 -0
- package/dist/components/DictSelect/index2.vue.js +5 -0
- package/dist/components/DictSelect/index2.vue.js.map +1 -0
- package/dist/components/DictTag/index.vue.d.ts +10 -0
- package/dist/components/DictTag/index.vue.js +48 -0
- package/dist/components/DictTag/index.vue.js.map +1 -0
- package/dist/components/DictTag/index2.vue.js +5 -0
- package/dist/components/DictTag/index2.vue.js.map +1 -0
- package/dist/components/ErrorBoundary/index.vue.d.ts +13 -0
- package/dist/components/ErrorBoundary/index.vue.js +8 -0
- package/dist/components/ErrorBoundary/index.vue.js.map +1 -0
- package/dist/components/ErrorBoundary/index2.vue.js +61 -0
- package/dist/components/ErrorBoundary/index2.vue.js.map +1 -0
- package/dist/components/ExportColumnsModal/index.vue.d.ts +19 -0
- package/dist/components/ExportColumnsModal/index.vue.js +8 -0
- package/dist/components/ExportColumnsModal/index.vue.js.map +1 -0
- package/dist/components/ExportColumnsModal/index2.vue.js +121 -0
- package/dist/components/ExportColumnsModal/index2.vue.js.map +1 -0
- package/dist/components/FileUpload/index.vue.d.ts +24 -0
- package/dist/components/FileUpload/index.vue.js +42 -0
- package/dist/components/FileUpload/index.vue.js.map +1 -0
- package/dist/components/FileUpload/index2.vue.js +5 -0
- package/dist/components/FileUpload/index2.vue.js.map +1 -0
- package/dist/components/FormContainer/index.vue.d.ts +51 -0
- package/dist/components/FormContainer/index.vue.js +160 -0
- package/dist/components/FormContainer/index.vue.js.map +1 -0
- package/dist/components/FormContainer/index3.vue.js +6 -0
- package/dist/components/FormContainer/index3.vue.js.map +1 -0
- package/dist/components/IconPicker/index.vue.d.ts +18 -0
- package/dist/components/IconPicker/index.vue.js +43 -0
- package/dist/components/IconPicker/index.vue.js.map +1 -0
- package/dist/components/IconPicker/index2.vue.js +5 -0
- package/dist/components/IconPicker/index2.vue.js.map +1 -0
- package/dist/components/ImportWizard/index.vue.d.ts +39 -0
- package/dist/components/ImportWizard/index.vue.js +8 -0
- package/dist/components/ImportWizard/index.vue.js.map +1 -0
- package/dist/components/ImportWizard/index2.vue.js +634 -0
- package/dist/components/ImportWizard/index2.vue.js.map +1 -0
- package/dist/components/JsonEditor/index.vue.d.ts +12 -0
- package/dist/components/JsonEditor/index.vue.js +87 -0
- package/dist/components/JsonEditor/index.vue.js.map +1 -0
- package/dist/components/JsonEditor/index2.vue.js +5 -0
- package/dist/components/JsonEditor/index2.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/MarkdownView.vue.d.ts +6 -0
- package/dist/components/MarkdownEditor/MarkdownView.vue.js +33 -0
- package/dist/components/MarkdownEditor/MarkdownView.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/MarkdownView2.vue.js +5 -0
- package/dist/components/MarkdownEditor/MarkdownView2.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/index.vue.d.ts +10 -0
- package/dist/components/MarkdownEditor/index.vue.js +35 -0
- package/dist/components/MarkdownEditor/index.vue.js.map +1 -0
- package/dist/components/MarkdownEditor/index2.vue.js +5 -0
- package/dist/components/MarkdownEditor/index2.vue.js.map +1 -0
- package/dist/components/MenuSearch.vue.d.ts +10 -0
- package/dist/components/MenuSearch.vue.js +8 -0
- package/dist/components/MenuSearch.vue.js.map +1 -0
- package/dist/components/MenuSearch2.vue.js +121 -0
- package/dist/components/MenuSearch2.vue.js.map +1 -0
- package/dist/components/OrgTreeSelect/index.vue.d.ts +6 -0
- package/dist/components/OrgTreeSelect/index.vue.js +42 -0
- package/dist/components/OrgTreeSelect/index.vue.js.map +1 -0
- package/dist/components/OrgTreeSelect/index2.vue.js +5 -0
- package/dist/components/OrgTreeSelect/index2.vue.js.map +1 -0
- package/dist/components/PasswordStrength/index.vue.d.ts +6 -0
- package/dist/components/PasswordStrength/index.vue.js +8 -0
- package/dist/components/PasswordStrength/index.vue.js.map +1 -0
- package/dist/components/PasswordStrength/index2.vue.js +91 -0
- package/dist/components/PasswordStrength/index2.vue.js.map +1 -0
- package/dist/components/ReauthModal.vue.d.ts +3 -0
- package/dist/components/ReauthModal.vue.js +8 -0
- package/dist/components/ReauthModal.vue.js.map +1 -0
- package/dist/components/ReauthModal2.vue.js +139 -0
- package/dist/components/ReauthModal2.vue.js.map +1 -0
- package/dist/components/RoleSelect/index.vue.d.ts +8 -0
- package/dist/components/RoleSelect/index.vue.js +26 -0
- package/dist/components/RoleSelect/index.vue.js.map +1 -0
- package/dist/components/RoleSelect/index2.vue.js +5 -0
- package/dist/components/RoleSelect/index2.vue.js.map +1 -0
- package/dist/components/SelectTable/index.vue.d.ts +76 -0
- package/dist/components/SelectTable/index.vue.js +8 -0
- package/dist/components/SelectTable/index.vue.js.map +1 -0
- package/dist/components/SelectTable/index2.vue.js +256 -0
- package/dist/components/SelectTable/index2.vue.js.map +1 -0
- package/dist/components/SmartLogo.vue.d.ts +8 -0
- package/dist/components/SmartLogo.vue.js +8 -0
- package/dist/components/SmartLogo.vue.js.map +1 -0
- package/dist/components/SmartLogo2.vue.js +74 -0
- package/dist/components/SmartLogo2.vue.js.map +1 -0
- package/dist/components/StatusSwitch/index.vue.d.ts +21 -0
- package/dist/components/StatusSwitch/index.vue.js +45 -0
- package/dist/components/StatusSwitch/index.vue.js.map +1 -0
- package/dist/components/StatusSwitch/index2.vue.js +5 -0
- package/dist/components/StatusSwitch/index2.vue.js.map +1 -0
- package/dist/components/TableZoomButton/index.vue.d.ts +13 -0
- package/dist/components/TableZoomButton/index.vue.js +42 -0
- package/dist/components/TableZoomButton/index.vue.js.map +1 -0
- package/dist/components/TableZoomButton/index2.vue.js +5 -0
- package/dist/components/TableZoomButton/index2.vue.js.map +1 -0
- package/dist/components/UserPicker/index.vue.d.ts +13 -0
- package/dist/components/UserPicker/index.vue.js +8 -0
- package/dist/components/UserPicker/index.vue.js.map +1 -0
- package/dist/components/UserPicker/index2.vue.js +214 -0
- package/dist/components/UserPicker/index2.vue.js.map +1 -0
- package/dist/components/UserSelect/index.vue.d.ts +9 -0
- package/dist/components/UserSelect/index.vue.js +32 -0
- package/dist/components/UserSelect/index.vue.js.map +1 -0
- package/dist/components/UserSelect/index2.vue.js +5 -0
- package/dist/components/UserSelect/index2.vue.js.map +1 -0
- package/dist/components/oauth/BrandIcon.vue.d.ts +12 -0
- package/dist/components/oauth/BrandIcon.vue.js +8 -0
- package/dist/components/oauth/BrandIcon.vue.js.map +1 -0
- package/dist/components/oauth/BrandIcon2.vue.js +95 -0
- package/dist/components/oauth/BrandIcon2.vue.js.map +1 -0
- package/dist/composables/authMenuRoute.d.ts +32 -0
- package/dist/composables/authMenuRoute.js +37 -0
- package/dist/composables/authMenuRoute.js.map +1 -0
- package/dist/composables/clearClientCache.d.ts +10 -0
- package/dist/composables/clearClientCache.js +17 -0
- package/dist/composables/clearClientCache.js.map +1 -0
- package/dist/composables/useAuthMenu.d.ts +3 -0
- package/dist/composables/useAuthMenu.js +61 -0
- package/dist/composables/useAuthMenu.js.map +1 -0
- package/dist/composables/useBatchDelete.d.ts +18 -0
- package/dist/composables/useBatchDelete.js +21 -0
- package/dist/composables/useBatchDelete.js.map +1 -0
- package/dist/composables/useCompactScreen.d.ts +12 -0
- package/dist/composables/useCompactScreen.js +17 -0
- package/dist/composables/useCompactScreen.js.map +1 -0
- package/dist/composables/useConfirm.d.ts +18 -0
- package/dist/composables/useConfirm.js +61 -0
- package/dist/composables/useConfirm.js.map +1 -0
- package/dist/composables/useFullscreenToggle.d.ts +11 -0
- package/dist/composables/useFullscreenToggle.js +64 -0
- package/dist/composables/useFullscreenToggle.js.map +1 -0
- package/dist/composables/useHeaderTools.d.ts +31 -0
- package/dist/composables/useHeaderTools.js +15 -0
- package/dist/composables/useHeaderTools.js.map +1 -0
- package/dist/composables/useLayoutMenu.d.ts +17 -0
- package/dist/composables/useLayoutMenu.js +93 -0
- package/dist/composables/useLayoutMenu.js.map +1 -0
- package/dist/composables/useMenuBadge.d.ts +11 -0
- package/dist/composables/useMenuBadge.js +17 -0
- package/dist/composables/useMenuBadge.js.map +1 -0
- package/dist/composables/useMenuFlat.d.ts +8 -0
- package/dist/composables/useMenuFlat.js +29 -0
- package/dist/composables/useMenuFlat.js.map +1 -0
- package/dist/composables/useModule.d.ts +16 -0
- package/dist/composables/useModule.js +44 -0
- package/dist/composables/useModule.js.map +1 -0
- package/dist/composables/useNoticeAction.d.ts +8 -0
- package/dist/composables/useNoticeAction.js +79 -0
- package/dist/composables/useNoticeAction.js.map +1 -0
- package/dist/composables/usePageTitle.d.ts +1 -0
- package/dist/composables/usePageTitle.js +20 -0
- package/dist/composables/usePageTitle.js.map +1 -0
- package/dist/composables/useRealtime.d.ts +31 -0
- package/dist/composables/useRealtime.js +59 -0
- package/dist/composables/useRealtime.js.map +1 -0
- package/dist/composables/useSite.d.ts +24 -0
- package/dist/composables/useSite.js +27 -0
- package/dist/composables/useSite.js.map +1 -0
- package/dist/composables/useTabTitle.d.ts +1 -0
- package/dist/composables/useTabTitle.js +10 -0
- package/dist/composables/useTabTitle.js.map +1 -0
- package/dist/composables/useTableRowSort.d.ts +20 -0
- package/dist/composables/useTableRowSort.js +59 -0
- package/dist/composables/useTableRowSort.js.map +1 -0
- package/dist/composables/useTableZoom.d.ts +5 -0
- package/dist/composables/useTableZoom.js +30 -0
- package/dist/composables/useTableZoom.js.map +1 -0
- package/dist/composables/useTheme.d.ts +13 -0
- package/dist/composables/useTheme.js +30 -0
- package/dist/composables/useTheme.js.map +1 -0
- package/dist/composables/useVisualViewportHeight.d.ts +3 -0
- package/dist/composables/useVisualViewportHeight.js +16 -0
- package/dist/composables/useVisualViewportHeight.js.map +1 -0
- package/dist/createSmartAdmin.d.ts +56 -0
- package/dist/createSmartAdmin.js +76 -0
- package/dist/createSmartAdmin.js.map +1 -0
- package/dist/directives/auth.d.ts +16 -0
- package/dist/directives/auth.js +19 -0
- package/dist/directives/auth.js.map +1 -0
- package/dist/env.d.ts +10 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.js +273 -0
- package/dist/index.js.map +1 -0
- package/dist/layouts/AppHeader.vue.d.ts +12 -0
- package/dist/layouts/AppHeader.vue.js +8 -0
- package/dist/layouts/AppHeader.vue.js.map +1 -0
- package/dist/layouts/AppHeader2.vue.js +352 -0
- package/dist/layouts/AppHeader2.vue.js.map +1 -0
- package/dist/layouts/LayoutModeCards.vue.d.ts +3 -0
- package/dist/layouts/LayoutModeCards.vue.js +8 -0
- package/dist/layouts/LayoutModeCards.vue.js.map +1 -0
- package/dist/layouts/LayoutModeCards2.vue.js +67 -0
- package/dist/layouts/LayoutModeCards2.vue.js.map +1 -0
- package/dist/layouts/NoticeBell.vue.d.ts +3 -0
- package/dist/layouts/NoticeBell.vue.js +8 -0
- package/dist/layouts/NoticeBell.vue.js.map +1 -0
- package/dist/layouts/NoticeBell2.vue.js +292 -0
- package/dist/layouts/NoticeBell2.vue.js.map +1 -0
- package/dist/layouts/PersonalLayout.vue.d.ts +3 -0
- package/dist/layouts/PersonalLayout.vue.js +8 -0
- package/dist/layouts/PersonalLayout.vue.js.map +1 -0
- package/dist/layouts/PersonalLayout2.vue.js +65 -0
- package/dist/layouts/PersonalLayout2.vue.js.map +1 -0
- package/dist/layouts/SettingRow.vue.d.ts +16 -0
- package/dist/layouts/SettingRow.vue.js +8 -0
- package/dist/layouts/SettingRow.vue.js.map +1 -0
- package/dist/layouts/SettingRow2.vue.js +23 -0
- package/dist/layouts/SettingRow2.vue.js.map +1 -0
- package/dist/layouts/SettingsDrawer.vue.d.ts +10 -0
- package/dist/layouts/SettingsDrawer.vue.js +8 -0
- package/dist/layouts/SettingsDrawer.vue.js.map +1 -0
- package/dist/layouts/SettingsDrawer2.vue.js +380 -0
- package/dist/layouts/SettingsDrawer2.vue.js.map +1 -0
- package/dist/layouts/TabsBar.vue.d.ts +3 -0
- package/dist/layouts/TabsBar.vue.js +8 -0
- package/dist/layouts/TabsBar.vue.js.map +1 -0
- package/dist/layouts/TabsBar2.vue.js +132 -0
- package/dist/layouts/TabsBar2.vue.js.map +1 -0
- package/dist/layouts/components/SideNav.vue.d.ts +15 -0
- package/dist/layouts/components/SideNav.vue.js +8 -0
- package/dist/layouts/components/SideNav.vue.js.map +1 -0
- package/dist/layouts/components/SideNav2.vue.js +49 -0
- package/dist/layouts/components/SideNav2.vue.js.map +1 -0
- package/dist/layouts/default.vue.d.ts +3 -0
- package/dist/layouts/default.vue.js +8 -0
- package/dist/layouts/default.vue.js.map +1 -0
- package/dist/layouts/default2.vue.js +213 -0
- package/dist/layouts/default2.vue.js.map +1 -0
- package/dist/lib/chunkReload.d.ts +9 -0
- package/dist/lib/chunkReload.js +24 -0
- package/dist/lib/chunkReload.js.map +1 -0
- package/dist/lib/icons.d.ts +2 -0
- package/dist/lib/icons.js +39 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/loadingBar.d.ts +7 -0
- package/dist/lib/loadingBar.js +18 -0
- package/dist/lib/loadingBar.js.map +1 -0
- package/dist/lib/markdown.d.ts +8 -0
- package/dist/lib/markdown.js +16 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/markdownLinks.d.ts +26 -0
- package/dist/lib/markdownLinks.js +21 -0
- package/dist/lib/markdownLinks.js.map +1 -0
- package/dist/lib/noticeActions.d.ts +13 -0
- package/dist/lib/noticeActions.js +16 -0
- package/dist/lib/noticeActions.js.map +1 -0
- package/dist/lib/runtime.d.ts +21 -0
- package/dist/lib/runtime.js +13 -0
- package/dist/lib/runtime.js.map +1 -0
- package/dist/locales/en-US.d.ts +1358 -0
- package/dist/locales/en-US.js +1362 -0
- package/dist/locales/en-US.js.map +1 -0
- package/dist/locales/index.d.ts +30 -0
- package/dist/locales/index.js +46 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/menuTitle.d.ts +8 -0
- package/dist/locales/menuTitle.js +19 -0
- package/dist/locales/menuTitle.js.map +1 -0
- package/dist/locales/zh-CN.d.ts +1358 -0
- package/dist/locales/zh-CN.js +1368 -0
- package/dist/locales/zh-CN.js.map +1 -0
- package/dist/router/bootFailure.d.ts +8 -0
- package/dist/router/bootFailure.js +11 -0
- package/dist/router/bootFailure.js.map +1 -0
- package/dist/router/detailRoutes.d.ts +2 -0
- package/dist/router/detailRoutes.js +19 -0
- package/dist/router/detailRoutes.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.js +58 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/namedPage.d.ts +13 -0
- package/dist/router/namedPage.js +12 -0
- package/dist/router/namedPage.js.map +1 -0
- package/dist/router/routes.d.ts +2 -0
- package/dist/router/routes.js +121 -0
- package/dist/router/routes.js.map +1 -0
- package/dist/router/viewRegistry.d.ts +18 -0
- package/dist/router/viewRegistry.js +26 -0
- package/dist/router/viewRegistry.js.map +1 -0
- package/dist/stores/app.d.ts +83 -0
- package/dist/stores/app.js +82 -0
- package/dist/stores/app.js.map +1 -0
- package/dist/stores/auth.d.ts +106 -0
- package/dist/stores/auth.js +59 -0
- package/dist/stores/auth.js.map +1 -0
- package/dist/stores/dict.d.ts +11 -0
- package/dist/stores/dict.js +36 -0
- package/dist/stores/dict.js.map +1 -0
- package/dist/stores/tabs.d.ts +53 -0
- package/dist/stores/tabs.js +88 -0
- package/dist/stores/tabs.js.map +1 -0
- package/dist/stores/user.d.ts +64 -0
- package/dist/stores/user.js +64 -0
- package/dist/stores/user.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/theme/accents.d.ts +2 -0
- package/dist/theme/accents.js +5 -0
- package/dist/theme/accents.js.map +1 -0
- package/dist/theme/mix.d.ts +26 -0
- package/dist/theme/mix.js +43 -0
- package/dist/theme/mix.js.map +1 -0
- package/dist/theme/naive-theme.d.ts +9 -0
- package/dist/theme/naive-theme.js +89 -0
- package/dist/theme/naive-theme.js.map +1 -0
- package/dist/types/api.d.ts +714 -0
- package/dist/types/api.js +15 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/menu.d.ts +67 -0
- package/dist/types/menu.js +26 -0
- package/dist/types/menu.js.map +1 -0
- package/dist/utils/chunkUpload.d.ts +6 -0
- package/dist/utils/chunkUpload.js +35 -0
- package/dist/utils/chunkUpload.js.map +1 -0
- package/dist/utils/download.d.ts +8 -0
- package/dist/utils/download.js +8 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/error.d.ts +14 -0
- package/dist/utils/error.js +50 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/format.d.ts +20 -0
- package/dist/utils/format.js +19 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/importDup.d.ts +17 -0
- package/dist/utils/importDup.js +18 -0
- package/dist/utils/importDup.js.map +1 -0
- package/dist/utils/oauthBrand.d.ts +100 -0
- package/dist/utils/oauthBrand.js +97 -0
- package/dist/utils/oauthBrand.js.map +1 -0
- package/dist/utils/tree.d.ts +33 -0
- package/dist/utils/tree.js +47 -0
- package/dist/utils/tree.js.map +1 -0
- package/dist/utils/ua.d.ts +7 -0
- package/dist/utils/ua.js +33 -0
- package/dist/utils/ua.js.map +1 -0
- package/dist/utils/url.d.ts +16 -0
- package/dist/utils/url.js +13 -0
- package/dist/utils/url.js.map +1 -0
- package/dist/views/dashboard/biz.vue.d.ts +3 -0
- package/dist/views/dashboard/biz.vue.js +8 -0
- package/dist/views/dashboard/biz.vue.js.map +1 -0
- package/dist/views/dashboard/biz2.vue.js +136 -0
- package/dist/views/dashboard/biz2.vue.js.map +1 -0
- package/dist/views/dashboard/workbench.vue.d.ts +3 -0
- package/dist/views/dashboard/workbench.vue.js +8 -0
- package/dist/views/dashboard/workbench.vue.js.map +1 -0
- package/dist/views/dashboard/workbench2.vue.js +195 -0
- package/dist/views/dashboard/workbench2.vue.js.map +1 -0
- package/dist/views/embed/iframe.vue.d.ts +3 -0
- package/dist/views/embed/iframe.vue.js +8 -0
- package/dist/views/embed/iframe.vue.js.map +1 -0
- package/dist/views/embed/iframe2.vue.js +21 -0
- package/dist/views/embed/iframe2.vue.js.map +1 -0
- package/dist/views/error/404.vue.d.ts +3 -0
- package/dist/views/error/404.vue.js +8 -0
- package/dist/views/error/404.vue.js.map +1 -0
- package/dist/views/error/4042.vue.js +31 -0
- package/dist/views/error/4042.vue.js.map +1 -0
- package/dist/views/error/BootError.vue.d.ts +3 -0
- package/dist/views/error/BootError.vue.js +8 -0
- package/dist/views/error/BootError.vue.js.map +1 -0
- package/dist/views/error/BootError2.vue.js +57 -0
- package/dist/views/error/BootError2.vue.js.map +1 -0
- package/dist/views/error/MissingRoute.vue.d.ts +3 -0
- package/dist/views/error/MissingRoute.vue.js +8 -0
- package/dist/views/error/MissingRoute.vue.js.map +1 -0
- package/dist/views/error/MissingRoute2.vue.js +23 -0
- package/dist/views/error/MissingRoute2.vue.js.map +1 -0
- package/dist/views/login/LoginForm.vue.d.ts +12 -0
- package/dist/views/login/LoginForm.vue.js +8 -0
- package/dist/views/login/LoginForm.vue.js.map +1 -0
- package/dist/views/login/LoginForm2.vue.js +642 -0
- package/dist/views/login/LoginForm2.vue.js.map +1 -0
- package/dist/views/login/index.vue.d.ts +3 -0
- package/dist/views/login/index.vue.js +8 -0
- package/dist/views/login/index.vue.js.map +1 -0
- package/dist/views/login/index2.vue.js +79 -0
- package/dist/views/login/index2.vue.js.map +1 -0
- package/dist/views/login/skins/AuroraGlass.vue.d.ts +3 -0
- package/dist/views/login/skins/AuroraGlass.vue.js +8 -0
- package/dist/views/login/skins/AuroraGlass.vue.js.map +1 -0
- package/dist/views/login/skins/AuroraGlass2.vue.js +80 -0
- package/dist/views/login/skins/AuroraGlass2.vue.js.map +1 -0
- package/dist/views/login/skins/SplitPanel.vue.d.ts +3 -0
- package/dist/views/login/skins/SplitPanel.vue.js +8 -0
- package/dist/views/login/skins/SplitPanel.vue.js.map +1 -0
- package/dist/views/login/skins/SplitPanel2.vue.js +85 -0
- package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -0
- package/dist/views/login/skins/Spotlight.vue.d.ts +3 -0
- package/dist/views/login/skins/Spotlight.vue.js +8 -0
- package/dist/views/login/skins/Spotlight.vue.js.map +1 -0
- package/dist/views/login/skins/Spotlight2.vue.js +36 -0
- package/dist/views/login/skins/Spotlight2.vue.js.map +1 -0
- package/dist/views/login/skins.d.ts +8 -0
- package/dist/views/login/skins.js +13 -0
- package/dist/views/login/skins.js.map +1 -0
- package/dist/views/mfa/bindComplete.d.ts +7 -0
- package/dist/views/mfa/bindComplete.js +8 -0
- package/dist/views/mfa/bindComplete.js.map +1 -0
- package/dist/views/mfa/index.vue.d.ts +3 -0
- package/dist/views/mfa/index.vue.js +8 -0
- package/dist/views/mfa/index.vue.js.map +1 -0
- package/dist/views/mfa/index2.vue.js +425 -0
- package/dist/views/mfa/index2.vue.js.map +1 -0
- package/dist/views/module/index.vue.d.ts +3 -0
- package/dist/views/module/index.vue.js +8 -0
- package/dist/views/module/index.vue.js.map +1 -0
- package/dist/views/module/index2.vue.js +142 -0
- package/dist/views/module/index2.vue.js.map +1 -0
- package/dist/views/oauth/callback.vue.d.ts +3 -0
- package/dist/views/oauth/callback.vue.js +8 -0
- package/dist/views/oauth/callback.vue.js.map +1 -0
- package/dist/views/oauth/callback2.vue.js +86 -0
- package/dist/views/oauth/callback2.vue.js.map +1 -0
- package/dist/views/personal/bindings.vue.d.ts +3 -0
- package/dist/views/personal/bindings.vue.js +8 -0
- package/dist/views/personal/bindings.vue.js.map +1 -0
- package/dist/views/personal/bindings2.vue.js +220 -0
- package/dist/views/personal/bindings2.vue.js.map +1 -0
- package/dist/views/personal/notice.vue.d.ts +3 -0
- package/dist/views/personal/notice.vue.js +5 -0
- package/dist/views/personal/notice.vue.js.map +1 -0
- package/dist/views/personal/notice2.vue.js +163 -0
- package/dist/views/personal/notice2.vue.js.map +1 -0
- package/dist/views/personal/password.vue.d.ts +3 -0
- package/dist/views/personal/password.vue.js +5 -0
- package/dist/views/personal/password.vue.js.map +1 -0
- package/dist/views/personal/password2.vue.js +147 -0
- package/dist/views/personal/password2.vue.js.map +1 -0
- package/dist/views/personal/profile.vue.d.ts +3 -0
- package/dist/views/personal/profile.vue.js +8 -0
- package/dist/views/personal/profile.vue.js.map +1 -0
- package/dist/views/personal/profile2.vue.js +264 -0
- package/dist/views/personal/profile2.vue.js.map +1 -0
- package/dist/views/personal/security.vue.d.ts +3 -0
- package/dist/views/personal/security.vue.js +8 -0
- package/dist/views/personal/security.vue.js.map +1 -0
- package/dist/views/personal/security2.vue.js +82 -0
- package/dist/views/personal/security2.vue.js.map +1 -0
- package/dist/views/personal/sessions.vue.d.ts +3 -0
- package/dist/views/personal/sessions.vue.js +8 -0
- package/dist/views/personal/sessions.vue.js.map +1 -0
- package/dist/views/personal/sessions2.vue.js +101 -0
- package/dist/views/personal/sessions2.vue.js.map +1 -0
- package/dist/views/system/cache/index.vue.d.ts +3 -0
- package/dist/views/system/cache/index.vue.js +8 -0
- package/dist/views/system/cache/index.vue.js.map +1 -0
- package/dist/views/system/cache/index2.vue.js +113 -0
- package/dist/views/system/cache/index2.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.d.ts +16 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal2.vue.js +177 -0
- package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -0
- package/dist/views/system/config/components/ExternalAuthConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js +8 -0
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +218 -0
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/GroupExtraConfig.vue.d.ts +9 -0
- package/dist/views/system/config/components/GroupExtraConfig.vue.js +8 -0
- package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js +108 -0
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/HighSensConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/HighSensConfig.vue.js +5 -0
- package/dist/views/system/config/components/HighSensConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/HighSensConfig2.vue.js +134 -0
- package/dist/views/system/config/components/HighSensConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/JobConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/JobConfig.vue.js +5 -0
- package/dist/views/system/config/components/JobConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/JobConfig2.vue.js +116 -0
- package/dist/views/system/config/components/JobConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/OtherConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/OtherConfig.vue.js +5 -0
- package/dist/views/system/config/components/OtherConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/OtherConfig2.vue.js +121 -0
- package/dist/views/system/config/components/OtherConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/SecurityConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/SecurityConfig.vue.js +8 -0
- package/dist/views/system/config/components/SecurityConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/SecurityConfig2.vue.js +456 -0
- package/dist/views/system/config/components/SecurityConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/SysBaseConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/SysBaseConfig.vue.js +5 -0
- package/dist/views/system/config/components/SysBaseConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/SysBaseConfig2.vue.js +107 -0
- package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadConfig.vue.d.ts +3 -0
- package/dist/views/system/config/components/UploadConfig.vue.js +5 -0
- package/dist/views/system/config/components/UploadConfig.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadConfig2.vue.js +135 -0
- package/dist/views/system/config/components/UploadConfig2.vue.js.map +1 -0
- package/dist/views/system/config/groups.d.ts +9 -0
- package/dist/views/system/config/groups.js +18 -0
- package/dist/views/system/config/groups.js.map +1 -0
- package/dist/views/system/config/index.vue.d.ts +3 -0
- package/dist/views/system/config/index.vue.js +5 -0
- package/dist/views/system/config/index.vue.js.map +1 -0
- package/dist/views/system/config/index2.vue.js +127 -0
- package/dist/views/system/config/index2.vue.js.map +1 -0
- package/dist/views/system/dict/index.vue.d.ts +3 -0
- package/dist/views/system/dict/index.vue.js +8 -0
- package/dist/views/system/dict/index.vue.js.map +1 -0
- package/dist/views/system/dict/index2.vue.js +560 -0
- package/dist/views/system/dict/index2.vue.js.map +1 -0
- package/dist/views/system/file/index.vue.d.ts +3 -0
- package/dist/views/system/file/index.vue.js +5 -0
- package/dist/views/system/file/index.vue.js.map +1 -0
- package/dist/views/system/file/index2.vue.js +186 -0
- package/dist/views/system/file/index2.vue.js.map +1 -0
- package/dist/views/system/job/index.vue.d.ts +3 -0
- package/dist/views/system/job/index.vue.js +8 -0
- package/dist/views/system/job/index.vue.js.map +1 -0
- package/dist/views/system/job/index2.vue.js +1167 -0
- package/dist/views/system/job/index2.vue.js.map +1 -0
- package/dist/views/system/job-log/index.vue.d.ts +3 -0
- package/dist/views/system/job-log/index.vue.js +8 -0
- package/dist/views/system/job-log/index.vue.js.map +1 -0
- package/dist/views/system/job-log/index2.vue.js +411 -0
- package/dist/views/system/job-log/index2.vue.js.map +1 -0
- package/dist/views/system/job-monitor/index.vue.d.ts +3 -0
- package/dist/views/system/job-monitor/index.vue.js +8 -0
- package/dist/views/system/job-monitor/index.vue.js.map +1 -0
- package/dist/views/system/job-monitor/index2.vue.js +253 -0
- package/dist/views/system/job-monitor/index2.vue.js.map +1 -0
- package/dist/views/system/log/exception/index.vue.d.ts +3 -0
- package/dist/views/system/log/exception/index.vue.js +8 -0
- package/dist/views/system/log/exception/index.vue.js.map +1 -0
- package/dist/views/system/log/exception/index2.vue.js +216 -0
- package/dist/views/system/log/exception/index2.vue.js.map +1 -0
- package/dist/views/system/log/login/index.vue.d.ts +3 -0
- package/dist/views/system/log/login/index.vue.js +5 -0
- package/dist/views/system/log/login/index.vue.js.map +1 -0
- package/dist/views/system/log/login/index2.vue.js +113 -0
- package/dist/views/system/log/login/index2.vue.js.map +1 -0
- package/dist/views/system/log/op/index.vue.d.ts +3 -0
- package/dist/views/system/log/op/index.vue.js +8 -0
- package/dist/views/system/log/op/index.vue.js.map +1 -0
- package/dist/views/system/log/op/index2.vue.js +332 -0
- package/dist/views/system/log/op/index2.vue.js.map +1 -0
- package/dist/views/system/menu/components/ButtonManager.vue.d.ts +21 -0
- package/dist/views/system/menu/components/ButtonManager.vue.js +8 -0
- package/dist/views/system/menu/components/ButtonManager.vue.js.map +1 -0
- package/dist/views/system/menu/components/ButtonManager2.vue.js +498 -0
- package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -0
- package/dist/views/system/menu/components/MenuFormModal.vue.d.ts +22 -0
- package/dist/views/system/menu/components/MenuFormModal.vue.js +8 -0
- package/dist/views/system/menu/components/MenuFormModal.vue.js.map +1 -0
- package/dist/views/system/menu/components/MenuFormModal2.vue.js +259 -0
- package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -0
- package/dist/views/system/menu/index.vue.d.ts +3 -0
- package/dist/views/system/menu/index.vue.js +8 -0
- package/dist/views/system/menu/index.vue.js.map +1 -0
- package/dist/views/system/menu/index2.vue.js +391 -0
- package/dist/views/system/menu/index2.vue.js.map +1 -0
- package/dist/views/system/module/index.vue.d.ts +3 -0
- package/dist/views/system/module/index.vue.js +8 -0
- package/dist/views/system/module/index.vue.js.map +1 -0
- package/dist/views/system/module/index2.vue.js +344 -0
- package/dist/views/system/module/index2.vue.js.map +1 -0
- package/dist/views/system/monitor/index.vue.d.ts +3 -0
- package/dist/views/system/monitor/index.vue.js +8 -0
- package/dist/views/system/monitor/index.vue.js.map +1 -0
- package/dist/views/system/monitor/index2.vue.js +184 -0
- package/dist/views/system/monitor/index2.vue.js.map +1 -0
- package/dist/views/system/notice/index.vue.d.ts +3 -0
- package/dist/views/system/notice/index.vue.js +8 -0
- package/dist/views/system/notice/index.vue.js.map +1 -0
- package/dist/views/system/notice/index2.vue.js +401 -0
- package/dist/views/system/notice/index2.vue.js.map +1 -0
- package/dist/views/system/org/index.vue.d.ts +3 -0
- package/dist/views/system/org/index.vue.js +8 -0
- package/dist/views/system/org/index.vue.js.map +1 -0
- package/dist/views/system/org/index2.vue.js +397 -0
- package/dist/views/system/org/index2.vue.js.map +1 -0
- package/dist/views/system/position/index.vue.d.ts +3 -0
- package/dist/views/system/position/index.vue.js +5 -0
- package/dist/views/system/position/index.vue.js.map +1 -0
- package/dist/views/system/position/index2.vue.js +211 -0
- package/dist/views/system/position/index2.vue.js.map +1 -0
- package/dist/views/system/recycle/index.vue.d.ts +3 -0
- package/dist/views/system/recycle/index.vue.js +8 -0
- package/dist/views/system/recycle/index.vue.js.map +1 -0
- package/dist/views/system/recycle/index2.vue.js +121 -0
- package/dist/views/system/recycle/index2.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +18 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.js +8 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuTable2.vue.js +212 -0
- package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -0
- package/dist/views/system/role/components/grantMenuGroups.d.ts +31 -0
- package/dist/views/system/role/components/grantMenuGroups.js +76 -0
- package/dist/views/system/role/components/grantMenuGroups.js.map +1 -0
- package/dist/views/system/role/index.vue.d.ts +3 -0
- package/dist/views/system/role/index.vue.js +5 -0
- package/dist/views/system/role/index.vue.js.map +1 -0
- package/dist/views/system/role/index2.vue.js +476 -0
- package/dist/views/system/role/index2.vue.js.map +1 -0
- package/dist/views/system/session/index.vue.d.ts +3 -0
- package/dist/views/system/session/index.vue.js +5 -0
- package/dist/views/system/session/index.vue.js.map +1 -0
- package/dist/views/system/session/index2.vue.js +80 -0
- package/dist/views/system/session/index2.vue.js.map +1 -0
- package/dist/views/system/user/components/ResetPasswordModal.vue.d.ts +10 -0
- package/dist/views/system/user/components/ResetPasswordModal.vue.js +8 -0
- package/dist/views/system/user/components/ResetPasswordModal.vue.js.map +1 -0
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js +111 -0
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -0
- package/dist/views/system/user/components/UserFormModal.vue.d.ts +30 -0
- package/dist/views/system/user/components/UserFormModal.vue.js +8 -0
- package/dist/views/system/user/components/UserFormModal.vue.js.map +1 -0
- package/dist/views/system/user/components/UserFormModal2.vue.js +415 -0
- package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -0
- package/dist/views/system/user/index.vue.d.ts +3 -0
- package/dist/views/system/user/index.vue.js +8 -0
- package/dist/views/system/user/index.vue.js.map +1 -0
- package/dist/views/system/user/index2.vue.js +427 -0
- package/dist/views/system/user/index2.vue.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/job-log/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 执行记录 = 只读 SmartTable + 详情抽屉 + 终止/清空两个动作。\n// 「运行中」没有独立状态字段,判据是 endTime 为空(任务无 Running 态,全靠未闭合记录推导);\n// 终止是跨节点写旗标,目标节点最迟 KillPollSeconds 后停——所以文案说\"已请求终止\"而非\"已终止\"。\n// 详情抽屉里带同 fireInstanceId 的各次尝试列表:走后端的 fireInstanceId 查询参数直取,\n// 不按 jobId 拉一页再前端过滤——翻到老触发时那一页里根本没有它的兄弟行,列表会静默缺项。\nimport { computed, h, ref, watch } from 'vue'\nimport {\n NButton,\n NTag,\n NSelect,\n NSpace,\n NDataTable,\n NDrawer,\n NDrawerContent,\n NDescriptions,\n NDescriptionsItem,\n useMessage,\n type DataTableColumns,\n} from 'naive-ui'\nimport { useRoute } from 'vue-router'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport FormContainer from '#/components/FormContainer/index.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { useAuthStore } from '#/stores/auth'\nimport { jobApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { fmtDateTime } from '#/utils/format'\nimport { JobFireMode, JobRunStatus, type SysJobLog } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { confirm } = useConfirm()\nconst authStore = useAuthStore()\nconst tableRef = ref<SmartTableInst<SysJobLog>>()\n\n// 任务下拉(筛选用):拉一页足量。ponytail: 200 覆盖绝大多数系统,真超再上远程搜索\nconst jobOptions = ref<{ label: string; value: number }[]>([])\nasync function loadJobOptions() {\n try {\n const { items } = await jobApi.page({ page: 1, pageSize: 200 })\n jobOptions.value = items.map(j => ({ label: j.name, value: j.id }))\n } catch {\n // 静默:任务下拉是筛选辅助,拉取失败不打断列表\n }\n}\nvoid loadJobOptions()\n\nconst fireModeOptions = [\n {\n label: () => t('job.log.fireModeSchedule'),\n value: JobFireMode.Schedule,\n tagType: 'default' as const,\n },\n { label: () => t('job.log.fireModeManual'), value: JobFireMode.Manual, tagType: 'info' as const },\n {\n label: () => t('job.log.fireModeBackfill'),\n value: JobFireMode.Misfire,\n tagType: 'warning' as const,\n },\n {\n label: () => t('job.log.fireModeMisfireSkip'),\n value: JobFireMode.MissedSkipped,\n tagType: 'default' as const,\n },\n]\nconst runStatusOptions = [\n { label: () => t('job.log.running'), value: JobRunStatus.Running, tagType: 'info' as const },\n { label: () => t('job.log.success'), value: JobRunStatus.Success, tagType: 'success' as const },\n { label: () => t('job.log.failed'), value: JobRunStatus.Failed, tagType: 'error' as const },\n { label: () => t('job.log.timeout'), value: JobRunStatus.Timeout, tagType: 'warning' as const },\n {\n label: () => t('job.log.cancelled'),\n value: JobRunStatus.Cancelled,\n tagType: 'default' as const,\n },\n { label: () => t('job.log.skipped'), value: JobRunStatus.Skipped, tagType: 'default' as const },\n]\n\n/** 运行中(endTime 空)的行还没有耗时;已结束的显示毫秒。 */\nconst isAlive = (r: SysJobLog) => r.endTime == null\n\nconst columns: SmartTableColumn<SysJobLog>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n {\n key: 'jobId',\n title: () => t('job.log.job'),\n hideInTable: true, // 只作搜索项:表格里已有任务名快照列\n options: jobOptions,\n search: { props: { clearable: true, filterable: true } },\n },\n { key: 'jobName', title: () => t('job.log.job'), minWidth: 140, ellipsis: { tooltip: true } },\n {\n key: 'fireMode',\n title: () => t('job.log.fireMode'),\n width: 100,\n tag: true,\n options: fireModeOptions,\n },\n { key: 'scheduledTime', title: () => t('job.log.scheduledTime'), width: 160, format: 'datetime' },\n {\n key: 'startTime',\n title: () => t('job.log.startTime'),\n width: 160,\n format: 'datetime',\n // 时间范围筛选:daterange 回传 [开始, 结束] 日期串,api 层拆成 StartFrom/StartTo 并补秒\n search: { type: 'daterange', key: 'startRange' },\n },\n {\n key: 'elapsedMs',\n title: () => t('job.log.elapsed'),\n width: 110,\n render: r =>\n isAlive(r)\n ? h(NTag, { size: 'small', type: 'info', bordered: false }, () => t('job.log.running'))\n : h('span', { class: 'tabular' }, `${r.elapsedMs} ms`),\n },\n {\n key: 'runStatus',\n title: () => t('job.log.runStatus'),\n width: 100,\n tag: true,\n search: true,\n options: runStatusOptions,\n },\n {\n key: 'retryIndex',\n title: () => t('job.log.retryIndex'),\n width: 90,\n align: 'center',\n render: r => (r.retryIndex > 0 ? r.retryIndex : '—'),\n },\n { key: 'nodeName', title: () => t('job.log.node'), width: 140, ellipsis: { tooltip: true } },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 130,\n fixed: 'right',\n hideInSetting: true,\n render: r =>\n h(NSpace, { size: 4, wrapItem: false }, () => [\n h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openDetail(r) },\n () => t('common.detail'),\n ),\n isAlive(r) && authStore.hasPerm('POST:/api/v1/sys/job/log/{id}/kill')\n ? h(\n NButton,\n { size: 'small', quaternary: true, type: 'error', onClick: () => killRun(r) },\n () => t('job.log.kill'),\n )\n : null,\n ]),\n },\n]\n\n// 从任务页「记录」跳来时带 ?jobId=,自动带上筛选。\n// watch 而非 onMounted:页面被 keep-alive,标签开着时再跳一次只换 query,onMounted 不会再触发;\n// tableRef 一起纳入监听源,冷启动时实例就绪后补上筛选(immediate 在 setup 期 ref 还是空)。\nconst route = useRoute()\nwatch(\n [tableRef, () => route.query.jobId],\n ([inst, jobId]) => {\n if (!inst) return\n // route 是全局的:切到别的页面时 query.jobId 变 undefined,本页被 keep-alive 着的 watcher 照样会响。\n // 不守卫就等于「离开本页 = 清掉筛选并后台发一次没人看的请求」,切回来筛选还没了。\n if (route.path !== '/system/job-log') return\n const next = jobId == null ? undefined : Number(jobId)\n if (inst.params.jobId === next) return\n inst.params.jobId = next\n inst.search()\n },\n { immediate: true },\n)\n\n// ── 详情抽屉(行数据直填 + 同 fireInstanceId 的各次尝试) ──\nconst showDetail = ref(false)\nconst detailRow = ref<SysJobLog | null>(null)\nconst attempts = ref<SysJobLog[]>([])\nconst attemptsLoading = ref(false)\n\nconst runStatusTagType = {\n [JobRunStatus.Running]: 'info',\n [JobRunStatus.Success]: 'success',\n [JobRunStatus.Failed]: 'error',\n [JobRunStatus.Timeout]: 'warning',\n [JobRunStatus.Cancelled]: 'default',\n [JobRunStatus.Skipped]: 'default',\n} as const\nconst runStatusText = (s: JobRunStatus) => {\n const key = {\n 1: 'running',\n 2: 'success',\n 3: 'failed',\n 4: 'timeout',\n 5: 'cancelled',\n 6: 'skipped',\n }[s]\n return key ? t(`job.log.${key}`) : String(s)\n}\n\nconst attemptColumns: DataTableColumns<SysJobLog> = [\n {\n key: 'rowNo',\n title: () => t('common.rowNo'),\n width: 64,\n align: 'center',\n render: (_row, index) => index + 1,\n },\n {\n title: () => t('job.log.retryIndex'),\n key: 'retryIndex',\n width: 110,\n render: r =>\n r.retryIndex === 0 ? t('job.log.firstTry') : t('job.log.retryN', { n: r.retryIndex }),\n },\n {\n title: () => t('job.log.runStatus'),\n key: 'runStatus',\n width: 90,\n render: r =>\n h(NTag, { size: 'small', bordered: false, type: runStatusTagType[r.runStatus] }, () =>\n runStatusText(r.runStatus),\n ),\n },\n {\n title: () => t('job.log.startTime'),\n key: 'startTime',\n render: r => fmtDateTime(r.startTime),\n },\n {\n title: () => t('job.log.elapsed'),\n key: 'elapsedMs',\n width: 100,\n render: r => (isAlive(r) ? '—' : `${r.elapsedMs} ms`),\n },\n]\n\nasync function openDetail(r: SysJobLog) {\n detailRow.value = r\n showDetail.value = true\n attempts.value = []\n attemptsLoading.value = true\n try {\n const { items } = await jobApi.logPage({\n page: 1,\n pageSize: 100,\n fireInstanceId: r.fireInstanceId,\n })\n attempts.value = items.toSorted((a, b) => a.retryIndex - b.retryIndex)\n } catch {\n // 静默:尝试列表是详情的补充信息,拉不到不挡主体\n } finally {\n attemptsLoading.value = false\n }\n}\n\nfunction killRun(r: SysJobLog) {\n confirm({\n type: 'error',\n content: t('job.log.killConfirm', { name: r.jobName }),\n action: () => jobApi.kill(r.id),\n successMsg: t('job.log.killed'),\n }).then(ok => {\n if (ok) tableRef.value?.refresh()\n })\n}\n\n// ── 清空(弹窗选 beforeDays;0 = 全部) ──\nconst clearShow = ref(false)\nconst clearBeforeDays = ref(0)\n// computed:切语言时选项文案即时生效\nconst clearOptions = computed(() => [\n { label: t('job.log.clearAll'), value: 0 },\n ...[7, 30, 90].map(n => ({ label: t('job.log.beforeDays', { n }), value: n })),\n])\n\nasync function doClear() {\n try {\n const n = await jobApi.logClear({\n beforeDays: clearBeforeDays.value === 0 ? null : clearBeforeDays.value,\n })\n message.success(t('job.log.cleared', { n }))\n await tableRef.value?.refresh()\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n</script>\n\n<template>\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"jobApi.logPage\"\n flex-height\n virtual-scroll\n storage-key=\"sys-job-log\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button\n v-auth=\"'POST:/api/v1/sys/job/log/clear'\"\n type=\"error\"\n secondary\n @click=\"clearShow = true\"\n >\n <template #icon><AppIcon icon=\"ph:trash\" :size=\"16\" /></template>\n {{ t('job.log.clear') }}\n </n-button>\n </template>\n </SmartTable>\n\n <!-- 清空:选范围后执行,回报删除行数 -->\n <FormContainer\n v-model:show=\"clearShow\"\n :title=\"t('job.log.clearTitle')\"\n :width=\"420\"\n :on-confirm=\"doClear\"\n :confirm-text=\"t('common.confirm')\"\n >\n <div class=\"clear-body\">\n <n-select v-model:value=\"clearBeforeDays\" :options=\"clearOptions\" />\n <div class=\"clear-hint\">{{ t('job.log.clearHint') }}</div>\n </div>\n </FormContainer>\n\n <n-drawer v-model:show=\"showDetail\" :width=\"600\" placement=\"right\">\n <n-drawer-content :title=\"t('common.detail')\" closable>\n <template v-if=\"detailRow\">\n <n-descriptions label-placement=\"left\" :column=\"1\" bordered size=\"small\">\n <n-descriptions-item :label=\"t('job.log.job')\">\n {{ detailRow.jobName }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('job.log.fireMode')\">\n {{\n detailRow.fireMode === JobFireMode.Manual\n ? t('job.log.fireModeManual')\n : detailRow.fireMode === JobFireMode.Misfire\n ? t('job.log.fireModeBackfill')\n : detailRow.fireMode === JobFireMode.MissedSkipped\n ? t('job.log.fireModeMisfireSkip')\n : t('job.log.fireModeSchedule')\n }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('job.log.runStatus')\">\n <n-tag size=\"small\" :bordered=\"false\" :type=\"runStatusTagType[detailRow.runStatus]\">\n {{ runStatusText(detailRow.runStatus) }}\n </n-tag>\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('job.log.scheduledTime')\">\n {{ fmtDateTime(detailRow.scheduledTime) }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('job.log.startTime')\">\n {{ fmtDateTime(detailRow.startTime) }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('job.log.elapsed')\">\n {{ detailRow.endTime == null ? t('job.log.running') : `${detailRow.elapsedMs} ms` }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('job.log.node')\">\n {{ detailRow.nodeName || '—' }}\n </n-descriptions-item>\n <n-descriptions-item v-if=\"detailRow.messageText\" :label=\"t('job.log.message')\">\n <pre class=\"log-output\">{{ detailRow.messageText }}</pre>\n </n-descriptions-item>\n <n-descriptions-item v-if=\"detailRow.errorText\" :label=\"t('job.log.error')\">\n <pre class=\"log-output log-error\">{{ detailRow.errorText }}</pre>\n </n-descriptions-item>\n </n-descriptions>\n\n <div class=\"attempts-title\">{{ t('job.log.attempts') }}</div>\n <n-data-table\n size=\"small\"\n :columns=\"attemptColumns\"\n :data=\"attempts\"\n :loading=\"attemptsLoading\"\n :row-key=\"(r: SysJobLog) => r.id\"\n :pagination=\"false\"\n />\n </template>\n </n-drawer-content>\n </n-drawer>\n</template>\n\n<style scoped>\n.clear-body {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n.clear-hint {\n font-size: 12px;\n color: var(--color-text-tertiary);\n}\n.attempts-title {\n margin: 16px 0 8px;\n font-size: var(--font-size-sm);\n font-weight: 600;\n color: var(--color-text-primary);\n}\n.log-output {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-all;\n font-family: var(--font-family-mono, ui-monospace, monospace);\n font-size: 12px;\n line-height: 1.5;\n}\n.log-error {\n color: var(--color-danger);\n}\n</style>\n"],"names":["t","useI18n","message","useMessage","confirm","useConfirm","authStore","useAuthStore","tableRef","ref","jobOptions","loadJobOptions","items","jobApi","j","fireModeOptions","JobFireMode","runStatusOptions","JobRunStatus","isAlive","r","columns","h","NTag","NSpace","NButton","openDetail","killRun","route","useRoute","watch","inst","jobId","next","showDetail","detailRow","attempts","attemptsLoading","runStatusTagType","runStatusText","s","key","attemptColumns","_row","index","fmtDateTime","a","b","ok","_a","clearShow","clearBeforeDays","clearOptions","computed","n","doClear","e","translateError","_createVNode","_unref","SmartTable","_cache","_createBlock","AppIcon","_createTextVNode","FormContainer","$event","_createElementVNode","_hoisted_1","NSelect","_hoisted_2","_toDisplayString","NDrawer","NDrawerContent","_createElementBlock","_Fragment","NDescriptions","NDescriptionsItem","_hoisted_3","_hoisted_4","_hoisted_5","NDataTable"],"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,253 @@
|
|
|
1
|
+
import { defineComponent as S, ref as h, onMounted as L, onActivated as z, onDeactivated as B, onUnmounted as F, computed as w, openBlock as f, createElementBlock as _, createVNode as n, unref as a, withCtx as r, Fragment as E, renderList as H, createBlock as J, createElementVNode as c, normalizeStyle as R, toDisplayString as k, h as j } from "vue";
|
|
2
|
+
import { useMessage as $, NGrid as x, NGi as v, NCard as p, NSpin as G, NDataTable as N, NTag as V } from "naive-ui";
|
|
3
|
+
import { Icon as O } from "@iconify/vue";
|
|
4
|
+
import { useI18n as U } from "vue-i18n";
|
|
5
|
+
import q from "../../../components/Chart/index.vue.js";
|
|
6
|
+
import { jobApi as K } from "../../../api/index.js";
|
|
7
|
+
import { translateError as P } from "../../../utils/error.js";
|
|
8
|
+
import { fmtDateTime as Q } from "../../../utils/format.js";
|
|
9
|
+
const W = { class: "view fill-page fill-page--soft" }, X = { class: "stat" }, Y = { class: "stat-val tabular" }, Z = { class: "stat-label" }, de = /* @__PURE__ */ S({
|
|
10
|
+
__name: "index",
|
|
11
|
+
setup(ee) {
|
|
12
|
+
const { t } = U(), T = $(), i = h(null), u = h(!0);
|
|
13
|
+
async function b(o = !0) {
|
|
14
|
+
try {
|
|
15
|
+
i.value = await K.dashboard();
|
|
16
|
+
} catch (l) {
|
|
17
|
+
o || T.error(P(l));
|
|
18
|
+
} finally {
|
|
19
|
+
u.value = !1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
let d = null;
|
|
23
|
+
function y() {
|
|
24
|
+
d == null && (d = window.setInterval(() => void b(), 15e3));
|
|
25
|
+
}
|
|
26
|
+
function g() {
|
|
27
|
+
d != null && (window.clearInterval(d), d = null);
|
|
28
|
+
}
|
|
29
|
+
L(() => {
|
|
30
|
+
b(!1), y();
|
|
31
|
+
}), z(y), B(g), F(g);
|
|
32
|
+
const m = (o) => o === void 0 ? "—" : o, I = w(() => {
|
|
33
|
+
var o, l, e, s;
|
|
34
|
+
return [
|
|
35
|
+
{
|
|
36
|
+
key: "todaySuccess",
|
|
37
|
+
icon: "ph:check-circle-duotone",
|
|
38
|
+
value: m((o = i.value) == null ? void 0 : o.todaySuccess),
|
|
39
|
+
color: "var(--color-success)"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: "todayFailed",
|
|
43
|
+
icon: "ph:x-circle-duotone",
|
|
44
|
+
value: m((l = i.value) == null ? void 0 : l.todayFailed),
|
|
45
|
+
color: "var(--color-danger)"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: "running",
|
|
49
|
+
icon: "ph:circle-notch-duotone",
|
|
50
|
+
value: m((e = i.value) == null ? void 0 : e.running),
|
|
51
|
+
color: "var(--color-info)"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: "totalJobs",
|
|
55
|
+
icon: "ph:clock-countdown-duotone",
|
|
56
|
+
value: m((s = i.value) == null ? void 0 : s.totalJobs),
|
|
57
|
+
color: "var(--color-primary)"
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
}), A = w(() => {
|
|
61
|
+
var l;
|
|
62
|
+
const o = ((l = i.value) == null ? void 0 : l.trend) ?? [];
|
|
63
|
+
return {
|
|
64
|
+
tooltip: { trigger: "axis" },
|
|
65
|
+
// 图例位置写死在顶部:留给默认值时它会落到绘图区底部、压在 x 轴日期标签上(实测)。
|
|
66
|
+
// grid.top 的 32 就是给它留的位置。
|
|
67
|
+
legend: { top: 0 },
|
|
68
|
+
grid: { left: 8, right: 16, bottom: 8, top: 32, containLabel: !0 },
|
|
69
|
+
xAxis: { type: "category", data: o.map((e) => e.date.slice(5)) },
|
|
70
|
+
// MM-dd 足够,14 天跨年概率忽略
|
|
71
|
+
yAxis: { type: "value", minInterval: 1 },
|
|
72
|
+
series: [
|
|
73
|
+
{ name: t("job.monitor.trendSuccess"), type: "bar", data: o.map((e) => e.success) },
|
|
74
|
+
{
|
|
75
|
+
name: t("job.monitor.trendFailed"),
|
|
76
|
+
type: "line",
|
|
77
|
+
smooth: !0,
|
|
78
|
+
data: o.map((e) => e.failed)
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
function C(o) {
|
|
84
|
+
const l = Math.max(0, Date.now() - new Date(o).getTime()), e = Math.floor(l / 1e3);
|
|
85
|
+
return e < 10 ? t("job.monitor.justNow") : e < 60 ? t("job.monitor.secondsAgo", { n: e }) : e < 3600 ? t("job.monitor.minutesAgo", { n: Math.floor(e / 60) }) : t("job.monitor.hoursAgo", { n: Math.floor(e / 3600) });
|
|
86
|
+
}
|
|
87
|
+
const D = [
|
|
88
|
+
{
|
|
89
|
+
key: "rowNo",
|
|
90
|
+
title: () => t("common.rowNo"),
|
|
91
|
+
width: 64,
|
|
92
|
+
align: "center",
|
|
93
|
+
render: (o, l) => l + 1
|
|
94
|
+
},
|
|
95
|
+
{ title: () => t("job.monitor.upcomingJob"), key: "name", ellipsis: { tooltip: !0 } },
|
|
96
|
+
{
|
|
97
|
+
title: () => t("job.monitor.upcomingTime"),
|
|
98
|
+
key: "nextRunTime",
|
|
99
|
+
width: 170,
|
|
100
|
+
render: (o) => j("span", { class: "tabular" }, Q(o.nextRunTime, { empty: "—" }))
|
|
101
|
+
}
|
|
102
|
+
], M = [
|
|
103
|
+
{
|
|
104
|
+
key: "rowNo",
|
|
105
|
+
title: () => t("common.rowNo"),
|
|
106
|
+
width: 64,
|
|
107
|
+
align: "center",
|
|
108
|
+
render: (o, l) => l + 1
|
|
109
|
+
},
|
|
110
|
+
{ title: () => t("job.monitor.nodeName"), key: "nodeName", ellipsis: { tooltip: !0 } },
|
|
111
|
+
{
|
|
112
|
+
title: () => t("job.monitor.role"),
|
|
113
|
+
key: "isLeader",
|
|
114
|
+
width: 90,
|
|
115
|
+
render: (o) => j(
|
|
116
|
+
V,
|
|
117
|
+
{ size: "small", bordered: !1, type: o.isLeader ? "primary" : "default" },
|
|
118
|
+
() => t(o.isLeader ? "job.monitor.leader" : "job.monitor.standby")
|
|
119
|
+
)
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
title: () => t("job.monitor.lastHeartbeat"),
|
|
123
|
+
key: "lastHeartbeat",
|
|
124
|
+
width: 110,
|
|
125
|
+
render: (o) => C(o.lastHeartbeat)
|
|
126
|
+
},
|
|
127
|
+
{ title: () => t("job.monitor.workerId"), key: "workerId", width: 90, align: "center" },
|
|
128
|
+
{ title: () => t("job.monitor.pid"), key: "pid", width: 90, align: "center" }
|
|
129
|
+
];
|
|
130
|
+
return (o, l) => (f(), _("div", W, [
|
|
131
|
+
n(a(x), {
|
|
132
|
+
cols: "1 s:2 l:4",
|
|
133
|
+
responsive: "screen",
|
|
134
|
+
"x-gap": 16,
|
|
135
|
+
"y-gap": 16
|
|
136
|
+
}, {
|
|
137
|
+
default: r(() => [
|
|
138
|
+
(f(!0), _(E, null, H(I.value, (e) => (f(), J(a(v), {
|
|
139
|
+
key: e.key
|
|
140
|
+
}, {
|
|
141
|
+
default: r(() => [
|
|
142
|
+
n(a(p), { bordered: !0 }, {
|
|
143
|
+
default: r(() => [
|
|
144
|
+
c("div", X, [
|
|
145
|
+
c("div", {
|
|
146
|
+
class: "stat-ico",
|
|
147
|
+
style: R({ color: e.color })
|
|
148
|
+
}, [
|
|
149
|
+
n(a(O), {
|
|
150
|
+
icon: e.icon,
|
|
151
|
+
width: 28
|
|
152
|
+
}, null, 8, ["icon"])
|
|
153
|
+
], 4),
|
|
154
|
+
c("div", null, [
|
|
155
|
+
c("div", Y, k(e.value), 1),
|
|
156
|
+
c("div", Z, k(a(t)(`job.monitor.${e.key}`)), 1)
|
|
157
|
+
])
|
|
158
|
+
])
|
|
159
|
+
]),
|
|
160
|
+
_: 2
|
|
161
|
+
}, 1024)
|
|
162
|
+
]),
|
|
163
|
+
_: 2
|
|
164
|
+
}, 1024))), 128))
|
|
165
|
+
]),
|
|
166
|
+
_: 1
|
|
167
|
+
}),
|
|
168
|
+
n(a(p), {
|
|
169
|
+
title: a(t)("job.monitor.trendTitle"),
|
|
170
|
+
bordered: !0
|
|
171
|
+
}, {
|
|
172
|
+
default: r(() => [
|
|
173
|
+
n(a(G), { show: u.value }, {
|
|
174
|
+
default: r(() => [
|
|
175
|
+
n(q, { option: A.value }, null, 8, ["option"])
|
|
176
|
+
]),
|
|
177
|
+
_: 1
|
|
178
|
+
}, 8, ["show"])
|
|
179
|
+
]),
|
|
180
|
+
_: 1
|
|
181
|
+
}, 8, ["title"]),
|
|
182
|
+
n(a(x), {
|
|
183
|
+
cols: "1 l:2",
|
|
184
|
+
responsive: "screen",
|
|
185
|
+
"x-gap": 16,
|
|
186
|
+
"y-gap": 16,
|
|
187
|
+
class: "fill-main job-tables"
|
|
188
|
+
}, {
|
|
189
|
+
default: r(() => [
|
|
190
|
+
n(a(v), { class: "fill-main" }, {
|
|
191
|
+
default: r(() => [
|
|
192
|
+
n(a(p), {
|
|
193
|
+
class: "fill-card",
|
|
194
|
+
title: a(t)("job.monitor.upcomingTitle"),
|
|
195
|
+
bordered: !0
|
|
196
|
+
}, {
|
|
197
|
+
default: r(() => {
|
|
198
|
+
var e;
|
|
199
|
+
return [
|
|
200
|
+
n(a(N), {
|
|
201
|
+
size: "small",
|
|
202
|
+
columns: D,
|
|
203
|
+
data: ((e = i.value) == null ? void 0 : e.upcoming) ?? [],
|
|
204
|
+
loading: u.value,
|
|
205
|
+
"row-key": (s) => `${s.jobId}-${s.nextRunTime}`,
|
|
206
|
+
pagination: !1,
|
|
207
|
+
"flex-height": "",
|
|
208
|
+
"virtual-scroll": ""
|
|
209
|
+
}, null, 8, ["data", "loading", "row-key"])
|
|
210
|
+
];
|
|
211
|
+
}),
|
|
212
|
+
_: 1
|
|
213
|
+
}, 8, ["title"])
|
|
214
|
+
]),
|
|
215
|
+
_: 1
|
|
216
|
+
}),
|
|
217
|
+
n(a(v), { class: "fill-main" }, {
|
|
218
|
+
default: r(() => [
|
|
219
|
+
n(a(p), {
|
|
220
|
+
class: "fill-card",
|
|
221
|
+
title: a(t)("job.monitor.nodesTitle"),
|
|
222
|
+
bordered: !0
|
|
223
|
+
}, {
|
|
224
|
+
default: r(() => {
|
|
225
|
+
var e;
|
|
226
|
+
return [
|
|
227
|
+
n(a(N), {
|
|
228
|
+
size: "small",
|
|
229
|
+
columns: M,
|
|
230
|
+
data: ((e = i.value) == null ? void 0 : e.nodes) ?? [],
|
|
231
|
+
loading: u.value,
|
|
232
|
+
"row-key": (s) => s.nodeName,
|
|
233
|
+
pagination: !1,
|
|
234
|
+
"flex-height": "",
|
|
235
|
+
"virtual-scroll": ""
|
|
236
|
+
}, null, 8, ["data", "loading", "row-key"])
|
|
237
|
+
];
|
|
238
|
+
}),
|
|
239
|
+
_: 1
|
|
240
|
+
}, 8, ["title"])
|
|
241
|
+
]),
|
|
242
|
+
_: 1
|
|
243
|
+
})
|
|
244
|
+
]),
|
|
245
|
+
_: 1
|
|
246
|
+
})
|
|
247
|
+
]));
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
export {
|
|
251
|
+
de as default
|
|
252
|
+
};
|
|
253
|
+
//# sourceMappingURL=index2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/job-monitor/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 任务监控 = 4 张 stat 卡 + 近 14 日成败趋势 + 即将执行 + 集群节点,整页吃一个 dashboard 端点。\n// 15 秒轮询:页面被 keep-alive,切走的标签没必要继续打点 → onDeactivated 也要停,回来再启;\n// onUnmounted 兜底清定时器,防组件销毁后计时器泄漏还在发请求。\nimport { computed, h, onActivated, onDeactivated, onMounted, onUnmounted, ref } from 'vue'\nimport {\n NGrid,\n NGi,\n NCard,\n NSpin,\n NTag,\n NDataTable,\n useMessage,\n type DataTableColumns,\n} from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useI18n } from 'vue-i18n'\nimport BaseChart from '#/components/Chart/index.vue'\nimport type { EChartsOption } from 'echarts'\nimport { jobApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { fmtDateTime } from '#/utils/format'\nimport type { JobDashboard, JobNodeItem, JobUpcomingItem } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\n\nconst data = ref<JobDashboard | null>(null)\nconst loading = ref(true)\n\nasync function load(silent = true) {\n try {\n data.value = await jobApi.dashboard()\n } catch (e) {\n // 首次失败要让用户知道;轮询失败静默(网络抖一下不必每 15 秒糊一脸红)\n if (!silent) message.error(translateError(e))\n } finally {\n loading.value = false\n }\n}\n\nlet timer: number | null = null\nfunction start() {\n if (timer != null) return\n timer = window.setInterval(() => void load(), 15_000)\n}\nfunction stop() {\n if (timer != null) {\n window.clearInterval(timer)\n timer = null\n }\n}\nonMounted(() => {\n void load(false)\n start()\n})\nonActivated(start)\nonDeactivated(stop)\nonUnmounted(stop)\n\n/** 计数未到位时显示 —,而不是先闪个 0。 */\nconst num = (v: number | undefined) => (v === undefined ? '—' : v)\nconst stats = computed(() => [\n {\n key: 'todaySuccess',\n icon: 'ph:check-circle-duotone',\n value: num(data.value?.todaySuccess),\n color: 'var(--color-success)',\n },\n {\n key: 'todayFailed',\n icon: 'ph:x-circle-duotone',\n value: num(data.value?.todayFailed),\n color: 'var(--color-danger)',\n },\n {\n key: 'running',\n icon: 'ph:circle-notch-duotone',\n value: num(data.value?.running),\n color: 'var(--color-info)',\n },\n {\n key: 'totalJobs',\n icon: 'ph:clock-countdown-duotone',\n value: num(data.value?.totalJobs),\n color: 'var(--color-primary)',\n },\n])\n\n// 柱线组合:成功是当日总量,用柱;失败通常小一个量级,压在柱上会看不见,用线单独描出来。\nconst trendOption = computed<EChartsOption>(() => {\n const trend = data.value?.trend ?? []\n return {\n tooltip: { trigger: 'axis' },\n // 图例位置写死在顶部:留给默认值时它会落到绘图区底部、压在 x 轴日期标签上(实测)。\n // grid.top 的 32 就是给它留的位置。\n legend: { top: 0 },\n grid: { left: 8, right: 16, bottom: 8, top: 32, containLabel: true },\n xAxis: { type: 'category', data: trend.map(p => p.date.slice(5)) }, // MM-dd 足够,14 天跨年概率忽略\n yAxis: { type: 'value', minInterval: 1 },\n series: [\n { name: t('job.monitor.trendSuccess'), type: 'bar', data: trend.map(p => p.success) },\n {\n name: t('job.monitor.trendFailed'),\n type: 'line',\n smooth: true,\n data: trend.map(p => p.failed),\n },\n ],\n }\n})\n\n/** 最后心跳的相对时间(轮询 15 秒一刷,精确到秒/分/时够用)。 */\nfunction relative(iso: string): string {\n const diff = Math.max(0, Date.now() - new Date(iso).getTime())\n const sec = Math.floor(diff / 1000)\n if (sec < 10) return t('job.monitor.justNow')\n if (sec < 60) return t('job.monitor.secondsAgo', { n: sec })\n if (sec < 3600) return t('job.monitor.minutesAgo', { n: Math.floor(sec / 60) })\n return t('job.monitor.hoursAgo', { n: Math.floor(sec / 3600) })\n}\n\nconst upcomingColumns: DataTableColumns<JobUpcomingItem> = [\n {\n key: 'rowNo',\n title: () => t('common.rowNo'),\n width: 64,\n align: 'center',\n render: (_row, index) => index + 1,\n },\n { title: () => t('job.monitor.upcomingJob'), key: 'name', ellipsis: { tooltip: true } },\n {\n title: () => t('job.monitor.upcomingTime'),\n key: 'nextRunTime',\n width: 170,\n render: r => h('span', { class: 'tabular' }, fmtDateTime(r.nextRunTime, { empty: '—' })),\n },\n]\n\nconst nodeColumns: DataTableColumns<JobNodeItem> = [\n {\n key: 'rowNo',\n title: () => t('common.rowNo'),\n width: 64,\n align: 'center',\n render: (_row, index) => index + 1,\n },\n { title: () => t('job.monitor.nodeName'), key: 'nodeName', ellipsis: { tooltip: true } },\n {\n title: () => t('job.monitor.role'),\n key: 'isLeader',\n width: 90,\n render: r =>\n h(NTag, { size: 'small', bordered: false, type: r.isLeader ? 'primary' : 'default' }, () =>\n t(r.isLeader ? 'job.monitor.leader' : 'job.monitor.standby'),\n ),\n },\n {\n title: () => t('job.monitor.lastHeartbeat'),\n key: 'lastHeartbeat',\n width: 110,\n render: r => relative(r.lastHeartbeat),\n },\n { title: () => t('job.monitor.workerId'), key: 'workerId', width: 90, align: 'center' },\n { title: () => t('job.monitor.pid'), key: 'pid', width: 90, align: 'center' },\n]\n</script>\n\n<template>\n <div class=\"view fill-page fill-page--soft\">\n <n-grid :cols=\"'1 s:2 l:4'\" responsive=\"screen\" :x-gap=\"16\" :y-gap=\"16\">\n <n-gi v-for=\"s in stats\" :key=\"s.key\">\n <n-card :bordered=\"true\">\n <div class=\"stat\">\n <div class=\"stat-ico\" :style=\"{ color: s.color }\">\n <Icon :icon=\"s.icon\" :width=\"28\" />\n </div>\n <div>\n <div class=\"stat-val tabular\">{{ s.value }}</div>\n <div class=\"stat-label\">{{ t(`job.monitor.${s.key}`) }}</div>\n </div>\n </div>\n </n-card>\n </n-gi>\n </n-grid>\n\n <n-card :title=\"t('job.monitor.trendTitle')\" :bordered=\"true\">\n <n-spin :show=\"loading\">\n <BaseChart :option=\"trendOption\" />\n </n-spin>\n </n-card>\n\n <!-- 统计条与趋势图按内容定高(.fill-page > * 已是 flex-shrink:0),\n 底部这一栏吃掉剩余高度,两张表各自在卡片里滚。\n 这页是仪表盘不是列表页:统计条 + 320px 趋势图不参与瓜分,1080p 上给两张表还剩 200 来 px,\n 768p 上就只剩一条缝了 —— 所以外壳叠 .fill-page--soft,再给这一栏一个下限(见 scoped)。 -->\n <n-grid\n :cols=\"'1 l:2'\"\n responsive=\"screen\"\n :x-gap=\"16\"\n :y-gap=\"16\"\n class=\"fill-main job-tables\"\n >\n <n-gi class=\"fill-main\">\n <n-card class=\"fill-card\" :title=\"t('job.monitor.upcomingTitle')\" :bordered=\"true\">\n <n-data-table\n size=\"small\"\n :columns=\"upcomingColumns\"\n :data=\"data?.upcoming ?? []\"\n :loading=\"loading\"\n :row-key=\"(r: JobUpcomingItem) => `${r.jobId}-${r.nextRunTime}`\"\n :pagination=\"false\"\n flex-height\n virtual-scroll\n />\n </n-card>\n </n-gi>\n <n-gi class=\"fill-main\">\n <n-card class=\"fill-card\" :title=\"t('job.monitor.nodesTitle')\" :bordered=\"true\">\n <n-data-table\n size=\"small\"\n :columns=\"nodeColumns\"\n :data=\"data?.nodes ?? []\"\n :loading=\"loading\"\n :row-key=\"(r: JobNodeItem) => r.nodeName\"\n :pagination=\"false\"\n flex-height\n virtual-scroll\n />\n </n-card>\n </n-gi>\n </n-grid>\n </div>\n</template>\n\n<style scoped>\n/* display / flex-direction / 整屏高度链都在 styles/layout.css 的 .fill-page,这里只留卡片间距。 */\n.view {\n gap: var(--gap-card);\n}\n\n/*\n * .fill-page--soft 把「恰好一屏」放宽成「至少一屏」,这里再给两张表所在的那一栏一个下限:\n * 卡片头尾约 62px + small 表头 34px + 4 行 x 34px ≈ 240px,少于这个就不叫表了。\n * 高屏上剩余高度本来就大于下限,页面仍然恰好一屏;矮屏上顶到下限后由 .page 正常出滚动条。\n * 容器和栅格项都要给:容器是 flex 子项(.fill-main 带 min-height:0,不设下限会被压过内容),\n * 栅格项则决定单列(l 断点以下两张表上下排)时每张表各自的下限。\n */\n.job-tables,\n.job-tables > * {\n min-height: 240px;\n}\n\n.stat {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n/* 图标底盘:取语义色 12% 作浅底,同工作台手法,避免图标\"裸浮\" */\n.stat-ico {\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n border-radius: var(--radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, currentColor 12%, transparent);\n}\n.stat-val {\n font-size: 28px;\n font-weight: 700;\n color: var(--color-text-primary);\n line-height: 1.1;\n}\n.stat-label {\n color: var(--color-text-secondary);\n margin-top: 2px;\n}\n</style>\n"],"names":["useI18n","message","useMessage","data","ref","loading","load","silent","jobApi","e","translateError","timer","start","stop","onMounted","onActivated","onDeactivated","onUnmounted","num","v","stats","computed","_a","_b","_c","_d","trendOption","trend","p","relative","iso","diff","sec","upcomingColumns","_row","index","r","h","fmtDateTime","nodeColumns","NTag","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","NGrid","_Fragment","_renderList","s","_createBlock","NGi","NCard","_createElementVNode","_hoisted_2","_normalizeStyle","Icon","_hoisted_3","_toDisplayString","_hoisted_4","NSpin","BaseChart","NDataTable"],"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,216 @@
|
|
|
1
|
+
import { defineComponent as N, ref as m, resolveDirective as C, openBlock as d, createElementBlock as E, Fragment as M, createVNode as o, unref as e, withCtx as l, withDirectives as I, createBlock as g, createTextVNode as s, toDisplayString as i, createElementVNode as h, createCommentVNode as z, h as B } from "vue";
|
|
2
|
+
import { useMessage as V, NButton as _, NDrawer as A, NDrawerContent as R, NDescriptions as S, NDescriptionsItem as n } from "naive-ui";
|
|
3
|
+
import { useI18n as L } from "vue-i18n";
|
|
4
|
+
import { SmartTable as q } from "smart-naive-table";
|
|
5
|
+
import F from "../../../../components/AppIcon.vue.js";
|
|
6
|
+
import { useConfirm as P } from "../../../../composables/useConfirm.js";
|
|
7
|
+
import { logApi as b } from "../../../../api/index.js";
|
|
8
|
+
import { translateError as U } from "../../../../utils/error.js";
|
|
9
|
+
import { operatorText as y } from "../../../../utils/format.js";
|
|
10
|
+
const $ = { class: "exception" }, j = { class: "exception" }, ee = /* @__PURE__ */ N({
|
|
11
|
+
__name: "index",
|
|
12
|
+
setup(G) {
|
|
13
|
+
const { t } = L(), v = V(), { confirm: x } = P(), f = m(), k = [
|
|
14
|
+
{ type: "index", title: () => t("common.rowNo"), width: 64, align: "center" },
|
|
15
|
+
{
|
|
16
|
+
key: "exceptionType",
|
|
17
|
+
title: () => t("log.exceptionType"),
|
|
18
|
+
ellipsis: { tooltip: !0 },
|
|
19
|
+
search: !0
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
key: "message",
|
|
23
|
+
title: () => t("log.exceptionMessage"),
|
|
24
|
+
ellipsis: { tooltip: !0 },
|
|
25
|
+
render: (r) => r.message || "—"
|
|
26
|
+
},
|
|
27
|
+
{ key: "httpMethod", title: () => t("log.method"), width: 90 },
|
|
28
|
+
{ key: "path", title: () => t("log.path"), ellipsis: { tooltip: !0 }, search: !0 },
|
|
29
|
+
{ key: "operator", title: () => t("log.operator"), width: 120, render: (r) => y(r) },
|
|
30
|
+
{ key: "ip", title: () => t("log.ip"), render: (r) => r.ip || "—" },
|
|
31
|
+
{
|
|
32
|
+
key: "createTime",
|
|
33
|
+
title: () => t("common.createTime"),
|
|
34
|
+
format: "datetime",
|
|
35
|
+
search: { type: "daterange" }
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: "op",
|
|
39
|
+
title: () => t("common.operation"),
|
|
40
|
+
width: 90,
|
|
41
|
+
fixed: "right",
|
|
42
|
+
hideInSetting: !0,
|
|
43
|
+
render: (r) => B(
|
|
44
|
+
_,
|
|
45
|
+
{ size: "small", quaternary: !0, type: "primary", onClick: () => w(r) },
|
|
46
|
+
() => t("log.detail")
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
], p = m(!1), a = m(null);
|
|
50
|
+
function w(r) {
|
|
51
|
+
a.value = r, p.value = !0;
|
|
52
|
+
}
|
|
53
|
+
function T() {
|
|
54
|
+
x({
|
|
55
|
+
type: "error",
|
|
56
|
+
content: t("log.clearExceptionConfirm"),
|
|
57
|
+
action: () => b.exceptionClear(),
|
|
58
|
+
successMsg: t("log.cleared")
|
|
59
|
+
}).then((r) => {
|
|
60
|
+
var c;
|
|
61
|
+
r && ((c = f.value) == null || c.refresh());
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return (r, c) => {
|
|
65
|
+
const D = C("auth");
|
|
66
|
+
return d(), E(M, null, [
|
|
67
|
+
o(e(q), {
|
|
68
|
+
"default-page-size": 100,
|
|
69
|
+
ref_key: "tableRef",
|
|
70
|
+
ref: f,
|
|
71
|
+
columns: k,
|
|
72
|
+
fetcher: e(b).exceptionPage,
|
|
73
|
+
"flex-height": "",
|
|
74
|
+
"virtual-scroll": "",
|
|
75
|
+
"storage-key": "sys-log-exception",
|
|
76
|
+
onError: c[0] || (c[0] = (u) => e(v).error(e(U)(u)))
|
|
77
|
+
}, {
|
|
78
|
+
toolbar: l(() => [
|
|
79
|
+
I((d(), g(e(_), {
|
|
80
|
+
type: "error",
|
|
81
|
+
secondary: "",
|
|
82
|
+
onClick: T
|
|
83
|
+
}, {
|
|
84
|
+
icon: l(() => [
|
|
85
|
+
o(F, {
|
|
86
|
+
icon: "ph:trash",
|
|
87
|
+
size: 16
|
|
88
|
+
})
|
|
89
|
+
]),
|
|
90
|
+
default: l(() => [
|
|
91
|
+
s(" " + i(e(t)("log.clear")), 1)
|
|
92
|
+
]),
|
|
93
|
+
_: 1
|
|
94
|
+
})), [
|
|
95
|
+
[D, "DELETE:/api/v1/sys/log/exception"]
|
|
96
|
+
])
|
|
97
|
+
]),
|
|
98
|
+
_: 1
|
|
99
|
+
}, 8, ["fetcher"]),
|
|
100
|
+
o(e(A), {
|
|
101
|
+
show: p.value,
|
|
102
|
+
"onUpdate:show": c[1] || (c[1] = (u) => p.value = u),
|
|
103
|
+
width: 620,
|
|
104
|
+
placement: "right"
|
|
105
|
+
}, {
|
|
106
|
+
default: l(() => [
|
|
107
|
+
o(e(R), {
|
|
108
|
+
title: e(t)("log.detail"),
|
|
109
|
+
closable: ""
|
|
110
|
+
}, {
|
|
111
|
+
default: l(() => [
|
|
112
|
+
a.value ? (d(), g(e(S), {
|
|
113
|
+
key: 0,
|
|
114
|
+
"label-placement": "left",
|
|
115
|
+
column: 1,
|
|
116
|
+
bordered: "",
|
|
117
|
+
size: "small"
|
|
118
|
+
}, {
|
|
119
|
+
default: l(() => [
|
|
120
|
+
o(e(n), {
|
|
121
|
+
label: e(t)("log.exceptionType")
|
|
122
|
+
}, {
|
|
123
|
+
default: l(() => [
|
|
124
|
+
s(i(a.value.exceptionType), 1)
|
|
125
|
+
]),
|
|
126
|
+
_: 1
|
|
127
|
+
}, 8, ["label"]),
|
|
128
|
+
o(e(n), {
|
|
129
|
+
label: e(t)("log.method")
|
|
130
|
+
}, {
|
|
131
|
+
default: l(() => [
|
|
132
|
+
s(i(a.value.httpMethod), 1)
|
|
133
|
+
]),
|
|
134
|
+
_: 1
|
|
135
|
+
}, 8, ["label"]),
|
|
136
|
+
o(e(n), {
|
|
137
|
+
label: e(t)("log.path")
|
|
138
|
+
}, {
|
|
139
|
+
default: l(() => [
|
|
140
|
+
s(i(a.value.path), 1)
|
|
141
|
+
]),
|
|
142
|
+
_: 1
|
|
143
|
+
}, 8, ["label"]),
|
|
144
|
+
o(e(n), {
|
|
145
|
+
label: e(t)("log.traceId")
|
|
146
|
+
}, {
|
|
147
|
+
default: l(() => [
|
|
148
|
+
s(i(a.value.traceId || "—"), 1)
|
|
149
|
+
]),
|
|
150
|
+
_: 1
|
|
151
|
+
}, 8, ["label"]),
|
|
152
|
+
o(e(n), {
|
|
153
|
+
label: e(t)("log.operator")
|
|
154
|
+
}, {
|
|
155
|
+
default: l(() => [
|
|
156
|
+
s(i(e(y)(a.value)), 1)
|
|
157
|
+
]),
|
|
158
|
+
_: 1
|
|
159
|
+
}, 8, ["label"]),
|
|
160
|
+
o(e(n), {
|
|
161
|
+
label: e(t)("log.ip")
|
|
162
|
+
}, {
|
|
163
|
+
default: l(() => [
|
|
164
|
+
s(i(a.value.ip || "—"), 1)
|
|
165
|
+
]),
|
|
166
|
+
_: 1
|
|
167
|
+
}, 8, ["label"]),
|
|
168
|
+
o(e(n), {
|
|
169
|
+
label: e(t)("log.userAgent")
|
|
170
|
+
}, {
|
|
171
|
+
default: l(() => [
|
|
172
|
+
s(i(a.value.userAgent || "—"), 1)
|
|
173
|
+
]),
|
|
174
|
+
_: 1
|
|
175
|
+
}, 8, ["label"]),
|
|
176
|
+
o(e(n), {
|
|
177
|
+
label: e(t)("common.createTime")
|
|
178
|
+
}, {
|
|
179
|
+
default: l(() => [
|
|
180
|
+
s(i(a.value.createTime), 1)
|
|
181
|
+
]),
|
|
182
|
+
_: 1
|
|
183
|
+
}, 8, ["label"]),
|
|
184
|
+
o(e(n), {
|
|
185
|
+
label: e(t)("log.exceptionMessage")
|
|
186
|
+
}, {
|
|
187
|
+
default: l(() => [
|
|
188
|
+
h("pre", $, i(a.value.message || "—"), 1)
|
|
189
|
+
]),
|
|
190
|
+
_: 1
|
|
191
|
+
}, 8, ["label"]),
|
|
192
|
+
o(e(n), {
|
|
193
|
+
label: e(t)("log.stackTrace")
|
|
194
|
+
}, {
|
|
195
|
+
default: l(() => [
|
|
196
|
+
h("pre", j, i(a.value.stackTrace || "—"), 1)
|
|
197
|
+
]),
|
|
198
|
+
_: 1
|
|
199
|
+
}, 8, ["label"])
|
|
200
|
+
]),
|
|
201
|
+
_: 1
|
|
202
|
+
})) : z("", !0)
|
|
203
|
+
]),
|
|
204
|
+
_: 1
|
|
205
|
+
}, 8, ["title"])
|
|
206
|
+
]),
|
|
207
|
+
_: 1
|
|
208
|
+
}, 8, ["show"])
|
|
209
|
+
], 64);
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
export {
|
|
214
|
+
ee as default
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=index2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.vue.js","sources":["../../../../../src/views/system/log/exception/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 异常日志 = 只读 SmartTable + 详情抽屉。后端无 exception/{id},分页项已含全字段 → 抽屉直接用行数据。\n// 只记未捕获异常(程序缺陷);业务异常不进本表。堆栈保持危险色 <pre>——堆栈非代码,高亮无意义。\nimport { h, ref } from 'vue'\nimport {\n NButton,\n NDrawer,\n NDrawerContent,\n NDescriptions,\n NDescriptionsItem,\n useMessage,\n} from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { logApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { operatorText } from '#/utils/format'\nimport type { SysExceptionLog } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { confirm } = useConfirm()\nconst tableRef = ref<SmartTableInst<SysExceptionLog>>()\n\nconst columns: SmartTableColumn<SysExceptionLog>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n {\n key: 'exceptionType',\n title: () => t('log.exceptionType'),\n ellipsis: { tooltip: true },\n search: true,\n },\n {\n key: 'message',\n title: () => t('log.exceptionMessage'),\n ellipsis: { tooltip: true },\n render: r => r.message || '—',\n },\n { key: 'httpMethod', title: () => t('log.method'), width: 90 },\n { key: 'path', title: () => t('log.path'), ellipsis: { tooltip: true }, search: true },\n { key: 'operator', title: () => t('log.operator'), width: 120, render: r => operatorText(r) },\n { key: 'ip', title: () => t('log.ip'), render: r => r.ip || '—' },\n {\n key: 'createTime',\n title: () => t('common.createTime'),\n format: 'datetime',\n search: { type: 'daterange' },\n },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 90,\n fixed: 'right',\n hideInSetting: true,\n render: r =>\n h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openDetail(r) },\n () => t('log.detail'),\n ),\n },\n]\n\n// ── 详情抽屉(只读,行数据直填)──\nconst showDetail = ref(false)\nconst detailRow = ref<SysExceptionLog | null>(null)\nfunction openDetail(r: SysExceptionLog) {\n detailRow.value = r\n showDetail.value = true\n}\nfunction clearLogs() {\n confirm({\n type: 'error',\n content: t('log.clearExceptionConfirm'),\n action: () => logApi.exceptionClear(),\n successMsg: t('log.cleared'),\n }).then(ok => {\n if (ok) tableRef.value?.refresh()\n })\n}\n</script>\n\n<template>\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"logApi.exceptionPage\"\n flex-height\n virtual-scroll\n storage-key=\"sys-log-exception\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button\n v-auth=\"'DELETE:/api/v1/sys/log/exception'\"\n type=\"error\"\n secondary\n @click=\"clearLogs\"\n >\n <template #icon><AppIcon icon=\"ph:trash\" :size=\"16\" /></template>\n {{ t('log.clear') }}\n </n-button>\n </template>\n </SmartTable>\n\n <n-drawer v-model:show=\"showDetail\" :width=\"620\" placement=\"right\">\n <n-drawer-content :title=\"t('log.detail')\" closable>\n <n-descriptions v-if=\"detailRow\" label-placement=\"left\" :column=\"1\" bordered size=\"small\">\n <n-descriptions-item :label=\"t('log.exceptionType')\">\n {{ detailRow.exceptionType }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('log.method')\">\n {{ detailRow.httpMethod }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('log.path')\">{{ detailRow.path }}</n-descriptions-item>\n <n-descriptions-item :label=\"t('log.traceId')\">\n {{ detailRow.traceId || '—' }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('log.operator')\">\n {{ operatorText(detailRow) }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('log.ip')\">{{ detailRow.ip || '—' }}</n-descriptions-item>\n <n-descriptions-item :label=\"t('log.userAgent')\">\n {{ detailRow.userAgent || '—' }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('common.createTime')\">\n {{ detailRow.createTime }}\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('log.exceptionMessage')\">\n <pre class=\"exception\">{{ detailRow.message || '—' }}</pre>\n </n-descriptions-item>\n <n-descriptions-item :label=\"t('log.stackTrace')\">\n <pre class=\"exception\">{{ detailRow.stackTrace || '—' }}</pre>\n </n-descriptions-item>\n </n-descriptions>\n </n-drawer-content>\n </n-drawer>\n</template>\n\n<style scoped>\n.exception {\n margin: 0;\n white-space: pre-wrap;\n word-break: break-all;\n font-family: var(--font-mono, ui-monospace, monospace);\n font-size: 12px;\n line-height: 1.5;\n color: var(--color-danger);\n}\n</style>\n"],"names":["useI18n","message","useMessage","confirm","useConfirm","tableRef","ref","columns","operatorText","h","NButton","openDetail","showDetail","detailRow","clearLogs","logApi","ok","_a","_createVNode","_unref","SmartTable","_cache","e","translateError","_createBlock","AppIcon","_createTextVNode","NDrawer","$event","NDrawerContent","NDescriptions","NDescriptionsItem","_toDisplayString","_createElementVNode","_hoisted_1","_hoisted_2"],"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":";"}
|