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
13 KiB
1 lines
13 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: '/register',\n name: 'Register',\n component: () => import('@/views/register/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.roles) return '/login';\n\n // 管理员默认进入订单管理页面\n if (userInfo.roles.includes('ROLE_ADMIN')) {\n return '/admin/orders';\n } else if (userInfo.roles.includes('ROLE_LOGISTICS_ADMIN')) {\n return '/admin/orders';\n } else if (userInfo.roles.includes('ROLE_WAREHOUSE_ADMIN')) {\n return '/admin/orders';\n } else {\n return '/orders/my';\n }\n }\n },\n // 普通用户路由\n {\n path: 'orders/my',\n name: 'MyOrders',\n component: () => import('@/views/order/MyOrders.vue'),\n meta: {\n title: '我的订单',\n roles: ['ROLE_USER', 'ROLE_ADMIN'] // 普通用户和管理员可访问\n }\n },\n // 仓库管理员路由\n {\n path: 'orders/create',\n name: 'CreateOrder',\n component: () => import('@/views/order/OrderCreate.vue'),\n meta: {\n title: '创建订单',\n roles: ['ROLE_LOGISTICS_ADMIN', 'ROLE_ADMIN'] // 添加管理员权限\n }\n },\n // 所有用户可访问\n {\n path: 'orders/detail/:id',\n name: 'OrderDetail',\n component: () => import('@/views/order/OrderDetail.vue'),\n meta: {\n title: '订单详情',\n requiresAuth: true\n }\n }]\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', 'ROLE_WAREHOUSE_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 path: 'locations',\n name: 'LocationManagement',\n component: () => import('@/views/admin/LocationManagement.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 userRoles = store.state.userInfo?.roles || [];\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 if (!userRoles.length) {\n ElMessage.error('用户角色信息缺失');\n store.dispatch('logout');\n next('/login');\n return;\n }\n\n // 检查是否有所需的任一角色\n const hasPermission = to.meta.roles.some(role => userRoles.includes(role));\n if (!hasPermission) {\n ElMessage.error('没有权限访问此页面');\n // 根据角色重定向到对应的首页\n if (userRoles.includes('ROLE_ADMIN') || userRoles.includes('ROLE_LOGISTICS_ADMIN')) {\n next('/admin/orders');\n } else if (userRoles.includes('ROLE_WAREHOUSE_ADMIN')) {} else if (userRoles.includes('ROLE_USER')) {\n next('/orders/my');\n } else {\n next('/login');\n }\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","roles","includes","title","router","history","beforeEach","to","from","next","token","userRoles","length","error","dispatch","hasPermission","some","role"],"sources":["D:/IDEAproject/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: '/register',\r\n name: 'Register',\r\n component: () => import('@/views/register/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.roles) return '/login'\r\n \r\n // 管理员默认进入订单管理页面\r\n if (userInfo.roles.includes('ROLE_ADMIN')) {\r\n return '/admin/orders'\r\n } else if (userInfo.roles.includes('ROLE_LOGISTICS_ADMIN')) {\r\n return '/admin/orders'\r\n } else if (userInfo.roles.includes('ROLE_WAREHOUSE_ADMIN')) {\r\n return '/admin/orders'\r\n } else {\r\n return '/orders/my'\r\n }\r\n }\r\n },\r\n // 普通用户路由\r\n {\r\n path: 'orders/my',\r\n name: 'MyOrders',\r\n component: () => import('@/views/order/MyOrders.vue'),\r\n meta: { \r\n title: '我的订单',\r\n roles: ['ROLE_USER', 'ROLE_ADMIN'] // 普通用户和管理员可访问\r\n }\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_LOGISTICS_ADMIN', 'ROLE_ADMIN'] // 添加管理员权限\r\n }\r\n },\r\n // 所有用户可访问\r\n {\r\n path: 'orders/detail/: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 {\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', 'ROLE_WAREHOUSE_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 path: 'locations',\r\n name: 'LocationManagement',\r\n component: () => import('@/views/admin/LocationManagement.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 userRoles = store.state.userInfo?.roles || []\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 if (!userRoles.length) {\r\n ElMessage.error('用户角色信息缺失')\r\n store.dispatch('logout')\r\n next('/login')\r\n return\r\n }\r\n \r\n // 检查是否有所需的任一角色\r\n const hasPermission = to.meta.roles.some(role => userRoles.includes(role))\r\n if (!hasPermission) {\r\n ElMessage.error('没有权限访问此页面')\r\n // 根据角色重定向到对应的首页\r\n if (userRoles.includes('ROLE_ADMIN') || userRoles.includes('ROLE_LOGISTICS_ADMIN')) {\r\n next('/admin/orders')\r\n } else if (userRoles.includes('ROLE_WAREHOUSE_ADMIN')) {\r\n\r\n } else if (userRoles.includes('ROLE_USER')) {\r\n next('/orders/my')\r\n } else {\r\n next('/login')\r\n }\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":[]}
|