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.
 
 
 
 
high-mini/physical-merchants/classify/order/orderDetail.vue

752 lines
20 KiB

<template>
<view class="backcor9 pd-main pdb60 headsbg">
<!-- 待支付 -->
<view v-if="recinfo.orderStatus == 1" class="order-de-title pd-main">
<view class="font22 fcor333">
待支付
</view>
<view class="font16 fcor666 mart10">
<text class="fcorred paddtright10">{{countdownm}}:{{countdowns}}</text>后订单自动取消
</view>
</view>
<!-- 其他 -->
<view v-if="recinfo.orderStatus != 1" class="order-de-title pd-main">
<view class="font22 fcor333">
{{typeText[recinfo.orderStatus]}}
</view>
<view class="font16 fcor666 mart10">
您的订单{{typeText[recinfo.orderStatus]}}
</view>
</view>
<view v-if="recinfo.orderStatus != 1" class=" marb10 backcorfff height50 fcor333 font15 border-8r">
<view class="width94">感谢您信任嗨森逛,欢迎再次消费</view>
</view>
<!-- 待支付时支持修改地址,暂时先不弄 -->
<!-- <view v-if="status == 0" class="marb20 pd-main backcolorfff border-8r">
<view class="flex-center-sp pd-tb10">
<view class="">
<view class="fontwig6 font18">金科才能收到你看得出纳思达</view>
<view class="mart5 fcor666">利<text class="paddleft10">15652365478</text></view>
</view>
<view class="align-fs edit-msg " @click="editOrder">
修改
</view>
</view>
</view> -->
<view class=" pd-main backcolorfff border-8r">
<!-- 商品信息 -->
<view v-for="(item,index) in goodsList" :key="index" class="paddtop10 border-b-666 ">
<view class="flex-center-sp">
<view class="">
<image class="st-img" :src="imageUrl+item.goodsImg" mode="aspectFill"></image>
</view>
<view class="flex-1 flex-center-sp">
<view class="width60 paddleft10">
<view class="marb10 font16 fontwig6">{{item.goodsName}}</view>
<view class="marb5 font13 fcor666">规格: {{item.goodsSpecName}}</view>
<view class="fcor666 font12">数量: {{item.saleCount}}</view>
</view>
<view class="font16 tr align-fs">
<view class="fontwig6" v-if="recinfo.memDiscountId">¥ {{item.goodsPrice}}</view>
<view class="fontwig6" v-if="!recinfo.memDiscountId">¥ {{item.goodsActualPrice}}</view>
</view>
</view>
</view>
<view class="dis-flex flex-end paddtop10 paddbotm10 ">
<!-- 已支付 判断发货与否,申请退款,申请售后 -->
<!-- <view class="btn1" v-if="recinfo.orderStatus == 2" @click="applyRefund">申请退款</view> -->
<view class="btn1" v-if="recinfo.orderStatus != 1 && recinfo.orderStatus != 5" @click="checkWuliu(item.id,item.ext6)">查看物流</view>
</view>
</view>
<!-- 当商品超过3个的时候 -->
<view v-if="!moreThanThree&&isShow" class="goodsMore flex-center" @click="checkMore">
还有{{goodsList2.length}}种商品<text class="icon-ymt to-down"></text>
</view>
<block v-if="moreThanThree">
<view v-for="(item,index) in goodsList2" :key="index" class="paddtop10 border-b-666 ">
<view class="flex-center-sp">
<view class="">
<image class="st-img" :src="imageUrl+item.goodsImg" mode="aspectFill"></image>
</view>
<view class="flex-1 flex-center-sp">
<view class="width60 paddleft10">
<view class="marb10 font16 fontwig6">{{item.goodsName}}</view>
<view class="marb5 font13 fcor666">规格: {{item.goodsSpecName}}</view>
<view class="fcor666 font12">数量: {{item.saleCount}}</view>
</view>
<view class="font16 tr align-fs">
<view class="fontwig6" v-if="recinfo.memDiscountId">¥ {{item.goodsPrice}}</view>
<view class="fontwig6" v-if="!recinfo.memDiscountId">¥ {{item.goodsActualPrice}}</view>
</view>
</view>
</view>
<view class="dis-flex flex-end paddtop10 paddbotm10 ">
<!-- 已支付 判断发货与否,申请退款,申请售后 -->
<!-- <view class="btn1" v-if="recinfo.orderStatus == 2" @click="applyRefund">申请退款</view> -->
<view class="btn1" v-if="recinfo.orderStatus != 1 && recinfo.orderStatus != 5" @click="checkWuliu(item.id,item.ext6)">查看物流</view>
</view>
</view>
</block>
<view v-if="moreThanThree" class="goodsMore flex-center" @click="checkMore">
共{{recinfo.highChildOrderList.length}}种商品<text class="icon-ymt to-up"></text>
</view>
<!-- 商品金额 -->
<view class="flex-center-sp pd-tb10">
<view class="fontsize">商品金额</view>
<view class="fontwig6"><text class="paddtright5">¥</text>{{goodsPrice | numFormat}}</view>
</view>
<!-- 运费 -->
<view class="flex-center-sp pd-tb10">
<view class="fontsize">运费
<!-- <text class="icon-ymt question fcor666 font16 paddleft5"></text> -->
</view>
<view class="fontwig6">
<view v-if="recinfo.goodsOrder" >
<text class="paddtright5">¥</text>{{recinfo.goodsOrder.freightPrice || 0}}
</view>
</view>
</view>
<!-- 优惠券 -->
<view class="flex-center-sp pd-tb10">
<view class="fontsize">优惠券</view>
<view class="fontwig6 fcorred">-<text class="paddtright5">¥</text>{{recinfo.deductionCouponPrice}}
</view>
</view>
<!-- 积分 -->
<view class="flex-center-sp pd-tb10">
<view class="fontsize">积分抵扣</view>
<view class="fontwig6 fcorred">-<text class="paddtright5">¥</text>{{(recinfo.payGold / 100).toFixed(2)}}
</view>
</view>
<!--支付优惠 -->
<view class="flex-center-sp pd-tb10">
<view class="fontsize">支付优惠</view>
<view class="fontwig6 fcorred">-<text class="paddtright5">¥</text>0</view>
</view>
<!-- 价格总额 -->
<view class="tr fontwig6 pd-tb10">
<!-- <text class="paddtright10">已优惠<text class="fcorred">¥ 12.01</text></text> -->
<view v-if="recinfo.orderStatus == 1 ||recinfo.orderStatus == 5 " class="dis-flex flex-end">商品总金额<text class="margle10 font22">¥{{recinfo.payPrice | numFormat}}</text> </view>
<view v-else class="dis-flex flex-end">
实付
<view class="font22">
<text class=" margle10 paddtright5">¥</text>{{recinfo.payRealPrice}}
</view>
</view>
</view>
</view>
<!-- 物流信息 -->
<view v-if="recinfo.orderStatus != 1 && recinfo.orderStatus != 5" class="pd-lr backcolorfff border-8r">
<!-- 收货信息 -->
<view v-if="recinfo.goodsDeliveryAddress" class="flex-center-sp pd-tb10 bordert">
<view class="fontsize align-fs width80px">收货信息</view>
<view class="fcor666 flex-1 tr font16">
<view class=" ">
{{recinfo.goodsDeliveryAddress.regionName +' '+recinfo.goodsDeliveryAddress.address}}</view>
<view class=" ">{{recinfo.goodsDeliveryAddress.consignee +' '+recinfo.goodsDeliveryAddress.phone}}
</view>
</view>
</view>
<!-- 物流信息 -->
<!-- <view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px">物流信息</view>
<view class="fcor666 font16 " @click="checkWuliu">
查看物流信息<text class="icon-ymt to-right fcor666 font16 paddleft5"></text>
</view>
</view> -->
<!-- 订单编号 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px">订单编号</view>
<view class="fcor666 flex-center-sp font16">
<text class="tr flex-1">{{orderId}}</text>
<text class=" margle10 font12 copy-num fcor666" @click="copyText(orderId)">复制</text>
</view>
</view>
<!-- 下单时间 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px">下单时间</view>
<view class="font16 fcor666">
{{recinfo.createTime | formatDate('-')}}
</view>
</view>
<!-- 支付方式 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px">支付方式</view>
<view class="font16 fcor666">
<view class=" fotrt " v-if="recinfo.payType == 1">支付宝</view>
<view class=" fotrt " v-if="recinfo.payType == 2">微信支付</view>
<view class=" fotrt " v-if="recinfo.payType == 3">积分兑换</view>
<view class=" fotrt " v-if="recinfo.payType == 4">汇联通工会卡</view>
<view class=" fotrt " v-if="recinfo.payType == 5">银联</view>
</view>
</view>
<!-- 备注 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px">备注</view>
<view class="fcor666 font16 ">
{{recinfo.remarks || "无"}}
</view>
</view>
</view>
<view v-if="recinfo.orderStatus == 1 || recinfo.orderStatus == 5" class="pd-lr backcolorfff border-8r">
<!-- 收货信息 -->
<view v-if="recinfo.goodsDeliveryAddress" class="flex-center-sp pd-tb10 bordert">
<view class="fontsize align-fs width80px">收货信息</view>
<view class="flex-1 tr fcor666 font16">
<view class=" ">
{{recinfo.goodsDeliveryAddress.regionName +' '+recinfo.goodsDeliveryAddress.address}}</view>
<view class=" ">{{recinfo.goodsDeliveryAddress.consignee +' '+recinfo.goodsDeliveryAddress.phone}}
</view>
</view>
</view>
<!-- 订单编号 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px">订单编号</view>
<view class="fcor666 flex-center-sp font16">
<text class="tr flex-1">{{orderId}}</text>
<text class=" margle10 font12 copy-num fcor666" @click="copyText(orderId)">复制</text>
</view>
</view>
<!-- 下单时间 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px ">下单时间</view>
<view class="font16 fcor666">
{{recinfo.createTime | formatDate('-')}}
</view>
</view>
<!-- 备注 -->
<view class="flex-center-sp pd-tb10 ">
<view class="fontsize width80px ">备注</view>
<view class="fcor666 font13 font16">
{{recinfo.remarks || "无"}}
</view>
</view>
</view>
<!-- 待支付时底部的按钮 -->
<view v-if="recinfo.orderStatus == 1" class="toPay font14 backcolorfff">
<view class="btn" @click="cancelOrder">取消订单</view>
<!-- <view class="btn" @click="editOrder">修改订单</view> -->
<view class="btn bgred" @click="payOrder">立即支付{{countdownm}}:{{countdowns}}</view>
</view>
<!-- -->
<!-- <view v-if="recinfo.orderStatus != 1" class="toPay font14 backcolorfff">
<view class="btn oneMore" @click="oneMoreOrder">再来一单</view>
<view class="btn" @click="deleteOrder">删除订单</view>
</view> -->
<view v-if="recinfo.orderStatus != 1" class="toPay font14 backcolorfff">
<!-- #ifdef MP-->
<button open-type="contact" class="btn" style="margin: 0; box-sizing: content-box;line-height: unset;">
联系客服
<!-- <image src="../../../static/img/home/cusser.png" mode="widthFix" class="icon30"></image> -->
</button>
<!-- #endif -->
<!-- #ifdef H5-->
<view class="btn" @click="playPhone">联系客服</view>
<!-- #endif -->
</view>
<wuliuPopup ref="wuliu"></wuliuPopup>
</view>
</template>
<script>
import wuliuPopup from '@/physical-merchants/classify/order/wuliuPupup/wuliuPupup.vue'
import {
getDetailByOrderNo,
cancel
} from '@/Utils/Api.js'
const app = getApp()
export default {
data() {
return {
countdownh: '', //倒计时时
countdownm: '', // 倒计时分
countdowns: '', //倒计时秒
timers: null,
orderId: '', //订单id
recinfo: {},
typeText: {
1: '待支付',
2: '已支付',
3: '已完成',
4: '已退款',
5: '已取消',
6: '退款中',
7: '退款失败'
},
imageUrl: app.globalData.imgUrl,
goodsList: [],
goodsList2: [],
goodsListAll: [],
moreThanThree: false,
isShow: false,
}
},
components: {
wuliuPopup
},
computed: {
goodsPrice() {
if (this.recinfo.memDiscountId) {
var str = 0;
this.goodsListAll.map(item => {
str = parseFloat((str + (item.saleCount * item.goodsPrice)).toFixed(2))
})
return str;
} else {
var str2 = 0;
this.goodsListAll.map(item => {
str2 = parseFloat((str2 + (item.saleCount * item.goodsActualPrice)).toFixed(2))
})
return str2;
}
}
},
onLoad(option) {
this.orderId = option.id
// console.log(this.orderId, "this.orderId")
},
onUnload() {
clearInterval(this.timers);
},
onShow() {
//页面显示时,加载订单信息
this.getDetailByOrder();
},
filters: {
//过滤器 用于格式化时间
formatDate: function(value, spe = '/') {
let data = new Date(value);
let year = data.getFullYear();
let month = data.getMonth() + 1;
let day = data.getDate();
let h = data.getHours();
let mm = data.getMinutes();
let s = data.getSeconds();
month = month >= 10 ? month : "0" + month;
day = day >= 10 ? day : "0" + day;
h = h >= 10 ? h : "0" + h;
mm = mm >= 10 ? mm : "0" + mm;
s = s >= 10 ? s : "0" + s;
return `${year}${spe}${month}${spe}${day} ${h}:${mm}:${s}`;
}
},
methods: {
//查询订单详情
getDetailByOrder() {
uni.showLoading({
title: '加载中...'
})
let params = {
orderNo: this.orderId,
}
getDetailByOrderNo(params).then(res => {
setTimeout(()=>{
uni.hideLoading();
},100)
if (res.return_code == '000000') {
this.recinfo = res.return_data;
// if (res.return_data.productType == 6) {
// this.getOrderByOrderNo();
// }
this.goodsListAll = this.recinfo.highChildOrderList;
if (this.recinfo.highChildOrderList.length > 3) {
this.isShow = true;
this.goodsList = this.recinfo.highChildOrderList.slice(0, 3)
this.goodsList2 = this.recinfo.highChildOrderList.slice(3)
} else {
this.isShow = false;
this.goodsList = this.recinfo.highChildOrderList
}
//待付款
if (res.return_data.orderStatus == 1) {
this.timers = setInterval(() => {
this.showtime()
}, 1000)
}
}
})
},
showtime() {
var nowtime = (new Date()).getTime(); //获取当前时间
var endtime = this.recinfo.createTime + 600000; //定义结束时间 600000是10分钟
var lefttime = endtime - nowtime; //距离结束时间的毫秒数
var leftd = Math.floor(lefttime / (1000 * 60 * 60 * 24)); //计算天数
var lefth = Math.floor((lefttime / (1000 * 60 * 60) % 24) + leftd * 24) < 10 ? "0" + Math.floor((lefttime /
(1000 * 60 * 60) % 24) + leftd * 24) : Math.floor((lefttime / (1000 * 60 * 60) % 24) + leftd *
24); //计算小时数
var leftm = Math.floor(lefttime / (1000 * 60) % 60) < 10 ? "0" + Math.floor(lefttime / (1000 * 60) % 60) :
Math.floor(lefttime / (1000 * 60) % 60); //计算分钟数
var lefts = Math.floor(lefttime / 1000 % 60) < 10 ? "0" + Math.floor(lefttime / 1000 % 60) : Math.floor(
lefttime / 1000 % 60); //计算秒数
this.countdownh = lefth; //返回倒计时的字符串
this.countdownm = leftm; //返回倒计时的字符串
this.countdowns = lefts; //返回倒计时的字符串
// 倒计时结束时,显示00:00:00
if (lefttime < 0) {
clearInterval(this.timers);
this.getDetailByOrder();
this.countdownh = this.countdownm = this.countdowns = "00";
}
},
// 查看更多商品
checkMore() {
this.moreThanThree = !this.moreThanThree
},
// 查看物流
checkWuliu(id,status) {
// let logisticsNo = this.recinfo.goodsOrder.logisticsNo;
if (status == null) {
uni.showToast({
title: '暂无数据',
icon: 'none',
duration: 2000
})
return
}
this.$refs.wuliu.show(id)
},
// 点击修改订单
editOrder() {
// uni.navigateTo({
// url:'/physical-merchants/classify/order/editOrder'
// })
},
// 取消订单
cancelOrder() {
let that = this;
uni.showModal({
title: '取消订单',
content: '确定取消此订单?',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '加载中...'
})
let params = {
orderNo: this.recinfo.orderNo
}
cancel(params).then(res => {
if (res.return_code == '000000') {
uni.hideLoading();
uni.showToast({
title: res.return_data,
icon: 'none',
duration: 2000
})
let pages = getCurrentPages() //页面栈
let prePage = pages[pages.length - 2] //上一页
prePage.$vm.reFresh = Math.random() //触发上一页监听器
uni.navigateBack() //返回上一页
} else {
uni.showToast({
title: res.return_msg,
icon: 'none',
duration: 2000
})
uni.hideLoading()
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
// 支付订单
payOrder() {
let obj = {
orderNo : this.recinfo.orderNo,
createTime:this.recinfo.createTime,
payPrice:this.recinfo.payPrice
}
obj = JSON.stringify(obj)
uni.navigateTo({
url: '/physical-merchants/classify/order/pay?obj=' + obj
})
},
//联系客服
playPhone() {
uni.showModal({
title: '客服',
content: '4006780738',
success: function(res) {
if (res.confirm) {
uni.makePhoneCall({
phoneNumber: '4006780738', //电话号码
success: function(e) {
console.log(e);
},
fail: function(e) {
console.log(e);
}
})
}
}
})
},
// 订单取消时的再来一单
oneMoreOrder() {
},
// 订单取消时的删除订单
deleteOrder() {
},
// 复制的
copyText(text) {
// #ifdef H5
this.$copyText(text).then(
res => {
uni.showToast({
title: '复制成功'
})
}
)
// #endif
// #ifndef H5
uni.setClipboardData({
data: text,
success: () => {
uni.showToast({
title: '复制成功'
})
}
})
// #endif
},
// 申请退款
applyRefund(){
// 在这里需要判断商品是否已发货
// 如果已发货 ==>去选择退货类型
uni.navigateTo({
url:"/physical-merchants/applyRefund/selectApplyRefund?msg="+encodeURIComponent(JSON.stringify(this.recinfo))
})
//如果未发货 ==>直接跳到申请页面
// uni.navigateTo({
// url:"/physical-merchants/applyRefund/applyRefund?msg="+encodeURIComponent(JSON.stringify(this.recinfo))+"&refundType="+1
// })
}
}
}
</script>
<style lang="scss" scoped>
.fontsize{
font-size: 16px;
}
.bottomstu {
position: fixed;
bottom: 0px;
border-top: 1px solid #cecdcd;
}
.cusservice {
height: 30px;
width: 90px;
margin-right: 20px;
border: 1px solid #6c6c6c;
border-radius: 25px;
}
.headsbg {
background: linear-gradient(to bottom, #3da7e7, #e8eff4) no-repeat;
background-size: 100% 200px;
}
.width80px {
// width: 80px;
}
.flex-center-sp {
display: flex;
justify-content: space-between;
align-items: center;
}
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
.align-fs {
align-self: flex-start;
}
.tr {
text-align: right;
}
.flex-1 {
flex: 1;
}
.st-img {
width: 82px;
height: 82px;
}
.goodsMore {
padding: 10px 0;
text-align: center;
border-top: 1px solid #f6f6f6;
border-bottom: 1px solid #f6f6f6;
}
// 商品金额
.pd-tb10 {
padding: 10px 0;
}
.td-lt {
text-decoration: line-through;
}
.bordert {
border-top: 2px solid #f6f6f6;
}
// 复制按钮
.copy-num {
padding: 0 5px;
border: 1px solid #666666;
border-radius: 5px;
display: inline-block;
vertical-align: middle;
}
// 修改按钮
.edit-msg {
border: 1px solid #D7D3D0;
width: 50px;
height: 30px;
line-height: 30px;
text-align: center;
border-radius: 15px;
}
.pdb60 {
padding-bottom: 60px;
}
// 底部待支付按钮
.toPay {
height: 30px;
padding: 10px 15px;
display: flex;
justify-content: flex-end;
align-items: center;
border-top: 1px solid #f6f6f6;
position: fixed;
// bottom: 0;
bottom:var(--window-bottom);
right: 0;
left: 0;
}
.btn1{
height: 20px;
padding: 5px 10px;
border-radius: 15px;
margin-left: 15px;
border: 1px solid #f0f0f0;
color: #666666;
font-size: 16px;
}
.btn {
height: 20px;
padding: 5px 10px;
border-radius: 15px;
margin-left: 15px;
border: 1px solid #666666;
color: #666666;
font-size: 16px;
&.bgred {
color: #ffffff;
background-color: #FF2342;
border: 1px solid #FF2342;
}
&.oneMore {
color: #FF2342;
border: 1px solid #FF2342;
}
}
</style>