oil-station/fuintAdmin/src/views/order/detail.vue
2023-10-09 11:12:49 +08:00

305 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<div class="main-panel">
<div class="panel">
<div class="title">基础信息</div>
<div class="content">
<el-row class="row">
<el-col :span="8">
<span class="head">订单号</span>
<span class="control-label">{{ orderInfo.orderSn }}</span>
</el-col>
<el-col :span="8">
<span class="head">总金额</span>
<span class="control-label">{{ orderInfo.amount }}</span>
</el-col>
<el-col :span="8">
<span class="head">订单状态</span>
<span class="control-label normal-status">{{ orderInfo.statusText }}</span>
</el-col>
</el-row>
<el-row class="row">
<el-col :span="8">
<span class="head">订单类型</span>
<span class="control-label">{{ orderInfo.typeName }}</span>
</el-col>
<el-col :span="8">
<span class="head">订单时间</span>
<span class="control-label">{{ orderInfo.createTime }}</span>
</el-col>
<el-col :span="8">
<span class="head">备注信息</span>
<span class="control-text">{{ orderInfo.remark ? orderInfo.remark : '暂无'}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="panel">
<div class="title">支付信息</div>
<div class="content">
<el-row class="row">
<el-col :span="8">
<span class="head">支付金额</span>
<span class="control-label">{{ orderInfo.payAmount.toFixed(2) }}</span>
</el-col>
<el-col :span="8">
<span class="head">支付状态</span>
<span class="control-label payed-status" v-if="orderInfo.payStatus == 'B'">{{ getName(payStatusList, orderInfo.payStatus) }}</span>
<span class="control-label normal-status" v-else>{{ getName(payStatusList, orderInfo.payStatus) }}</span>
</el-col>
<el-col :span="8">
<span class="head">减免金额:</span>
<span class="control-label">¥{{ orderInfo.discount.toFixed(2) }}</span>
</el-col>
</el-row>
<el-row class="row">
<el-col :span="8">
<span class="head">支付方式:</span>
<span class="control-label">{{ getName(payTypeList, orderInfo.payType) }}</span>
</el-col>
<el-col :span="8">
<span class="head">支付时间:</span>
<span class="control-label">{{ orderInfo.payTime ? orderInfo.payTime : '--' }}</span>
</el-col>
<el-col :span="8">
<span class="head">使用卡券:</span>
<span class="control-label">{{ orderInfo.couponInfo ? '¥' + orderInfo.couponInfo.amount + '' + orderInfo.couponInfo.name + '' : '--' }}</span>
</el-col>
</el-row>
<el-row class="row">
<el-col :span="8">
<span class="head">使用积分:</span>
<span class="control-label">{{ orderInfo.usePoint ? orderInfo.usePoint : 0 }}</span>
</el-col>
<el-col :span="8">
<span class="head">积分金额:</span>
<span class="control-label">¥{{ orderInfo.pointAmount.toFixed(2) }}</span>
</el-col>
<el-col :span="8">
<span class="head">配送费用:</span>
<span class="control-label">¥{{ orderInfo.deliveryFee.toFixed(2) }}</span>
</el-col>
</el-row>
</div>
</div>
<div class="panel">
<div class="title">会员信息</div>
<div class="content">
<el-row class="row">
<el-col :span="8">
<span class="head">会员ID</span>
<span class="control-label" v-if="orderInfo.userInfo && orderInfo.isVisitor == 'N'">{{ orderInfo.userInfo.id }}</span>
<span class="control-label" v-else>游客</span>
</el-col>
<el-col :span="8">
<span class="head">会员名称:</span>
<span class="control-label" v-if="orderInfo.userInfo && orderInfo.isVisitor == 'N'">{{ orderInfo.userInfo.name }}</span>
<span class="control-label" v-else>游客<span v-if="orderInfo.userInfo">(管理员{{ orderInfo.userInfo.name }}代下单)</span></span>
</el-col>
<el-col :span="8">
<span class="head">手机号:</span>
<span class="control-label">{{ orderInfo.userInfo.mobile ? orderInfo.userInfo.mobile : '无' }}</span>
</el-col>
</el-row>
</div>
</div>
<div class="panel">
<div class="title">商品信息</div>
<div class="content">
<el-table ref="tables" v-loading="loading" :data="orderInfo.goods">
<el-table-column label="商品ID" prop="id" width="66"/>
<el-table-column label="图片" align="center" prop="name">
<template slot-scope="scope">
<img class="goods-logo" :src="scope.row.image"/>
</template>
</el-table-column>
<el-table-column label="名称" align="left" prop="name">
<template slot-scope="scope">
<span class="goods-name">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="规格" align="center">
<template slot-scope="scope">
<span v-if="scope.row.specList">
<span class="spec-item" v-for="spec in scope.row.specList">{{ spec.specValue }}</span>
</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column label="价格" align="center" prop="price" />
<el-table-column label="优惠金额" align="center" prop="discount" />
<el-table-column label="数量" align="center" prop="num" />
</el-table>
</div>
</div>
<div class="panel" v-if="orderInfo.type=='goods'">
<div class="title">配送信息</div>
<div class="content">
<el-row class="row">
<el-col :span="8">
<span class="head">配送方式:</span>
<span class="control-label" v-if="orderInfo.orderMode == 'oneself'">门店自提</span>
<span class="control-label" v-else>物流配送</span>
</el-col>
<el-col :span="16" v-if="orderInfo.orderMode == 'oneself'">
<span class="head">自提地址:</span>
<span class="control-label">{{orderInfo.storeInfo.name}} {{orderInfo.storeInfo.phone}} {{orderInfo.storeInfo.address}}</span>
</el-col>
<el-col :span="8" v-if="orderInfo.orderMode == 'express' && orderInfo.address">
<span class="head">收货人:</span>
<span class="control-label">{{ orderInfo.address.name ? orderInfo.address.name : '--' }}</span>
</el-col>
<el-col :span="8" v-if="orderInfo.orderMode == 'express' && orderInfo.address">
<span class="head">联系电话:</span>
<span class="control-label">{{ orderInfo.address.mobile ? orderInfo.address.mobile : '无' }}</span>
</el-col>
</el-row>
<el-row class="row">
<el-col :span="24" v-if="orderInfo.orderMode == 'express' && orderInfo.address">
<span class="head">详细地址:</span>
<span class="control-label">{{orderInfo.address.provinceName}}{{orderInfo.address.cityName}}{{orderInfo.address.provinceName}}{{orderInfo.address.regionName}}{{orderInfo.address.detail}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="panel" v-if="orderInfo.expressInfo">
<div class="title">物流信息</div>
<div class="content">
<el-row class="row">
<el-col :span="8">
<span class="head">物流公司:</span>
<span class="control-label" v-if="orderInfo.expressInfo.expressCompany">{{ orderInfo.expressInfo.expressCompany }}</span>
<span class="control-label" v-else>--</span>
</el-col>
<el-col :span="8">
<span class="head">物流单号:</span>
<span class="control-label" v-if="orderInfo.expressInfo.expressNo">{{ orderInfo.expressInfo.expressNo }}</span>
<span class="control-label" v-else>--</span>
</el-col>
<el-col :span="8">
<span class="head">发货时间</span>
<span class="control-label">{{orderInfo.expressInfo.expressTime}}</span>
</el-col>
</el-row>
</div>
</div>
</div>
</div>
</template>
<script>
import { getOrderInfo } from "@/api/order";
export default {
name: "OrderDetail",
data() {
return {
// 遮罩层
loading: false,
payTypeList: [],
payStatusList: [],
orderInfo: { payAmount: 0, discount: 0, pointAmount: 0, userInfo: {} }
};
},
created() {
const orderId = this.$route.query.orderId ? this.$route.query.orderId : ''
this.getOrderInfo(orderId)
},
activated() {
const orderId = this.$route.query.orderId ? this.$route.query.orderId : ''
this.getOrderInfo(orderId)
},
methods: {
// 查询配置
getOrderInfo(orderId) {
this.loading = true;
getOrderInfo(orderId).then(response => {
this.orderInfo = response.data.orderInfo;
this.payTypeList = response.data.payTypeList
this.payStatusList = response.data.payStatusList
this.loading = false;
}
);
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss">
.main-panel {
margin: 0px;
padding: 5px;
.panel {
border: solid 1px #cccccc;
min-height: 100px;
border-radius: 2px;
margin-top: 10px;
.title {
font-weight: bold;
margin-top: 10px;
margin-left: 5px;
padding-left: 5px;
color: #333333;
border-left: 5px solid rgb(254,106,0);
}
.content {
padding: 20px;
.goods-logo {
width: 45px;
height: 45px;
border: solid 1px #cccccc;
}
.spec-item {
color: #666666;
background: #ffffff;
border: #666666 solid 1px;
border-radius: 20px;
padding: 2px 8px 2px 8px;
margin-right: 5px;
}
.row {
min-height: 40px;
verticle-align: middle;
display: flex;
line-height: 40px;
.payed-status {
color: #52c41a;
background: #f6ffed;
border: #b7eb8f solid 1px;
border-radius: 20px;
padding: 5px 8px 2px 8px;
font-size: 90%;
}
.normal-status {
color: #666666;
background: #ffffff;
border: #666666 solid 1px;
border-radius: 20px;
padding: 5px 8px 2px 8px;
font-size: 90%;
}
}
.head {
color: rgb(164,164,164);
min-width: 120px;
text-align: right;
display: block;
float: left;
}
.control-text {
display: block;
background: #f5f5f5;
border-radius: 10px;
margin-left: 120px;
margin-top: 5px;
line-height: 22px;
padding: 5px 10px 5px 10px;
}
}
}
}
</style>