You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 lines
9.6 KiB

{"ast":null,"code":"import { createRouter, createWebHistory } from 'vue-router';\nimport store from '@/store';\nimport Layout from '@/components/layout/index.vue';\nimport { ElMessage } from 'element-plus';\nconst routes = [{\n path: '/login',\n name: 'Login',\n component: () => import('@/views/login/index.vue'),\n meta: {\n requiresAuth: false\n }\n}, {\n path: '/',\n component: Layout,\n meta: {\n requiresAuth: true\n },\n children: [{\n path: '',\n name: 'Home',\n redirect: () => {\n const userInfo = store.state.userInfo;\n if (!userInfo || !userInfo.role) {\n return '/login';\n }\n switch (userInfo.role) {\n case 'ROLE_ADMIN':\n case 'ROLE_LOGISTICS_ADMIN':\n return '/admin/orders';\n case 'ROLE_WAREHOUSE_ADMIN':\n return '/orders/create';\n case 'ROLE_USER':\n return '/orders/my';\n default:\n return '/orders/my';\n }\n }\n }, {\n path: 'orders/my',\n name: 'MyOrders',\n component: () => import('@/views/order/OrderList.vue'),\n meta: {\n title: '我的订单',\n roles: ['ROLE_USER', 'ROLE_WAREHOUSE_ADMIN'] // 普通用户和仓库管理员都可以看自己的订单\n }\n }, {\n path: 'orders/create',\n name: 'CreateOrder',\n component: () => import('@/views/order/OrderCreate.vue'),\n meta: {\n title: '创建订单',\n roles: ['ROLE_WAREHOUSE_ADMIN']\n }\n }, {\n path: 'orders/:id',\n name: 'OrderDetail',\n component: () => import('@/views/order/OrderDetail.vue'),\n meta: {\n title: '订单详情',\n requiresAuth: true // 所有已登录用户可访问\n }\n }]\n}, {\n path: '/admin',\n component: Layout,\n meta: {\n requiresAuth: true\n },\n children: [{\n path: 'orders',\n name: 'OrderManagement',\n component: () => import('@/views/admin/OrderManagement.vue'),\n meta: {\n title: '全部订单',\n roles: ['ROLE_ADMIN', 'ROLE_LOGISTICS_ADMIN']\n }\n }, {\n path: 'users',\n name: 'UserManagement',\n component: () => import('@/views/admin/UserManagement.vue'),\n meta: {\n title: '用户管理',\n roles: ['ROLE_ADMIN']\n }\n }]\n}];\nconst router = createRouter({\n history: createWebHistory(),\n routes\n});\nrouter.beforeEach((to, from, next) => {\n const token = store.state.token;\n const userInfo = store.state.userInfo;\n\n // 不需要登录的页面直接通过\n if (to.meta.requiresAuth === false) {\n next();\n return;\n }\n\n // 没有token跳转登录\n if (!token) {\n next('/login');\n return;\n }\n\n // 已登录要去登录页,跳转首页\n if (to.path === '/login') {\n next('/');\n return;\n }\n\n // 检查路由是否需要特定角色\n if (to.meta.roles) {\n const hasPermission = to.meta.roles.includes(userInfo.role);\n if (!hasPermission) {\n ElMessage.error('没有权限访问此页面');\n next(from.path || '/');\n return;\n }\n }\n next();\n});\nexport default router;","map":{"version":3,"names":["createRouter","createWebHistory","store","Layout","ElMessage","routes","path","name","component","meta","requiresAuth","children","redirect","userInfo","state","role","title","roles","router","history","beforeEach","to","from","next","token","hasPermission","includes","error"],"sources":["D:/language/VScode/Front-end logistics/src/router/index.js"],"sourcesContent":["import { createRouter, createWebHistory } from 'vue-router'\r\nimport store from '@/store'\r\nimport Layout from '@/components/layout/index.vue'\r\nimport { ElMessage } from 'element-plus'\r\n\r\nconst routes = [\r\n {\r\n path: '/login',\r\n name: 'Login',\r\n component: () => import('@/views/login/index.vue'),\r\n meta: { requiresAuth: false }\r\n },\r\n {\r\n path: '/',\r\n component: Layout,\r\n meta: { requiresAuth: true },\r\n children: [\r\n {\r\n path: '',\r\n name: 'Home',\r\n redirect: () => {\r\n const userInfo = store.state.userInfo\r\n if (!userInfo || !userInfo.role) {\r\n return '/login'\r\n }\r\n \r\n switch (userInfo.role) {\r\n case 'ROLE_ADMIN':\r\n case 'ROLE_LOGISTICS_ADMIN':\r\n return '/admin/orders'\r\n case 'ROLE_WAREHOUSE_ADMIN':\r\n return '/orders/create'\r\n case 'ROLE_USER':\r\n return '/orders/my'\r\n default:\r\n return '/orders/my'\r\n }\r\n }\r\n },\r\n {\r\n path: 'orders/my',\r\n name: 'MyOrders',\r\n component: () => import('@/views/order/OrderList.vue'),\r\n meta: { \r\n title: '我的订单',\r\n roles: ['ROLE_USER', 'ROLE_WAREHOUSE_ADMIN'] // 普通用户和仓库管理员都可以看自己的订单\r\n }\r\n },\r\n {\r\n path: 'orders/create',\r\n name: 'CreateOrder',\r\n component: () => import('@/views/order/OrderCreate.vue'),\r\n meta: { \r\n title: '创建订单',\r\n roles: ['ROLE_WAREHOUSE_ADMIN']\r\n }\r\n },\r\n {\r\n path: 'orders/:id',\r\n name: 'OrderDetail',\r\n component: () => import('@/views/order/OrderDetail.vue'),\r\n meta: { \r\n title: '订单详情',\r\n requiresAuth: true // 所有已登录用户可访问\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/admin',\r\n component: Layout,\r\n meta: { requiresAuth: true },\r\n children: [\r\n {\r\n path: 'orders',\r\n name: 'OrderManagement',\r\n component: () => import('@/views/admin/OrderManagement.vue'),\r\n meta: { \r\n title: '全部订单',\r\n roles: ['ROLE_ADMIN', 'ROLE_LOGISTICS_ADMIN']\r\n }\r\n },\r\n {\r\n path: 'users',\r\n name: 'UserManagement',\r\n component: () => import('@/views/admin/UserManagement.vue'),\r\n meta: { \r\n title: '用户管理',\r\n roles: ['ROLE_ADMIN']\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n})\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n const token = store.state.token\r\n const userInfo = store.state.userInfo\r\n \r\n // 不需要登录的页面直接通过\r\n if (to.meta.requiresAuth === false) {\r\n next()\r\n return\r\n }\r\n \r\n // 没有token跳转登录\r\n if (!token) {\r\n next('/login')\r\n return\r\n }\r\n \r\n // 已登录要去登录页,跳转首页\r\n if (to.path === '/login') {\r\n next('/')\r\n return\r\n }\r\n \r\n // 检查路由是否需要特定角色\r\n if (to.meta.roles) {\r\n const hasPermission = to.meta.roles.includes(userInfo.role)\r\n if (!hasPermission) {\r\n ElMessage.error('没有权限访问此页面')\r\n next(from.path || '/')\r\n return\r\n }\r\n }\r\n \r\n next()\r\n})\r\n\r\nexport default router "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}