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
14 KiB
1 lines
14 KiB
{"ast":null,"code":"import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, createBlock as _createBlock, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"order-detail\"\n};\nconst _hoisted_2 = {\n class: \"card-header\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"operation-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_withDirectives((_openBlock(), _createBlock(_component_el_card, null, {\n header: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_cache[2] || (_cache[2] = _createElementVNode(\"span\", null, \"订单详情\", -1 /* HOISTED */)), _createVNode(_component_el_button, {\n onClick: _cache[0] || (_cache[0] = $event => $setup.router.back())\n }, {\n default: _withCtx(() => _cache[1] || (_cache[1] = [_createTextVNode(\"返回\")])),\n _: 1 /* STABLE */\n })])]),\n default: _withCtx(() => [_createVNode(_component_el_descriptions, {\n column: 2,\n border: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: \"订单编号\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.orderNo), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"订单状态\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n type: $setup.getStatusType($setup.order.status)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.getStatusText($setup.order.status)), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"type\"])]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"商品名称\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.goodsName), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"商品数量\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.goodsQuantity), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"起始地\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.startLocation), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"目的地\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.endLocation), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"运费\"\n }, {\n default: _withCtx(() => [_createTextVNode(\"¥\" + _toDisplayString($setup.order.transportFee), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"创建人\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.createBy || '-'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"更新人\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.updateBy || '-'), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"创建时间\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.createTime), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n }), _createVNode(_component_el_descriptions_item, {\n label: \"更新时间\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($setup.order.updateTime), 1 /* TEXT */)]),\n _: 1 /* STABLE */\n })]),\n _: 1 /* STABLE */\n }), $setup.order.status === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $setup.handleCancel,\n loading: $setup.cancelLoading\n }, {\n default: _withCtx(() => _cache[3] || (_cache[3] = [_createTextVNode(\" 取消订单 \")])),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"loading\"])])) : _createCommentVNode(\"v-if\", true)]),\n _: 1 /* STABLE */\n })), [[_directive_loading, $setup.loading]])]);\n}","map":{"version":3,"names":["class","key","_createElementBlock","_hoisted_1","_createBlock","_component_el_card","header","_withCtx","_createElementVNode","_hoisted_2","_createVNode","_component_el_button","onClick","_cache","$event","$setup","router","back","default","_createTextVNode","_","_component_el_descriptions","column","border","_component_el_descriptions_item","label","_toDisplayString","order","orderNo","_component_el_tag","type","getStatusType","status","getStatusText","goodsName","goodsQuantity","startLocation","endLocation","transportFee","createBy","updateBy","createTime","updateTime","_hoisted_3","handleCancel","loading","cancelLoading","_createCommentVNode"],"sources":["D:\\IDEAproject\\frontend\\Front-end logistics\\src\\views\\order\\OrderDetail.vue"],"sourcesContent":["<template>\r\n <div class=\"order-detail\">\r\n <el-card v-loading=\"loading\">\r\n <template #header>\r\n <div class=\"card-header\">\r\n <span>订单详情</span>\r\n <el-button @click=\"router.back()\">返回</el-button>\r\n </div>\r\n </template>\r\n \r\n <el-descriptions :column=\"2\" border>\r\n <el-descriptions-item label=\"订单编号\">{{ order.orderNo }}</el-descriptions-item>\r\n <el-descriptions-item label=\"订单状态\">\r\n <el-tag :type=\"getStatusType(order.status)\">\r\n {{ getStatusText(order.status) }}\r\n </el-tag>\r\n </el-descriptions-item>\r\n <el-descriptions-item label=\"商品名称\">{{ order.goodsName }}</el-descriptions-item>\r\n <el-descriptions-item label=\"商品数量\">{{ order.goodsQuantity }}</el-descriptions-item>\r\n <el-descriptions-item label=\"起始地\">{{ order.startLocation }}</el-descriptions-item>\r\n <el-descriptions-item label=\"目的地\">{{ order.endLocation }}</el-descriptions-item>\r\n <el-descriptions-item label=\"运费\">¥{{ order.transportFee }}</el-descriptions-item>\r\n <el-descriptions-item label=\"创建人\">{{ order.createBy || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"更新人\">{{ order.updateBy || '-' }}</el-descriptions-item>\r\n <el-descriptions-item label=\"创建时间\">{{ order.createTime }}</el-descriptions-item>\r\n <el-descriptions-item label=\"更新时间\">{{ order.updateTime }}</el-descriptions-item>\r\n </el-descriptions>\r\n \r\n <div class=\"operation-buttons\" v-if=\"order.status === 0\">\r\n <el-button type=\"danger\" @click=\"handleCancel\" :loading=\"cancelLoading\">\r\n 取消订单\r\n </el-button>\r\n </div>\r\n </el-card>\r\n </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, onMounted } from 'vue'\r\nimport { useRoute, useRouter } from 'vue-router'\r\nimport { ElMessage, ElMessageBox } from 'element-plus'\r\nimport { getOrderDetail, cancelOrder } from '@/api/order'\r\n\r\nconst route = useRoute()\r\nconst router = useRouter()\r\nconst loading = ref(false)\r\nconst cancelLoading = ref(false)\r\nconst order = ref({})\r\n\r\nconst getStatusText = (status) => {\r\n const statusMap = {\r\n 0: '待处理',\r\n 1: '待揽收',\r\n 2: '运输中',\r\n 3: '已送达',\r\n 4: '已取消'\r\n }\r\n return statusMap[status] || '未知状态'\r\n}\r\n\r\nconst getStatusType = (status) => {\r\n const typeMap = {\r\n 0: '',\r\n 1: 'info',\r\n 2: 'warning',\r\n 3: 'success',\r\n 4: 'danger'\r\n }\r\n return typeMap[status] || ''\r\n}\r\n\r\nconst loadOrderDetail = async () => {\r\n loading.value = true\r\n try {\r\n const res = await getOrderDetail(route.params.id)\r\n if (res.code === 200) {\r\n order.value = res.data\r\n } else {\r\n throw new Error(res.message || '获取订单详情失败')\r\n }\r\n } catch (error) {\r\n console.error('加载订单详情失败:', error)\r\n ElMessage.error(error.message || '加载订单详情失败,请重试')\r\n router.back()\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\nconst handleCancel = async () => {\r\n try {\r\n await ElMessageBox.confirm('确定要取消该订单吗?', '提示', {\r\n type: 'warning',\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消'\r\n })\r\n \r\n cancelLoading.value = true\r\n const res = await cancelOrder(order.value.id)\r\n if (res.code === 200) {\r\n ElMessage.success('订单已取消')\r\n router.back()\r\n } else {\r\n throw new Error(res.message || '取消订单失败')\r\n }\r\n } catch (error) {\r\n if (error !== 'cancel') {\r\n console.error('取消订单失败:', error)\r\n if (error.response?.status === 401) {\r\n ElMessage.error('登录已过期,请重新登录')\r\n router.push('/login')\r\n } else if (error.response?.status === 403) {\r\n ElMessage.error('您没有权限执行此操作')\r\n } else {\r\n ElMessage.error(error.message || '取消订单失败,请重试')\r\n }\r\n }\r\n } finally {\r\n cancelLoading.value = false\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n loadOrderDetail()\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.order-detail {\r\n max-width: 1000px;\r\n margin: 0 auto;\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.operation-buttons {\r\n margin-top: 20px;\r\n display: flex;\r\n gap: 10px;\r\n justify-content: flex-end;\r\n}\r\n</style> "],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|