Commit 92663815 authored by qipeng's avatar qipeng

退订页面

parent 32794fac
...@@ -6,12 +6,12 @@ ...@@ -6,12 +6,12 @@
</view> </view>
<view class="apply-ticket general-Box"> <view class="apply-ticket general-Box">
<view class="ticket-title"> <view class="ticket-title">
<view class="title-name">长江索道(往返票/成人票</view> <view class="title-name">{{orderInfo.merchantName}}{{orderInfo.productName}}</view>
<view class="title-num">x2</view> <view class="title-num">x{{orderInfo.orderNum}}</view>
</view> </view>
<view class="ticket-timer">游玩当日17:00之前未使用可退</view> <view class="ticket-timer">游玩当日{{orderInfo.orderRefundRuleList[0].refundTime}}之前未使用可退</view>
</view> </view>
<view class="apply-user general-Box"> <!-- <view class="apply-user general-Box">
<view class="user-title"> <view class="user-title">
<view class="title-name">用户选择</view> <view class="title-name">用户选择</view>
<u-checkbox @change="checkedAll" v-model="applyClickAll" >全选</u-checkbox> <u-checkbox @change="checkedAll" v-model="applyClickAll" >全选</u-checkbox>
...@@ -24,15 +24,15 @@ ...@@ -24,15 +24,15 @@
:name="item.name" :name="item.name"
>{{item.name}}</u-checkbox> >{{item.name}}</u-checkbox>
</u-checkbox-group> </u-checkbox-group>
</view> </view> -->
<view class="apply-moneyBox general-Box"> <view class="apply-moneyBox general-Box">
<view class="moneyBox-list"> <view class="moneyBox-list">
<view class="list-name">订单实付</view> <view class="list-name">订单实付</view>
<view class="list-money">60</view> <view class="list-money">{{orderInfo.pdOrderMoney}}</view>
</view> </view>
<view class="moneyBox-list"> <view class="moneyBox-list">
<view class="list-name">退款金额</view> <view class="list-name">退款金额</view>
<view class="list-money list-clolrOrange">60</view> <view class="list-money list-clolrOrange">{{parseFloat(orderInfo.pdOrderMoney)-parseFloat(orderInfo.refundFee)}}</view>
</view> </view>
</view> </view>
<view class="apply-cause general-Box"> <view class="apply-cause general-Box">
...@@ -46,9 +46,15 @@ ...@@ -46,9 +46,15 @@
</view> </view>
</view> </view>
</view> </view>
<view class="apply-textarea general-Box"> <view class="apply-textarea general-Box" v-if="causeNum==5">
<u-input v-model="causeInput" type="textarea" placeholder="补充详细退改原因以便商家更快帮您处理" maxlength="200" /> <u-input v-model="causeInput" type="textarea" placeholder="补充详细退改原因以便商家更快帮您处理" maxlength="200" />
</view> </view>
<view class="apply-toButton" v-if="isRefund" @click="confirm()">
退款提交
</view>
<view class="apply-toButton" v-else>
退款时间为08:00:00-{{orderInfo.orderRefundRuleList[0].refundTime}}
</view>
</view> </view>
</template> </template>
...@@ -70,63 +76,173 @@ export default { ...@@ -70,63 +76,173 @@ export default {
causeList:[ causeList:[
{ {
name:'更改出行日期', name:'更改出行日期',
labelNum:0 labelNum:1
}, },
{ {
name:'计划有变', name:'计划有变',
labelNum:1 labelNum:2
}, },
{ {
name:'信息填错', name:'信息填错',
labelNum:2 labelNum:3
}, },
{ {
name:'景区临时关闭', name:'景区临时关闭',
labelNum:3 labelNum:4
}, },
{ {
name:'其他原因', name:'其他原因',
labelNum:4 labelNum:5
}, },
],//退订原因 ],//退订原因
causeNum:null, causeNum:null,
reason:'',//退单原因
causeInput:'',//其他原因 causeInput:'',//其他原因
id:'',//订单ID
openId:'',//用户ID
orderInfo:{},//订单信息
isRefund:false,//是否可以退单
} }
}, },
onLoad(option) { onLoad(option) {
this.id = option.orderId
this.openId = uni.getStorageSync('openid') //openid oroHZ5FaUQ_SOOC_uQQP92fJpBRE oh2UV1lyYABHMZ1rMlgjhVHyyYDQ
//this.openId = 'oh2UV1lyYABHMZ1rMlgjhVHyyYDQ'
this.getDetail()
}, },
methods: { methods: {
confirm(){//提交退订申请
if(this.causeNum==5&&this.causeInput==''){
uni.showToast({
title: '请输入原因',
icon: 'none'
})
return false
}
if(this.causeNum==5){
this.reason = this.causeInput
}else if(this.causeNum==1){
this.reason = '更改出行日期'
}else if(this.causeNum==2){
this.reason = '计划有变'
}else if(this.causeNum==3){
this.reason = '信息填错'
}else if(this.causeNum==4){
this.reason = '景区临时关闭'
}
if(this.reason==''){
uni.showToast({
title: '请选择退改原因',
icon: 'none'
})
return false
}
var data = {
orderId:this.orderInfo.id,
userId:this.openId,
refundReason:this.reason,
refundNum:this.orderInfo.orderNum,
refundMoney:parseFloat(this.orderInfo.pdOrderMoney)-parseFloat(this.orderInfo.depositReceived),
pdRefundMoney:parseFloat(this.orderInfo.pdOrderMoney),
refundType:0,
pdRefundFee:this.orderInfo.depositReceived,
}
this.$request('order/userOrder/refundTicket',data).then((res)=>{
if(res.code == '00'){
uni.showToast({
title: '申请成功',
icon: 'none'
})
uni.reLaunch({
url: '/pages/my/order/orderList/orderList'
})
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
getDetail(){//订单信息加载
var data = {
orderId:this.id,
userId:this.openId
}
this.$request('order/userOrder/findOrderDetail',data).then((res)=>{
if(res.code == '00'){
this.orderInfo = res.data
if(this.getNowTime()>'08:00:00'&&this.getNowTime()<this.orderInfo.orderRefundRuleList[0].refundTime){
this.isRefund = true
}else{
this.isRefund = false
}
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
//当前选择的原因 //当前选择的原因
clickNewFun(labelNum){ clickNewFun(labelNum){
this.causeNum = labelNum this.causeNum = labelNum
}, },
// 选中某个复选框时,由checkbox时触发 可以获取当前选择值的所有信息 // // 选中某个复选框时,由checkbox时触发 可以获取当前选择值的所有信息
checkboxChange(e) { // checkboxChange(e) {
// console.log(e) // // console.log(e)
}, // },
// 选中任一checkbox时,由checkbox-group触发 已经选择了多少选项 // // 选中任一checkbox时,由checkbox-group触发 已经选择了多少选项
checkboxGroupChange(e) { // checkboxGroupChange(e) {
// console.log(e) // // console.log(e)
if(this.applyUserList.length==e.length){ // if(this.applyUserList.length==e.length){
this.applyClickAll = true // this.applyClickAll = true
}else{ // }else{
this.applyClickAll =false // this.applyClickAll =false
// }
// },
// // 全选
// checkedAll(e) {
// console.log(e)
// if(e.value==true){
// this.applyUserList.map(val => {
// val.checked = true
// })
// }else{
// this.applyUserList.map(val => {
// val.checked = false
// })
// }
// },
getNowTime() {//获取当前时间(HH-MM-SS)
var date = new Date()
var seperator1 = '-'
var seperator2 = ':'
var month = date.getMonth() + 1
var strDate = date.getDate()
if (month >= 1 && month <= 9) {
month = '0' + month
} }
}, if (strDate >= 0 && strDate <= 9) {
// 全选 strDate = '0' + strDate
checkedAll(e) { }
console.log(e) var Hours = date.getHours()
if(e.value==true){ var Minutes = date.getMinutes()
this.applyUserList.map(val => { var Seconds = date.getSeconds()
val.checked = true
}) if (Hours >= 0 && Hours <= 9) {
}else{ Hours = '0' + Hours
this.applyUserList.map(val => {
val.checked = false
})
} }
if (Minutes >= 0 && Minutes <= 9) {
Minutes = '0' + Minutes
}
if (Seconds >= 0 && Seconds <= 9) {
Seconds = '0' + Seconds
}
var time = Hours + seperator2 + Minutes + seperator2 + Seconds
return time
}, },
} }
} }
...@@ -267,4 +383,18 @@ export default { ...@@ -267,4 +383,18 @@ export default {
padding: 24rpx !important; padding: 24rpx !important;
} }
} }
.apply-toButton{
width: 750rpx;
height: 98rpx;
background: #3688FF;
box-shadow: 0rpx 4rpx 12rpx 2rpx rgba(0,0,0,0.16);
font-size: 28rpx;
font-weight: bold;
color: #FFFFFF;
line-height: 98rpx;
text-align: center;
position: fixed;
bottom: 0;
left: 0;
}
</style> </style>
<template> <template>
<view class="page-box"> <view class="page-box">
<view class="order-titleTips" v-if="orderInfo.channelType==8">
温馨提示:如需退票,请向您购票的渠道咨询
</view>
<view class="order-titleTips" v-if="orderInfo.orderStatus==6">
温馨提示:系统将在3个工作日内核实情况,符合退改规则,退款 金额将在3个工作日内原路退还。
</view>
<view class="order-status"> <view class="order-status">
<view class="status-box"> <view class="status-box">
<template v-if="orderInfo.channelType==8"> <template v-if="orderInfo.channelType==8">
...@@ -9,19 +15,7 @@ ...@@ -9,19 +15,7 @@
</template> </template>
<template v-else> <template v-else>
<view class="status-type" v-if="orderInfo.orderStatus==2"> <view class="status-type">
<!-- <template v-if="orderInfo.orderType==1">
出票成功
</template>
<template v-else-if="orderInfo.orderType==2">
预订成功
</template>
<template v-else-if="orderInfo.orderType==3">
预订成功
</template>
<template v-else-if="orderInfo.orderType==4">
购买成功
</template> -->
{{orderInfo.orderStatus|orderStatus1}} {{orderInfo.orderStatus|orderStatus1}}
</view> </view>
<!-- {{orderInfo.merchantName}}{{orderInfo.productName}}) --> <!-- {{orderInfo.merchantName}}{{orderInfo.productName}}) -->
...@@ -30,6 +24,35 @@ ...@@ -30,6 +24,35 @@
</view> </view>
</view> </view>
<view class="order-unsubscribe" v-if="orderInfo.orderStatus==3||orderInfo.orderStatus==6||orderInfo.orderStatus==7||orderInfo.orderStatus==8">
<view class="unsubscribe-title" :class="unsubscribeType==true?'unsubscribe-title2':''" @click="unsubscribeUpDownFun()">
<view class="title-name">退订详情</view>
<view class="title-right">
<view class="right-name">查看详情</view>
<u-icon name="arrow-down" color="#3688FF" size="24" v-if="unsubscribeType==false"></u-icon>
<u-icon name="arrow-up" color="#3688FF" size="24" v-else></u-icon>
</view>
</view>
<view class="unsubscribe-timeline" v-if="unsubscribeType">
<view class="timeline-list" v-for="(item,index) in timelineList" :key="index">
<view class="list-box">
<view class="list-line"></view>
<view class="list-line2"></view>
<view class="list-markers">
<u-icon name="checkbox-mark" color="#FFFFFF" size="16"></u-icon>
</view>
<view class="list-markersBig">
<view class="markersBig-In"></view>
</view>
</view>
<view class="list-case">
<view class="case-name">{{item.name}}</view>
<view class="case-text">{{item.message}}</view>
<view class="case-timer">{{item.timer}}</view>
</view>
</view>
</view>
</view>
<template v-if="orderInfo.orderType==1&&ticketCode!=null&&orderInfo.orderStatus==2||orderInfo.orderType==1&&ticketCode!=null&&orderInfo.orderStatus==4||orderInfo.orderType==3&&ticketCode!=null&&orderInfo.orderStatus==4||orderInfo.orderType==3&&ticketCode!=null&&orderInfo.orderStatus==2"> <template v-if="orderInfo.orderType==1&&ticketCode!=null&&orderInfo.orderStatus==2||orderInfo.orderType==1&&ticketCode!=null&&orderInfo.orderStatus==4||orderInfo.orderType==3&&ticketCode!=null&&orderInfo.orderStatus==4||orderInfo.orderType==3&&ticketCode!=null&&orderInfo.orderStatus==2">
<view class="order-certificate order-allType order-positionTop" :class="orderInfo.orderStatus==6?'order-positionTopAct':''" > <view class="order-certificate order-allType order-positionTop" :class="orderInfo.orderStatus==6?'order-positionTopAct':''" >
<!-- <view class="alltype-title"> <!-- <view class="alltype-title">
...@@ -317,10 +340,10 @@ ...@@ -317,10 +340,10 @@
</template> </template>
<template v-else-if="orderInfo.isRefund==2">随时可退</template> <template v-else-if="orderInfo.isRefund==2">随时可退</template>
<template v-if="ticketStatus"> <template v-if="ticketStatus">
<view class="list-btnRefund" v-if="orderInfo.orderStatus==2&&orderInfo.isRefund!=0&&ticketStatus==0" @click="refundJump(orderInfo.id)">退款/售后</view> <view class="list-btnRefund" v-if="orderInfo.orderStatus==2&&orderInfo.isRefund!=0&&ticketStatus==0" @click="refundJump(orderInfo.id)">退</view>
</template> </template>
<template v-else> <template v-else>
<view class="list-btnRefund" v-if="orderInfo.orderStatus==2&&orderInfo.isRefund!=0" @click="refundJump(orderInfo.id)">退款/售后</view> <view class="list-btnRefund" v-if="orderInfo.orderStatus==2&&orderInfo.isRefund!=0" @click="refundJump(orderInfo.id)">退</view>
</template> </template>
</view> </view>
...@@ -385,10 +408,10 @@ export default { ...@@ -385,10 +408,10 @@ export default {
return '退款中' return '退款中'
break break
case 7: case 7:
return '部分退退货退款' return '部分退款'
break break
case 8: case 8:
return '全部退退货退款' return '全部退款'
break break
case 9: case 9:
return '取消' return '取消'
...@@ -556,6 +579,29 @@ export default { ...@@ -556,6 +579,29 @@ export default {
photoType:false,//是否显示优惠券 photoType:false,//是否显示优惠券
claimStatus:1,//领取状态 0未领取 1已领取 claimStatus:1,//领取状态 0未领取 1已领取
findCouponPhoto:{},//相册优惠券 findCouponPhoto:{},//相册优惠券
unsubscribeType:false,//头部 退订详情 收起/展开
timelineList:[
{
name:'退订来源',
message:'系统',
timer:'2023/09/05 17:42:32',
},
{
name:'退订原因',
message:'购买门票次数超过今日上限(每日限购 2 次)',
timer:'2023/09/05 17:42:32',
},
{
name:'退订结果',
message:'退订成功',
timer:'2023/09/05 17:42:32',
},
{
name:'退款进度',
message:'¥60.00 已原路退回',
timer:'2023/09/05 17:42:32',
},
],//退单进程
} }
}, },
onShow() { onShow() {
...@@ -613,6 +659,13 @@ export default { ...@@ -613,6 +659,13 @@ export default {
}) })
}, },
methods: { methods: {
unsubscribeUpDownFun(){//头部订单详情开关
if(this.unsubscribeType==false){
this.unsubscribeType=true
}else{
this.unsubscribeType=false
}
},
toMyCoupon(){//跳转我的优惠券 toMyCoupon(){//跳转我的优惠券
uni.navigateTo({ uni.navigateTo({
url:'/pages/my/couponCenter/myCouponList/myCouponList' url:'/pages/my/couponCenter/myCouponList/myCouponList'
...@@ -736,6 +789,9 @@ export default { ...@@ -736,6 +789,9 @@ export default {
// clearInterval(timer) // clearInterval(timer)
// }) // })
} }
if(this.orderInfo.orderStatus==3||this.orderInfo.orderStatus==6||this.orderInfo.orderStatus==7||this.orderInfo.orderStatus==8){
this.unsubscribeType = true
}
this.findCouponListFun() this.findCouponListFun()
}else{ }else{
uni.showToast({ uni.showToast({
...@@ -1042,9 +1098,12 @@ export default { ...@@ -1042,9 +1098,12 @@ export default {
this.countTime(timer) this.countTime(timer)
},1000) },1000)
}, },
refundJump(id){//-------------------景区跳转 refundJump(id){//-------------------退订跳转
// uni.reLaunch({
// url: '/pages/my/order/afterSale/applyAfterSale/applyAfterSale?orderId='+id+'&ifyukuaiCode='+this.ifyukuaiCode
// })
uni.reLaunch({ uni.reLaunch({
url: '/pages/my/order/afterSale/applyAfterSale/applyAfterSale?orderId='+id+'&ifyukuaiCode='+this.ifyukuaiCode url: '/pages/my/applyUnsubscription/applyUnsubscription?orderId='+id+'&ifyukuaiCode='+this.ifyukuaiCode
}) })
}, },
returnMini(){ returnMini(){
...@@ -1090,7 +1149,7 @@ export default { ...@@ -1090,7 +1149,7 @@ export default {
} }
.order-status { .order-status {
width: 750rpx; width: 750rpx;
height: 464rpx; max-height: 464rpx;
background: linear-gradient(180deg, #3688FF 0%, #3688FF 37%, #ECF3FE 100%); background: linear-gradient(180deg, #3688FF 0%, #3688FF 37%, #ECF3FE 100%);
padding: 48rpx 32rpx 32rpx 40rpx; padding: 48rpx 32rpx 32rpx 40rpx;
box-sizing: border-box; box-sizing: border-box;
...@@ -1601,4 +1660,166 @@ export default { ...@@ -1601,4 +1660,166 @@ export default {
} }
} }
} }
/*头部提示*/
.order-titleTips{
padding: 16rpx 32rpx 16rpx 32rpx;
color: #FC771D;
font-size: 24rpx;
line-height: 34rpx;
background: #FFF1E8;
}
/*退订详情*/
.order-unsubscribe{
width: 710rpx;
background-color: #fff;
box-shadow: 0rpx 0rpx 6rpx 0rpx rgba(0, 0, 0, 0.04);
border-radius: 16rpx 16rpx 16rpx 16rpx;
padding: 0 24rpx 0 24rpx;
margin: 0 auto 16rpx auto;
overflow: hidden;
.unsubscribe-title{
display: flex;
justify-content: space-between;
border-bottom: 2rpx solid #ECECEC;
.title-name{
font-size: 24rpx;
font-weight: bold;
color: #FC771D;
line-height: 82rpx;
}
.title-right{
display: flex;
font-size: 24rpx;
color: #3688FF;
line-height: 82rpx;
.right-name{
margin-right: 5rpx;
}
/deep/ .u-icon__icon{
top: 5rpx !important;
}
}
}
.unsubscribe-title2{
margin-bottom: 24rpx;
}
.unsubscribe-timeline{
.timeline-list{
position: relative;
padding-bottom: 40rpx;
padding-left: 48rpx;
.list-box{
width: 32rpx;
margin: auto;
position: absolute;
left: 0rpx;
top: 0;
bottom: 0;
}
.list-line{
width: 2rpx;
background-color: #ECECEC;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 10;
}
.list-markers{
width: 16rpx;
height: 16rpx;
background-color: #999999;
border-radius: 25rpx;
margin: auto;
position: absolute;
left: 0;
right: 0;
top: 12rpx;
z-index: 11;
/deep/ u-icon{
position: absolute;
top: 0;
left: 0;
}
}
.list-case{
.case-name{
font-size: 28rpx;
color: #333333;
line-height: 40rpx;
margin-bottom: 16rpx;
}
.case-text{
font-size: 24rpx;
font-weight: bold;
color: #333333;
line-height: 34rpx;
margin-bottom: 8rpx;
}
.case-timer{
font-size: 20rpx;
color: #999999;
line-height: 28rpx;
}
}
}
.timeline-list:nth-child(1){
.list-line{
top: 14rpx
}
}
.timeline-list:nth-last-child(1){
padding-bottom: 24rpx;
.list-line{
display: none;
}
.list-line2{
width: 2rpx;
height: 14rpx;
background-color: #ECECEC;
margin: auto;
position: absolute;
top: 0;
left: 0;
right: 0;
z-index: 10;
}
.list-markers{
display: none;
}
.list-markersBig{
width: 32rpx;
height: 32rpx;
background-color: #ADCDFC;
border-radius: 25rpx;
margin: auto;
position: absolute;
left: 0;
right: 0;
top: 6rpx;
z-index: 11;
.markersBig-In{
width: 16rpx;
height: 16rpx;
background-color: #3688FF;
border-radius: 25rpx;
margin: auto;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 12;
}
}
.list-case{
.case-text{
color: #3688FF;
}
}
}
}
}
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment