You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

703 lines
21 KiB

<template>
<!-- 订单详情 -->
<view class="page1">
<view style="height:100%" v-if="pintuan">
<view class="title1">
<view class="title-sreach1">
<view class="back-btn1" @tap="back" :style="{'top': menuButtonInfo.top +'px'}">
<uni-icons type="left" size="28"></uni-icons>
</view>
</view>
</view>
<view class="box11">
<view class="ziqu-xuanfu1" v-if="orderDetail.deliveryType == 1">
外卖配送
</view>
<view style="width: 100%;line-height: 70rpx;font-size: 28rpx;font-weight: 700;">
{{orderDetail.shopName}}
</view>
<view style="display: flex;padding: 20rpx 0;background: #eee;border-radius: 20rpx;">
<view class="goods-img1">
<img src="/static/images/img/shangpintu.png" alt="">
</view>
<view class="goods-content1" v-for="(item1,index1) in orderDetail.goodsList" :key="index1" v-if="orderDetail.goodsList != null && orderDetail.goodsList.length > 0">
<view class="goods-name1">
{{item1.productName}}
</view>
<view class="goods-content-center1">
<view>
{{item1.specs}}
</view>
</view>
<view class="goods-content-bottom1">
<view style="width: 45%;">
X{{item1.quantity}}
</view>
<view class="pintuan-left-price1">
<view
style="background: rgba(255, 57, 57, 0.2);padding: 0px 12rpx;border-radius: 20rpx;margin-left: 20rpx;">
<text>拼团</text>
<text style="color: red;">¥{{item1.price}}</text>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="box11" style="position: absolute;top: 800rpx;left: 2.5%;">
<view class="kaituan11">
<view class="kaituan1-title1">
差{{orderDetail.groupInfo.targetMembers - orderDetail.groupInfo.currentMembers}}人即可成团
<img src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/21b403bd13414ce79ad73cf1c8e3de98.png" alt="" style="width: 120rpx;height: 11px;position: absolute;bottom: 0;right: 15px;" />
</view>
<view class="kaituan1-title11">
快呼唤小伙伴参加吧!
</view>
</view>
<view class="kaituan21">
<view class="kaituan221">
<img src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/801c569079da4540990c1cc634186fdd.png" alt="" style="width: 90rpx;height: 90rpx;border-radius: 90rpx;margin: 0 auto;display: block;" />
</view>
<view class="kaituan221">
<view class="weipincheng1" v-for="(item1,index1) in (orderDetail.groupInfo.targetMembers - orderDetail.groupInfo.currentMembers)" :key="index1">
+
</view>
</view>
</view>
<view class="kaituan41">
分享至微信 <uni-icons type="weixin" size="15"></uni-icons>
</view>
<view class="status-btn" style="top:0" v-if="orderStatus(orderDetail)" @tap="returnPopupProp(orderDetail)">
取消订单
</view>
<view class="status-btn" v-if="orderStatus(orderDetail)" @tap="returnPopupProp(orderDetail)">
补差价转直接购买
</view>
<view style="top: 35px;" @tap="refreah(orderDetail)">
刷新
</view>
<view class="kaituan51">
<img src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/c1f1b45c98fa4db1a1e5f98b3a0573c2.png" alt="" style="width: 520rpx;height: 150rpx;margin: 0 auto;display: block;" />
</view>
</view>
</view>
<view class="" v-else>
<view class="title">
<view class="title-sreach">
<view class="back-btn" @tap="back" :style="{'top': menuButtonInfo.top +'px'}">
<uni-icons type="left" size="28"></uni-icons>
</view>
</view>
</view>
<view class="content">
<view class="box1" style="display: flex;">
<view class="status-img">
<img v-if="orderDetail.status == 0 || (orderDetail.status == 3 && orderDetail.deliveryType == 2)" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/6cf6fff020614ebebb34f7c371e11331.png" alt="" />
<img v-if="orderDetail.status == 2" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png" alt="" />
<img v-if="orderDetail.status == 5 || orderDetail.status == 8" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/dbfa6dc934e2414c912c67430d5f802c.png" alt="" />
<img v-if="orderDetail.status == 6" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/03d7e8d5914e4b9ca04728113900d1fe.png" alt="" />
<img v-if="orderDetail.status == 7" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png" alt="" />
<img v-if="(orderDetail.status == 3 && orderDetail.deliveryType == 1) || (orderDetail.status == 4 && orderDetail.deliveryType == 1)" src="https://jewel-shop.oss-cn-beijing.aliyuncs.com/0ab87a35cbca473997c679a023337df6.png" alt="" />
<!--
待支付 https://jewel-shop.oss-cn-beijing.aliyuncs.com/6cf6fff020614ebebb34f7c371e11331.png
订单取消 https://jewel-shop.oss-cn-beijing.aliyuncs.com/03d7e8d5914e4b9ca04728113900d1fe.png
等待商家接单、等待配送员接单、等待商家同意 https://jewel-shop.oss-cn-beijing.aliyuncs.com/35ff6276eb3a4e58b8baa724ca44d5dc.png
配送中、配送员已接单、配送员已到店、等待配送员接单 https://jewel-shop.oss-cn-beijing.aliyuncs.com/0ab87a35cbca473997c679a023337df6.png
订单完成 https://jewel-shop.oss-cn-beijing.aliyuncs.com/dbfa6dc934e2414c912c67430d5f802c.png
-->
</view>
<view class="status-text">
<view class="status-zhu">
<text v-if="orderDetail.status == 0">待支付</text>
<text v-if="orderDetail.status == 2">等待配送员接单</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 1">配送员已接单</text>
<text v-if="orderDetail.status == 3 && orderDetail.deliveryType == 2">待消费</text>
<text v-if="orderDetail.status == 4 && orderDetail.deliveryType == 1">配送员已取货</text>
<text v-if="orderDetail.status == 5">订单已完成</text>
<text v-if="orderDetail.status == 7">等待商家同意退款</text>
<text v-if="orderDetail.status == 6">订单已取消</text>
<text v-if="orderDetail.status == 8">订单已退款</text>
<text v-if="orderDetail.status != 5 && orderDetail.status != 8 && orderDetail.returnStatus == 1">(商家拒绝退款)</text>
</view>
<view class="status-fu" v-if="orderDetail.deliveryInfo">
<view class="">预计<text>{{orderDetail.deliveryInfo.mustFinishTime | formatHourMinute }}</text>送达</view>
<!-- <view class="">超过15分钟未支付,订单自动取消</view>
<view class="">您申请了取消订单,请等待商家同意</view>
<view class="">商家已同意取消订单,订单金额将原路返回</view>
<view class="">商家已拒绝取消订单,将会继续为您配送</view> -->
</view>
<view class="status-address" v-if="orderDetail.deliveryInfo">
送至 <text>{{orderDetail.deliveryInfo.receiverAddress}}</text>
</view>
<view class="status-btn" v-if="orderStatus(orderDetail)" @tap="returnPopupProp(orderDetail)">
取消订单
</view>
<view class="status-btn" v-if="orderDetail.status == 5">
申请售后
</view>
<view class="status-btn" style="padding-right: 100rpx;" @tap="refreah(orderDetail)">
刷新
</view>
<!-- <view class="status-btn">
去评价
</view> -->
</view>
</view>
<view class="btn-box">
<view class="btn" v-if="orderDetail.status == 3 && orderDetail.deliveryType == 2" @tap="openCode">
核销取餐码 需要画二维码
</view>
<view class="btn" v-if="orderDetail.status == 3 && orderDetail.deliveryType == 2" @tap="openCode">
立即备餐
</view>
<view class="btn" v-if="orderDetail.status == 2" @tap="">
增加配送佣金
</view>
<!-- <view class="btn">
再来一单
</view>
<view class="btn">
¥5 去支付
</view>
<view class="btn">
增加配送佣金
</view>
<view class="btn">
取消申请
</view> -->
</view>
<view class="box1">
<view style="width: 100%;line-height: 70rpx;font-size: 28rpx;font-weight: 700;">
{{orderDetail.shopName}}
</view>
<view v-for="(item1,index1) in orderDetail.goodsList" :key="index1" v-if="orderDetail.goodsList != null && orderDetail.goodsList.length > 0" style="display: flex;padding: 20rpx;background: #eee;border-radius: 20rpx;">
<view class="goods-img">
<img :src="item1.productPicture" alt="">
</view>
<view class="goods-content">
<view class="goods-name">
{{item1.productName}}
</view>
<view class="goods-content-center">
<view class="goods-deal1">
{{item1.specs}}
</view>
</view>
<view class="goods-content-bottom">
<view style="width: 50%;">
X{{item1.quantity}}
</view>
<view class="pintuan-left-price">
¥{{item1.price}}
</view>
</view>
</view>
</view>
<view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.packageFee != null && orderDetail.packageFee > 0">
<view style="flex: 1;color: #777;font-weight: 700;">
打包费
</view>
<view style="color: #000;font-weight:700;">
¥{{orderDetail.packageFee}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.deliveryType == 1">
<view style="flex: 1;color: #777;font-weight: 700;">
配送费
</view>
<view style="color: #000;font-weight:700;">
¥{{orderDetail.deliveryFee}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
优惠券
</view>
<view style="color: #000;font-weight:700;">
-¥1 <uni-icons type="right" size="12"></uni-icons>
</view>
</view>
</view>
<view style="display: flex;height: 80rpx;line-height: 100rpx;border-top: 1px solid #eee;font-size: 32rpx;font-weight: 700;">
<view style="flex: 1;">
实付
</view>
<view class="">
¥{{orderDetail.totalAmount}}
</view>
</view>
</view>
<view class="box1">
<view>
<!-- <view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
收件地址
</view>
<view style="color: #000;font-weight: 700;">
北校区1号宿舍楼5楼512(0702)
</view>
</view> -->
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.deliveryType == 1">
<view style="flex: 1;color: #777;font-weight: 700;">
配送员
</view>
<view style="color: #000;font-weight: 700;" v-if="orderDetail.deliveryInfo.workerId != null && orderDetail.deliveryInfo.workerId != ''">
{{orderDetail.deliveryInfo.workerName != null ? orderDetail.deliveryInfo.workerName : ''}}
</view>
<view style="color: #000;font-weight: 700;" v-else>
未指定等待接单中
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;" v-if="orderDetail.numberCode != null">
<view style="flex: 1;color: #777;font-weight: 700;">
订单号
</view>
<view style="color: #000;font-weight: 700;">
{{orderDetail.numberCode}}
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
送达时间
</view>
<view style="color: #000;font-weight: 700;">
尽快送达
</view>
</view>
<view style="height: 80rpx;line-height: 80rpx;display: flex;">
<view style="flex: 1;color: #777;font-weight: 700;">
下单时间
</view>
<view style="color: #000;font-weight: 700;">
{{orderDetail.createTime}}
</view>
</view>
</view>
</view>
</view>
</view>
<!-- 核销二维码弹出层 -->
<uni-popup ref="imgPopup" background-color="#fff">
<view class="img-popup-content" @tap="$refs.imgPopup.close()">
<img :src="codeImg" alt="" style="width: 330rpx;height: 330rpx;margin: 282rpx 0 0 136rpx;border: 20rpx solid rgba(222, 255, 248, 1);border-radius: 20rpx;">
</view>
</uni-popup>
<uni-popup ref="returnPopup" background-color="#fff" style="height: 1600rpx !important;">
<view class="guize-list">
<view style="height: 80rpx;line-height: 80rpx;font-size: 36rpx;font-weight: 700;text-align: center;">
确定要取消订单吗
<text v-if="payData.status == 2 || payData.status == 3 || payData.status == 4 || payData.status == 4">取消订单需要商家同意</text>
</view>
<view class="btn" @tap="returnOrder()">
确认取消
</view>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
pintuan:false,
menuButtonInfo: {},
orderId:'',
payData:{},
orderDetail:{},
codeImg:'https://jewel-shop.oss-cn-beijing.aliyuncs.com/3a4e68eb14d7417cbb4f15fa85907c64.jpg'
}
},
components: {
},
filters: {
formatHourMinute(value) {
if (!value) return '';
const date = new Date(value);
// 获取日 (getDate),并补齐0
const day = String(date.getDate()).padStart(2, '0');
// 获取小时 (getHours),并补齐0
const hour = String(date.getHours()).padStart(2, '0');
// 获取分钟 (getMinutes),并补齐0
const minute = String(date.getMinutes()).padStart(2, '0');
// 拼接格式:日-日-时:分
return `${day}-${hour}:${minute}`;
}
},
onLoad(option) {
if (option.id) {
this.orderId = option.id
this.getOrderDetail(this.orderId)
}
},
onShow() {
this.menuButtonInfo = uni.getMenuButtonBoundingClientRect()
},
methods: {
openCode(){
this.$refs.imgPopup.open()
},
orderStatus(item){
if(item.status == 0 || item.status == 10 || item.status == 2 || (item.status == 3 && item.deliveryType == 1) || (item.status == 3 && item.deliveryType == 2) || item.status == 4){
return true;
}
return false;
},
returnPopupProp(item){
this.payData = item;
this.$refs.returnPopup.open('bottom');
},
returnOrder(){
this.$refs.returnPopup.close();
let item = this.payData
let that = this
that.tui.request("/mall/order/cancel", "POST", {orderId:item.id,userId:uni.getStorageSync('id')}, false, true).then((res) => {
if (res.code == 200) {
that.tui.toast("取消订单成功");
that.getOrderDetail(item.id)
that.$forceUpdate();
} else {
that.tui.toast(res.message);
return;
}
uni.hideLoading();
}).catch((res) => {});
},
refreah(item){
this.getOrderDetail(item.id)
this.$forceUpdate();
},
getOrderDetail(id){
let that = this
that.tui.request("/mall/order/detail/"+id, "GET", {}, false, true).then((res) => {
if (res.code == 200) {
that.orderDetail = res.result;
if(that.orderDetail.groupInfo){
//还没有拼团成功拼团状态 0:拼团中 1:拼团成功 2:拼团失败 3:面对面团(不公开)
if(that.orderDetail.groupInfo.status != 1 && that.orderDetail.groupInfo.status != 2){
that.pintuan = true;
}
}
that.$forceUpdate();
} else {
that.tui.toast(res.message)
return
}
}).catch((res) => {})
},
back() {
uni.navigateBack()
}
}
}
</script>
<style lang="scss">
page {
width: 100%;
height: 100%;
font-size: 24rpx;
background: #F5F8F5;
color: #00231C;
}
.page1 {
width: 100%;
height: 100%;
font-size: 24rpx;
position: relative;
}
.title{
background: url('https://jewel-shop.oss-cn-beijing.aliyuncs.com/8bc15960c2dc40268e295d6dd23aecce.png') no-repeat;
width: 100%;
height: 54%;
}
.content{
position: absolute;
top: 200rpx;
width: 95%;
margin-left: 2.5%;
}
.title-sreach{
width: 100%;
display: flex;
height: 200rpx;
position: relative;
}
.back-btn{
position: absolute;
bottom: 0;
left: 0;
}
.box1{
width: 95%;
margin: 0 auto 20rpx;
background: #fff;
border-radius: 20rpx;
padding: 20rpx;
}
.goods-img {
width: 160rpx;
height: 160rpx;
position: relative;
img {
width: 100%;
background-size: 100%;
height: 100%;
}
}
.goods-content {
flex: 1;
padding-left: 20rpx;
}
.goods-name {
font-size: 32rpx;
font-weight: 900;
}
.goods-content-center {
display: flex;
margin: 16rpx 0;
color: #777;
}
.goods-deal1 {
width: 60%;
}
.goods-content-bottom {
display: flex;
line-height: 56rpx;
color: #777;
}
.pintuan-left-price {
width: 50%;
text-align: right;
font-weight: 700;
color: #000;
}
.status-img{
width: 84rpx;
height: 84rpx;
img{
width: 84rpx;
height: 84rpx;
background-size: 100%;
}
}
.status-text{
flex: 1;
position: relative;
padding-left: 20rpx;
}
.status-zhu{
font-size: 32rpx;
font-weight: 700;
}
.status-fu{
height: 50rpx;
line-height: 50rpx;
}
.status-address{
font-weight: 700;
}
.status-btn{
position: absolute;
top: 20rpx;
right: 0;
background: #eee;
width: 130rpx;
height: 50rpx;
text-align: center;
line-height: 50rpx;
border-radius: 16rpx;
color: #777;
border: 1px solid #777;
font-size: 20rpx;
}
.btn-box{
height: 120rpx;
}
.btn{
width: 90%;
height: 100rpx;
line-height: 100rpx;
background: linear-gradient(90deg, rgba(227, 255, 150, 1), rgba(166, 255, 234, 1));
font-size: 32rpx;
border-radius: 120rpx;
text-align: center;
margin: 0 auto;
font-weight: 700;
}
.img-popup-content {
width: 600rpx;
height: 800rpx;
background: url('https://jewel-shop.oss-cn-beijing.aliyuncs.com/73e684e3319c468d9252461ba3c9e95b.png') no-repeat;
background-size: 100%;
}
.title1 {
background: url('https://jewel-shop.oss-cn-beijing.aliyuncs.com/69c894452e924bedbb5a24bf978f47c7.png') no-repeat;
width: 100%;
height: 30%;
background-size: 100%;
}
.title-sreach1 {
width: 100%;
display: flex;
height: 200rpx;
position: relative;
}
.back-btn1 {
position: absolute;
bottom: 0;
left: 0;
}
.box11 {
width: 95%;
margin: 0 auto 20rpx;
background: #fff;
border-radius: 20rpx;
padding: 20rpx;
position: absolute;top: 450rpx;left: 2.5%;
}
.goods-img1 {
width: 160rpx;
height: 160rpx;
position: relative;
img {
width: 100%;
background-size: 100%;
height: 100%;
}
}
.goods-content1 {
flex: 1;
padding-left: 20rpx;
}
.goods-name1 {
font-size: 32rpx;
font-weight: 900;
}
.goods-content-center1 {
display: flex;
margin: 16rpx 0;
color: #777;
}
.pintuan-left-price1 {
width: 55%;
text-align: right;
font-weight: 700;
color: #000;
display: flex;
}
.goods-content-bottom {
display: flex;
line-height: 56rpx;
color: #777;
}
.ziqu-xuanfu1 {
position: absolute;
top: 0;
right: 0;
background: linear-gradient(90deg, rgba(227, 255, 150, 1), rgba(166, 255, 234, 1));
border-top-right-radius: 20rpx;
border-bottom-left-radius: 20rpx;
font-weight: 700;
font-size: 20rpx;
height: 56rpx;
width: 120rpx;
text-align: center;
line-height: 56rpx;
}
.weipincheng1 {
width: 90rpx;
height: 90rpx;
background: #a6ffea;
border-radius: 90rpx;
text-align: center;
font-size: 60rpx;
font-weight: 700;
margin-left: -6rpx;
z-index: 97;
color: #02fbdd;
border: 1px solid #a6ffea;
line-height: 80rpx;
margin: 0 auto;
}
.kaituan11{
display: flex;
height: 70rpx;
font-size: 44rpx;
font-weight: 700;
margin-top: 20rpx;
}
.kaituan1-title1{
position: relative;
margin-left: 20rpx;
}
.kaituan1-title11{
font-size: 24rpx;
background: rgba(224, 255, 222, 0.65);
border: 1px solid rgba(166, 255, 234, 1);
border-radius: 20rpx;
height: 44rpx;
line-height: 38rpx;
width: 280rpx;
text-align: center;
margin: 10rpx 0 0 20rpx;
}
.kaituan21{
display: flex;
width: 90%;
margin: 40rpx auto;
}
.kaituan221{
flex: 1;
}
.kaituan31{
height: 80rpx;
line-height: 80rpx;
text-align: center;
color: #777;
}
.kaituan41{
width: 95%;
height: 100rpx;
background: linear-gradient(90deg, rgba(227, 255, 150, 1), rgba(166, 255, 234, 1));
border-radius: 100rpx;
text-align: center;
line-height: 100rpx;
font-size: 30rpx;
font-weight: 700;
margin: 20rpx auto;
}
.kaituan51{
margin: 80rpx 0 40rpx;
}
</style>