Commit 75f4a2e4 authored by 李智书's avatar 李智书

Merge branch 'develop'

parents f567487f ff4fc2f1
......@@ -341,6 +341,44 @@
"navigationBarBackgroundColor":"#01CB88",
"enablePullDownRefresh": false
}
},
{
"path": "pages/ReceiveMoney/ReceiveMoney",
"style": {
"navigationBarTitleText": "领取红包",
"navigationStyle":"custom",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/StudentPayment/PayProjectHistoryDetails/PayProjectHistoryDetails",
"style" :
{
"navigationBarTitleText": "缴费详情单",
"navigationStyle":"custom",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/StudentPayment/PayProgress/PayProgress",
"style" :
{
"navigationBarTitleText": "缴费进度",
"navigationStyle":"custom",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/StudentPayment/PayProgressDetails/PayProgressDetails",
"style" :
{
"navigationStyle":"custom",
"navigationBarTitleText": "缴费进度",
"enablePullDownRefresh": false
}
}
],
......
......@@ -9,65 +9,39 @@
</view>
<!-- 卡号显示 -->
<view class="cardNum">
<view class="cardNumleft"
><span>账户:</span> **** **** ****
<view class="cardNumleft"><span>账户:</span> **** **** ****
{{ bankInfo_.accountNo.slice(bankInfo_.accountNo.length - 4) }}
<span>({{ accountEnum[bankInfo_.accountType + ""] }})</span>
</view>
<view class="cardNumright" id="cardNumright" @click="CopyCardNumber"
>复制</view
>
<view class="cardNumright" id="cardNumright" @click="CopyCardNumber">复制</view>
</view>
<view class="HidenText">
<view
class="userName"
style="
<view class="userName" style="
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
"
>
姓名:<span>{{ PersonalInfo.name }}</span></view
>
<view
class="StudentCls"
style="
">
姓名:<span>{{ PersonalInfo.name }}</span></view>
<view class="StudentCls" style="
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
"
v-if="PersonalInfo.usertype == '1'"
>
" v-if="PersonalInfo.usertype == '1'">
班级:{{ PersonalInfo.gradename }}({{
PersonalInfo.classname
}})</view
>
<view
class="TeacherCls"
style="
}})</view>
<view class="TeacherCls" style="
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
"
v-else
>教职工</view
>
" v-else>教职工</view>
</view>
<view class="Balance">
<view class="cardBalanceTx"
>余额:¥<span>{{ cardBalanceTx }}</span></view
>
<view class="cardBalanceTx">余额:¥<span>{{ cardBalanceTx }}</span></view>
<view @click="ToWalletTx">
<span style="display: inline-block; padding-right: 10rpx"
>余额提现</span
>
<image
style="position: relative; width: 13rpx; height: 20rpx"
class="ImgIcon1"
mode="widthFix"
:src="ImgUrl + 'images/xiaopaycard (17).png'"
alt=""
></image>
<span style="display: inline-block; padding-right: 10rpx">余额提现</span>
<image style="position: relative; width: 13rpx; height: 20rpx" class="ImgIcon1" mode="widthFix"
:src="ImgUrl + 'images/xiaopaycard (17).png'" alt=""></image>
</view>
</view>
</view>
......@@ -82,14 +56,9 @@
</view>
<!-- 充值的金额 -->
<view class="MoneyBox">
<view
class="depotMoney"
@click="depotMoney(item.value, index)"
v-bind:class="MoneyIndex == index ? 'choiceClass' : ''"
:data-money="item.value || 0"
v-for="(item, index) in MoneyList"
:key="index"
>
<view class="depotMoney" @click="depotMoney(item.value, index)"
v-bind:class="MoneyIndex == index ? 'choiceClass' : ''" :data-money="item.value || 0"
v-for="(item, index) in MoneyList" :key="index">
<span class="value">
{{ item.value }}
</span>
......@@ -100,38 +69,33 @@
{{item.tips}}
</span> -->
</view>
<!-- <view class="depotMoney" @click="depotOtherMoney">
<span class="value">
</span>
<span style="font-size: 28rpx; font-weight: 600; margin-left: 7rpx">其他金额</span>
</view> -->
<!-- <view class="depotMoney">
<input v-model="inputOtherM" class="otherMoneyInput" @input="inputControl" @blur="ReturnToTop"
placeholder="最低3元" type="text" maxlength="6" />
</view> -->
</view>
<!-- 充值其它金额 -->
<!-- <view class="OtherMoney" v-if="isOtherMoney"> -->
<view class="OtherMoney">
<span></span>
<input v-model="inputOtherM" @input="inputControl" @blur="ReturnToTop" placeholder="请输入其他金额,最低3元"
placeholder-class="placeholderinputOtherM" type="text" maxlength="6" />
</view>
<!-- 充值限额提示 -->
<view class="depositbox">
<image
mode="widthFix"
class="depositImg"
src="../../../static/img/depositIcon.png"
></image>
<span
style="
<image mode="widthFix" class="depositImg" src="../../../static/img/depositIcon.png"></image>
<span style="
vertical-align: middle;
font-size: 28rpx;
color: #333333;
font-weight: 500;
"
>最大可充值金额:<span style="color: red"
><span class="canDepositTx">{{ RechargeMax }}</span></span
></span
>
</view>
<!-- 充值其它金额 -->
<view class="OtherMoney" v-if="isOtherMoney">
<span></span>
<input
v-model="inputOtherM"
@input="inputControl"
@blur="ReturnToTop"
placeholder="请输入其他金额,最低3元"
placeholder-class="placeholderinputOtherM"
type="text"
maxlength="6"
/>
">最大可充值金额:<span style="color: red"><span class="canDepositTx">{{ RechargeMax }}</span></span></span>
</view>
<!-- 支付方式 -->
<view class="payType" @click="queryBindCardList">
......@@ -139,25 +103,20 @@
<view>
{{ bankInfo_.bindCardName }}
{{ bankInfo_.bindCardNo.slice(bankInfo_.bindCardNo.length - 4)
}}<span class="arrow"></span
></view>
}}<span class="arrow"></span>
</view>
<!-- <view>{{bankInfo_.accountName}}({{bankInfo_.accountNo.slice(bankInfo_.accountNo.length-4)}}) <span
class="arrow"></span></view> -->
</view>
<!-- <view class="" style="height: 1rpx;background-color: #DFDFDF;"></view> -->
<!-- 充值生活费 -->
<view class="bottomdiv">
<view
class="DepositID"
@click="toDeposit"
v-bind:style="Money != '' ? '' : 'background: #e6e6e6 !important;'"
>
<view class="DepositID" @click="toDeposit"
v-bind:style="Money != '' ? '' : 'background: #e6e6e6 !important;'">
<span>充值生活费</span>
</view>
<!-- -->
<view class="switchbankCard" @click="ChangeBankPay"
>我要换银行卡支付</view
>
<view class="switchbankCard" @click="ChangeBankPay">我要换银行卡支付</view>
</view>
</view>
<!-- 其他充值金额 -->
......@@ -165,22 +124,15 @@
<view class="OtherTitle">充值金额</view>
<view class="inputOtherM">
<span></span>
<input
v-model="inputOtherM"
@input="inputControl"
placeholder-class="placeholderinputOtherM"
type="text"
maxlength="6"
/>
<input v-model="inputOtherM" @input="inputControl" placeholder-class="placeholderinputOtherM"
type="text" maxlength="6" />
</view>
<view class="OtherLine"></view>
<!-- 充值范围 -->
<view class="Recharge_">
<!-- <image mode="widthFix" class="depositImg" src="../../static/img/depositIcon.png"></image> -->
<span>最大可充值金额:</span>
<span
><span>3.00 ~ {{ RechargeMax }}</span></span
>
<span><span>3.00 ~ {{ RechargeMax }}</span></span>
</view>
</view>
<!-- 弹出层 -->
......@@ -192,42 +144,19 @@
<image src="../../../static/img/close.png" mode="aspectFit"></image>
</view>
<view class="RechargeInfo1"> 验证校园卡开卡手机号 </view>
<van-field
label-class="openCardPhonTxt"
label="手机号:"
maxlength="11"
v-model="openCardPhon"
placeholder="校园卡开卡手机号"
center
:border="false"
>
<van-field label-class="openCardPhonTxt" label="手机号:" maxlength="11" v-model="openCardPhon"
placeholder="校园卡开卡手机号" center :border="false">
<view slot="right-icon" v-if="bankInfo_.accountType == 4">
<view
class="changPhone"
style="display: flex; justify-content: center"
@click="changePhone"
>变更手机号
<view class="changPhone" style="display: flex; justify-content: center"
@click="changePhone">变更手机号
<van-icon name="arrow" />
</view>
</view>
</van-field>
<view style="width: 520rpx; height: 1rpx; background: #eeeeee"></view>
<van-field
v-model="openCardPhonSms"
label-class="openCardPhonSmsTxt"
maxlength="6"
label="验证码:"
placeholder="输入短信验证码"
center
clearable
:border="false"
>
<van-button
slot="button"
size="small"
type="primary"
@click="SendSms"
>
<van-field v-model="openCardPhonSms" label-class="openCardPhonSmsTxt" maxlength="6" label="验证码:"
placeholder="输入短信验证码" center clearable :border="false">
<van-button slot="button" size="small" type="primary" @click="SendSms">
<div style="font-size: 28rpx">{{ CodeMsg }}</div>
</van-button>
</van-field>
......@@ -241,29 +170,18 @@
</uni-popup>
<!-- 选择银行卡 -->
<view class="selectCard">
<van-popup
v-model="popshow"
round
position="bottom"
:style="{ height: '30%' }"
>
<van-popup v-model="popshow" round position="bottom" :style="{ height: '30%' }">
<!-- 银行卡列表 -->
<view class="accountlist">
<!-- 切换绑定的一类卡列表 -->
<view class="showBindCardList">
<view class="choiceBox">选择付款账户</view>
<view
class="ListItem"
@click="ChangeCardPay(item)"
v-for="(item, index) in bindcardList"
:key="index"
>
<view class="ListItem" @click="ChangeCardPay(item)" v-for="(item, index) in bindcardList"
:key="index">
<span style="padding-right: 10px">{{ item.bindCardName }} </span>
<span
>尾号:{{
<span>尾号:{{
item.bindCardNo.slice(item.bindCardNo.length - 4)
}}</span
>
}}</span>
<!-- <image class='BankListImg' src='../../../static/img/choiceBank.png'></image> -->
</view>
</view>
......@@ -274,27 +192,30 @@
</template>
<script>
import { Dialog, Toast } from "vant";
import keyboardPackage from "@/components/keyboard-package/keyboard-package.vue";
import cityData from "@/common/js/city.js";
var gHost = "https://" + window.location.host;
if (window.location.protocol != "https:") {
import {
Dialog,
Toast
} from "vant";
import keyboardPackage from "@/components/keyboard-package/keyboard-package.vue";
import cityData from "@/common/js/city.js";
var gHost = "https://" + window.location.host;
if (window.location.protocol != "https:") {
gHost = "https://fpdev.xiaopay.net";
// gHost = "/api";
}
let times = 0;
var limitClick = false; //禁止重复点击
var sessionID = "",
}
let times = 0;
var limitClick = false; //禁止重复点击
var sessionID = "",
userID = "";
var payCardNumber = ""; //一类卡号
var orderSerialNo = ""; //提现结果查询 指令号
var businessNo = "",
var payCardNumber = ""; //一类卡号
var orderSerialNo = ""; //提现结果查询 指令号
var businessNo = "",
otpOrderNo = "",
mobileNo = "";
var MyTimer = null;
var fromType = 0; //0转账 1提现
var opeType = 0; //0充值 1提现 手机号验证
var bankInfo = {
var MyTimer = null;
var fromType = 0; //0转账 1提现
var opeType = 0; //0充值 1提现 手机号验证
var bankInfo = {
acctNoArray: "",
idNo: "",
schoolId: "",
......@@ -302,12 +223,13 @@ var bankInfo = {
userId: "",
sessionid: "",
wechattype: 1,
};
/**
};
let orderApi = window.location.origin;
/**
* 对象转拼接字符串
* @param {*} res Object 需要转换的数据对象
*/
function OforS(res) {
function OforS(res) {
var resL = 0;
var outS = "";
for (var i in res) {
......@@ -319,8 +241,8 @@ function OforS(res) {
resL++;
}
return outS;
}
export default {
}
export default {
components: {
keyboardPackage,
},
......@@ -352,8 +274,7 @@ export default {
bindCardNo: "",
},
ImgUrl: this.$ImgUrl,
MoneyList: [
{
MoneyList: [{
lable: "",
value: 100,
},
......@@ -369,10 +290,10 @@ export default {
lable: "",
value: 1000,
},
{
lable: "其他金额",
value: "",
},
// {
// lable: "其他金额",
// value: "",
// },
],
numberList: [],
tempFiles1: "../../static/img/idCardBg1.png", //上传身份证临时选择文件
......@@ -398,7 +319,7 @@ export default {
RechargeSmsorderNoInfo: {}, //第三方合作交易标识
};
},
onLoad: function (options) {
onLoad: function(options) {
console.log(options);
// 初始化
userID = options["userID"] || "";
......@@ -407,9 +328,13 @@ export default {
bankInfo.sessionid = sessionID || "";
this.QueryUserInfo();
},
created: function () {},
mounted: function () {},
onShow: function () {
created: function() {},
mounted: function() {},
onShow: function() {
if (bankInfo.accountType == 4) {
// 渤海银行要判断是否有代扣签约
this.signStatusQuery();
}
if (bankInfo.userId) {
this.queryBankInfo();
}
......@@ -438,6 +363,7 @@ export default {
},
// 验证码弹出框开启
toDeposit() {
console.log(this.isOtherMoney, 'isOtherMoney')
if (this.isOtherMoney) {
if (this.inputOtherM == "") {
uni.showModal({
......@@ -484,8 +410,7 @@ export default {
$(".doBtnTx").html("提现");
opeType = 1;
uni.navigateTo({
url:
"../Reflect/Reflect?" +
url: "../Reflect/Reflect?" +
OforS({
sessionID: sessionID,
userID: userID,
......@@ -500,8 +425,10 @@ export default {
// 输入限制
inputControl(e) {
let this_ = this;
this_.MoneyIndex = -1;
this_.isOtherMoney = true;
let obj = e.detail;
this.$nextTick(function () {
this.$nextTick(function() {
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
obj.value = obj.value.replace(/^\./g, ""); //验证第一个字符是数字而不是.
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的.
......@@ -530,7 +457,7 @@ export default {
if (str.lastIndexOf(".") == str.length - 1) {
this.inputOtherM = str.substring(0, str.length - 1);
}
this.$nextTick(function () {
this.$nextTick(function() {
document.scrollingElement.scrollTo(0, this.scrollTop);
});
},
......@@ -546,6 +473,41 @@ export default {
this.CodeMsg = this.msCount + "s后获取";
}
},
// 代扣状态查询
async signStatusQuery() {
let respes = await this.$http.post({
// url: "http://159.75.47.27:8091/bank-wechat/bohai/comprehensive/signStatusQuery",
url: orderApi + "/bank-wechat/bohai/comprehensive/signStatusQuery",
data: {
schoolId: bankInfo.schoolId, //学校id
userId: userID, //用户id
},
});
if (respes.code == "10000") {
console.log(respes, "respes");
if (respes.results.dkstatus != 1) { // 1已签约
Dialog.alert({
title: '使用说明',
message: '您暂未进行银行代扣签约,将影响电子校园卡的正常使用,请尽快前往签约',
theme: 'round-button',
confirmButtonText: '确认签约',
confirmButtonColor: '#2ddbb6',
className: 'signAlert'
}).then(() => {
// on confirm
jWeixin.miniProgram.navigateTo({
url: `/pages/SignProxyPay/main`,
});
})
.catch(() => {
// on cancel
});
}
} else {
Toast(respes.message || "代扣状态查询,请重试!");
throw new Error("代扣状态查询,请重试!");
}
},
// 充值验证获取验证码
async SendSms() {
if (MyTimer) {
......@@ -600,7 +562,7 @@ export default {
headers: {
sessionid: sessionID,
},
success: function (res5) {
success: function(res5) {
loading.clear();
if (res5.code == "10000") {
this_.IntervalFun();
......@@ -614,7 +576,7 @@ export default {
});
}
},
error: function (err) {
error: function(err) {
loading.clear();
},
});
......@@ -705,7 +667,7 @@ export default {
headers: {
sessionid: sessionID,
},
success: function (res5) {
success: function(res5) {
uni.hideLoading();
if (res5.code == "10000") {
this_.close();
......@@ -717,9 +679,9 @@ export default {
let accountNo = this_.bankInfo_.bindCardNo;
accountNo = accountNo.slice(accountNo.length - 4, accountNo.length);
let minutes_ =
thiTime.getMinutes().toString().length < 2
? thiTime.getMinutes().toString().padStart(2, "0")
: thiTime.getMinutes().toString();
thiTime.getMinutes().toString().length < 2 ?
thiTime.getMinutes().toString().padStart(2, "0") :
thiTime.getMinutes().toString();
switch (bankInfo.accountType) {
case 3:
if (thiTime.getMinutes() + 20 >= 60) {
......@@ -732,7 +694,7 @@ export default {
title: "充值申请已提交",
content: "银行处理需要1-20分钟时间,充值结果以余额查询为准。",
showCancel: false,
success: function () {
success: function() {
uni.navigateTo({
url: `../../recharging/recharging?bankName=${
this_.bankInfo_.bindCardName
......@@ -762,7 +724,7 @@ export default {
weui.topTips(res5.message);
}
},
error: function (err) {
error: function(err) {
uni.hideLoading();
},
});
......@@ -791,7 +753,7 @@ export default {
headers: {
sessionid: sessionID,
},
success: function (res5) {
success: function(res5) {
loading.clear();
if (res5.code == "10000") {
let appStatus = res5.results.appStatus;
......@@ -815,7 +777,7 @@ export default {
});
}
},
error: function (err) {
error: function(err) {
loading.clear();
},
});
......@@ -827,9 +789,9 @@ export default {
title: "系统提示",
message: "复制成功!",
});
this.$nextTick(function () {
this.$nextTick(function() {
let clipboard = new ClipboardJS("#cardNumright", {
text: function () {
text: function() {
return value;
},
});
......@@ -839,22 +801,20 @@ export default {
OtherMoney() {
this.depotMoneyother = true;
},
// 选择其它金额
async depotOtherMoney() {
console.log('其它金额')
},
// 快捷选择金额
async depotMoney(value, MoneyIndex) {
console.log(value);
if (!value) {
this.isOtherMoney = true;
this.Money = "";
this.MoneyIndex = MoneyIndex;
return;
}
this.isOtherMoney = false;
this.inputOtherM = "";
this.Money = parseInt(value);
this.MoneyIndex = MoneyIndex;
},
//按钮操作
HideHTML(dom, type) {
this.$nextTick(function () {
this.$nextTick(function() {
if (type == 0) {
$("." + dom).css("display", "none");
} else {
......@@ -904,7 +864,7 @@ export default {
bindMedium: item.bindCardNo,
bindMediumName: item.bindCardName,
},
success: function (res5) {
success: function(res5) {
loading.hide();
if (res5.code == "10000") {
this_.queryUserBankInfo();
......@@ -914,7 +874,7 @@ export default {
}
this_.popshow = false;
},
error: function (err) {
error: function(err) {
loading.hide();
},
});
......@@ -934,7 +894,7 @@ export default {
sessionid: sessionID,
wechattype: 1,
},
success: function (res4) {
success: function(res4) {
loading.hide();
if (res4.code == "10000") {
this_.bindcardList = res4.results;
......@@ -943,7 +903,7 @@ export default {
weui.topTips(res4.message);
}
},
error: function (err) {
error: function(err) {
loading.hide();
},
});
......@@ -984,7 +944,7 @@ export default {
sessionid: sessionID,
wechattype: 1,
},
success: function (res3) {
success: function(res3) {
// loading.hide();
if (res3.code == "10000") {
if (bankInfo.accountType == 4) {
......@@ -1022,10 +982,10 @@ export default {
weui.topTips(res3.message);
}
},
error: function (err) {
error: function(err) {
// loading.hide();
},
complete: function (XMLHttpRequest, status) {
complete: function(XMLHttpRequest, status) {
// loading.hide();
if (status == "timeout") {
weui.topTips("请求超时,余额查询失败");
......@@ -1047,7 +1007,7 @@ export default {
sessionid: sessionID,
wechattype: 1,
},
success: function (res2) {
success: function(res2) {
if (res2.code == "10000") {
if (!res2.results) {
weui.topTips("获取用户银行信息失败!");
......@@ -1064,7 +1024,7 @@ export default {
weui.topTips(res2.message);
}
},
error: function (err) {
error: function(err) {
// loading.hide();
},
});
......@@ -1087,7 +1047,7 @@ export default {
sessionid: sessionID,
wechattype: 1,
},
success: function (res1) {
success: function(res1) {
loading.clear();
if (res1.code == "10000") {
bankInfo.schoolId = res1.results.schoolid;
......@@ -1108,30 +1068,30 @@ export default {
}, 1500);
}
},
error: function (err) {
error: function(err) {
loading.clear();
},
});
},
},
};
};
</script>
<style lang="scss">
html,
body,
page {
html,
body,
page {
width: 750rpx;
background: linear-gradient(180deg, #ffffff 0%, #fafafa 100%);
}
}
.changPhone {
.changPhone {
font-size: 14px;
color: #39f;
text-align: right;
}
}
.showBindCardList {
.showBindCardList {
.choiceBox {
text-align: center;
font-weight: bold;
......@@ -1149,18 +1109,18 @@ page {
position: relative;
text-align: center;
}
}
}
.SubmittedSuccessfully {
.SubmittedSuccessfully {
width: 400rpx !important;
height: 200rpx !important;
margin: 0 auto !important;
background: #000000;
opacity: 0.8;
border-radius: 8rpx;
}
}
.cardNum {
.cardNum {
width: 574rpx;
margin: 0 auto;
display: flex;
......@@ -1180,9 +1140,9 @@ page {
text-decoration: underline;
color: #ffffff;
}
}
}
.RechargeDetailed {
.RechargeDetailed {
text-align: center;
// width: 118rpx;
height: 32rpx;
......@@ -1193,15 +1153,15 @@ page {
text-decoration: underline;
color: #36a8ff;
margin-top: 50rpx;
}
}
.contentBox {
.contentBox {
width: 670rpx;
height: 376rpx;
margin: 0 auto;
}
}
.contentDiv {
.contentDiv {
height: 100%;
// margin-top: 36rpx;
border-radius: 15rpx;
......@@ -1211,16 +1171,16 @@ page {
position: relative;
top: 36rpx;
}
}
.HidenText {
.HidenText {
width: 574rpx;
margin: 0 auto;
padding-top: 88rpx;
}
}
.HidenText,
.Balance {
.HidenText,
.Balance {
padding-left: 46rpx;
padding-right: 40rpx;
display: flex;
......@@ -1228,9 +1188,9 @@ page {
font-size: 28rpx;
color: #ffffff;
}
}
.Balance {
.Balance {
width: 574rpx;
margin: 0 auto;
margin-top: 20rpx;
......@@ -1239,9 +1199,9 @@ page {
font-family: PingFang SC;
font-weight: bold;
color: #ffffff;
}
}
.Recharge {
.Recharge {
// height: 30rpx;
font-size: 32rpx;
font-family: PingFang SC;
......@@ -1263,9 +1223,9 @@ page {
display: inline-block;
margin-left: 16rpx;
}
}
}
.headview {
.headview {
display: flex;
justify-content: space-between;
// padding-left: 40rpx;
......@@ -1274,9 +1234,9 @@ page {
padding-top: 36rpx;
width: 574rpx;
margin: 0 auto;
}
}
.headview .schoolname {
.headview .schoolname {
// width: 252rpx;
height: 50rpx;
font-size: 36rpx;
......@@ -1284,9 +1244,9 @@ page {
font-weight: 500;
color: #ffffff;
line-height: 50rpx;
}
}
.headview .IconCls {
.headview .IconCls {
width: 170rpx;
height: 48rpx;
background: #20946d;
......@@ -1297,23 +1257,23 @@ page {
color: #ffffff;
line-height: 48rpx;
text-align: center;
}
}
.MoneyBox {
.MoneyBox {
flex-wrap: wrap;
height: auto;
color: #888888;
width: 686rpx;
margin: 0 auto;
overflow: hidden;
}
}
.choiceClass {
.choiceClass {
background: rgba(39, 266, 148, 0.1) !important;
color: #28d79c;
}
}
.MoneyBox view {
.MoneyBox view {
width: 220rpx;
height: 120rpx;
background: #ffffff;
......@@ -1325,17 +1285,17 @@ page {
box-shadow: 0px 9rpx 23rpx 0rpx rgba(25, 26, 88, 0.07);
margin-right: 2px;
float: left;
}
}
.depotMoney .value {
.depotMoney .value {
font-size: 45rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
line-height: 120rpx;
text-align: center;
}
}
.depotMoney .tips {
.depotMoney .tips {
// width: 79rpx;
// height: 33rpx;
// background: linear-gradient(180deg, #FA6400 0%, #FD9D00 100%);
......@@ -1348,9 +1308,9 @@ page {
// position: absolute;
// right: 0rpx;
// line-height: 33rpx;
}
}
.OtherMoney {
.OtherMoney {
display: flex;
justify-content: flex-start;
// color: #999999;
......@@ -1379,9 +1339,9 @@ page {
input {
height: 100%;
}
}
}
.OtherMoney view:nth-child(2) {
.OtherMoney view:nth-child(2) {
// width: 30rpx;
// height: 30rpx;
// background: #F0F0F0;
......@@ -1390,16 +1350,16 @@ page {
// line-height: 30rpx;
// margin-top: 7rpx;
// margin-left: 5rpx;
}
}
.payType {
.payType {
height: 98rpx;
line-height: 98rpx;
display: flex;
justify-content: space-between;
}
}
.payType view:nth-child(1) {
.payType view:nth-child(1) {
// width: 120rpx;
height: 42rpx;
font-size: 32rpx;
......@@ -1407,9 +1367,9 @@ page {
font-weight: 500;
color: #888888;
line-height: 98rpx;
}
}
.payType view::nth-child(2) {
.payType view::nth-child(2) {
width: 225rpx;
height: 45rpx;
font-size: 32rpx;
......@@ -1417,9 +1377,9 @@ page {
font-weight: bold;
color: #333333;
line-height: 45rpx;
}
}
.arrow {
.arrow {
transform: rotate(-45deg);
top: -3rpx;
border: solid #999999;
......@@ -1427,18 +1387,18 @@ page {
display: inline-block;
padding: 8rpx;
position: relative;
}
}
@media (min-height: 650px) {
@media (min-height: 650px) {
.bottomdiv {
position: fixed;
left: 0;
right: 0;
bottom: 30rpx;
}
}
}
.DepositID {
.DepositID {
width: 630rpx;
height: 92rpx;
background: #04ba73;
......@@ -1446,18 +1406,18 @@ page {
margin: 0 auto;
text-align: center;
bottom: 30rpx;
}
}
.DepositID span {
.DepositID span {
height: 50rpx;
font-size: 36rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 92rpx;
}
}
.switchbankCard {
.switchbankCard {
text-align: center;
/* width: 205px; */
// height: 28rpx;
......@@ -1467,9 +1427,9 @@ page {
text-decoration: underline;
color: #268ef8;
margin-top: 23rpx;
}
}
.RechargeConfirmationBox {
.RechargeConfirmationBox {
position: fixed;
left: 0;
right: 0;
......@@ -1564,9 +1524,9 @@ page {
}
}
}
}
}
.closePhoneBox {
.closePhoneBox {
// width: 35rpx;
height: 35rpx;
position: relative;
......@@ -1580,9 +1540,9 @@ page {
position: relative;
right: 10rpx;
}
}
}
.doBtnTx {
.doBtnTx {
width: 506rpx;
height: 92rpx;
background: #04ba73;
......@@ -1594,46 +1554,46 @@ page {
right: 0;
margin: 0 auto;
bottom: 38rpx;
}
}
.PhoneNum,
.VerifyCode {
.PhoneNum,
.VerifyCode {
width: 506rpx;
height: 80rpx;
line-height: 60rpx;
background: #f7f6fb;
margin: 0 auto;
margin-top: 20rpx;
}
}
.VerifyCode {
.VerifyCode {
display: flex;
justify-content: space-between;
}
}
.VerifyCode input {
.VerifyCode input {
width: 200rpx;
}
}
.CodeMsg {
.CodeMsg {
color: #01bc73;
background: #f7f6fb;
font-size: 32rpx;
font-weight: 600;
line-height: 80rpx;
letter-spacing: 3rpx;
}
}
.placeholderInput {
.placeholderInput {
color: #aaaaaa;
font-size: 42rpx;
font-weight: 500;
letter-spacing: 3rpx;
// padding-left: 50rpx;
height: 80rpx;
}
}
.OtherTitle {
.OtherTitle {
height: 67rpx;
font-size: 48rpx;
font-family: PingFangSC-Semibold, PingFang SC;
......@@ -1642,55 +1602,55 @@ page {
line-height: 67rpx;
padding-top: 60rpx;
}
}
.inputOtherM {
.inputOtherM {
display: flex;
height: 100rpx;
margin-top: 40rpx;
}
}
.inputOtherM input {
.inputOtherM input {
border: none;
outline: none;
height: 50rpx;
padding-left: 16rpx;
font-size: 72rpx;
font-weight: 600;
}
}
.inputOtherM span:nth-child(1) {
.inputOtherM span:nth-child(1) {
width: 72rpx;
font-size: 80rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #010101;
line-height: 100rpx;
}
}
.OtherLine {
.OtherLine {
width: 631rpx;
height: 1rpx;
background-color: #cccccc;
margin-top: 19rpx;
}
}
.depositbox {
.depositbox {
margin-top: 31rpx;
height: 30rpx;
line-height: 30rpx;
}
}
.depositImg {
.depositImg {
width: 24rpx;
height: 24rpx;
vertical-align: middle;
margin-right: 8rpx;
position: relative;
top: -2rpx;
}
}
.Recharge_ {
.Recharge_ {
height: 40rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
......@@ -1698,16 +1658,16 @@ page {
color: #333333;
line-height: 40rpx;
margin-top: 40rpx;
}
}
.Recharge_ span:nth-child(2) {
.Recharge_ span:nth-child(2) {
font-size: 28rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #fa6400;
}
}
.placeholderinputOtherM {
.placeholderinputOtherM {
height: 50rpx;
// font-family: PingFangSC-Semibold, PingFang SC;
// font-weight: 600;
......@@ -1718,14 +1678,14 @@ page {
font-family: PingFang SC;
font-weight: 500;
color: #888888;
}
}
// 异常处理
.RechargeException {
// 异常处理
.RechargeException {
padding-top: 20rpx;
}
}
.weui-label {
.weui-label {
// width: 118rpx;
height: 42rpx;
font-size: 30rpx;
......@@ -1735,9 +1695,9 @@ page {
line-height: 42rpx;
font-weight: bold;
margin-left: 30rpx;
}
}
.tiptext {
.tiptext {
height: 1.06rem;
font-size: 0.75rem;
font-family: PingFangSC-Regular, PingFang SC;
......@@ -1746,9 +1706,9 @@ page {
line-height: 1.06rem;
margin-bottom: 0.625rem;
text-align: center;
}
}
.bottomDetail {
.bottomDetail {
width: 628rpx;
height: 88rpx;
color: white;
......@@ -1761,37 +1721,37 @@ page {
line-height: 88rpx;
margin-top: 84rpx;
}
}
.RechargeException input::placeholder {
.RechargeException input::placeholder {
color: #a1a4a8;
}
}
.RechargeException .weui-cell {
.RechargeException .weui-cell {
height: 4rem;
padding: 0 !important;
}
}
.idCardPhoto1,
.idCardPhoto2 {
.idCardPhoto1,
.idCardPhoto2 {
width: 388rpx;
height: 224rpx;
margin: 0 auto;
margin-top: 20rpx;
}
}
.idCardPhoto1 image,
.idCardPhoto2 image {
.idCardPhoto1 image,
.idCardPhoto2 image {
width: 100%;
height: 100%;
position: relative;
}
}
.weui-toptips_success {
.weui-toptips_success {
background-color: #03bc73 !important;
}
}
.positionCam {
.positionCam {
height: 32rpx;
font-size: 22rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
......@@ -1801,9 +1761,9 @@ page {
text-align: center;
position: relative;
top: -29px;
}
}
.BgCoverBox {
.BgCoverBox {
width: 100vw;
height: 100vh;
position: fixed;
......@@ -1812,18 +1772,36 @@ page {
z-index: 10;
background: #000000;
opacity: 0.5;
}
}
.hideListCover {
.hideListCover {
max-height: 50vh;
overflow-y: auto;
padding: 0;
}
}
.bottomDiv {
.bottomDiv {
font-weight: bold;
height: 50px;
line-height: 50px;
border-bottom: 1px solid #e6e6e6;
}
}
/deep/ .signAlert {
/deep/ .van-dialog__message {
line-height: 60rpx;
}
/deep/ .signAlert .van-dialog__confirm {
width: 200rpx !important;
flex: none !important;
margin: 0 auto;
}
}
/deep/ uni-input.otherMoneyInput {
height: 120rpx;
line-height: 120rpx;
font-weight: 600;
}
</style>
......@@ -97,7 +97,8 @@
>
</view>
<!-- 充值其它金额 -->
<view class="OtherMoney" v-if="isOtherMoney">
<!-- <view class="OtherMoney" v-if="isOtherMoney"> -->
<view class="OtherMoney">
<span></span>
<input
v-model="inputOtherM"
......@@ -321,10 +322,6 @@ export default {
lable: "",
value: 1000,
},
{
lable: "其他金额",
value: "",
},
],
numberList: [],
tempFiles1: "../../static/img/idCardBg1.png", //上传身份证临时选择文件
......@@ -453,6 +450,8 @@ export default {
// 输入限制
inputControl(e) {
let this_ = this;
this_.MoneyIndex = -1;
this_.isOtherMoney = true;
let obj = e.detail;
this.$nextTick(function () {
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
......@@ -636,14 +635,15 @@ export default {
},
// 快捷选择金额
async depotMoney(value, MoneyIndex) {
console.log(value);
if (!value) {
this.isOtherMoney = true;
this.Money = "";
this.MoneyIndex = MoneyIndex;
return;
}
// console.log(value);
// if (!value) {
// this.isOtherMoney = true;
// this.Money = "";
// this.MoneyIndex = MoneyIndex;
// return;
// }
this.isOtherMoney = false;
this.inputOtherM = "";
this.Money = parseInt(value);
this.MoneyIndex = MoneyIndex;
},
......
<template>
<view class="contaner">
<view class="headerbox">
<image src="../../static/ReceiveMoney.png" mode="aspectFit"></image>
</view>
<view class="LoginBox">
<view class="phon">
<input type="number" class="phonNumber" :adjust-position="true" maxlength="11" v-model="phonNumber"
value="" placeholder="请输入手机号" placeholder-class="placeholder" />
</view>
<view class="phon" style="margin-top: 50rpx;">
<input type="text" class="phonNumber" :adjust-position="true" v-model="studentName" value=""
placeholder="请输入学生姓名" placeholder-class="placeholder" />
</view>
<view class="VerificationCode">
<input type="number" class="code" value="" :adjust-position="true" maxlength="6"
v-model="VerificationCode" placeholder="请输入验证码" placeholder-class="placeholder" />
<view class="sendBtn" @click="getVerificationCode">
{{timer?second+'s后获取':'获取验证码'}}
</view>
</view>
<view class="ReceiveMoney" @tap="ReceiveMoney">
领取红包
</view>
</view>
<!-- 温馨提示 -->
<view class="activity">
</view>
</view>
</template>
<script>
export default {
name: "ReceiveMoney",
data() {
return {
phonNumber: "",
VerificationCode: "",
studentName: "",
timer: null,
second: 3
}
},
methods: {
// 获取验证码
async getVerificationCode() {
try {
if (!this.phonNumber) {
this.$toast("请输入手机号码!");
return
}
if (this.timer) {
return
}
this.$toast.loading({
duration: 0,
message: '请稍后...',
forbidClick: true,
loadingType: 'spinner',
});
this.timer = setInterval(() => {
this.second--;
if (!this.second) {
clearInterval(this.timer);
// 手动清除 Toast
this.$toast.clear();
this.second = 60
this.timer = null
}
}, 1000);
} catch (e) {
//TODO handle the exception
console.log(e);
}
},
// 验证手机号码领取红包
async ReceiveMoney() {
try {
if (!this.phonNumber) {
this.$toast("请输入手机号码!");
return
}
if (!this.VerificationCode) {
this.$toast("请输入验证码!");
return
}
this.$toast.loading({
duration: 3000,
message: '请稍后...',
forbidClick: true,
loadingType: 'spinner',
});
await new Promise((res, rej) => {
setTimeout(() => {
res()
}, 3000)
})
await this.$dialog.alert({
title: '系统提示',
message: '领取成功!',
theme: 'round-button',
});
if (typeof WeixinJSBridge !== 'undefined') {
WeixinJSBridge.call('closeWindow');
} else {
window.opener = null;
window.close()
}
} catch (e) {
//TODO handle the exception
console.warn("----", e);
}
}
}
}
</script>
<style>
page {
width: 750pxr;
height: 100vh;
background: linear-gradient(0deg, #790003 0%, #BD000B 100%);
position: relative;
}
.headerbox {
width: 750rpx;
height: 268rpx;
}
.headerbox image {
width: 100%;
height: 100%;
position: relative;
}
.LoginBox {
width: 570rpx;
height: 450rpx;
margin: 0 auto;
position: absolute;
left: 0;
right: 0;
top: 404rpx;
}
.placeholder {
/* width: 310rpx; */
font-size: 30rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #999999;
/* padding-left: 31rpx; */
}
.phonNumber {
/* width: 570rpx; */
height: 100rpx;
background: #FFFFFF;
border-radius: 8rpx;
padding-left: 31rpx;
}
.VerificationCode {
display: flex;
justify-content: space-between;
margin-top: 50rpx;
}
.code {
width: 350rpx;
height: 100rpx;
background: #FFFFFF;
border-radius: 8rpx;
padding-left: 31rpx;
}
.sendBtn {
width: 170rpx;
height: 100rpx;
background: #FFE49C;
border-radius: 8rpx;
line-height: 100rpx;
text-align: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #222222;
}
.ReceiveMoney {
width: 570rpx;
height: 100rpx;
background: #FFC948;
border-radius: 8rpx;
line-height: 100rpx;
text-align: center;
font-size: 36rpx;
font-family: Source Han Sans CN;
font-weight: 500;
color: #222222;
margin-top: 100rpx;
}
</style>
......@@ -36,7 +36,7 @@
<text class="name">年级班级:</text>
<text class="value">{{ChargeProDetail.userGrade||""}} {{ChargeProDetail.userClass||""}}</text>
</view>
<view class="rowInfo">
<view class="rowInfo" v-if="false">
<text class="name">订单编号:</text>
<text class="value">{{ChargeProDetail.tradeId||""}}</text>
</view>
......@@ -164,6 +164,12 @@
if (options.PaymentRsults) {
this_.dialogShow = true
this.PaymentRsults = parseInt(options.PaymentRsults);
if (this.PaymentRsults == 1) {
// 支付成功返回交费项目列表
setTimeout(() => {
this_.dialogClosed()
}, 3000)
}
// 上报支付结果
this.returnPaymentResult(uni.getStorageSync("prepayId").tradeId, this.PaymentRsults)
}
......
<template>
<view class="tainer">
<van-dialog v-model="dialogShow" :show-confirm-button="false" :show-cancel-button="false"
:closeOnClickOverlay="true">
<view class="OneExpeditingBox">
<image style="width: 88rpx;height: 88rpx;" mode='widthFix' :src="ImgUrl+'StudentPayment/Tips.png'">
</image>
<view class="title1">
是否发送信息
</view>
<view class="title2">
给未交纳费用的家长发送信息,提醒其
交纳费用?
</view>
<view class="" style="background: #E6E6E6;height: 1rpx; margin-top: 30rpx;">
</view>
<view class="dialogBtnGrou">
<view class="cancelBtn" @click="dialogShow=false">
取消
</view>
<view class="" style="background: #E6E6E6;width: 1rpx;">
</view>
<view class="confirmBtn" @click="OneExpediting(OneExpeditingData)">
确认
</view>
</view>
</view>
</van-dialog>
<van-tabs ref="tabs" title-inactive-color="#999999" title-active-color="#333333" sticky animated
v-model:active="active" swipeable color="#01CB88" background="#FFFFFF" line-width="30px" line-height="4px"
@change="PayProjectTab">
<van-tab :title="vanTab[0]" title-class="PayProjectTab PayProjectList">
<!-- 收费项目 -->
<view class="ListBox">
<view class="" v-if="ChargePaymentPageList.length>0">
<view class="container ProjectList" v-for="(item,index) in ChargePaymentPageList" :key="index">
<view class="listitem top" @tap="PayProgressDetails(item)">
<view class="title">
{{item.chargeName}}
</view>
</view>
<view class="hairline"
style="width: 620rpx;height: 1rpx;background-color: #E6E6E6;margin: 0 auto;margin-top: 28rpx;">
</view>
<view class="contentTxt" @tap="PayProgressDetails(item)">
<view class="left">
<text>未交纳人数:</text>
<text>{{item.nopayNum}}</text>
</view>
<view class="right">
<text>已交纳人数:</text>
<text>{{item.paiedNum}}</text>
</view>
</view>
<view class="listitem botto" style="align-items: baseline;">
<van-icon name="clock-o" /> <text class="Tips"
@tap="PayProgressDetails(item)">{{item.diffTime}}收费结束</text>
<view class="OneExpediting" v-if="item.nopayNum>0" @click="OneExpeditingPop(item)">
一键催交
</view>
</view>
</view>
<view class="bottomtxt">已经到底啦~</view>
</view>
<!-- 没有数据 -->
<view class="noData" v-else>
<image style="width: 301rpx;height: 258rpx;" :src="ImgUrl+'StudentPayment/NoRecord.png'"
mode='widthFix'></image>
<view>暂无数据</view>
</view>
</view>
</van-tab>
<van-tab :title="vanTab[1]" title-class="PayProjectTab PayProjectHistory">
<!-- 缴费历史 -->
<view class="ListBox">
<view class="" v-if="ChargeEndPageList.length>0">
<view class="container ProjectHistory" v-for="(item,index) in ChargeEndPageList" :key="index"
@tap="PayProgressDetails(item)">
<view class="listitem top">
<view class="title">
{{item.chargeName}}
</view>
</view>
<view class="hairline"
style="width: 620rpx;height: 1rpx;background-color: #E6E6E6;margin: 0 auto;margin-top: 28rpx;">
</view>
<view class="contentTxt">
<view class="left">
<text>未交纳人数:</text>
<text>{{item.nopayNum}}</text>
</view>
<view class="right">
<text>已交纳人数:</text>
<text>{{item.paiedNum}}</text>
</view>
</view>
</view>
<view class="bottomtxt">已经到底啦~</view>
</view>
<!-- 没有数据 -->
<view class="noData" v-else>
<image style="width: 290rpx;height: 242rpx;" :src="ImgUrl+'StudentPayment/development.png'"
mode='widthFix'></image>
<view>程序员正在玩命加载</view>
<view class="bottomtxt">暂无数据</view>
</view>
</view>
</van-tab>
</van-tabs>
</view>
</template>
<script>
// 时间处理模块
import dayjs from 'dayjs'
let orderApi = window.location.origin
export default {
name: "PayProgress",
data() {
return {
ImgUrl: this.$ImgUrl,
active: 0,
vanTab: ['交费中', '已结束'],
ChargePaymentPageList: [],
ChargeEndPageList: [],
pageCurrent: 1,
pageSize: 10,
total: 0,
allData: {},
// 弹框
dialogShow: false,
// 一键催缴的数据
OneExpeditingData: {}
}
},
onLoad: function(options) {
console.log("PayProject", options);
if (options.seesionID && options.userID && options.schoolId) {
uni.setStorageSync("personalInfo", {
userId: options.userID || '',
seesionID: options.seesionID || '',
schoolId: options.schoolId || '',
openId: options.openId
})
this.allData = options
} else {
let personalInfo = uni.getStorageSync("personalInfo")
this.allData = Object.assign(options, personalInfo)
}
this.queryChargePaymentPage()
},
onPullDownRefresh: function(e) {
console.log("onPullDownRefresh", e);
},
onReachBottom: function(e) {
console.log("onReachBottom", e);
this.pageCurrent = this.pageCurrent + 1
if (this.active == 0) {
this.queryChargePaymentPage()
return
}
this.queryChargeEndPage()
},
methods: {
// 一键催缴弹框
async OneExpeditingPop(ItemData) {
try {
this.dialogShow = true;
this.OneExpeditingData = ItemData
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 一键催缴
async OneExpediting() {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/teacher/charge/paymentNoticeAll'
}, {
"chargeId": this.OneExpeditingData ? this.OneExpeditingData.id : '',
"schoolId": this.allData.schoolId,
})
if (data.code != 200) {
this.dialogShow = false;
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
return
}
this.dialogShow = false;
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 切换tab
async PayProjectTab(index) {
try {
this.pageCurrent = 1
if (index > 0) {
this.queryChargeEndPage(index)
return
}
this.queryChargePaymentPage(index)
} catch (e) {
//TODO handle the exception
console.log(e);
}
},
// 交费中项目信息分页查询
async queryChargePaymentPage(index) {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/teacher/charge/queryChargePaymentPage'
}, {
"pageCurrent": this.pageCurrent,
"pageSize": this.pageSize,
"schoolId": this.allData.schoolId,
"userId": this.allData.userId || this.allData.userID
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
this.ChargePaymentPageList = []
return
}
if (data.data.records && Array.isArray(data.data.records)) {
let tmp = data.data.records;
let newArr = []
for (let s of tmp) {
let diffTime = dayjs(s.endTime).diff(new Date(), 'hour');
if (diffTime > 24) {
diffTime = dayjs(s.endTime).diff(new Date(), 'day');
s.diffTime = diffTime + ' 天后'
} else {
s.diffTime = 1 + ' 天后'
}
newArr.push(s)
}
if (this.pageCurrent == 1) {
this.ChargePaymentPageList = newArr
return
}
if (this.pageCurrent > 1) {
this.ChargePaymentPageList.push(...newArr)
return
}
} else {
this.ChargePaymentPageList = []
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 交费项目已结束信息分页查询
async queryChargeEndPage(index) {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/teacher/charge/queryChargeEndPage'
}, {
"pageCurrent": this.pageCurrent,
"pageSize": this.pageSize,
"schoolId": this.allData.schoolId,
"userId": this.allData.userId || this.allData.userID
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
this.ChargeEndPageList = []
return
}
if (data.data.records && Array.isArray(data.data.records)) {
let tmp = data.data.records;
let newArr = []
for (let s of tmp) {
newArr.push(s)
}
if (this.pageCurrent == 1) {
this.ChargeEndPageList = newArr
return
}
if (this.pageCurrent > 1) {
this.ChargeEndPageList.push(...newArr)
return
}
} else {
this.ChargeEndPageList = []
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 收费项目详情
async PayProgressDetails(data) {
try {
console.log(data);
uni.setStorageSync("PayProgressDetails", data)
uni.navigateTo({
url: `../PayProgressDetails/PayProgressDetails?active=${this.active}&chargeId=${data.id ||''}`
})
} catch (e) {
//TODO handle the exception
console.log(e);
}
}
}
}
</script>
<style lang="scss">
page {
background: #F3F5F6;
}
.noData {
text-align: center;
margin-top: 316rpx;
image {
position: relative;
}
}
.tainer {
.OneExpeditingBox {
text-align: center;
margin-top: 50rpx;
}
.title1 {
font-size: 36rpx;
font-family: PingFang SC;
font-weight: bold;
color: #666666;
}
.title2 {
width: 440rpx;
font-size: 26rpx;
font-family: PingFang SC;
font-weight: 500;
color: #666666;
margin: 0 auto;
margin-top: 30rpx;
}
.dialogBtnGrou {
height: 88rpx;
line-height: 88rpx;
display: flex;
justify-content: space-around;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
.cancelBtn {
width: 100%;
color: #999999;
}
.confirmBtn {
width: 100%;
color: #01CB88;
}
}
}
.ListBox {
width: 750rpx;
min-height: 100%;
background: #F3F5F6;
padding-top: 12rpx;
padding-bottom: 100rpx;
.container {
width: 686rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 auto;
margin-top: 20rpx;
}
.container {
font-family: PingFang SC;
.top {
.title {
width: 266rpx;
font-size: 32rpx;
font-weight: bold;
color: #333333;
line-height: 36rpx;
padding-left: 31rpx;
padding-top: 30rpx;
word-break: break-all;
white-space: nowrap;
text-overflow: ellipsis;
}
.money {
font-size: 36rpx;
font-family: DIN;
font-weight: bold;
color: #01CB88;
line-height: 36rpx;
padding-left: 230rpx;
padding-top: 30rpx;
}
.money::before {
content: "¥";
font-size: 32rpx;
font-family: PingFang SC;
font-weight: bold;
color: #01CB88;
}
}
.center {
.describe {
width: 614rpx;
height: 63rpx;
font-size: 28rpx;
font-weight: 500;
color: #666666;
line-height: 36rpx;
padding-top: 38rpx;
padding-left: 32rpx;
overflow-y: auto;
}
}
.botto {
// padding-top: 30rpx;
padding-left: 32rpx;
font-size: 24rpx;
font-weight: 500;
color: #BABABA;
height: 95rpx;
.Tips {
padding-left: 10rpx;
}
}
.contentTxt {
width: 620rpx;
margin: 0 auto;
display: flex;
flex-direction: row;
height: 100rpx;
line-height: 100rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
.left,
.right {
display: flex;
align-items: center;
}
.left text:nth-child(2) {
font-size: 36rpx;
font-family: DIN;
font-weight: 500;
color: #FF3B00;
}
.right {
padding-left: 79rpx;
}
.right text:nth-child(2) {
font-size: 36rpx;
font-family: DIN;
font-weight: 500;
color: #333333;
}
}
.OneExpediting {
width: 176rpx;
height: 60rpx;
background: #01CB88;
border-radius: 30rpx;
text-align: center;
line-height: 60rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
position: relative;
left: 250rpx;
}
}
.ProjectHistory {}
.listitem {
display: flex;
align-items: center;
}
.bottomtxt {
height: 21rpx;
font-size: 22rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
line-height: 90rpx;
text-align: center;
}
}
.van-tabs__content {
width: 100%;
height: 100%;
position: fixed;
left: 0;
z-index: 999;
overflow: scroll
}
.van-tabs {
.PayProjectTab {
height: 200rpx;
}
}
</style>
<template>
<view class="contaner">
<view class="queryBox">
<view class="search">
<van-search class="inputSearch" v-model="searchValue" show-action placeholder="请输入姓名查询"
@search="onSearch">
<template #action>
<div class="SearchBtn" @click="onSearch">查询</div>
</template>
</van-search>
</view>
<van-dropdown-menu class="dropdownMenu" active-color="#01CB88">
<van-dropdown-item v-model="classId" :title="dropTitle" @change="dropItemChange1">
<van-tree-select main-active-class="tree_father" content-active-class="tree_father" :items="items"
@click-item="treeSelect " :active-id.sync="activeIds" :main-active-index.sync="activeIndex"
max="1" />
</van-dropdown-item>
<van-dropdown-item v-model="payStatus" @change="dropItemChange2" :options="option2" />
</van-dropdown-menu>
</view>
<!-- 数据列表 -->
<view class="ChargeUserPageListBox" v-if="ChargeUserPageList.length>0">
<view class="PageItemList" v-for="(item,index) in ChargeUserPageList" :key="index">
<view class="hrow">
<view class="left ">
<text class="name">{{item.userName||''}}</text>
<text class="payStatus" v-if="item.payStatus==2"
:style="{'background':'#FFECE6','color': '#FF3B00'}">未交纳</text>
<text class="payStatus" v-if="item.payStatus==1"
:style="{'background':'#E4FBF3','color': '#01CB88'}">已交纳</text>
</view>
<view class="right" v-if="item.payStatus==1">
<text>实交纳:</text>
<text class="money">{{item.amount/100||""}}</text>
</view>
</view>
<view class="paymentNotice" @tap="paymentNotice(item)" v-if="item.payStatus==2&&allData.active==0">
催交
</view>
<view class="class_name">
<text>{{(item.userClass||'')+'/'+(item.userGrade||'')}}</text>
</view>
</view>
<view class="bottomtxt">已经到底啦~</view>
</view>
<!-- -->
<view class="noData" v-else>
<image style="width: 301rpx;height: 258rpx;" :src="ImgUrl+'StudentPayment/NoRecord.png'" mode='widthFix'>
</image>
<view>暂无更多数据</view>
</view>
</view>
</template>
<script>
// 时间处理模块
import dayjs from 'dayjs'
let orderApi = window.location.origin
import {
Dialog
} from 'vant';
export default {
name: "PayProgressDetails",
data() {
return {
searchValue: "",
classId: '',
payStatus: '',
option1: [{
text: '请选择年级',
value: 0
},
{
text: '当前教职工管理年级',
value: 1
},
{
text: '当前选择年级下的班级',
value: 2
},
],
option2: [{
text: '请选择状态',
value: ''
},
{
text: '已交费',
value: 1
},
{
text: '未交费',
value: 2
},
],
ImgUrl: this.$ImgUrl,
pageCurrent: 1,
pageSize: 10,
total: 0,
// 交费项目用户分页查询
ChargeUserPageList: [],
items: [],
activeIds: [],
activeIndex: 0,
dropTitle: "请选择年级"
}
},
onLoad: function(options) {
let personalInfo = uni.getStorageSync("personalInfo")
this.allData = Object.assign(options, personalInfo)
this.queryChargeUserPage(options.chargeId)
this.queryTeacherClassList()
},
onReachBottom: function(e) {
console.log("onReachBottom", e);
this.pageCurrent = this.pageCurrent + 1
this.queryChargeUserPage(this.allData.chargeId, this.searchValue)
},
methods: {
// 查询教职工管理的年级班级列表
async queryTeacherClassList() {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/charge/group/queryTeacherClassList'
}, {
"schoolId": this.allData.schoolId,
"userId": this.allData.userId || this.allData.userID
})
if (data.code != 200) {
this.dialogShow = false;
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
return
}
if (data.data && Array.isArray(data.data)) {
let tmp = data.data;
let newArr = []
for (let s of tmp) {
s.text = s.groupname;
// 导航节点额外类名
s.className = 'my-class';
let tmp2 = []
for (let i = 0; i < s.classes.length; i++) {
let s2 = s.classes[i]
s2.text = s2.groupname;
tmp2.push(s2)
}
s.children = tmp2
newArr.push(s)
}
this.items = newArr
} else {
this.items = []
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 一键催缴
async paymentNotice(item) {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/teacher/charge/paymentNotice'
}, {
"chargeId": item.chargeId || '',
"schoolId": this.allData.schoolId,
"userId": item.userId
})
if (data.code != 200) {
this.dialogShow = false;
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
return
}
await Dialog.alert({
confirmButtonColor: "#01CB88",
title: '系统提示',
message: '催缴成功!',
})
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 下拉选择年纪班级
async treeSelect(value) {
try {
this.classId = value.id
let children = this.items[this.activeIndex].children
children = children.filter(v => {
return this.activeIds[0] == v.id
}).map(v => {
return v.text
}).join()
this.dropTitle = this.items[this.activeIndex].groupname + "/" + children
this.pageCurrent = 1
this.queryChargeUserPage(this.allData.chargeId, this.searchValue)
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 下拉选择
async dropItemChange1(value) {
try {
console.warn(value)
this.pageCurrent = 1
this.queryChargeUserPage(this.allData.chargeId, this.searchValue)
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
async dropItemChange2(value) {
try {
console.warn(value)
this.pageCurrent = 1
this.queryChargeUserPage(this.allData.chargeId, this.searchValue)
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 搜索框
async onSearch(value) {
try {
console.warn(value)
this.pageCurrent = 1
this.queryChargeUserPage(this.allData.chargeId, this.searchValue)
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 交费项目用户分页查询
async queryChargeUserPage(chargeId, userName) {
try {
this.activeIds = [];
this.activeIndex = -1;
let data = await this.$http.post({
url: orderApi + '/order-charge/teacher/charge/queryChargeUserPage'
}, {
userName,
chargeId,
"classId": this.classId,
"pageCurrent": this.pageCurrent,
"pageSize": this.pageSize,
"payStatus": this.payStatus,
"schoolId": this.allData.schoolId,
"userId": this.allData.userId || this.allData.userID
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
this.ChargeUserPageList = []
return
}
if (data.data.records && Array.isArray(data.data.records)) {
let tmp = data.data.records;
let newArr = []
// [1, 2, 3, 4, 5, 6].map(v => {
// return {
// payStatus: parseInt(Math.random() * 2) + 1,
// amount: "100",
// id: 1
// }
// })
for (let s of tmp) {
newArr.push(s)
}
if (this.pageCurrent == 1) {
this.ChargeUserPageList = newArr
return
}
if (this.pageCurrent > 1) {
this.ChargeUserPageList.push(...newArr)
return
}
} else {
this.ChargeUserPageList = []
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
}
}
</script>
<style lang="scss">
page {
background: #F3F5F6;
}
.bottomtxt {
// height: 21rpx;
font-size: 22rpx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
line-height: 90rpx;
text-align: center;
}
.noData {
text-align: center;
margin-top: 316rpx;
image {
position: relative;
}
}
.queryBox {
background: #FFFFFF;
padding-top: 12rpx;
.search {
width: 686rpx;
height: 70rpx;
background: #FFFFFF;
border: 2rpx solid #01CB88;
border-radius: 35rpx;
margin: 0 auto;
.SearchBtn {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #01CB88;
}
.inputSearch {
height: 100%;
width: 92%;
margin: 0 auto;
padding: 0 !important;
.van-search__content {
background: #FFFFFF;
height: 90%;
}
}
}
}
.my-class::before {
background-color: #01CB88;
}
.van-tree-select__item--active {
color: #01CB88;
}
.ChargeUserPageListBox {
padding-top: 10rpx;
width: 686rpx;
height: 170rpx;
margin: 0 auto;
.PageItemList {
width: 686rpx;
height: 170rpx;
background: #FFFFFF;
border-radius: 24rpx;
margin: 0 auto;
margin-top: 20rpx;
// padding-left: 32rpx;
// padding-right: 32rpx;
position: relative;
}
.paymentNotice {
width: 118rpx;
height: 60rpx;
background: #01CB88;
border-radius: 30rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
text-align: center;
line-height: 60rpx;
position: absolute;
right: 32rpx;
bottom: 55rpx;
}
.hrow {
padding-left: 32rpx;
padding-right: 32rpx;
display: flex;
justify-content: space-between;
.left {
display: flex;
align-items: center;
height: 100rpx;
.name {
font-size: 42rpx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
}
.payStatus {
width: 94rpx;
height: 34rpx;
border-radius: 8rpx;
line-height: 34rpx;
font-size: 24rpx;
font-family: PingFang SC;
font-weight: 500;
text-align: center;
margin-left: 20rpx;
}
.right {
height: 100rpx;
line-height: 100rpx;
display: flex;
align-items: center;
}
.right text:nth-child(1) {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
}
.right text:nth-child(2) {
font-size: 36rpx;
font-family: DIN;
font-weight: 500;
color: #333333;
}
}
.class_name {
padding-right: 32rpx;
padding-left: 32rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
}
}
</style>
......@@ -44,21 +44,30 @@
@tap="PayOrderDetails(item)">
<view class="listitem top">
<view class="title">
2022高一春季收费
{{item.chargeName}}
</view>
<view class="money">
100.00
<view class="money" v-if="false">
{{item.amountMust}}
</view>
</view>
<view class="hairline"
style="width: 686rpx;height: 1rpx; background-color:#E6E6E6;margin-top: 28rpx;">
</view>
<view class="History">
<view class="Historyitem">
<span>实交金额:</span>
<span class="money">{{item.realAmount/100||""}}</span>
</view>
<view class="Historyitem">
<span>交费时间:</span>
<span>{{item.payTime||""}}</span>
</view>
</view>
<view class="listitem center">
<text class="describe">
本次收费需要收取高一春季开学相关费用,并根据
备注输入相关信息。
{{item.descInfo||""}}
</text>
</view>
<view class="listitem botto" style="align-items: baseline;">
<van-icon name="clock-o" /> <text class="Tips">5天后收费结束</text>
</view>
</view>
<view class="bottomtxt">已经到底啦~</view>
</view>
......@@ -66,8 +75,8 @@
<view class="noData" v-else>
<image style="width: 290rpx;height: 242rpx;" :src="ImgUrl+'StudentPayment/development.png'"
mode='widthFix'></image>
<view>程序员正在玩命开发</view>
<view class="bottomtxt">详情请联系客服</view>
<view>正在玩命加载</view>
<view class="bottomtxt">暂无历交费项目</view>
</view>
</view>
</van-tab>
......@@ -116,13 +125,19 @@
onReachBottom: function(e) {
console.log("onReachBottom", e);
this.pageCurrent = this.pageCurrent + 1
if (this.active == 0) {
this.getPayProject()
return
}
this.queryChargeHistoryPage()
},
methods: {
// 切换tab
async PayProjectTab(index) {
try {
this.pageCurrent = 1
if (index > 0) {
this.queryChargeHistoryPage(index)
return
}
this.getPayProject(index)
......@@ -131,6 +146,56 @@
console.log(e);
}
},
// 交费历史记录分页查询
async queryChargeHistoryPage() {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/app/charge/project/queryChargeHistoryPage'
}, {
"pageCurrent": this.pageCurrent,
"pageSize": this.pageSize,
"schoolId": this.allData.schoolId,
"userId": this.allData.userId || this.allData.userID
})
if (data.code != 200) {
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
this.PayProjectHistory = []
return
}
if (data.data.records && Array.isArray(data.data.records)) {
let tmp = data.data.records;
let newArr = []
for (let s of tmp) {
s.payTime = dayjs(s.payTime).format("YYYY-MM-DD HH:mm:ss");
newArr.push(s)
}
if (this.pageCurrent == 1) {
this.PayProjectHistory = newArr
return
}
if (this.pageCurrent > 1) {
this.PayProjectHistory.push(...newArr)
return
}
} else {
this.PayProjectHistory = []
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 交费项目信息分页查询
async getPayProject(index) {
try {
......@@ -188,13 +253,19 @@
})
}
},
// 收费项目详情
// 收费项目详情/历史详情
async PayOrderDetails(data) {
try {
console.log(data);
uni.setStorageSync("PayOrderDetails", data)
let url = "../PayOrderDetails/PayOrderDetails?chargeId=" + data.id || ''
if (this.active == 0) {
url = "../PayOrderDetails/PayOrderDetails?chargeId=" + data.id || ''
} else {
url = "../PayProjectHistoryDetails/PayProjectHistoryDetails?chargeId=" + data.id || ''
}
uni.navigateTo({
url: "../PayOrderDetails/PayOrderDetails?chargeId=" + data.id || ''
url
})
} catch (e) {
//TODO handle the exception
......@@ -299,10 +370,50 @@
.Tips {
padding-left: 10rpx;
}
span {
color: #333333;
font-size: 30rpx;
}
}
}
.ProjectHistory {}
.ProjectHistory {
height: 330rpx;
background: #FFFFFF;
border-radius: 16rpx;
.money {
font-size: 36rpx;
font-family: DIN;
font-weight: bold;
color: #01CB88;
}
.money::before {
content: "¥";
font-size: 32rpx;
font-family: PingFang SC;
font-weight: bold;
color: #01CB88;
}
.describe {
padding-top: 20rpx !important;
}
.History {
width: 630rpx;
margin: 0 auto;
.Historyitem {
height: 60rpx;
line-height: 60rpx;
display: flex;
justify-content: space-between;
}
}
}
.listitem {
display: flex;
......
<template>
<view class="tainer">
<view class="headerImg">
<view style="width: 686rpx;height: 60rpx;margin: 0 auto;padding-top: 44rpx;">
<image style="width: 686rpx;height: 60rpx;" :src="ImgUrl+'StudentPayment/bg3.png'" mode='widthFix'>
</image>
</view>
<view class="cardInfo">
<view class="title">
交费详情单
</view>
<!-- <view class="title2">
<van-notice-bar :scrollable="ChargeProDetail.descInfo.length>20?true:false" background="#ffffff"
color="#333333" style="padding: 0;" :text="ChargeProDetail.descInfo||''" />
</view> -->
<view style="position: relative;">
<image style="width: 124rpx;height: 106rpx;position: absolute;top: -110rpx;right: 0;"
:src="ImgUrl+'StudentPayment/yijiaona.png'" mode='widthFix'>
</image>
</view>
<van-divider dashed />
<view class="botto">
<view class="rowInfo">
<text class="name">订单编号:</text>
<text class="value">{{ChargeProDetail.tradeId||""}}</text>
</view>
<view class="rowInfo">
<text class="name">交纳时间:</text>
<text class="value">{{ChargeProDetail.payTime||""}}</text>
</view>
<view class="rowInfo">
<text class="name">学生姓名:</text>
<text class="value">{{ChargeProDetail.userName||""}}</text>
</view>
<view class="rowInfo">
<text class="name">年级班级:</text>
<text class="value">{{ChargeProDetail.userGrade||""}} {{ChargeProDetail.userClass||""}}</text>
</view>
</view>
</view>
</view>
<!-- 收费项目 -->
<view class="PayProject">
<view style="padding-top: 20rpx;padding-left: 30rpx;">
<view style="font-size: 32rpx;font-family: PingFang SC;font-weight: 500;color: #333333;">
{{ChargeProDetail.chargeName||""}}
</view>
<van-notice-bar :scrollable="ChargeProDetail.descInfo.length>20?true:false" background="#ffffff"
color="#333333" style="padding: 0; font-family: PingFang SC;font-weight: 500;color: #999999;"
:text="ChargeProDetail.descInfo||''" />
</view>
<!-- 备注 -->
<view class="remarks" style="height: auto;">
<text class="remarksTxt" style="font-size: 32rpx;">
交费信息
</text>
</view>
<view class="tabNames" style="background: #F8F8F8;">
<view>
收费子项
</view>
<view>
收费类型
</view>
<view>
金额(元)
</view>
</view>
<!-- Project -->
<view class="ProjectBox">
<view class="ProjectItem" style="border: none;" v-for="(item,index) in ChargeProDetail.items"
:key="index" v-if="!(item.itemAmount==0&&item.mustFlag==0)">
<view class="tabNames">
<view class="ProjectName">
<image v-if="SPayProject(index)" style="width: 32rpx;height: 32rpx;"
:src="ImgUrl+'StudentPayment/gx.png'" mode='widthFix'></image>
<image v-else style="width: 32rpx;height: 32rpx;" :src="ImgUrl+'StudentPayment/wgx.png'"
mode='widthFix'></image>
<text>{{item.itemName}}</text>
</view>
<view class="ProjectType">
{{['选交项目','必交项目'][item.mustFlag]}}
</view>
<view class="money">
{{itemAmount(item.itemAmount)}}
</view>
</view>
</view>
</view>
<!-- .......................... -->
<!-- 备注 -->
<view class="remarks" style="height: auto;">
<text class="remarksTxt" style="font-size: 32rpx;">
支付信息
</text>
</view>
<view class="tabNames" style="background: #F8F8F8;">
<view>
支付方式
</view>
<view>
支付单号
</view>
<view>
支付金额
</view>
</view>
<!-- Project -->
<view class="ProjectBox" style="border: none;">
<view class="ProjectItem" style="border: none;background-color: white;"
v-for="(item,index) in ChargeProDetail.payInfos" :key="index">
<view class="tabNames">
<view class="ProjectName">
<text>微信</text>
</view>
<view class="ProjectType"
style=" overflow: hidden;word-break: break-all; white-space: nowrap;text-overflow: ellipsis;">
{{item.transactionId}}
</view>
<view class="money">
{{itemAmount(item.amount)}}
</view>
</view>
</view>
<!-- 备注 -->
<view class="remarks">
<text class="remarksTxt">
备注
</text>
<view class="remarksTextarea">
{{ChargeProDetail.remarks||''}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
/**
* 对象转拼接字符串
* @param {*} res Object 需要转换的数据对象
*/
function OforS(res) {
var resL = 0;
var outS = "";
for (var i in res) {
if (resL == 0) {
outS += "" + i + "=" + res[i];
} else {
outS += "&" + i + "=" + res[i];
}
resL++;
}
return outS;
}
let orderApi = window.location.origin
// 时间处理模块
import dayjs from 'dayjs'
export default {
name: "PayProjectHistoryDetails",
data() {
return {
ImgUrl: this.$ImgUrl,
payMoney: "0.00",
// 选择收费子项目
selectPayProject: [],
// 选择收费子项目
selectPayProjectObj: {},
selectCount: 0,
dialogShow: false,
PaymentRsults: -1,
allData: {},
// 交费项目详情信息
ChargeProDetail: {
descInfo: ''
},
// 备注信息
remarks: "",
remarksType: ["备注", "邮箱", "手机号码", "身份证"],
// 费用id
chargeItemIds: []
}
},
onLoad: function(options) {
let this_ = this;
let personalInfo = uni.getStorageSync("personalInfo")
let PayOrderDetails = uni.getStorageSync("PayOrderDetails")
this.allData = Object.assign(options, personalInfo, {
chargeId: PayOrderDetails.id
})
this.queryChargeHistoryDetail()
},
onShow: function() {
},
computed: {
itemAmount() {
return function(Amount) {
if (Amount) {
return (Amount / 100).toFixed(2)
} else {
return "0.00"
}
}
},
SPayProject() {
return function(index) {
if (index == 0 || index > 0) {
return this.selectPayProject.includes(index)
} else {
return false
}
}
}
},
methods: {
// 查询交费订单明细信息
async queryChargeHistoryDetail() {
try {
let data = await this.$http.post({
url: orderApi + '/order-charge/app/charge/project/queryChargeHistoryDetail'
}, {
"chargeId": this.allData.chargeId,
"schoolId": this.allData.schoolId,
"userId": this.allData.userId
})
if (data.code != 200 || !data.data) {
uni.showToast({
icon: "none",
mask: true,
title: data.msg
})
return
}
this.ChargeProDetail = data.data;
this.ChargeProDetail.payTime = dayjs(data.data.payTime).format("YYYY-MM-DD HH:mm:ss");
// 收费类型必缴项目默认选择
for (let i = 0; i < data.data.items.length; i++) {
if (data.data.items[i].mustFlag == 1) {
this.selectProject(data.data.items[i], i)
}
}
} catch (e) {
//TODO handle the exception
console.log(e);
uni.showToast({
icon: "none",
mask: true,
title: e.message
})
}
},
// 选择支付的项目
async selectProject(data, index) {
try {
if (!this.selectPayProject.includes(index)) {
this.selectPayProject.push(index)
this.selectPayProjectObj[index + ''] = data
} else {
let indexOf = this.selectPayProject.indexOf(index)
this.selectPayProject.splice(indexOf, 1)
delete this.selectPayProjectObj[index + '']
}
// 计算金额
let payMoney = 0,
// 选择的项目数
selectCount = 0,
// 费用id
chargeItemIds = [];
for (let key in this.selectPayProjectObj) {
selectCount++
payMoney += this.selectPayProjectObj[key].itemAmount;
chargeItemIds.push(this.selectPayProjectObj[key].id)
}
this.selectCount = selectCount;
this.payMoney = (payMoney / 100).toFixed(2);
this.chargeItemIds = chargeItemIds;
} catch (e) {
//TODO handle the exception
console.log(e);
}
},
}
}
</script>
<style lang="scss">
page,
.tainer {
background: #F3F5F6;
height: 100vh;
}
.PaymentRsults {
width: 580rpx;
height: 480rpx;
background: #FFFFFF;
border-radius: 16rpx;
text-align: center;
text-align: center;
margin: 0 auto;
font-family: PingFang SC;
image {
top: 115rpx;
}
.PaymentRsultsTxt {
height: 34rpx;
font-size: 36rpx;
font-weight: bold;
color: #333333;
text-align: center;
margin: 0 auto;
margin-top: 115rpx;
}
}
.PayProject,
.remarks {
width: 646rpx;
background: #FFFFFF;
border-radius: 16rpx;
margin: 0 auto;
}
.PayProject {
height: auto;
margin-top: 20rpx;
.ProjectBox {
height: auto;
// overflow: auto;
.tabNames {
justify-content: flex-start;
height: 100%;
}
.ProjectItem {
// width: 628rpx;
height: 100rpx;
margin: 0 auto;
border: 2rpx solid #E6E6E6;
border-radius: 16rpx;
// margin-top: 19rpx;
}
.selectProjectItem {
border: 2rpx solid #01CB88 !important;
background-color: rgba(1, 203, 136, 0.1);
}
.ProjectName {
margin-left: 25rpx;
display: flex;
justify-content: flex-start;
align-items: center;
image {
display: inline-block;
}
text {
display: inline-block;
width: 176rpx;
overflow: hidden;
word-break: break-all;
margin-left: 16rpx;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.ProjectName,
.ProjectType {
font-size: 30rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.ProjectType {
width: 120rpx;
// margin-left: 40rpx;
}
.money {
font-size: 32rpx;
font-family: DIN;
font-weight: bold;
color: #01CB88;
width: 32%;
text-align: right;
}
.money::before {
content: "¥";
font-size: 28rpx;
font-family: PingFang SC;
font-weight: bold;
color: #01CB88;
}
}
.tabNames {
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
justify-content: space-around;
display: flex;
align-items: center;
height: 87rpx;
line-height: 87rpx;
}
}
.remarks {
height: 220rpx;
// margin-top: 20rpx;
textarea {
width: 100%;
height: 100%;
padding-left: 30rpx;
}
.remarksTxt {
height: 80rpx;
line-height: 80rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
margin-left: 66rpx;
position: relative;
}
.remarksTxt:before {
content: " ";
width: 25rpx;
height: 25rpx;
background: #01CB88;
border-radius: 50%;
position: absolute;
z-index: 100;
top: 10rpx;
left: -40rpx;
}
.remarksTxt:after {
content: " ";
width: 25rpx;
height: 25rpx;
background: #FFB62D;
border-radius: 50%;
position: absolute;
z-index: 99;
left: -32rpx;
top: 10rpx;
}
.remarksTextarea {
width: 576rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
margin: 0 auto;
}
}
.headerImg {
width: 750rpx;
height: 480rpx;
background-image: url(https://xiaopay2020.oss-cn-shenzhen.aliyuncs.com/static/weapp/StudentPayment/bg.png);
background-repeat: no-repeat;
background-size: 100% 100%;
}
.cardInfo {
width: 646rpx;
height: 444rpx;
background: #FFFFFF;
border-radius: 16rpx;
position: relative;
margin: 0 auto;
top: -32rpx;
overflow: hidden;
font-family: PingFang SC;
background: linear-gradient(180deg, #E2FBF1 1%, #FFFFFF 20%);
.title {
width: 370rpx;
// height: 34rpx;
font-size: 36rpx;
font-weight: 800;
color: #333333;
margin: 0 auto;
margin-top: 60rpx;
text-align: center;
}
.title2 {
width: 599rpx;
height: 55rpx;
font-size: 24rpx;
font-weight: 500;
color: #999999;
margin: 0 auto;
text-align: center;
margin-top: 24rpx;
}
.botto {
.rowInfo {
font-size: 30rpx;
font-family: PingFang SC;
font-weight: 500;
margin-left: 30rpx;
line-height: 60rpx;
}
.name {
width: 128rpx;
color: #999999;
}
.value {
width: 58rpx;
color: #333333;
}
}
}
</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