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.3 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, Location } from '@element-plus/icons-vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\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 ElMessageBox.confirm('确定要退出登录吗?', '提示', {\n type: 'warning',\n confirmButtonText: '确定',\n cancelButtonText: '取消'\n });\n\n // 直接清除本地存储的用户信息和 token\n store.dispatch('logout');\n ElMessage.success('已退出登录');\n router.push('/login');\n } catch (error) {\n if (error !== 'cancel') {\n console.error('退出失败:', error);\n }\n }\n };\n const __returned__ = {\n route,\n router,\n store,\n userInfo,\n handleLogout,\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 Location() {\n return Location;\n },\n get ElMessage() {\n return ElMessage;\n },\n get ElMessageBox() {\n return ElMessageBox;\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","Location","ElMessage","ElMessageBox","route","router","store","userInfo","state","handleLogout","confirm","type","confirmButtonText","cancelButtonText","dispatch","success","push","error","console"],"sources":["D:/vueEX/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 \r\n v-if=\"userInfo.roles?.includes('ROLE_USER')\"\r\n index=\"/orders/my\"\r\n >\r\n <el-icon><Document /></el-icon>\r\n <span>我的订单</span>\r\n </el-menu-item>\r\n \r\n <!-- 仓库管理员菜单 -->\r\n <template v-if=\"userInfo.roles?.includes('ROLE_WAREHOUSE_ADMIN')\">\r\n <el-menu-item index=\"/admin/orders\">\r\n <el-icon><List /></el-icon>\r\n <span>订单管理</span>\r\n </el-menu-item>\r\n </template>\r\n\r\n <!-- 物流管理员菜单 -->\r\n <template v-if=\"userInfo.roles?.includes('ROLE_LOGISTICS_ADMIN')\">\r\n <el-menu-item index=\"/orders/create\">\r\n <el-icon><Plus /></el-icon>\r\n <span>创建订单</span>\r\n </el-menu-item>\r\n <el-menu-item index=\"/admin/orders\">\r\n <el-icon><List /></el-icon>\r\n <span>订单管理</span>\r\n </el-menu-item>\r\n </template>\r\n\r\n <!-- 仅管理员菜单 -->\r\n <template v-if=\"userInfo.roles?.includes('ROLE_ADMIN')\">\r\n <el-menu-item index=\"/admin/orders\">\r\n <el-icon><List /></el-icon>\r\n <span>订单管理</span>\r\n </el-menu-item>\r\n <el-menu-item index=\"/admin/users\">\r\n <el-icon><User /></el-icon>\r\n