From f220d4c75abd2b52b70670925f4dbe010a065cc3 Mon Sep 17 00:00:00 2001
From: yedf2 <120050102@qq.com>
Date: Tue, 24 May 2022 21:00:37 +0800
Subject: [PATCH] errors handled
---
admin/src/components.d.ts | 1 +
admin/src/layout/components/content.vue | 24 +++++++++++++++++++++++-
admin/src/main.ts | 20 ++++++++++++++++++++
admin/src/store/modules/layout.ts | 4 ++++
admin/src/type/store/layout.ts | 1 +
admin/src/utils/util.ts | 8 ++++++--
6 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/admin/src/components.d.ts b/admin/src/components.d.ts
index acd11d1..eb0b33b 100644
--- a/admin/src/components.d.ts
+++ b/admin/src/components.d.ts
@@ -5,6 +5,7 @@ import '@vue/runtime-core'
declare module '@vue/runtime-core' {
export interface GlobalComponents {
+ AAlert: typeof import('ant-design-vue/es')['Alert']
ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb']
ABreadcrumbItem: typeof import('ant-design-vue/es')['BreadcrumbItem']
AButton: typeof import('ant-design-vue/es')['Button']
diff --git a/admin/src/layout/components/content.vue b/admin/src/layout/components/content.vue
index 0f8ba74..3e19bdb 100644
--- a/admin/src/layout/components/content.vue
+++ b/admin/src/layout/components/content.vue
@@ -2,7 +2,19 @@
-
+
@@ -10,8 +22,18 @@
diff --git a/admin/src/main.ts b/admin/src/main.ts
index 34a4d4f..26dffc7 100644
--- a/admin/src/main.ts
+++ b/admin/src/main.ts
@@ -2,6 +2,7 @@ import { createApp } from 'vue'
import App from './App.vue'
import router from '/@/router/index'
import { pinia } from '/@/store'
+import { useLayoutStore } from '/@/store/modules/layout'
import '/@/permission'
import '/@/assets/css/index.css'
@@ -11,3 +12,22 @@ const app = createApp(App)
app.use(router)
app.use(pinia)
app.mount('#app')
+
+
+window.onunhandledrejection = (ev: PromiseRejectionEvent) => {
+ showAlert(ev.reason.stack || ev.reason.message)
+
+}
+window.onerror = err => {
+ if (typeof err === "string") {
+ return showAlert(err)
+ }
+ showAlert(JSON.stringify(err))
+}
+
+function showAlert(msg: string) {
+ let layout = useLayoutStore()
+ if (!layout.globalError) {
+ layout.setGlobalError(msg)
+ }
+}
\ No newline at end of file
diff --git a/admin/src/store/modules/layout.ts b/admin/src/store/modules/layout.ts
index f57753b..0e2d8a5 100644
--- a/admin/src/store/modules/layout.ts
+++ b/admin/src/store/modules/layout.ts
@@ -13,6 +13,7 @@ export const useLayoutStore = defineStore({
isLoading: false
},
dtmVersion: "",
+ globalError: "",
}),
getters: {
getMenubar(): IMenubar {
@@ -26,6 +27,9 @@ export const useLayoutStore = defineStore({
setRoutes(data: Array): void {
this.menubar.menuList = data
},
+ setGlobalError(err: string) {
+ this.globalError = err
+ },
concatAllowRoutes(): void {
allowRouter.reverse().forEach(v => this.menubar.menuList.unshift(v))
},
diff --git a/admin/src/type/store/layout.ts b/admin/src/type/store/layout.ts
index bdd7980..e2f7ea7 100644
--- a/admin/src/type/store/layout.ts
+++ b/admin/src/type/store/layout.ts
@@ -6,6 +6,7 @@ export interface ILayout {
menubar: IMenubar
status: IStatus
dtmVersion: string
+ globalError: string
}
export interface IStatus {
diff --git a/admin/src/utils/util.ts b/admin/src/utils/util.ts
index 43dc575..1f2b118 100644
--- a/admin/src/utils/util.ts
+++ b/admin/src/utils/util.ts
@@ -1,9 +1,9 @@
import { useRoute } from 'vue-router';
import { IMenubarList } from '../type/store/layout';
-export const findCurrentMenubar = (menuList: IMenubarList[], root?:boolean) => {
+export const findCurrentMenubar = (menuList: IMenubarList[], root?: boolean) => {
const route = useRoute()
- let arr:IMenubarList[] | IMenubarList = []
+ let arr: IMenubarList[] | IMenubarList = []
for (let i = 0; i < menuList.length; i++) {
const v = menuList[i];
const usePath = v.meta.activeMenu || v.redirect || v.path;
@@ -21,3 +21,7 @@ export const findCurrentMenubar = (menuList: IMenubarList[], root?:boolean) => {
return arr
}
+
+export const sleep = async (ms: number) => {
+ return new Promise(resolve => setTimeout(resolve, ms))
+}
\ No newline at end of file