web-retail-h5/pages/selfService/cancleOrder/index.vue

600 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: 2022-11-21 15:11:22
-->
<template>
<view class="content">
<view v-for="(item, index) in orderLists"
class="orderList_i">
<view @click.stop="getDetails(item)">
<view class="disFlex atm just mbt10">
<view class="disFlex atm">
<view class="quan">{{ item.orderTypeVal }}</view>
<view class="tit1">{{'订单编号'}}{{ item.orderCode }}</view>
</view>
<view class="tit2">
{{ item.orderStatusVal }}
</view>
</view>
<view v-for="ctem,cndex in item.itemList"
:key="cndex"
class="disFlex atm just mbt10">
<view class="disFlex atm">
<img :src="ctem.cover"
alt="">
<view class="tit3">
{{ ctem.productName }}
</view>
</view>
<view style="text-align:right">
<view class="tit4">
{{ ctem.price | numberToCurrency | isLocal}}
</view>
<view class="tit5">
x{{ ctem.quantity }}
</view>
</view>
</view>
<view class="tit1">
{{'创建时间'}}{{ item.creationTime }}
</view>
</view>
<view class="xian"></view>
<view class="disFlex">
<view style="flex: 1;"></view>
<view class="disFlex">
<u-button type="primary"
class="lBtn"
:plain="true"
shape="circle"
:text="'撤销订单'"
@click="cancleOrder(item)"
color="#999"></u-button>
</view>
</view>
</view>
<u-popup class="pop"
:show="detailsShow"
closeable
:round="10"
mode="center"
@close="detailsShow= false">
<view class="pop_a">
<view class="t_tit">
{{'订单详情'}}
</view>
<view class="pop_t">{{'商品信息'}}</view>
<view class="xian"></view>
<view class="orderList_a">
<view v-for="ctem,cndex in details.itemList"
:key="cndex"
class="disFlex atm just mbt10">
<view class="disFlex just"
style="flex:1">
<img :src="ctem.cover"
alt="">
<view style="flex:1">
<view class="disFlex atm just">
<view class="tit3">
{{ ctem.productName }}
</view>
<view class="tit5">
x{{ ctem.quantity }}
</view>
</view>
<view class="tit4">
{{ ctem.price | numberToCurrency | isLocal}}
</view>
</view>
</view>
</view>
</view>
<view class="disFlex atm just mbt10">
<view class="tit1">
{{'订单金额'}}
</view>
<view class="tit6">
{{ details.orderAmount |toThousandthAndKeepDecimal}}
</view>
</view>
<view class="disFlex atm just mbt10">
<view class="tit1">
{{'订单业绩'}}(PV)
</view>
<view class="tit6">
{{ details.orderAchieve |toThousandthAndKeepDecimal}}
</view>
</view>
<!-- <view class="disFlex atm just mbt10">
<view class="tit1">
{{'订单业绩'}}(BV)
</view>
<view class="tit6">
{{ details.orderAssAchieve |toThousandthAndKeepDecimal}}
</view>
</view> -->
<view class="xian"></view>
<view class="pop_t mbt10">
{{'收货人信息'}}
</view>
<view class="disFlex atm mbt10 tit6">
<view>
{{ details.recName }}
</view>
<view>
{{ details.recPhone }}
</view>
</view>
<view class="mbt10 tit1">
{{ details.recProvince }} {{ details.recCity }} {{ details.recCounty }} {{ details.address }}
</view>
</view>
</u-popup>
</view>
</template>
<script>
import * as api from '@/config/order.js'
export default {
data() {
return {
orderTypes: [],
rightShow: false,
remarkEd: '',
content: '确认取消订单?',
isRemark: false,
cancelCode: '',
details: '',
orderStatusList: [],
detailsShow: false,
isTab: -1,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 50,
},
select: {
orderType: '',
},
orderLists: [],
}
},
onLoad() {
this.getDataList()
},
onShow() {},
onReachBottom() {
this.queryParams.pageNum++
this.getDataList()
},
methods: {
cancleOrder(item) {
let that = this
uni.showModal({
title: '确定撤销订单?',
success: function (response) {
if (response.confirm) {
api.selfRevokeListCheck(item).then((res) => {
if (res.code == 200) {
api.selfRevokeOrder(item).then((res) => {
if (res.code == 200) {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1500,
})
that.orderLists = []
that.getDataList()
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1500,
})
}
})
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1500,
})
}
})
}
},
})
},
getDetails(item) {
api.orderDetails(item.orderCode).then((res) => {
this.details = res.data
this.detailsShow = true
})
},
getOrderStatus() {
api.orderStatus().then((res) => {
res.data.unshift({
label: '全部',
value: '',
})
this.orderStatusList = res.data
})
},
getDataList(index) {
api.selfRevokeList(Object.assign({}, this.queryParams)).then((res) => {
this.orderLists = this.orderLists.concat(res.rows)
this.total = res.total
})
},
},
}
</script>
<style lang="scss" scoped>
.index_header {
background: #fff;
font-size: 18px;
font-family: PingFang SC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
text-align: center;
padding: 10px 0;
position: fixed;
width: 100%;
z-index: 100000000;
}
.shareImg {
position: fixed;
margin: 14rpx 24rpx;
z-index: 1000000000;
right: 10rpx;
top: 10rpx;
img {
width: 40rpx;
height: 40rpx;
}
}
.zhan1 {
height: 50px;
}
.seach {
background: #fff;
overflow: hidden;
padding: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
position: relative;
border-bottom: 2rpx solid #eee;
.seach_i {
padding: 0 20rpx;
border-radius: 34rpx;
background: #fff;
flex: 1;
background: #f5f6f8; // margin-right: 40rpx;
}
.seatch_r {
background: #005BAC;
border-radius: 50%;
padding: 8rpx;
margin-left: 24rpx;
}
}
.timeSlide {
display: flex;
align-items: center;
padding: 38rpx 26rpx;
.timeA {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333;
margin-right: 46rpx;
border-bottom: 2rpx solid #fff; // padding-bottom: 10rpx;
}
.timeB {
width: 158rpx;
font-size: 24rpx;
font-family: Arial;
font-weight: 400;
color: #999999;
margin-right: 46rpx;
border-bottom: 2rpx solid #eee; // padding-bottom: 10rpx;
text-align: center;
}
}
.tab {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 24rpx;
margin-top: 20rpx;
margin-bottom: 6rpx;
}
.tab_i {
// width: 120rpx;
text-align: center;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #333333; // margin-right: 28rpx;
white-space: nowrap;
display: flex;
flex-direction: column;
align-items: center;
}
.heng {
width: 24px;
height: 2px;
background: #ed1d25;
border-radius: 1px 1px 1px 1px;
margin-top: 4rpx;
}
.heng1 {
width: 24px;
height: 2px;
background: #fff;
border-radius: 1px 1px 1px 1px;
margin-top: 4rpx;
}
.hui {
height: 10rpx;
background: #eee;
}
.zhan {
height: 80rpx;
}
.con_top {
position: fixed;
background: #fff;
width: 100%;
z-index: 10;
}
.disFlex {
display: flex;
}
.atm {
align-items: center;
}
.just {
justify-content: space-between;
}
.mbt10 {
margin-bottom: 14rpx;
}
.orderList_i {
padding: 25rpx;
border-bottom: 22rpx solid #eee;
background: #fff;
img {
width: 124rpx;
height: 124rpx;
border-radius: 20rpx;
margin-right: 20rpx;
}
}
.orderList_a {
img {
width: 124rpx;
height: 124rpx;
border-radius: 20rpx;
margin-right: 20rpx;
}
}
.quan {
background: #3d3d3d;
border-radius: 15px;
font-size: 20rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
padding: 5rpx 20rpx;
margin-right: 10rpx;
}
.tit1 {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #999999;
}
.tit2 {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #69a35b;
}
.tit3 {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333333;
}
.tit4 {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #005BAC;
}
.tit5 {
font-size: 22rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #666666;
}
.tit6 {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333333;
}
.xian {
background: #eee;
height: 2rpx;
margin: 20rpx 0;
}
.lBtn {
margin-right: 20rpx;
}
.pop_a {
padding: 20rpx;
}
.t_tit {
text-align: center;
margin-top: 20px;
}
.pop_t {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #333333;
}
::v-deep .u-popup__content {
// width: 90%;
}
.pop ::v-deep .u-popup__content {
width: 90%;
}
.rightPopup {
width: 645rpx;
.popup_top {
padding: 25rpx;
background-color: rgba(176, 196, 222, .45);
display: flex;
justify-content: space-between;
align-items: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333333;
border-bottom: 2rpx solid #eeeeee;
.top_red {
color: #005BAC;
}
}
.typesBox {
margin-top: 40rpx;
.typeTitle {
padding: 0 24rpx;
font-size: 30rpx;
font-family: Source Han Sans CN;
font-weight: bold;
color: #333333;
}
.choiceBox {
padding: 0 12rpx;
display: flex;
margin-top: 17rpx;
align-items: center; // flex-wrap: wrap;
.flex_btn {
background-color: #f4f4f4;
display: flex;
align-items: center;
justify-content: center;
padding: 14rpx 20rpx;
border-radius: 30rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333333;
margin: 17rpx 5rpx;
width: 100%;
}
.selectbtn {
background-color: #005BAC;
color: #ffffff;
}
}
.choiceBox1 {
padding: 0 12rpx;
display: flex;
margin-top: 17rpx;
align-items: center;
flex-wrap: wrap;
.flex_btn {
background-color: rgba(176, 196, 222, .45);
display: flex;
align-items: center;
justify-content: center;
padding: 14rpx 20rpx;
border-radius: 30rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333333;
margin: 17rpx 5rpx;
}
.selectbtn {
background-color: #005BAC;
color: #ffffff;
}
}
}
.footer {
position: fixed;
bottom: 0;
display: flex;
align-items: center;
width: 100%;
.footer_l {
width: 327rpx;
text-align: center;
background: #f3f3f3;
height: 100rpx;
line-height: 100rpx;
}
.footer_r {
width: 327rpx;
text-align: center;
background: #005BAC;
height: 100rpx;
line-height: 100rpx;
color: #fff;
}
}
}
.contain ::v-deep .u-transition {
top: 45px !important;
}
.timePicker ::v-deep .u-transition {
z-index: 10076 !important;
}
</style>