600 lines
12 KiB
Vue
600 lines
12 KiB
Vue
<!--
|
||
* @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>
|