{"ast":null,"code":"import { ref, reactive, computed } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport { getAllOrders, updateOrderStatus } from '@/api/order';\nimport { store } from '@/store';\nexport default {\n __name: 'OrderManagement',\n setup(__props, {\n expose: __expose\n }) {\n __expose();\n const router = useRouter();\n const loading = ref(false);\n const updating = ref(false);\n const orderList = ref([]);\n const total = ref(0);\n const currentPage = ref(1);\n const pageSize = ref(10);\n const statusDialogVisible = ref(false);\n const currentOrder = ref(null);\n const searchForm = reactive({\n customerId: ''\n });\n const statusForm = reactive({\n status: ''\n });\n\n // 状态选项\n const statusOptions = computed(() => {\n const userRoles = store.state.userInfo?.roles || [];\n const currentStatus = currentOrder.value?.status;\n\n // 基础状态映射\n const baseOptions = {\n 0: '待处理',\n 1: '待发货',\n 2: '已发货',\n 3: '运输中',\n 4: '已送达',\n 5: '已完成',\n 6: '已取消'\n };\n\n // 系统管理员可以修改为任意状态\n if (userRoles.includes('ROLE_ADMIN')) {\n return baseOptions;\n }\n\n // 仓库管理员只能将订单从\"待处理\"改为\"待发货\"\n if (userRoles.includes('ROLE_WAREHOUSE_ADMIN')) {\n return currentStatus === 0 ? {\n 1: '待发货'\n } : {};\n }\n\n // 物流管理员的状态流转\n if (userRoles.includes('ROLE_LOGISTICS_ADMIN')) {\n switch (currentStatus) {\n case 1:\n return {\n 2: '已发货'\n };\n case 2:\n return {\n 3: '运输中'\n };\n case 3:\n return {\n 4: '已送达'\n };\n case 4:\n return {\n 5: '已完成'\n };\n default:\n return {};\n }\n }\n return {};\n });\n\n // 判断是否可以修改状态\n const canUpdateStatus = status => {\n const userRoles = store.state.userInfo?.roles || [];\n\n // 系统管理员可以修改任意状态\n if (userRoles.includes('ROLE_ADMIN')) {\n return status !== 5 && status !== 6; // 已完成和已取消的订单不能修改\n }\n\n // 仓库管理员只能修改待处理的订单\n if (userRoles.includes('ROLE_WAREHOUSE_ADMIN')) {\n return status === 0;\n }\n\n // 物流管理员可以修改的状态\n if (userRoles.includes('ROLE_LOGISTICS_ADMIN')) {\n return status >= 1 && status <= 4; // 可以修改待发货到已送达的订单\n }\n return false;\n };\n\n // 获取状态文本\n const getStatusText = status => {\n const statusMap = {\n 0: '待处理',\n 1: '待发货',\n 2: '已发货',\n 3: '运输中',\n 4: '已送达',\n 5: '已完成',\n 6: '已取消'\n };\n return statusMap[status] || '未知状态';\n };\n\n // 加载订单列表\n const loadOrders = async () => {\n loading.value = true;\n try {\n const res = await getAllOrders({\n pageNum: currentPage.value,\n pageSize: pageSize.value,\n customerId: searchForm.customerId || undefined\n });\n if (res.code === 200) {\n orderList.value = res.data.records;\n total.value = res.data.total;\n currentPage.value = res.data.current;\n pageSize.value = res.data.size;\n }\n } catch (error) {\n console.error('加载订单失败:', error);\n ElMessage.error(error.message || '加载订单失败');\n } finally {\n loading.value = false;\n }\n };\n\n // 查看订单详情\n const viewDetail = orderId => {\n router.push(`/orders/detail/${orderId}`);\n };\n\n // 处理修改状态\n const handleUpdateStatus = order => {\n // 已完成或已取消的订单不能修改状态\n if (!canUpdateStatus(order.status)) {\n return;\n }\n currentOrder.value = order;\n statusForm.status = order.status;\n statusDialogVisible.value = true;\n };\n\n // 确认修改状态\n const confirmUpdateStatus = async () => {\n if (!currentOrder.value || statusForm.status === currentOrder.value.status) {\n statusDialogVisible.value = false;\n return;\n }\n try {\n updating.value = true;\n const res = await updateOrderStatus(currentOrder.value.id, statusForm.status);\n if (res.code === 200) {\n ElMessage.success('订单状态修改成功');\n statusDialogVisible.value = false;\n loadOrders(); // 重新加载订单列表\n }\n } catch (error) {\n console.error('修改订单状态失败:', error);\n if (error.response?.data?.message) {\n ElMessage.error(error.response.data.message);\n } else {\n ElMessage.error(error.message || '修改订单状态失败');\n }\n } finally {\n updating.value = false;\n }\n };\n\n // 处理搜索\n const handleSearch = () => {\n currentPage.value = 1;\n loadOrders();\n };\n\n // 处理分页\n const handleSizeChange = val => {\n pageSize.value = val;\n loadOrders();\n };\n const handleCurrentChange = val => {\n currentPage.value = val;\n loadOrders();\n };\n\n // 初始加载\n loadOrders();\n const __returned__ = {\n router,\n loading,\n updating,\n orderList,\n total,\n currentPage,\n pageSize,\n statusDialogVisible,\n currentOrder,\n searchForm,\n statusForm,\n statusOptions,\n canUpdateStatus,\n getStatusText,\n loadOrders,\n viewDetail,\n handleUpdateStatus,\n confirmUpdateStatus,\n handleSearch,\n handleSizeChange,\n handleCurrentChange,\n ref,\n reactive,\n computed,\n get useRouter() {\n return useRouter;\n },\n get ElMessage() {\n return ElMessage;\n },\n get ElMessageBox() {\n return ElMessageBox;\n },\n get getAllOrders() {\n return getAllOrders;\n },\n get updateOrderStatus() {\n return updateOrderStatus;\n },\n get store() {\n return store;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n};","map":{"version":3,"names":["ref","reactive","computed","useRouter","ElMessage","ElMessageBox","getAllOrders","updateOrderStatus","store","router","loading","updating","orderList","total","currentPage","pageSize","statusDialogVisible","currentOrder","searchForm","customerId","statusForm","status","statusOptions","userRoles","state","userInfo","roles","currentStatus","value","baseOptions","includes","canUpdateStatus","getStatusText","statusMap","loadOrders","res","pageNum","undefined","code","data","records","current","size","error","console","message","viewDetail","orderId","push","handleUpdateStatus","order","confirmUpdateStatus","id","success","response","handleSearch","handleSizeChange","val","handleCurrentChange"],"sources":["D:/language/VScode/Front-end logistics/src/views/admin/OrderManagement.vue"],"sourcesContent":["\n\n\n\n "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}