web-base-pc/src/components/selfService/selfCancleOrder.vue

578 lines
12 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.

<!--
* @Descripttion:
* @version:
* @Author: kBank
* @Date: 2023-03-04 09:57:47
-->
<template>
<div class="contain orderCenter">
<!-- table -->
<div class="table">
<div class="table_tit">
<div class="t_btm_l">
<div class="tab_i1">{{ "订单详情" }}</div>
</div>
<div class="t_btm_r table_width">
<div>{{ "订单类型" }}</div>
<div>{{ "订单金额" }}</div>
<!-- <div>订单业绩(PV)</div>
<div>订单业绩(BV)</div> -->
<div>{{ "支付编号" }}</div>
<div>{{ "支付姓名" }}</div>
<div>{{ "会员编号" }}</div>
<div>{{ "会员姓名" }}</div>
<div>{{ "订单状态" }}</div>
<div>{{ "收货人" }}</div>
<span class="sheng">{{ "联系方式" }}</span>
<!-- <span class="sheng">/详细地址</span> -->
<div>{{ "省" }}</div>
<div>{{ "市" }}</div>
<div>{{ "区/县" }}</div>
<div>{{ "详细地址" }}</div>
<div>{{ "操作" }}</div>
</div>
</div>
<div v-for="(item, index) in orderLists" class="order_i" :key="index">
<div class="t_top">
<span>{{ "订单编号" }}{{ item.orderCode }}</span>
<span>{{ "创建时间" }}{{ item.creationTime }}</span>
<span>{{ "支付时间" }}{{ item.payTime }}</span>
<span
>{{ "订单业绩" }}(PV){{
item.orderAchieve | toThousandthAndKeepDecimal
}}</span
>
<!-- <span>{{ '订单业绩' }}(BV){{ item.orderAssAchieve |toThousandthAndKeepDecimal}}</span> -->
</div>
<div class="t_btm_a">
<div class="t_btm_l">
<div
v-for="(ctem, cndex) in item.itemList"
:key="cndex"
class="t_btm"
>
<!-- 详情 -->
<div class="tab_i1">
<img :src="ctem.cover" alt="" />
<div class="tab_i1_1">
<div class="prot">{{ ctem.productName }}</div>
<div>{{ ctem.specsName }}</div>
<div class="prot_i">
<div>{{ ctem.price | toThousandthAndKeepDecimal }}</div>
<div>X{{ ctem.quantity }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="t_btm_r table_width">
<!-- 类型 -->
<div>{{ item.orderTypeVal }}</div>
<!-- 金额 -->
<div>
{{ item.orderAmount | toThousandthAndKeepDecimal }}
</div>
<!-- pv -->
<!-- <div>{{ item.orderAchieve }}</div> -->
<!-- Bv -->
<!-- <div>{{ item.orderAssAchieve }}</div> -->
<!-- 支付编号 -->
<div>
{{ item.creatorCode }}
</div>
<!-- 支付姓名 -->
<div>
{{ item.creatorName }}
</div>
<!-- 会员编号 -->
<div>{{ item.memberCode }}</div>
<!-- 会员姓名 -->
<div>{{ item.memberName }}</div>
<!-- 状态 -->
<div v-if="item.orderStatus == '4'" style="color: #666">
{{ item.orderStatusVal }}
</div>
<div v-if="item.orderStatus == '1'" style="color: #009b58">
{{ item.orderStatusVal }}
</div>
<div
v-if="item.orderStatus == '0'"
style="color: var(--primary-color)"
>
{{ item.orderStatusVal }}
</div>
<div v-if="item.orderStatus == '3'" style="color: #ffad41">
{{ item.orderStatusVal }}
</div>
<div v-if="item.orderStatus == '5'" style="color: #ffad41">
{{ item.orderStatusVal }}
</div>
<!-- 名 -->
<div>{{ item.recName }}</div>
<!-- 电话 -->
<span class="sheng">{{ item.recPhone }}</span>
<!-- 地址 -->
<div>{{ item.recProvince }}</div>
<div>{{ item.recCity }}</div>
<div>{{ item.recCounty || "" }}</div>
<div>{{ item.address }}</div>
<!-- <span class="sheng">{{item.recProvince}}{{item.recCity}}{{item.recCounty || ''}}{{ item.address }}</span> -->
<!-- 操作 -->
<div class="del">
<div class="del1" @click="cancleOrder(item)">
{{ "撤销订单" }}
</div>
</div>
</div>
</div>
</div>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getDataList"
/>
</div>
</template>
<script>
import * as api from "@/api/orderComment.js";
import { mapGetters } from "vuex";
export default {
data() {
return {
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 50,
},
total: 0,
orderLists: [],
};
},
computed: {
...mapGetters(["userInfo"]),
},
mounted() {
this.getDataList();
},
methods: {
getDataList() {
api.selfRevokeList(Object.assign({}, this.queryParams)).then((res) => {
this.orderLists = res.rows;
this.total = res.total;
});
},
cancleOrder(item) {
this.$confirm("确定撤销订单?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then((_) => {
api.selfRevokeListCheck(item).then((res) => {
if (res.code == 200) {
api.selfRevokeOrder(item).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: "success",
});
this.getDataList();
} else {
this.$message({
message: res.msg,
type: "warning",
});
}
});
} else {
this.$message({
message: res.msg,
type: "warning",
});
}
});
});
},
},
};
</script>
<style lang="scss" scoped>
.contain {
.kuang {
background: #ffffff;
// box-shadow: 0px 0px 20px 0px rgba(204, 204, 204, 0.5);
border-radius: 8px 8px 8px 8px;
padding: 20px 20px 20px 0;
}
}
.table {
background: #ffffff;
// box-shadow: 0px 2px 20px 0px rgba(135, 135, 135, 0.3);
border-radius: 10px 10px 10px 10px;
margin-top: 20px;
font-size: 14px;
.tabList {
display: flex;
align-items: center;
font-weight: 400;
color: #666666;
padding: 20px 20px 0 20px;
.tab_i {
margin-right: 70px;
border-bottom: 5px solid #fff;
padding-bottom: 10px;
position: relative;
cursor: pointer;
.qiu {
position: absolute;
width: 20px;
height: 20px;
background: #00417c;
top: -10px;
right: -10px;
border-radius: 50%;
font-size: 12px;
color: #ffffff;
text-align: center;
line-height: 20px;
}
}
.tabAct {
color: #00417c;
border-bottom: 5px solid #00417c;
}
}
}
.searchbox {
display: flex;
align-items: center;
.btn1 {
background: #cccccc;
border-radius: 5px 5px 5px 5px;
color: #ffffff;
}
.btn2 {
border-radius: 5px 5px 5px 5px;
background: rgba(214, 24, 32, 1);
color: #ffffff;
}
}
.table_tit {
background: #eeeeee;
padding: 30px 0 30px 30px;
display: flex;
font-size: 14px;
font-weight: 600;
color: #333333;
align-items: center;
position: sticky;
top: 100px;
}
.table_tit2 {
width: 8%;
text-align: center;
}
.t_btm_a {
display: flex;
align-items: center;
padding: 20px 0px 20px 30px;
}
.t_btm_l {
width: 14%;
}
.t_btm_r {
// width: 8%;
text-align: center;
display: flex;
flex: 1;
align-items: center;
}
.table_width {
text-align: center;
div {
flex: 1;
word-break: break-all;
} // div:nth-child(11) {
// width: 8%;
// }
}
.tab_i1 {
// padding-left: 30px;
display: flex;
align-items: center;
font-size: 11px;
}
.tab_i1_1 {
// display: flex;
text-align: left;
flex: 1;
padding-left: 10px;
.prot {
margin-bottom: 5px;
}
.prot_i {
width: 50% !important;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 5px;
}
}
.t_top {
display: flex;
align-items: center;
padding: 18px 0 15px 30px;
border-bottom: 2px solid rgba(0, 0, 0, 0.05);
span {
margin-right: 60px;
}
}
.t_btm {
display: flex;
align-items: center; // padding: 20px 0px 20px 30px;
margin-bottom: 10px;
img {
width: 64px;
height: 64px;
border-radius: 8px 8px 8px 8px;
}
}
.order_i {
background: #ffffff;
box-shadow: 0px 4px 20px 0px rgba(204, 204, 204, 0.5);
border-radius: 10px 10px 10px 10px;
margin-bottom: 20px;
}
.del {
div:nth-child(2) {
width: 100%;
}
div:nth-child(3) {
width: 100%;
}
div:nth-child(1) {
width: 100%;
color: #3499ff;
}
}
.del1 {
color: #009b58;
cursor: pointer;
}
.del2 {
color: var(--primary-color);
cursor: pointer;
}
.del3 {
color: var(--primary-color);
cursor: pointer;
}
.del4 {
color: var(--primary-color);
cursor: pointer;
}
::v-deep .el-range-editor.el-input__inner {
width: auto;
}
::v-deep .el-select {
width: 100%;
}
.sheng {
width: 8% !important;
}
.delBtn {
background: var(--primary-color);
color: #fff;
border-color: var(--primary-color);
}
.all_dig {
display: flex;
align-items: center;
.tit {
font-size: 12px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
display: inline-block;
margin-bottom: 30px;
cursor: pointer;
margin-right: 20px;
}
.act {
font-size: 16px;
font-family: PingFang SC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
display: inline-block;
border-bottom: 4px solid #00417c;
margin-bottom: 30px;
cursor: pointer;
margin-right: 20px;
}
}
.head_t {
display: flex;
align-items: center;
font-size: 12px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
padding-bottom: 20px;
margin-bottom: 20px;
border-bottom: 1px solid #ccc;
img {
width: 44px;
height: 44px;
margin-right: 10px;
}
}
.wl_tree {
display: flex;
margin-bottom: 10px;
.tree_l {
width: 30%;
text-align: right;
}
.zhong {
// flex: 1;
margin: 0 20px;
display: flex;
flex-direction: column;
align-items: center;
.qiu {
width: 10px;
height: 10px;
background: #cccccc;
border-radius: 50%; // margin: 10px 0;
margin: 3px 0 10px 0;
}
.gun {
background: #ccc;
width: 1px;
min-height: 70px;
}
}
.tree_r {
width: 60%;
}
}
::v-deep .orderCenter .el-dialog__body {
height: 700px;
overflow-y: auto;
}
.digTit {
color: #5392f0;
font-size: 50px;
text-align: right;
font-weight: 700;
}
.digCent {
display: flex;
justify-content: space-between;
font-size: 18px;
color: #000;
}
.digCent_l {
flex: 1;
}
.digCent_f {
display: flex;
align-items: center;
margin-bottom: 10px;
:first-child {
margin-right: 30px;
font-weight: 500;
}
}
.digCent_r {
flex: 1;
text-align: right;
margin-top: 50px;
div {
margin-bottom: 10px;
}
:nth-child(1) {
font-weight: 500;
font-size: 22px;
}
:nth-child(2) {
font-weight: 500;
font-size: 22px;
}
}
</style>
<style lang="scss">
.print {
.el-table--border:after,
.el-table--group:after,
.el-table:before {
background-color: #000;
}
.el-table--border,
.el-table--group {
border-color: #000;
}
.el-table td,
.el-table th.is-leaf {
border-color: #000;
}
.el-table--border th,
.el-table--border th.gutter:last-of-type {
border-color: #000;
}
.el-table--border td,
.el-table--border th {
border-color: #000;
}
.el-table__row {
color: #000;
}
}
#printDom {
table {
table-layout: auto !important;
}
.el-table__header-wrapper .el-table__header {
width: 100% !important;
}
.el-table__body-wrapper .el-table__body {
width: 100% !important;
}
}
</style>