easypay-app-wx/pages/users/repayment/index.vue

278 lines
6.0 KiB
Vue
Raw Normal View History

2024-01-18 22:27:33 +08:00
<template>
<view class="repaymentbox">
2024-02-22 13:15:51 +08:00
<!-- <view class="toreturn" @click="toreturn()">
111111111
</view> -->
2024-01-18 22:27:33 +08:00
<view class="repaymenttext">
2024-01-20 12:29:18 +08:00
<a href="javascript:;" :class="index == 0 ? 'active' : ''" v-model="index" @click="btnhk">待还款</a>
<a href="javascript:;" :class="index == 1 ? 'active' : ''" v-model="index" @click="btnjq">已结清</a>
2024-01-18 22:27:33 +08:00
</view>
<view class="repaymentlist" v-for="(item,index) in binglist" :key="index">
<view class="lt">
<view class="bh">
<text>订单编号</text><text>{{item.orderId}}</text>
</view>
<view class="rq">
<text>还款日期</text><text>{{item.repaymentDeadline}}</text>
</view>
<view class="xuhuan">
<text>须还金额</text><text>{{item.repaymentAmount}}</text>
2024-02-27 09:45:51 +08:00
<view class="yuqi" v-if="item.repaymentStatus=='Pending'">
待还款
</view>
<view class="yuqi" v-if="item.repaymentStatus=='Partial'">
部分还款
</view>
<view class="yuqi" v-if="item.repaymentStatus=='Paid'">
已还款
</view>
<view class="yuqi" v-if="item.repaymentStatus=='Late'">
逾期
</view>
2024-01-20 12:29:18 +08:00
<!-- 'Pending'? '待还款' : 'Partial' ? '部分还款' : 'Paid' ? '已还款' : '逾期' -->
2024-01-18 22:27:33 +08:00
</view>
2024-02-22 13:15:51 +08:00
2024-01-18 22:27:33 +08:00
</view>
<view class="rt">
2024-02-22 13:15:51 +08:00
<a href="javascript:;" @click='goPay(item.repaymentAmount,item.id)'>{{title}}</a>
<!-- <view class='bnt bg_color' v-if="!item.paid" @click='goPay(item.payPrice,item.orderId)'>立即付款</view> -->
2024-01-18 22:27:33 +08:00
</view>
2024-02-22 13:15:51 +08:00
<payment :pay_close="pay_close" @onChangeFun='onChangeFun' :order_id="pay_order_id" :totalPrice='totalPrice'>
</payment>
2024-01-18 22:27:33 +08:00
</view>
</view>
</template>
<script>
2024-01-20 12:29:18 +08:00
import {
getreceivable
} from '@/api/api.js'
2024-02-22 13:15:51 +08:00
import payment from '@/components/payments';
2024-01-18 22:27:33 +08:00
export default {
data() {
return {
index: 0,
2024-01-20 12:29:18 +08:00
binglist: [],
2024-02-22 13:15:51 +08:00
title: '还款',
pay_close: false,
pay_order_id: '',
totalPrice: '0',
2024-01-18 22:27:33 +08:00
}
},
2024-02-22 13:15:51 +08:00
components: {
payment,
},
2024-01-18 22:27:33 +08:00
onLoad() {
2024-02-27 09:45:51 +08:00
my.postMessage({
data: {
action: 'authorize'
}
})
2024-02-22 18:06:29 +08:00
//#ifdef MP-ALIPAY
// this.aliPay(that.order_id)
//#endif
2024-01-22 14:30:38 +08:00
// console.log(this.$Cache.get('orderno'))
2024-02-22 13:15:51 +08:00
// window.my.postMessage({ action: 'authorize' });
// step 4. 接受小程序发过来的用户信息
2024-01-18 22:27:33 +08:00
},
2024-02-27 09:45:51 +08:00
onShow() {
2024-03-13 14:47:41 +08:00
// 轮询查询函数
const pollingFunction = () => {
this.getData(); // 调用getData()方法
};
// 初始调用一次
pollingFunction();
// 每五秒执行一次轮询查询
const intervalId = setInterval(pollingFunction, 5000);
// 在页面销毁时清除轮询
// 如果onShow()方法会在页面销毁时被自动销毁,那么下面的代码可以忽略
this.$once('hook:beforeDestroy', () => {
clearInterval(intervalId);
});
2024-02-27 09:45:51 +08:00
},
2024-01-18 22:27:33 +08:00
methods: {
2024-02-22 13:15:51 +08:00
toreturn(){
console.log('点击了');
// uni.navigateTo({
// url: '/pages/users/alipay_return/alipay_return'
// })
},
ispayok(num){
uni.navigateTo({
url: '/pages/users/alipay_return/alipay_return'
})
},
2024-01-18 22:27:33 +08:00
btnhk() {
this.index = 0
this.title = '还款'
2024-01-20 12:29:18 +08:00
this.getData()
2024-01-18 22:27:33 +08:00
},
btnjq() {
this.index = 1
this.title = '已结清'
2024-01-20 12:29:18 +08:00
this.getData()
2024-01-18 22:27:33 +08:00
},
// 请求分期还款
2024-01-20 12:29:18 +08:00
getData: function() {
2024-01-18 22:27:33 +08:00
let data = {
2024-01-23 17:17:47 +08:00
uid:this.$store.getters.uid,
2024-02-22 13:15:51 +08:00
// orderId:this.$Cache.get('ordernobh'),
2024-01-20 12:29:18 +08:00
type: this.index
2024-01-18 22:27:33 +08:00
}
getreceivable(data).then(res => {
this.binglist = res.data
})
2024-02-22 13:15:51 +08:00
},
/**
* 事件回调
*
*/
onChangeFun: function(e) {
let opt = e;
let action = opt.action || null;
let value = opt.value != undefined ? opt.value : null;
(action && this[action]) && this[action](value);
},
/**
* 关闭支付组件
*
*/
payClose: function() {
this.pay_close = false;
},
/**
* 打开支付组件
*
*/
goPay(pay_price, order_id) {
this.$set(this, 'pay_close', true);
this.$set(this, 'pay_order_id', order_id);
this.$set(this, 'totalPrice', pay_price);
},
/**
* 支付成功回调
*
*/
pay_complete: function() {
this.loadend = false;
this.page = 1;
this.$set(this, 'orderList', []);
this.$set(this, 'pay_close', false);
this.getOrderData();
this.getOrderList();
},
/**
* 支付失败回调
*
*/
pay_fail: function() {
this.pay_close = false;
},
2024-01-18 22:27:33 +08:00
}
}
</script>
<style lang="less">
.active {
font-weight: 700;
font-size: 13px;
color: #000 !important;
}
.repaymentbox {
width: 100%;
height: 100%;
padding-bottom: 30rpx;
box-sizing: border-box;
background-color: rgb(228, 228, 228);
font-size: 11px !important;
.repaymenttext {
width: 100%;
background-color: #fff;
padding-left: 36rpx;
box-sizing: border-box;
2024-01-22 14:30:38 +08:00
padding-top: 30rpx;
padding-bottom: 20rpx;
2024-01-20 12:29:18 +08:00
display: flex;
2024-01-18 22:27:33 +08:00
a {
text-decoration: none;
color: rgba(166, 166, 166, 1);
margin-right: 50rpx;
}
}
.repaymentlist {
background-color: #fff;
display: flex;
margin: 26rpx 20rpx;
box-sizing: border-box;
border-radius: 10rpx;
padding: 34rpx 38rpx;
.lt {
width: 80%;
.xuhuan {
display: flex;
line-height: 50rpx;
color: rgba(33, 37, 41, 0.6);
.yuqi {
padding: 0 10rpx;
box-sizing: border-box;
height: 40rpx;
text-align: center;
line-height: 40rpx;
border-radius: 5px;
background: rgba(204, 204, 204, 0);
border: 1px solid rgba(179, 0, 0, 1);
margin-left: 20rpx;
color: rgba(179, 0, 0, 1);
}
}
.bh {
line-height: 50rpx;
color: rgba(33, 37, 41, 0.6);
}
2024-01-20 12:29:18 +08:00
.rq {
line-height: 50rpx;
color: rgba(33, 37, 41, 0.6);
}
2024-01-18 22:27:33 +08:00
}
.rt {
padding-top: 50rpx;
box-sizing: border-box;
a {
text-decoration: none;
display: block;
width: 128rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
opacity: 1;
border-radius: 20rpx;
background: rgba(212, 48, 48, 1);
color: #fff;
}
}
}
}
</style>