perry-mall/pagesB/orderDetail/orderDetail.vue

311 lines
11 KiB
Vue
Raw Normal View History

2022-02-12 11:33:47 +00:00
<template>
2022-02-23 11:08:25 +00:00
<view class="pad-x160">
2022-02-12 11:33:47 +00:00
<!-- 状态栏 -->
2022-02-18 13:20:26 +00:00
<status-nav :navBarTitle="'订单详情'"></status-nav>
2022-02-23 11:08:25 +00:00
<!-- 容器 -->
<container-subgroup>
2022-02-12 11:33:47 +00:00
<!-- 订单类型 -->
<block v-if="loading">
2022-02-23 11:08:25 +00:00
<view class="bacf6 radius20 mar-s20 fon30 line-h50 pad30">
2022-02-12 11:33:47 +00:00
<view class="disjbac">
2022-02-23 11:08:25 +00:00
<view>订单编号</view>
<view class="bold">{{orderInfo.coding}}</view>
</view>
<view class="disjbac">
<view>下单时间</view>
<view class="bold">{{orderInfo.created_at}}</view>
</view>
<view class="disjbac">
<view>订单状态</view>
<view class="bold">
<view v-if="orderInfo.status=='waiting'" class="colf8"></view>
<view v-if="orderInfo.status=='paid'" class="colf8"></view>
<view v-if="orderInfo.status=='shipped'" style="color: #61cf00;"></view>
<view v-if="orderInfo.status=='completed'" class="col0"></view>
<view v-if="orderInfo.status=='closed'" class="col9"></view>
</view>
</view>
</view>
<!-- 订单信息 -->
<view class="bacf6 radius20 mar-s20 orderDetail-box">
<view v-for="(item,index) in orderInfo.skus" :key="index" class="fon26 col3 disjbac pad-sx50 disjbac bbot">
<image :src="item.sku_cover" class="flexs" mode="aspectFill" style="width: 224rpx; height: 224rpx;"></image>
<view class="width100 disjb fc" style="height: 224rpx;">
<view class="fon28 col3 bold clips2">{{item.spu_name}}</view>
<view class="orderDetail-sku" v-if="item.tag!=''">{{item.tag}}</view>
<view class="mar-s10">
<view class="colf8 fon32 bold disjbac width100"><span>{{item.price}}</span><span class="fon28 col6 mar-z20 font4">x{{item.num}}</span></view>
</view>
</view>
</view>
<view class="fon28 disjbac mar-s40 mar-x20">
<view class="col6">{{allNum}}</view>
<view class="colf8 bold">共计{{orderInfo.original_price}}</view>
2022-02-12 11:33:47 +00:00
</view>
</view>
<!-- 物流信息 -->
2022-02-23 11:08:25 +00:00
<view v-if="orderInfo.address!='自提'" class="bacf6 radius20 mar-s20 fon28 pad30">
2022-02-12 11:33:47 +00:00
<view class="bold">物流信息</view>
<view class="bold col3 mar-s40 fon26 disjbac">
<view>{{orderInfo.express_name}}{{orderInfo.express_number||'暂无快递单号'}}</view>
2022-02-23 11:08:25 +00:00
<view v-if="orderInfo.express_number" @tap="copyCont"></view>
2022-02-12 11:33:47 +00:00
</view>
</view>
<!-- 地址信息 -->
2022-02-23 11:08:25 +00:00
<view v-if="orderInfo.address!='自提'" class="bacf6 radius20 mar-s20 pad30">
2022-02-12 11:33:47 +00:00
<view class="bold">收件人信息</view>
<view class="fon26 col3">
<view class="fon28 col3 bold" style="margin: 52rpx 0 20rpx 0;">{{addressInfo.userName}}<span class="mar-z10">{{addressInfo.userPhone}}</span></view>
<view class="fon24 col9">{{addressInfo.userAddress}}</view>
</view>
</view>
2022-02-23 11:08:25 +00:00
<view v-else class="bacf6 radius20 mar-s20 pad30">
<view class="disjbac">
<view>配送方式</view>
<view>自提</view>
</view>
2022-02-12 11:33:47 +00:00
<view class="fon26 col3 disjbac mar-s30">
<view>
2022-02-23 11:08:25 +00:00
<view class="fon28 col3 bold mar-x20">{{appletName}}</view>
2022-02-12 11:33:47 +00:00
<view class="fon24 col9">{{goAddress}}</view>
</view>
<!-- 立即导航 -->
2022-02-23 11:08:25 +00:00
<view @tap="goThere(goAddress)" class="disjcac fc col0 fon24">
<i class="icon icon-navigate-now " style="font-size: 50rpx;"></i>
<view>立即导航</view>
2022-02-12 11:33:47 +00:00
</view>
</view>
</view>
2022-02-23 11:08:25 +00:00
<!-- 金额详情 -->
<view class="bacf6 radius20 mar-s20 fon30 col0 line-h60 pad30">
<view class="disjbac">
<view>商品总金额</view>
<view class="colf8">{{orderInfo.original_price}}</view>
2022-02-12 11:33:47 +00:00
</view>
2022-02-23 11:08:25 +00:00
<view class="disjbac">
<view>折扣优惠</view>
<view class="colf8">0</view>
2022-02-12 11:33:47 +00:00
</view>
2022-02-23 11:08:25 +00:00
<view class="disjbac" v-if="orderInfo.address!='自提'">
<view>快递费用</view>
<view class="colf8">{{orderInfo.freight}}</view>
2022-02-12 11:33:47 +00:00
</view>
2022-02-23 11:08:25 +00:00
<view class="disjbac">
<view class="width100" style="text-align: right;">实付</view>
<view class="colf8 flexs bold">{{orderInfo.price}}</view>
2022-02-12 11:33:47 +00:00
</view>
</view>
2022-02-23 11:08:25 +00:00
<!-- 底部导航 -->
<view class="posixzy disja fe bacf pad-sx20 pad-y40">
<!-- 取消订单 -->
<view @tap="cancleEv" v-if="orderInfo.status=='paid' || orderInfo.status=='waiting'" class="order-btn"></view>
<!-- 立即支付 -->
<view @tap="paymentEv" v-if="orderInfo.status=='waiting'" class="order-btn" style="background-color: #f83030;color: #FFFFFF;"></view>
<!-- 确认收获 -->
<view @tap="confirmReceipt(orderInfo.id)" v-if="orderInfo.status=='shipped'" class="order-btn" style="background-color: #000000;color: #FFFFFF;"></view>
<!-- 再次购买 -->
<view @tap="againBuy" v-if="orderInfo.status=='completed' || orderInfo.status=='closed'" class="order-btn" style="background-color: #f83030;color: #FFFFFF;"></view>
</view>
2022-02-12 11:33:47 +00:00
</block>
2022-02-23 11:08:25 +00:00
</container-subgroup>
2022-02-12 11:33:47 +00:00
</view>
</template>
<script>
export default {
data() {
return {
statusHNH:uni.getStorageSync('statusHNH'),
publicColor:uni.getStorageSync('publicColor'),//主题颜色
loading:false,
isExpress:true,
switchQuan:true,
showQuan:false,
2022-02-23 11:08:25 +00:00
express:'',
2022-02-12 11:33:47 +00:00
orderInfo:'',//订单信息
addressInfo:'',//地址信息
allPrice:0,//共计
allNum:0,//共
times:0,//点击次数
2022-02-23 11:08:25 +00:00
appletName:'佩丽饰品',
goAddress:'四川省成都市青羊区草堂东路88号',
2022-02-12 11:33:47 +00:00
isHeyan:false,
canvasQrPath: '',
text: 'hello',
size: 162,
colorDark: '#000000',
colorLight: '#ffffff',
timer:null,
daoTime:'',
timerDao:null,
}
},
onShareAppMessage(res) {
var shareObj = {
2022-02-23 11:08:25 +00:00
     title: '', // 默认是小程序的名称(可以写slogan等)
2022-02-12 11:33:47 +00:00
     path: `/pages/tabbar/pagehome/pagehome?invite_code=${uni.getStorageSync('invite_code')}}` // 默认是当前页面,必须是以‘/’开头的完整路径
  };
  return shareObj;
},
onUnload() {
2022-02-23 11:08:25 +00:00
uni.setStorageSync('isorderDetail',1);
2022-02-12 11:33:47 +00:00
},
onLoad(options) {
this.checkInfo(options.id);
},
methods: {
confirmReceipt(id){//确认收货事件
2022-02-23 11:08:25 +00:00
this.$requst.post('/api/order/accepted',{order_id:id}).then(res=>{
2022-02-12 11:33:47 +00:00
if(res.code==0){
this.$toolAll.tools.showToast('收货成功');
this.checkInfo(this.orderInfo.id);
} else this.$toolAll.tools.showToast(res.msg);
})
},
make(index){
this.isHeyan = true;
this.text = `${this.orderInfo.coding}H${this.orderInfo.skus[index].id}`;
let params = {
order_coding:this.orderInfo.coding,
id:this.orderInfo.skus[index].id,
not_check_num:this.orderInfo.skus[index].not_check_num
}
this.timer = setInterval(()=>{
2022-02-23 11:08:25 +00:00
this.$requst.post('/api/order/check-result',params).then(res=>{
2022-02-12 11:33:47 +00:00
if(res.code==0){
if(res.data.result==1){
this.isHeyan = false;
this.$toolAll.tools.showToast('已完成');
this.checkInfo(this.orderInfo.id);
clearInterval(this.timer);
}
}
})
},3000)
},
cancleEv(){//取消订单
this.times++;
if(this.times==2){
2022-02-23 11:08:25 +00:00
this.$requst.post('/api/order/cancel',{order_coding:this.orderInfo.coding}).then(res=>{
2022-02-12 11:33:47 +00:00
if(res.code==0){
this.$toolAll.tools.showToast('取消订单成功');
this.checkInfo(this.orderInfo.id);
this.times = 0;
}
})
} else {
setTimeout(()=>{
this.times = 0;
},1500)
this.$toolAll.tools.showToast('双击即可取消订单');
}
},
paymentEv(){//立即支付
if(this.times==0){
this.$toolAll.tools.showToast('正在调起支付','loading',1500)
this.times++;
2022-02-23 11:08:25 +00:00
this.$requst.post('/api/order/pay',{order_coding:this.orderInfo.coding}).then(res=>{
2022-02-12 11:33:47 +00:00
if(res.code==0){
uni.requestPayment({
provider: 'wxpay',
appId:res.data.payment_params.appId,//appId
timeStamp: res.data.payment_params.timeStamp,//时间戳
nonceStr: res.data.payment_params.nonceStr,//随机字符串
package: res.data.payment_params.package,//package
signType: res.data.payment_params.signType,//MD5
paySign: res.data.payment_params.sign,//签名
success:(res)=> {
2022-02-23 11:08:25 +00:00
this.$requst.post('/api/order/paid',{order_coding:this.orderInfo.coding}).then(res=>{
2022-02-12 11:33:47 +00:00
if(res.code==0){
this.times = 0;
this.$toolAll.tools.showToast('支付成功');
this.checkInfo(this.orderInfo.id);
} else this.$toolAll.tools.showToast(res.msg);
})
}
});
}
})
}
},
checkInfo(id){//查询订单信息
2022-02-23 11:08:25 +00:00
this.$requst.post('/api/user/order-detail',{id:id}).then(res=>{
2022-02-12 11:33:47 +00:00
if(res.code==0){
this.allPrice = 0;
this.allNum = 0;
let narr = res.data;
narr.skus.forEach(item=>{
item.spu_cover = this.$http + item.spu_cover;
// 共多少件,总计
if(narr.is_score==0){
this.allPrice += item.price*item.num;
} else {
this.allPrice += item.score*item.num;
}
this.allNum += item.num;
})
this.orderInfo = narr;
let naddress = this.orderInfo.address.split(',');
if(naddress[0]!='自提'){
let nphone = this.$toolAll.tools.hideMPhone(naddress[1].trim())
this.addressInfo = {
userName:naddress[0].trim(),
userPhone:nphone,
userAddress:naddress[2].trim()
}
}
this.loading = true;
}
})
},
2022-02-23 11:08:25 +00:00
// 再次购买事件
againBuy(){
let newList = [];
this.orderInfo.skus.forEach(item=>{
let obj = {
id:item.spu_id,//商品id
imgSrc:item.spu_cover,//商品图片
coding:item.coding,//商品coding
price:item.price,//商品价格
num:item.num,//商品数量
title:item.spu_name,//商品名称
}
newList.push(obj);
})
uni.setStorageSync('orderList',newList);
uni.navigateTo({url:'/pagesA/getReadyDan/getReadyDan'});
},
2022-02-12 11:33:47 +00:00
copyCont(){//复制快递单号
if(this.times==0){
this.times++;
if(this.orderInfo.express_number!=null){
this.$toolAll.tools.clickCopy(this.orderInfo.express_number);
this.$toolAll.tools.showToast('复制快递单号成功');
} else this.$toolAll.tools.showToast('暂无可查询的快递信息');
setTimeout(()=>{
this.times = 0;
},2000)
}
},
goThere(val){//去这里
wx.getLocation({//获取当前经纬度
type: 'wgs84', //返回可以用于wx.openLocation的经纬度官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息
success: function (res) {
wx.openLocation({//​使用微信内置地图查看位置。
2022-02-23 11:08:25 +00:00
latitude: 30.657707,//要去的纬度-地址
longitude: 104.036007,//要去的经度-地址,
2022-02-12 11:33:47 +00:00
name: val,
address: val
})
}
})
},
}
}
</script>
<style>
2022-02-23 11:08:25 +00:00
2022-02-12 11:33:47 +00:00
</style>