Files
douhuo-h5/pages/synthesis/expandOrder.vue
2023-06-09 17:59:05 +08:00

629 lines
15 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="content">
<view class="orderTab">
<view class="orderTab-item" :class="{active : yearStatus == 0}" @click="stateClick('0')">
<text>未付款</text>
</view>
<view class="orderTab-item" :class="{active : yearStatus == 1}" @click="stateClick('1')">
<text>已付款</text>
</view>
<view class="orderTab-item" :class="{active : yearStatus == 2}" @click="stateClick('2')">
<text>已退款</text>
</view>
</view>
<view class="list" v-if="yearArr.length > 0">
<view class="listItem" v-for="(item, index) in yearArr" :key="index">
<view class="listItem-no">
订单号{{item.order_no}}
</view>
<view class="listItem-cont">
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单状态
</view>
<view class="listItem-cont-text listItem-cont-status">
{{item.status.text}}
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
案件类型
</view>
<view class="listItem-cont-text">
{{item.expand.title}}
</view>
</view>
<view class="listItem-cont-label" v-if="item.can.lawyer_status != 0">
<view class="listItem-cont-name">
律师匹配
</view>
<view class="listItem-cont-text listItem-cont-price">
<block v-if="item.can.lawyer_status == 1">待匹配律师</block>
<block v-else-if="item.can.lawyer_status == 2">已匹配律师</block>
</view>
</view>
<view class="listItem-cont-label" v-if="item.lawyer">
<view class="listItem-cont-name">
所属律师
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.lawyer.name}}
</view>
</view>
<view class="listItem-cont-label">
<view class="listItem-cont-name">
订单金额
</view>
<view class="listItem-cont-text listItem-cont-price">
{{item.total}}
</view>
</view>
<view class="listItem-cont-label" v-if="item.need_pay_diff_prices != 0">
<view class="listItem-cont-name">
补差价金额
</view>
<view class="listItem-cont-text listItem-cont-diff" @click="diffClick(item)">
{{item.need_pay_diff_prices}}
<view class="listItem-cont-btn">去支付</view>
</view>
</view>
<view class="listItem-cont-label" v-if="item.need_pay_diff_prices != 0">
<view class="listItem-cont-name">
下单时间
</view>
<view class="listItem-cont-text listItem-cont-diff" @click="diffClick(item)">
{{item.created_at}}
</view>
</view>
</view>
<view class="listItem-labor">
<view class="listItem-labor-time">
<view @click="operateMore(item.expand_order_id)" v-if="item.can.cancel">更多</view>
</view>
<view class="listItem-labor-btn">
<view v-if="item.can.pay_status == 1" @click="expressSheet(item.expand_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
去支付
</view>
<view v-else-if="item.can.pay_status == 2" class="listItem-labor-go active">
审核中
</view>
<view v-else-if="item.can.pay_status == 3" @click="$Router.push({name: 'VoucherOpen', params: {payId: item.offline_pays.offline_pay_id, orderId: item.expand_order_id, orderType: item.order_type, type: 'edit'}})" class="listItem-labor-go">
审核驳回
</view>
<view v-if="item.can.sign" @click="esignClick(item.expand_order_id, item.order_type)" class="listItem-labor-go yellow">
去签约
</view>
<view v-if="item.can.diff_price" @click="returnGo(item.expand_order_id, item.order_type, item.can, item.price)" class="listItem-labor-go">
去缴费
</view>
</view>
</view>
</view>
</view>
<view class="pack-center pages-hint" v-else>
<image src="https://douhuo-storage.oss-cn-beijing.aliyuncs.com/images/2023/06/06/7ad417d0c215db601b8e1bead05c3a5e.png"></image>
<view>暂无订单</view>
</view>
<!-- 支付弹出 -->
<view class="namePop" :class="{active: payStatus}"></view>
<view class="nameCont" :class="{active: payStatus}">
<view class="nameCont-white">
<view class="nameCont-top">
<view class="nameCont-title">缴费金额</view>
<view class="nameCont-input">
<input type="numeric" v-model="price" placeholder="输入缴费金额" />
</view>
</view>
<view class="nameCont-btn">
<view class="nameCont-btn-go" @click="returnGo">取消</view>
<view class="nameCont-btn-go" @click="issueForm">确定</view>
</view>
</view>
</view>
<!-- 打款凭证弹出 -->
<view class="voucherBack" :class="{active : voucherState}"></view>
<view class="voucherPop" :class="{active : voucherState}">
<view class="tipsWhite">
<image class="voucherPop-img" src="https://cdn.douhuofalv.com/images/2023/04/17/f4a3c45fe9aa7db143a362fc5b13b31d.png" mode="widthFix"></image>
<view class="voucherPop-title">
<view class="voucherPop-name">支付提示</view>
<view class="voucherPop-text">抱歉此订单不支持线上支付请上传打款凭证</view>
<view class="voucherPop-btn">
<view class="voucherPop-go" @click="voucherState = false">
暂不支付
</view>
<view class="voucherPop-go voucherPop-up" @click="clickOpen">
上传凭证
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { expandOrder, entrustPay, esignUrl, expandCancel } from '@/apis/interfaces/synthesis'
export default {
data() {
return {
yearStatus : 0, // 0 未付款 1 2
yearArr : [], // 拓展单列表
price : '', // 缴费金额
payStatus : false, // 缴费弹出
page : {}, // 分页信息
lodingStats : false, // 加载状态
voucherState : false, // 上传凭证弹出
orderType : '', // 委托单列表-类型
orderId : '', // 委托单列表-id
orderPrice : '', // 订单金额
}
},
onShow() {
// 获取-拓展单-列表
this.yearServe();
},
methods: {
// 拓展单-列表
yearServe(page){
expandOrder({
status : this.yearStatus,
page : page || 1
}).then(res => {
let esArr = res.data
let list = this.yearArr,
newData = []
if(page == 1 || page == undefined) list = []
newData = list.concat(esArr)
this.yearArr = newData
this.page = res.page
this.lodingStats = false
uni.stopPullDownRefresh()
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 状态选择
stateClick(state) {
this.yearStatus = state
// 获取-拓展单列表
this.yearServe();
},
// 上传凭证
clickOpen() {
this.voucherState = false
this.$Router.push({name: 'VoucherOpen', params: {orderId: this.orderId, orderType: this.orderType, price: this.orderPrice }})
},
// 后台-补差价
diffClick(e) {
this.$Router.push({name: 'DiffList', params: {orderId: e.expand_order_id, orderType:e.order_type, payForm: 'expand'}})
},
// 去签约
esignClick(id,type) {
esignUrl({
order_id : id,
order_type: type,
redirect_url: "https://web.douhuofalv.com/user/index",
// redirect_url: "https://web.douhuotest.douhuofalv.com/user/index",
channel : 'h5',
app_scheme : ''
}).then(res => {
window.location.href= res.sign_url
}).catch(err => {
uni.showToast({
title: err.message,
icon: "none"
})
})
},
// 手动支付弹出
returnGo(id, type, can) {
this.payStatus = !this.payStatus
this.orderId = id
this.orderType = type
this.orderCan = can
},
// 手动支付提交
issueForm() {
entrustPay({
order_type : this.orderType,
order_id : this.orderId,
price : this.price
}).then(res => {
this.payStatus = false
this.price = ''
// 选择支付方式
this.expressSheet(res.synthesis_diff_price_id, res.order_type, res.can)
}).catch(err => {
this.payStatus = false
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 选择支付方式
expressSheet(id, type, can, price) {
this.orderId = id
this.orderType = type
this.orderPrice = price
uni.showActionSheet({
itemList: ['线上支付', '线下支付'],
success: sheetRes => {
if(sheetRes.tapIndex == 0) {
if(can.online) {
this.$Router.push({name: 'FeePay', params: {id: id, orderType: type, price: price, payForm: 'expand'}})
return
}
this.voucherState = true
} else if (sheetRes.tapIndex == 1) {
this.$Router.push({name: 'VoucherOpen', params: {orderId: id, orderType: type, price: price}})
}
},
fail: sheetFail => {
uni.showToast({
title: '取消支付',
icon : 'none'
})
}
})
},
// 更多操作
operateMore(id) {
wx.showActionSheet({
itemList: ['取消订单'],
success: ()=> {
wx.showModal({
title : '提示',
content : '是否取消订单',
success : res=> {
if (res.confirm) {
expandCancel(id).then(res => {
wx.showToast({
title:'取消成功',
icon:'none'
})
// 获取-委托单-列表
this.yearServe();
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
})
},
fail: err=> {}
})
},
// 页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh() {
// 获取-拓展单-列表
this.yearServe();
},
// 上拉加载
onReachBottom(){
this.lodingStats = true
let pageNumber = this.page.current
if(this.page.has_more){
pageNumber++
// 获取-拓展单-列表
this.yearServe(pageNumber);
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
background-color: #f7f9fa;
overflow-y: scroll;
height: 100%;
position: absolute;
width: 100%;
}
.orderTab {
position: fixed;
top: 44px;
left: 0;
width: 100%;
z-index: 9;
height: 90rpx;
line-height: 90rpx;
background-color: white;
display: flex;
.orderTab-item {
flex: 3;
text-align: center;
position: relative;
color: #000000;
&::after {
position: absolute;
content: '';
left: calc(50% - 25rpx);
bottom: 0;
width: 50rpx;
height: 8rpx;
background-color: #da2b56;
display: none;
border-radius: 90rpx;
}
&.active {
font-weight: 600;
}
&.active::after {
display: block;
}
}
}
.list {
padding: 120rpx 30rpx 0;
box-sizing: border-box;
.listItem {
background-color: #ffffff;
border-radius: 10rpx;
margin-bottom: 30rpx;
.listItem-no {
line-height: 90rpx;
padding: 0 30rpx;
box-sizing: border-box;
border-bottom: 2rpx solid #eeeeee;
}
.listItem-cont {
padding: 15rpx 30rpx;
box-sizing: border-box;
.listItem-cont-label {
display: flex;
line-height: 60rpx;
color: #666666;
font-size: 28rpx;
padding: 10rpx 0;
.listItem-cont-name {
flex: 1;
}
.listItem-cont-text {
color: #000000;
&.listItem-cont-status {
color: #da2b56;
}
&.listItem-cont-price {
font-weight: 600;
}
&.listItem-cont-diff {
font-weight: 600;
display: flex;
.listItem-cont-btn {
display: inline-block;
font-size: 26rpx;
color: #f49441;
border: 2rpx solid #f49441;
margin-left: 20rpx;
padding: 0 10rpx;
height: 42rpx;
line-height: 42rpx;
border-radius: 5rpx;
margin-top: 8rpx;
font-weight: normal;
}
}
}
}
}
.listItem-labor {
border-top: 2rpx solid #eeeeee;
line-height: 50rpx;
padding: 25rpx 30rpx;
box-sizing: border-box;
font-size: 26rpx;
display: flex;
.listItem-labor-time {
flex: 1;
color: #999999;
}
.listItem-labor-go {
display: inline-block;
border: 2rpx solid #da2b56;
color: #da2b56;
border-radius: 80rpx;
padding: 0 20rpx;
&.active {
border-color: #999999;
color: #666666;
}
}
}
}
}
/* 支付弹出 */
.namePop {
position: fixed;
background-color: rgba(0, 0, 0, .5);
left: 0;
top: 0;
height: 100vh;
width: 100vw;
z-index: 100000;
display: none;
&.active {
display: block;
}
}
.nameCont {
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100000;
padding: 0 15%;
box-sizing: border-box;
display: none;
&.active {
display: -webkit-box;
}
.nameCont-white {
background-color: #ffffff;
border-radius: 15rpx;
overflow: hidden;
.nameCont-top {
padding: 30rpx;
box-sizing: border-box;
.nameCont-title {
font-size: 34rpx;
margin-bottom: 30rpx;
}
.nameCont-input {
background-color: #f3f3f3;
height: 90rpx;
line-height: 90rpx;
border-radius: 10rpx;
padding: 0 25rpx;
box-sizing: border-box;
display: flex;
input {
height: 90rpx;
line-height: 90rpx;
padding-left: 20rpx;
box-sizing: border-box;
width: 90%;
}
}
}
.nameCont-btn {
line-height: 100rpx;
background-color: #f3f3f3;
display: flex;
margin-top: 30rpx;
border-top: 2rpx solid #dfdfdf;
.nameCont-btn-go {
text-align: center;
flex: 2;
&:last-child {
position: relative;
color: #da2b56;
}
&:last-child::after {
position: absolute;
content: '';
left: 0;
top: 0;
width: 2rpx;
height: 100%;
background-color: #dfdfdf;
}
}
}
}
}
// 打款凭证弹出
.voucherBack {
position: fixed;
width: 100vw;
height: 100vh;
left: 0;
top: 0;
z-index: 99;
background-color: rgba(0, 0, 0, .6);
display: none;
&.active {
display: block;
}
}
.voucherPop {
-webkit-box-orient: vertical;
-webkit-box-pack: center;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100;
padding: 0 10%;
box-sizing: border-box;
display: none;
&.active {
display: -webkit-box;
}
.tipsWhite {
background-color: #ffffff;
border-radius: 20rpx;
position: relative;
.voucherPop-img {
position: absolute !important;
top: -80rpx;
right: calc(50% - 100rpx);
width: 200rpx;
}
.voucherPop-title {
box-sizing: border-box;
padding: 50rpx 70rpx;
margin-top: 100rpx;
text-align: center;
.voucherPop-name {
font-weight: 600;
font-size: 38rpx;
}
.voucherPop-text {
padding: 30rpx 0 35rpx;
line-height: 44rpx;
}
.voucherPop-btn {
display: flex;
.voucherPop-go {
flex: 2;
text-align: center;
border: 2rpx solid #da2b56;
color: #da2b56;
margin: 0 15rpx;
line-height: 74rpx;
border-radius: 10rpx;
background-color: #ffffff;
&.voucherPop-up {
background-color: #da2b56;
color: #ffffff;
}
}
}
}
}
}
</style>