<template>
|
<div class="product">
|
<div v-for="(item,index) in repaymentArr" :key="index">
|
<div class="_block">
|
<p class="title">
|
<span></span>
|
财务信息
|
</p>
|
<el-form :model="repaymentForm[index]" :rules="rules" ref="repaymentForm" label-width="165px" size="small" inline>
|
<el-form-item
|
label="鹏友收款结算户名"
|
v-if="item.receivableMessageRes.balanceaccountname.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.balanceaccountname"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="鹏友收款结算账号"
|
v-if="item.receivableMessageRes.balanceaccount.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.balanceaccount"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="鹏友收款结算银行"
|
v-if="item.receivableMessageRes.balancebankname.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.balancebankname"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="应还本金"
|
v-if="item.receivableMessageRes.payprincipalamt.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.payprincipalamt"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="用款天数"
|
v-if="item.receivableMessageRes.loandays.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.loandays"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="应还利息"
|
v-if="item.receivableMessageRes.payInterestAmt.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.payInterestAmt"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="利息减免金额"
|
v-if="item.receivableMessageRes.interestReliefAmt.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.interestReliefAmt"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="应还罚息"
|
v-if="item.receivableMessageRes.payInterestAmtA4.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.payInterestAmtA4"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="罚息减免金额"
|
v-if="item.receivableMessageRes.penaltyReliefAmt.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.penaltyReliefAmt"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="应还总金额"
|
v-if="item.receivableMessageRes.paymentAmt.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.paymentAmt"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="已还总金额"
|
v-if="item.receivableMessageRes.actualPayAmtSum.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.actualPayAmtSum"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="仍需还款总金额"
|
v-if="item.receivableMessageRes.surplusTotalAmt.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.surplusTotalAmt"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="结清日期"
|
v-if="item.receivableMessageRes.finishDate.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.finishDate"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="退还保证金是否超期"
|
v-if="item.receivableMessageRes.isexceed.visible"
|
>
|
<el-select
|
v-model="repaymentForm[index].receivableMessageRes.isexceed"
|
:disabled="!item.receivableMessageRes.isexceed.writeAble"
|
clearable
|
filterable
|
placeholder="支持输入搜索选择"
|
>
|
<el-option
|
v-for="(item,index) in YesNo"
|
:key="index"
|
:label="item.itemname"
|
:value="item.itemno"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item
|
label="退还保证金超期天数"
|
v-if="item.receivableMessageRes.exceeddays.visible"
|
>
|
<el-input
|
v-model="repaymentForm[index].receivableMessageRes.exceeddays"
|
disabled
|
></el-input>
|
</el-form-item>
|
<el-form-item
|
label="垫资补传凭证状态"
|
v-if="item.receivableMessageRes.entAdvanceMoneyStatus.visible"
|
prop="receivableMessageRes.entAdvanceMoneyStatus"
|
>
|
<el-select
|
v-model="repaymentForm[index].receivableMessageRes.entAdvanceMoneyStatus"
|
:disabled="!item.receivableMessageRes.entAdvanceMoneyStatus.writeAble"
|
clearable
|
filterable
|
placeholder="支持输入搜索选择"
|
>
|
<el-option
|
v-for="(item,index) in entAdvanceMoneyStatusList"
|
:key="index"
|
:label="item.itemname"
|
:value="item.itemno"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</div>
|
<ClaimedFunds
|
:claimedFunds="receivableData"
|
operationType='0'
|
>
|
</ClaimedFunds>
|
<WaitFunds
|
v-if="isclaimed == '0'"
|
:surplusTotalAmt='repaymentForm[index].receivableMessageRes.surplusTotalAmt'
|
:isEntAdvanceMoney='repaymentForm[index].receivableMessageRes.isEntAdvanceMoney'
|
:entAdvanceMoneyStatus='repaymentForm[index].receivableMessageRes.entAdvanceMoneyStatus'
|
v-on:sendClaimResult='sendClaimResult'
|
v-on:sendLoanInfo='sendLoanInfo'
|
operationType='0'
|
></WaitFunds>
|
</div>
|
<div class="fixedBtn">
|
<el-button
|
size="medium"
|
plain
|
@click="refuse"
|
v-if="applyInfo.phaseNo=='0203'"
|
>驳回/拒绝</el-button>
|
<el-button
|
size="medium"
|
plain
|
v-if="applyInfo.phaseNo=='0203'"
|
@click="handleSave"
|
>保存</el-button>
|
<el-button
|
size="medium"
|
plain
|
@click="prevStep"
|
>上一页</el-button>
|
<el-button
|
size="medium"
|
type="primary"
|
@click="nextPage()"
|
>下一步</el-button>
|
</div>
|
</div>
|
</template>
|
<script>
|
import {
|
qryReceivableInfo,
|
getDictionaryList,
|
saveZBDReceivableInfo,
|
} from '@api/product'
|
import WaitFunds from '../../../components/WaitFunds'
|
import ClaimedFunds from '../../../components/ClaimedFunds'
|
import common from "@/utils/common";
|
export default {
|
data () {
|
return {
|
applyInfo:this.$store.state.product.applyInfo,
|
applyMenu: this.$store.state.product.applyMenu,
|
repaymentForm:[],
|
repaymentArr:[],
|
receivableData:[],
|
initialArr:[],
|
rules:{},
|
YesNo:[],
|
entAdvanceMoneyStatusList:[],
|
isclaimed: '',
|
}
|
},
|
async created () {
|
const result = await this.qryReceivableInfo()
|
this.result = result
|
this.qryReceivableData(result)
|
this.YesNo = await this.qryDictionaryList('YesNo')
|
this.entAdvanceMoneyStatusList = await this.qryDictionaryList('entAdvanceMoneyStatus')
|
},
|
components: {
|
WaitFunds,
|
ClaimedFunds
|
},
|
methods: {
|
sendLoanInfo(data){
|
for (const key in data) {
|
// 格式化金额
|
if (
|
key == "payprincipalamt" ||
|
key == "payInterestAmtA4" ||
|
key == "paymentAmt" ||
|
key == "actualpayprincipalamt" ||
|
key == "surplusTotalAmt" ||
|
key == "payInterestAmt"
|
) {
|
data[key] = this.formatMoney(data[key]);
|
}
|
// 流水认领成功后更新部分字段
|
if (
|
key == "payprincipalamt" ||
|
key == "payInterestAmtA4" ||
|
key == "paymentAmt" ||
|
key == "actualpayprincipalamt" ||
|
key == "surplusTotalAmt" ||
|
key == "loandays" ||
|
key == "finishDate" ||
|
key == "isexceed" ||
|
key == "exceeddays" ||
|
key == "payInterestAmt"
|
) {
|
this.repaymentForm[0]['receivableMessageRes'][key] = data[key]
|
this.initialArr[0]['receivableMessageRes'][key] = data[key]
|
}
|
}
|
},
|
// 接受子组件的传值并且更新已认领资金列表
|
async sendClaimResult(){
|
const result = await this.qryReceivableInfo()
|
this.isclaimed = result.isclaimed.value
|
this.getReceivableData(result.claimBankWaterMessageRes.receivableManage)
|
for (const key in result) {
|
if(key == 'receivableMessageRes'){
|
for (const child in result[key]) {
|
// 格式化金额
|
if (
|
child == "payprincipalamt" ||
|
child == "payInterestAmtA4" ||
|
child == "paymentAmt" ||
|
child == "actualpayprincipalamt" ||
|
child == "surplusTotalAmt" ||
|
child == "payInterestAmt"
|
) {
|
result[key][child].value = this.formatMoney(
|
result[key][child].value
|
);
|
}
|
// 流水认领成功后更新部分字段
|
if (
|
child == "payprincipalamt" ||
|
child == "payInterestAmtA4" ||
|
child == "paymentAmt" ||
|
child == "actualpayprincipalamt" ||
|
child == "surplusTotalAmt" ||
|
child == "loandays" ||
|
child == "finishDate" ||
|
child == "isexceed" ||
|
child == "payInterestAmt"
|
) {
|
this.repaymentForm[0][key][child] = result[key][child].value
|
this.initialArr[0][key][child] = result[key][child].value
|
}
|
}
|
}
|
}
|
},
|
// 对已认领资金数据进行处理
|
getReceivableData(array){
|
this.receivableData = []
|
array.forEach(val => {
|
const obj = {}
|
for (const key in val) {
|
if(key == 'receivabletype'){
|
obj[key] = val[key].valueDesc
|
}else{
|
obj[key] = val[key].value
|
}
|
}
|
this.receivableData.push(obj)
|
});
|
},
|
// 还款信息查询
|
qryReceivableInfo(){
|
return new Promise(resolve=>{
|
qryReceivableInfo({applySerialno:this.applyInfo.serialNo,receivableType:'10'}).then(res=>{
|
resolve(res.result)
|
})
|
})
|
},
|
// 对数据进行处理封装
|
qryReceivableData(result){
|
const { receivableMessageRes } = result
|
const { isEntAdvanceMoney, entAdvanceMoneyStatus } = receivableMessageRes
|
this.isclaimed = result.isclaimed.value
|
this.getReceivableData(result.claimBankWaterMessageRes.receivableManage)
|
this.repaymentArr = [result]
|
this.repaymentForm = []
|
this.initialArr = []
|
this.repaymentArr.forEach((val,index) => {
|
// 格式化数据
|
const obj = {}
|
for (const key in val) {
|
if(key == 'receivableMessageRes'){
|
obj[key] = {};
|
for (const child in val[key]) {
|
// 格式化金额
|
if (
|
child == "payprincipalamt" ||
|
child == "payInterestAmtA4" ||
|
child == "paymentAmt" ||
|
child == "actualpayprincipalamt" ||
|
child == "surplusTotalAmt" ||
|
child == "interestReliefAmt" ||
|
child == "penaltyReliefAmt" ||
|
child == "payInterestAmt"
|
) {
|
val[key][child].value = this.formatMoney(
|
val[key][child].value
|
);
|
}
|
this.rules["receivableMessageRes." + child] = [];
|
if (val[key][child].required) {
|
this.rules["receivableMessageRes." + child].push({
|
required: true,
|
message: `请输入${val[key][child].filedDescription}`,
|
trigger: "change"
|
});
|
}
|
// 是否企业垫资及垫资补传凭证状态默认值为否
|
if(child == 'isEntAdvanceMoney' || child =='entAdvanceMoneyStatus'){
|
// 接口返回有值则取返回的值
|
if (entAdvanceMoneyStatus.value) {
|
val[key][child].value = entAdvanceMoneyStatus.value
|
} else {
|
val[key][child].value = '0'
|
}
|
if(isEntAdvanceMoney.value) {
|
val[key][child].value = isEntAdvanceMoney.value
|
} else {
|
val[key][child].value = '0'
|
}
|
}
|
obj[key][child] = val[key][child].value;
|
}
|
}
|
}
|
this.repaymentForm.push(obj)
|
this.initialArr.push(JSON.parse(JSON.stringify(obj)));
|
});
|
},
|
// 金额格式化
|
formatMoney(value) {
|
if (value) {
|
value =
|
parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
|
if (value == "NaN") return;
|
let l = value
|
.split(".")[0]
|
.split("")
|
.reverse();
|
let r = value.split(".")[1];
|
let t = "";
|
for (let i = 0; i < l.length; i++) {
|
t += l[i] + ((i + 1) % 3 === 0 && i + 1 !== l.length ? "," : "");
|
}
|
return (
|
t
|
.split("")
|
.reverse()
|
.join("") +
|
"." +
|
r
|
);
|
}
|
},
|
// 字典
|
qryDictionaryList(code) {
|
return new Promise(resolve => {
|
getDictionaryList({
|
codeNo: code
|
}).then(res => {
|
resolve(res.result);
|
});
|
});
|
},
|
// 驳回/拒绝
|
refuse() {
|
this.$parent._data.showCredit = true;
|
this.applyMenu.forEach((val, index) => {
|
if (val.tabname == "还款信息") {
|
common.tabInfo(
|
this.applyMenu[index + 1].tabname,
|
this.applyInfo.flowno,
|
this
|
);
|
}
|
});
|
},
|
// 上一页
|
prevStep(){
|
this.applyMenu.forEach((val, index) => {
|
if (val.tabname == "还款信息") {
|
common.tabInfo(this.applyMenu[index - 1].tabname,this.applyInfo.flowno,this);
|
}
|
});
|
},
|
// 下一步校验必填
|
nextPage(){
|
if(!common.validateForm(this.$refs.repaymentForm).flag)return;
|
// 调用父组件的查询左侧tab的方法
|
this.$parent.updateApplyTabTree('还款信息');
|
},
|
async handleSave() {
|
if(!common.validateForm(this.$refs.repaymentForm).flag)return;
|
const { repaymentForm } = this
|
const { receivableMessageRes } = repaymentForm[0]
|
const { isexceed, objectno, rmserialno = '' } = receivableMessageRes
|
const params = {
|
isexceed,
|
isentadvancemoney : receivableMessageRes.isEntAdvanceMoney,
|
entadvancemoneystatus : receivableMessageRes.entAdvanceMoneyStatus,
|
objectno,
|
rmserialno
|
}
|
this.$parent._data.loading = true;
|
await saveZBDReceivableInfo(params)
|
const result = await this.qryReceivableInfo()
|
this.qryReceivableData(result)
|
this.$parent._data.loading = false;
|
this.$message.success('保存成功')
|
}
|
},
|
// 路由离开需要校验比较数据是否发生变化
|
beforeRouteLeave(to, from, next) {
|
for (let i = 0; i < this.repaymentForm.length; i++) {
|
for (const key in this.repaymentForm[i].receivableMessageRes) {
|
if (this.initialArr[i].receivableMessageRes.hasOwnProperty(key)) {
|
if (this.repaymentForm[i]['receivableMessageRes'][key] != this.initialArr[i]['receivableMessageRes'][key]) {
|
// 页面有数据未保存
|
common.comfirm("提示","当前页面有数据未保存,是否放弃保存?", ()=> {
|
next();
|
})
|
return;
|
}
|
}
|
}
|
}
|
next();
|
}
|
}
|
</script>
|