329 lines
17 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>
<div class="case-repayment-certificate">
<div class="mb-16 flex-row justify-content-between">
<span class="f-weight500 f18">还款计划</span>
<span class="cursor-pointer" v-if="planList.length == 0" @click="updateFlag = true"><i class="el-icon-plus"></i> 添加还款计划</span>
<span class="cursor-pointer" v-else @click="updateFlag = true"><i class="el-icon-plus"></i> 编辑还款计划</span>
</div>
<div v-if="planList.length >0 && !updateFlag" class="case-detail-des flex-column mb-16 p-16 border-radius-8">
<div class="flex-column justify-content-between">
<el-form ref="ruleFormRepayment"
:model="repaymentObj"
:rules="rulesClientRepayment"
label-width="130px">
<el-form-item label="还款方式" prop="type">
<el-select v-model="repaymentObj.type" class="width100" disabled
placeholder="请选择还款方式" size="small">
<el-option
v-for="(item,index) in RepaymentOptions"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="还款金额" prop="totalAmount">
<el-input class="inputpaddingtop2" disabled
size="small"
placeholder="请输入还款金额"
v-model="repaymentObj.totalAmount"
@input="inputChange($event)">
<template slot="append"></template>
</el-input>
</el-form-item>
<!-- 枚举备注: ALL :一次性全部回款 STAGES :全部分期 MIX :混合部分先还加分期 OTHER :其他 -->
<el-form-item v-if="repaymentObj.type == 'MIX'" label="分期前偿还金额" prop="partAmount">
<el-input class="inputpaddingtop2" disabled
size="small"
placeholder="请输入分期前偿还金额"
v-model="repaymentObj.partAmount"
@input="inputChange($event)">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'MIX'" label="先还日期" prop="partDate">
<el-date-picker class="width100" size="small" disabled
v-model="repaymentObj.partDate"
type="date"
placeholder="选择先还日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'MIX'" label="分期部分金额" prop="productTypeId">
<el-input class="inputpaddingtop2"
size="small"
disabled
placeholder="分期部分金额"
v-model="repaymentObj.moneyAmount">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="分期期数" prop="stagesNum">
<el-input
size="small" disabled
placeholder="请输入分期期数"
v-model="repaymentObj.stagesNum"
@input="inputChange($event)">
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="每期还款金额" prop="stagesAmount">
<el-input class="inputpaddingtop2"
size="small"
disabled
placeholder="每期还款金额"
v-model="repaymentObj.stagesAmount">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="每期还款日期" prop="stagesDay">
<el-select v-model="repaymentObj.stagesDay" class="width100" disabled
placeholder="请选择每期还款日期" size="small">
<el-option
v-for="(item, index) in 31"
:key="index"
:label="(index+1)+'日'"
:value="(index+1)">
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'ALL' || repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="还款截止日期" prop="paybackDate">
<el-date-picker class="width100" size="small" disabled
v-model="repaymentObj.paybackDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="备注说明" prop="remark">
<el-input disabled
size="small"
clearable
placeholder="请输入备注说明"
v-model="repaymentObj.remark">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div v-if="updateFlag" class="case-detail-des flex-column mb-16 p-16 border-radius-8">
<div class="flex-column justify-content-between">
<el-form ref="ruleFormRepayment"
:model="repaymentObj"
:rules="rulesClientRepayment"
label-width="130px">
<el-form-item label="还款方式" prop="type">
<el-select v-model="repaymentObj.type" class="width100"
placeholder="请选择还款方式" size="small">
<el-option
v-for="(item,index) in RepaymentOptions"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="还款金额" prop="totalAmount">
<el-input class="inputpaddingtop2"
size="small"
placeholder="请输入还款金额"
v-model="repaymentObj.totalAmount"
@input="inputChange($event)">
<template slot="append"></template>
</el-input>
</el-form-item>
<!-- 枚举备注: ALL :一次性全部回款 STAGES :全部分期 MIX :混合部分先还加分期 OTHER :其他 -->
<el-form-item v-if="repaymentObj.type == 'MIX'" label="分期前偿还金额" prop="partAmount">
<el-input class="inputpaddingtop2"
size="small"
placeholder="请输入分期前偿还金额"
v-model="repaymentObj.partAmount"
@input="inputChange($event)">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'MIX'" label="先还日期" prop="partDate">
<el-date-picker class="width100" size="small"
v-model="repaymentObj.partDate"
type="date"
placeholder="选择先还日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'MIX'" label="分期部分金额" prop="productTypeId">
<el-input class="inputpaddingtop2"
size="small"
disabled
placeholder="分期部分金额"
v-model="repaymentObj.moneyAmount">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="分期期数" prop="stagesNum">
<el-input
size="small"
placeholder="请输入分期期数"
v-model="repaymentObj.stagesNum"
@input="inputChange($event)">
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="每期还款金额" prop="stagesAmount">
<el-input class="inputpaddingtop2"
size="small"
disabled
placeholder="每期还款金额"
v-model="repaymentObj.stagesAmount">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="每期还款日期" prop="stagesDay">
<el-select v-model="repaymentObj.stagesDay" class="width100"
placeholder="请选择每期还款日期" size="small">
<el-option
v-for="(item, index) in 31"
:key="index"
:label="(index+1)+'日'"
:value="(index+1)">
</el-option>
</el-select>
</el-form-item>
<el-form-item v-if="repaymentObj.type == 'ALL' || repaymentObj.type == 'STAGES' || repaymentObj.type == 'MIX'" label="还款截止日期" prop="paybackDate">
<el-date-picker class="width100" size="small"
v-model="repaymentObj.paybackDate"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="备注说明" prop="remark">
<el-input
size="small"
clearable
placeholder="请输入备注说明"
v-model="repaymentObj.remark">
</el-input>
</el-form-item>
<el-form-item label="">
<el-button @click="updateFlag = false" size="small">取消</el-button>
<el-button type="primary" @click="handleSubmitRepayment()" size="small">保存</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
import api from "@/services/caseManagement";
export default {
components: {
},
props: {
eventDialog: {
type: Object,
default: () => {
return {}
},
},
},
data() {
return {
updateFlag:false,
repaymentObj:{type:'ALL'},
RepaymentOptions:[{label:'一次性还款',value:'ALL'},{label:'全部分期',value:'STAGES'},{label:'部分先还加分期',value:'MIX'},{label:'其他',value:'OTHER'}],
rulesClientRepayment:{
type: [
{ required: true, message: '请选择还款方式', trigger: 'change',},
],
totalAmount: [
{ required: true, message: '请输入还款金额', trigger: 'change',},
{ pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/, message: '请输入2位小数金额', trigger: ['blur', 'change']}
],
paybackDate: [
{ required: true, message: '请选择还款截止日期', trigger: 'change',},
],
stagesDay: [
{ required: true, message: '请选择每期还款日期', trigger: 'change',},
],
partAmount: [
{ required: true, message: '请输入分期前偿还金额 ', trigger: 'change',},
{ pattern: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0.\d{1,2}$/, message: '请输入2位小数金额', trigger: ['blur', 'change']}
],
partDate: [
{ required: true, message: '请选择分期前偿还日期', trigger: 'change',},
],
stagesNum: [
{ required: true, message: '请输入分期期数', trigger: 'change',},
{ pattern: /^[1-9]\d*$/, message: '只能输入正整数', trigger: ['blur', 'change']}
],
},
planList:[]
};
},
mounted () {
this.getplanlist()
},
methods: {
handleSubmitRepayment(){
this.$refs.ruleFormRepayment.validate((valid) => {
if (valid){
this.repaymentObj.caseId = this.eventDialog.caseId
api.getcase_payback_save(this.repaymentObj).then(res => {
if(!res.code){
this.updateFlag = false
this.getplanlist()
}
})
}
})
},
getplanlist(){
api.getcase_payback_planlist({caseId:this.eventDialog.caseId}).then(res => {
if(!res.code){
this.planList = res
if(this.planList.length > 0 ){this.repaymentObj = this.planList[0]}
}
})
},
// 输入还款金额 输入分期期数
inputChange(){
if(this.repaymentObj.type == 'STAGES')
{
if(this.repaymentObj.totalAmount !='' &&this.repaymentObj.stagesNum !='' && this.repaymentObj.totalAmount !=undefined &&this.repaymentObj.stagesNum !=undefined)
{
this.repaymentObj.stagesAmount = ((this.repaymentObj.totalAmount*1)/(this.repaymentObj.stagesNum*1)).toFixed(2)
}
}
if(this.repaymentObj.type == 'MIX')
{
if(this.repaymentObj.totalAmount !='' &&this.repaymentObj.stagesNum !='' && this.repaymentObj.totalAmount !=undefined &&this.repaymentObj.stagesNum !=undefined)
{
this.repaymentObj.stagesAmount = ((this.repaymentObj.totalAmount*1 - this.repaymentObj.partAmount*1)/(this.repaymentObj.stagesNum*1)).toFixed(2)
}
}
},
//
handleClose() {
this.$emit('update:eventTraDialog', null)
},
}
};
</script>
<style scoped lang="scss">
.case-repayment-certificate{
.case-detail-des{
border:solid 1px #E5E6EB;
.el-form-item{ margin-bottom: 12px;}
.inputpaddingtop2{padding-top:3px}
}
}
</style>