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.

0 lines
7.7 KiB

1 month ago
  1. {"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 redirect: '/orders/my'\n }, {\n path: 'orders/my',\n name: 'MyOrders',\n component: () => import('@/views/order/OrderList.vue'),\n meta: {\n title: '我的订单'\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 roles: ['ROLE_ADMIN'] // 只有管理员可以访问\n },\n children: [{\n path: 'users',\n name: 'UserManagement',\n component: () => import('@/views/admin/UserManagement.vue'),\n meta: {\n title: '用户管理'\n }\n }, {\n path: 'orders',\n name: 'OrderManagement',\n component: () => import('@/views/admin/OrderManagement.vue'),\n meta: {\n requiresAuth: true,\n roles: ['ROLE_ADMIN', 'ROLE_LOGISTICS_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 userRoles = store.state.userInfo.roles || [];\n if (to.meta.requiresAuth !== false && !token) {\n next('/login');\n return;\n }\n if (to.path === '/login' && token) {\n next('/');\n return;\n }\n\n // 检查路由是否需要特定角色\n if (to.meta.roles && !to.meta.roles.some(role => userRoles.includes(role))) {\n ElMessage.error('没有权限访问此页面');\n next('/');\n return;\n }\n next();\n});\nexport default router;","map":{"version":3,"names":["createRouter","createWebHistory","store","Layout","ElMessage","routes","path","name","component","meta","requiresAuth","children","redirect","title","roles","router","history","beforeEach","to","from","next","token","state","userRoles","userInfo","some","role","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 redirect: '/orders/my'\r\n },\r\n {\r\n path: 'orders/my',\r\n name: 'MyOrders',\r\n component: () => import('@/views/order/OrderList.vue'),\r\n meta: { title: '' }\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 //