Kaynağa Gözat

fix: 路由参数调整

Mickey Mike 2 hafta önce
ebeveyn
işleme
56ac38ebe0

+ 4 - 0
apps/web/components.d.ts

@@ -56,6 +56,8 @@ declare module 'vue' {
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
+    ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
+    ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
     ElSlider: typeof import('element-plus/es')['ElSlider']
     ElSplitter: typeof import('element-plus/es')['ElSplitter']
     ElSplitterPanel: typeof import('element-plus/es')['ElSplitterPanel']
@@ -140,6 +142,8 @@ declare global {
   const ElRow: typeof import('element-plus/es')['ElRow']
   const ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
   const ElSelect: typeof import('element-plus/es')['ElSelect']
+  const ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
+  const ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
   const ElSlider: typeof import('element-plus/es')['ElSlider']
   const ElSplitter: typeof import('element-plus/es')['ElSplitter']
   const ElSplitterPanel: typeof import('element-plus/es')['ElSplitterPanel']

+ 1 - 0
apps/web/package.json

@@ -18,6 +18,7 @@
     "lodash-es": "^4.17.21",
     "monaco-editor": "^0.55.1",
     "normalize.css": "^8.0.1",
+    "nprogress": "^0.2.0",
     "pinia": "^3.0.4",
     "uuid": "^13.0.0",
     "vue": "^3.5.24",

+ 21 - 0
apps/web/src/router/index.ts

@@ -1,4 +1,6 @@
 import { createRouter, createWebHistory } from 'vue-router'
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
 
 const MainLayout = () => import('@/layouts/MainLayout.vue')
 const Dashboard = () => import('@/views/Dashboard.vue')
@@ -95,4 +97,23 @@ const router = createRouter({
 	routes
 })
 
+router.beforeEach((to, from, next) => {
+	NProgress.start()
+	if (!('enterpriseCode' in to.query) && 'enterpriseCode' in from.query) {
+		next({
+			...to,
+			query: {
+				...to.query,
+				enterpriseCode: from.query.enterpriseCode
+			}
+		})
+		return
+	}
+	next()
+})
+
+router.afterEach(() => {
+	NProgress.done()
+})
+
 export default router

+ 14 - 0
apps/web/src/style.css

@@ -464,3 +464,17 @@ h6,
 	--shadow-md: 0 4px 16px rgba(255, 255, 255, 0.35);
 	--shadow-lg: 2px 4px 12px rgba(255, 255, 255, 0.4);
 }
+
+/* NProgress 主题色 */
+#nprogress .bar {
+	background: var(--el-color-primary) !important;
+}
+
+#nprogress .peg {
+	box-shadow: 0 0 10px var(--el-color-primary), 0 0 5px var(--el-color-primary) !important;
+}
+
+#nprogress .spinner-icon {
+	border-top-color: var(--el-color-primary) !important;
+	border-left-color: var(--el-color-primary) !important;
+}

+ 8 - 0
pnpm-lock.yaml

@@ -163,6 +163,9 @@ importers:
       normalize.css:
         specifier: ^8.0.1
         version: 8.0.1
+      nprogress:
+        specifier: ^0.2.0
+        version: 0.2.0
       pinia:
         specifier: ^3.0.4
         version: 3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3))
@@ -5594,6 +5597,9 @@ packages:
   normalize.css@8.0.1:
     resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
 
+  nprogress@0.2.0:
+    resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
+
   nth-check@2.1.1:
     resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
 
@@ -14050,6 +14056,8 @@ snapshots:
 
   normalize.css@8.0.1: {}
 
+  nprogress@0.2.0: {}
+
   nth-check@2.1.1:
     dependencies:
       boolbase: 1.0.0