Files
LSM_OIL_SITE/packageIntegral/orderDetails/index.vue
2024-02-02 14:50:21 +08:00

337 lines
6.2 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>
<view class="container">
<cu-custom class="main-totextbar bg-main-oil" :isBack="true" bgColor="bg-main-oil">
<block slot="backText">返回</block>
<block slot="content">订单详情</block>
</cu-custom>
<view class="status-frame">
<view v-if="info.orderStatus">{{statusEnum[info.orderStatus].value}}</view>
<view>提货码: <text>{{info.takeCode}}</text></view>
<view v-if="info.orderStatus==2">提货时间{{info.takeTime}}</view>
</view>
<view class="info-frame">
<view class="header">用户手机: {{info.customerPhone}}<text>用户名: {{info.customerName}}</text></view>
<view class="introduce" v-for="item,index in info.mallOrderInfoDetails" :key="index">
<image :src="item.oderDetailImg"></image>
<view>{{item.productName}}</view>
<view>规格{{handler(item.attributeJson)}}</view>
<view>{{item.marketPrice}} X{{item.orderNum}}</view>
</view>
<view class="detial">
<view>订单编号: <text>{{info.orderCode}}</text></view>
<view>下单时间: <text>{{info.createTime}}</text></view>
<view>支付方式: <text>积分</text></view>
<view>商品金额: <text>{{info.marketPrice}}</text></view>
<view>支付积分: <text>{{info.integral}}</text></view>
</view>
<view class="footer">
<view class="button" v-if="info.orderStatus=='1'" @click="determine">确定提货</view>
</view>
</view>
<uni-popup ref="popup">
<view class="determine-frame">
<view class="title">是否立即提货</view>
<view class="buttons">
<view @click="$refs.popup.close()">取消</view>
<view @click="submit">确认</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import serve from '@/api/packageIntegral/orderList.js'
export default {
options: {
styleIsolation: 'shared'
},
data() {
return {
info: {
mallOrderInfoDetails: []
},
statusEnum: {
'-1': {
color: 'red',
value: "已取消"
},
0: {
color: 'blue',
value: "订单新建"
},
1: {
color: 'orange',
value: "待核销"
},
2: {
color: 'blue',
value: "已核销"
},
}
}
},
onLoad(options) {
this.get(options.orderId)
},
methods: {
determine() {
this.$refs.popup.open('center')
},
handler(json) {
json = json.replace(/'/g, '"')
let res = JSON.parse(json)
let values = Object.values(res)
let text = values.reduce((prev, item, index) => {
let _text = `${index == 0 ? '' :','}${item}`
return prev += _text
}, '')
return text
},
get(orderId) {
serve.get(orderId).then(res => {
if (res.code === 20000) {
this.info = res.data
}
})
},
submit(){
let data = {}
data.id = this.dataList[0].orderId
data.takeCode = this.dataList[0].takeCode
serve.takeOrder(data).then(res => {
if (res.code === 20000) {
uni.showToast({
title: res.msg,
icon: 'none'
});
this.$refs.popup.close();
this.get(options.orderId)
}
})
}
}
}
</script>
<style lang="scss" scoped>
.container {
background: #F1F2F7;
>.status-frame {
position: relative;
margin-top: 20rpx;
padding-top: 37rpx;
padding-right: 30rpx;
width: 100%;
height: 170rpx;
background: #fff;
>view {
&:nth-of-type(1) {
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 34rpx;
font-size: 40rpx;
font-weight: 550;
color: #333;
}
&:nth-of-type(2) {
text-align: right;
font-size: 36rpx;
font-weight: 550;
color: #333;
>text {
color: #F83D3D;
}
}
&:nth-of-type(3) {
margin-top: 12rpx;
text-align: right;
font-size: 28rpx;
color: #666;
}
}
}
.determine-frame {
padding-top: 85rpx;
width: 681rpx;
height: 340rpx;
background: #FFFFFF;
border-radius: 15rpx;
>.title {
text-align: center;
font-size: 38rpx;
color: #000;
}
>.buttons {
display: flex;
justify-content: space-evenly;
margin-top: 80rpx;
>view {
width: 250rpx;
height: 76rpx;
text-align: center;
line-height: 76rpx;
border-radius: 10rpx;
font-size: 28rpx;
&:nth-of-type(1) {
background: #FFFFFF;
border: 1rpx solid #B6B6B6;
color: #333;
}
&:nth-of-type(2) {
background: #FE0505;
color: #fff;
}
}
}
}
.info-frame {
margin-top: 20rpx;
position: relative;
background: #fff;
border-bottom: 12rpx solid #F1F2F7;
&:nth-last-of-type(1) {
border-bottom: none
}
.header {
padding: 35rpx 30rpx 0 34rpx;
height: 83rpx;
width: 100%;
font-size: 28rpx;
color: #666;
border-bottom: 1rpx solid #D7D7D7;
>text {
float: right;
}
}
.introduce {
position: relative;
padding: 28rpx 29rpx 0 268rpx;
min-height: 233rpx;
&:nth-last-of-type(1) {
margin-bottom: 0;
}
>image {
position: absolute;
top: 13rpx;
left: 32rpx;
width: 220rpx;
height: 220rpx;
// border: 1px solid #333;
}
>view {
&:nth-of-type(1) {
font-size: 28rpx;
color: #000;
}
&:nth-of-type(2),
&:nth-of-type(3) {
margin-top: 11rpx;
font-size: 24rpx;
color: #999;
}
&:nth-of-type(3) {
margin-top: 18rpx;
}
}
}
>.detial {
margin-top: 26rpx;
padding: 0 32rpx;
>view {
font-size: 28rpx;
>text {
float: right;
}
&:nth-of-type(1),
&:nth-of-type(2),
{
margin-bottom: 17rpx;
color: #999;
}
&:nth-of-type(3) {
color: #999;
}
&:nth-of-type(4) {
margin-top: 30rpx;
color: #000;
}
&:nth-of-type(5) {
margin-top: 17rpx;
color: #000;
}
&:nth-of-type(6) {
margin-top: 17rpx;
color: #F83D3D;
}
}
}
>.footer {
position: relative;
margin-top: 40rpx;
.button {
position: absolute;
top: 0;
right: 32rpx;
width: 198rpx;
height: 78rpx;
line-height: 78rpx;
text-align: center;
font-size: 28rpx;
color: #FFF;
background: #FE0606;
border-radius: 10rpx;
}
}
}
}
</style>