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
9.1 KiB

1 month ago
  1. {"ast":null,"code":"import { computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useStore } from 'vuex';\nimport { Document, Plus, List, User } from '@element-plus/icons-vue';\nimport { ElMessage } from 'element-plus';\nimport { logout } from '@/api/auth';\nexport default {\n __name: 'index',\n setup(__props, {\n expose: __expose\n }) {\n __expose();\n const route = useRoute();\n const router = useRouter();\n const store = useStore();\n const userInfo = computed(() => store.state.userInfo);\n const handleLogout = async () => {\n try {\n await logout();\n store.dispatch('logout');\n ElMessage.success('退出成功');\n router.push('/login');\n } catch (error) {\n console.error('退出失败:', error);\n store.dispatch('logout');\n router.push('/login');\n }\n };\n\n // 根据用户角色计算菜单项\n const menuItems = computed(() => {\n const role = store.state.userInfo.role;\n const items = [{\n key: 'orders',\n label: '我的订单',\n path: '/orders/my',\n icon: 'el-icon-document'\n }];\n\n // 仓库管理员可以创建订单\n if (role === 'ROLE_WAREHOUSE_ADMIN') {\n items.push({\n key: 'createOrder',\n label: '创建订单',\n path: '/orders/create',\n icon: 'el-icon-plus'\n });\n }\n\n // 管理员和物流管理员可以查看所有订单\n if (['ROLE_ADMIN', 'ROLE_LOGISTICS_ADMIN'].includes(role)) {\n items.push({\n key: 'allOrders',\n label: '全部订单',\n path: '/admin/orders',\n icon: 'el-icon-tickets'\n });\n }\n\n // 只有超级管理员可以管理用户\n if (role === 'ROLE_ADMIN') {\n items.push({\n key: 'users',\n label: '用户管理',\n path: '/admin/users',\n icon: 'el-icon-user'\n });\n }\n return items;\n });\n const __returned__ = {\n route,\n router,\n store,\n userInfo,\n handleLogout,\n menuItems,\n computed,\n get useRoute() {\n return useRoute;\n },\n get useRouter() {\n return useRouter;\n },\n get useStore() {\n return useStore;\n },\n get Document() {\n return Document;\n },\n get Plus() {\n return Plus;\n },\n get List() {\n return List;\n },\n get User() {\n return User;\n },\n get ElMessage() {\n return ElMessage;\n },\n get logout() {\n return logout;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n};","map":{"version":3,"names":["computed","useRoute","useRouter","useStore","Document","Plus","List","User","ElMessage","logout","route","router","store","userInfo","state","handleLogout","dispatch","success","push","error","console","menuItems","role","items","key","label","path","icon","includes"],"sources":["D:/language/VScode/Front-end logistics/src/components/layout/index.vue"],"sourcesContent":["<template>\r\n <el-container class=\"layout-container\">\r\n <el-aside width=\"200px\">\r\n <div class=\"logo\">物流管理系统</div>\r\n <el-menu\r\n :router=\"true\"\r\n :default-active=\"route.path\"\r\n >\r\n <!-- 管理员和物流管理员看到\"全部订单\",其他用户看到\"我的订单\" -->\r\n <el-menu-item \r\n :index=\"['ROLE_ADMIN', 'ROLE_LOGISTICS_ADMIN'].includes(userInfo.role) ? '/admin/orders' : '/orders/my'\"\r\n >\r\n <el-icon><Document /></el-icon>\r\n <span>{{ ['ROLE_ADMIN', 'ROLE_LOGISTICS_ADMIN'].includes(userInfo.role) ? '全部订单' : '我的订单' }}</span>\r\n </el-menu-item>\r\n \r\n <!-- 仓库管理员可见 -->\r\n <el-menu-item \r\n v-if=\"userInfo.role === 'R