Compare commits
41 Commits
After Width: | Height: | Size: 561 B |
After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 12 KiB |
@ -1,9 +0,0 @@ |
||||
diff a/src/main.js b/src/main.js (rejected hunks) |
||||
@@ -42,6 +42,7 @@ |
||||
} |
||||
}) |
||||
} |
||||
+}); |
||||
|
||||
|
||||
Vue.use(plugins); |
@ -0,0 +1,207 @@ |
||||
<template> |
||||
<!-- 零存整取 --> |
||||
<div class="wrap wrap2"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">代收水费</el-menu-item> |
||||
<el-menu-item index="2">代收电费</el-menu-item> |
||||
<el-menu-item index="3">代收电话费</el-menu-item> |
||||
|
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['代理业务', text]" /> |
||||
|
||||
<!-- 代收水费 --> |
||||
<waterRate v-if="activeIndex === '1'"></waterRate> |
||||
<!-- 代收电费 --> |
||||
<electricRate v-if="activeIndex === '2'"></electricRate> |
||||
<!-- 代收电话费 --> |
||||
<telRate v-if="activeIndex === '3'"></telRate> |
||||
|
||||
<el-dialog style="margin-top:10vh" :visible.sync="visible" :modal="false" width="40%" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="data-dia"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提交</div> |
||||
</div> |
||||
<div class="popBody"> |
||||
<h2>本业务需要授权</h2> |
||||
</div> |
||||
<div class="popBtns"> |
||||
<el-button class="close btn" @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn" type="primary" @click="visible = false">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import waterRate from './waterRate.vue' |
||||
import electricRate from './electricRate.vue' |
||||
import telRate from './telRate.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
waterRate, |
||||
electricRate, |
||||
telRate, |
||||
MyTitle |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '',/* 顶部文字 */ |
||||
cacheVal: '', |
||||
textObj: { |
||||
'1': '代收水费', |
||||
'2': '代收电费', |
||||
'3': '代收电话费', |
||||
}, |
||||
form: { |
||||
|
||||
}, |
||||
visible: false, |
||||
options: [], |
||||
activeIndex: '1', |
||||
second: [// 二级卡数组 |
||||
|
||||
], |
||||
} |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('agentIndex')) { |
||||
this.handleSelect(sessionStorage.getItem('agentIndex')) |
||||
} else { |
||||
this.handleSelect('1') |
||||
} |
||||
}, |
||||
methods: { |
||||
handleSelect (val) { |
||||
this.text = this.textObj[val] |
||||
this.activeIndex = val |
||||
this.cacheVal = val |
||||
}, |
||||
}, |
||||
destroyed () { |
||||
sessionStorage.setItem('agentIndex', this.cacheVal) |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.submitBtn { |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,396 @@ |
||||
<!-- 代收电费 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="certificateType"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType" disabled> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="账号" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="缴费单位" prop="paymentUnit"> |
||||
<el-input v-model="form.paymentUnit" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="户号" prop="houseId"> |
||||
<el-input v-model="form.houseId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="21" :offset="1"> |
||||
<el-form-item label="住址信息" prop="address"> |
||||
<el-input type="textarea" :rows="3" placeholder="请输入住址信息" v-model.trim="form.address"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="缴费金额" prop="paymentMoney"> |
||||
<el-input v-model="form.paymentMoney" maxlength="15" |
||||
@input="val => ismoney(val, form, 'paymentMoney')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="每月代扣" prop="monthlyWithholding" required> |
||||
<el-radio-group v-model.trim="form.monthlyWithholding"> |
||||
<el-radio :label="142">是</el-radio> |
||||
<el-radio :label="143">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
|
||||
const moduleName = 'agent/electricRate' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyDialog |
||||
}, |
||||
mixins: [TipsBefore], |
||||
created () { |
||||
if (sessionStorage.getItem('electricRatePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('electricRatePassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('electricRateIdCard')) { |
||||
this.idNumberJudge = true |
||||
// 身份证号码、客户姓名、币种(人民币)、钞汇标识(钞户) |
||||
const { idNumber, userName, peopleNumber, currency, goldLogo } = this.dataFlow |
||||
this.form.clientNumber = peopleNumber |
||||
this.form.idNumber = idNumber |
||||
this.form.customerName = userName |
||||
this.form.currency = currency |
||||
this.form.goldLogo = goldLogo |
||||
this.form.voucherType = 127 |
||||
} |
||||
if (sessionStorage.getItem('electricRateBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
|
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, |
||||
idNumber: '', |
||||
voucherNumber: '', |
||||
customerName: '', |
||||
paymentUnit: '', |
||||
houseId: '', |
||||
address: '', |
||||
paymentMoney: '', |
||||
monthlyWithholding: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
voucherNumber: '账号', |
||||
customerName: '客户姓名', |
||||
paymentUnit: '缴费单位', |
||||
houseId: '户号', |
||||
address: '住址信息', |
||||
paymentMoney: '缴费金额', |
||||
monthlyWithholding: '每月代扣', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
idNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入证件号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
customerName: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入客户姓名', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentUnit: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费单位', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
houseId: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入户号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
address: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入住址信息', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentMoney: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
monthlyWithholding: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择每月代扣', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
myTable2: { |
||||
158: { |
||||
prop: 'certificateType',//证件类型 |
||||
type: '1', |
||||
"subjectId": 19, |
||||
}, |
||||
// 169: { |
||||
// prop: 'customerManage',//客户经理 |
||||
// type: '3', |
||||
// "subjectId": 27, |
||||
// }, |
||||
160: { |
||||
prop: 'clientNumber',//客户号 |
||||
type: '3', |
||||
"subjectId": 6, |
||||
} |
||||
}, |
||||
myTable: { |
||||
159: { |
||||
prop: 'idNumber',// 身份证号码 |
||||
type: '3', |
||||
}, |
||||
161: { |
||||
prop: 'customerName',//客户姓名 |
||||
type: '3', |
||||
"subjectId": 7, |
||||
}, |
||||
162: { |
||||
prop: 'currency',//币种 |
||||
type: '1', |
||||
"subjectId": 8, |
||||
}, |
||||
163: { |
||||
prop: 'goldLogo',//钞汇标识 |
||||
type: '1', |
||||
"subjectId": 9, |
||||
}, |
||||
164: { |
||||
prop: 'voucherType',//凭证类型 |
||||
type: '1', |
||||
"subjectId": 11, |
||||
}, |
||||
166: { |
||||
prop: 'voucherNumber',//凭证号码 |
||||
type: '3', |
||||
"subjectId": 44, |
||||
}, |
||||
167: { |
||||
prop: 'drawPassword', |
||||
type: '3', |
||||
"subjectId": 17, |
||||
}, |
||||
168: { |
||||
prop: 'monthDeposit',//月存金额 |
||||
type: '3', |
||||
"subjectId": 31, |
||||
}, |
||||
170: { |
||||
prop: 'extendDepositTarget',//续存标识 |
||||
type: '1', |
||||
"subjectId": 37, |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('722') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('724') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('729') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
getFormData () { |
||||
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155' |
||||
const cards = { |
||||
// 1399: 'nomUsefulPhrasesOpenCard2', |
||||
// 166: 'nomUsefulPhrasesOpenCard', |
||||
// 167: 'nomUsefulPhrasesOpenPassword' |
||||
} |
||||
const callback = () => { |
||||
if (this.form.idNumber) { |
||||
this.idNumberJudge = true |
||||
} |
||||
if (this.form.voucherNumber) { |
||||
this.cardNumberJudge = true |
||||
} |
||||
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword') |
||||
} |
||||
} |
||||
autoPlay2(parentId, this.form, this.myTable2, this.myTable, cards, callback) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写账号') |
||||
return |
||||
} |
||||
|
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
// 验证通过逻辑写在这 |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,706,710' |
||||
formList.push( |
||||
{ answerId: 721, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',721', type: 1 }, |
||||
{ answerId: 722, emptyOne: '', emptyTwo: '', operationIds: preId + ',722', type: '' }, |
||||
{ answerId: 724, emptyOne: 84, emptyTwo: form.voucherNumber, operationIds: preId + ',724', type: 3 }, |
||||
{ answerId: 723, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',723', type: 3 }, |
||||
|
||||
{ answerId: 725, emptyOne: 111, emptyTwo: form.paymentUnit, operationIds: preId + ',725', type: 3 }, |
||||
{ answerId: 726, emptyOne: 112, emptyTwo: form.houseId, operationIds: preId + ',726', type: 3 }, |
||||
{ answerId: 730, emptyOne: 153, emptyTwo: form.address, operationIds: preId + ',730', type: 3 }, |
||||
{ answerId: 727, emptyOne: 113, emptyTwo: form.paymentMoney, operationIds: preId + ',727', type: 3 }, |
||||
{ answerId: 728, emptyOne: 114, emptyTwo: form.monthlyWithholding, operationIds: preId + ',728', type: 1 }, |
||||
{ answerId: 729, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',729', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
ismoney, |
||||
checkHanzi, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped></style> |
@ -0,0 +1,388 @@ |
||||
<!-- 代收电话费 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="certificateType"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType"> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="账号" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="缴费单位" prop="paymentUnit"> |
||||
<el-input v-model="form.paymentUnit" /> |
||||
</el-form-item> |
||||
<el-form-item label="缴费号码" prop="paymentNum"> |
||||
<el-input v-model="form.paymentNum" maxlength="30"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="每月代扣" prop="monthlyWithholding"> |
||||
<el-radio-group v-model.trim="form.monthlyWithholding"> |
||||
<el-radio :label="142">是</el-radio> |
||||
<el-radio :label="143">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="号码类型" prop="numType"> |
||||
<el-select v-model.trim="form.numType" placeholder="请选择"> |
||||
<el-option label="手机号码" :value="144"></el-option> |
||||
<el-option label="座机号码" :value="145"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="缴费金额" prop="paymentMoney"> |
||||
<el-input :value="form.paymentMoney" maxlength="15" |
||||
@input="val => ismoney(val, form, 'paymentMoney')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> --> |
||||
</template> |
||||
<script> |
||||
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
|
||||
const moduleName = 'agent/telRate' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyDialog |
||||
}, |
||||
mixins: [TipsBefore], |
||||
created () { |
||||
if (sessionStorage.getItem('telRatePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('telRatePassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('telRateIdCard')) { |
||||
this.idNumberJudge = true |
||||
const { idNumber, userName } = this.dataFlow |
||||
this.form.idNumber = idNumber |
||||
this.form.customerName = userName |
||||
} |
||||
if (sessionStorage.getItem('telRateBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
|
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, |
||||
idNumber: '', |
||||
voucherNumber: '', |
||||
customerName: '', |
||||
paymentUnit: '', |
||||
numType: '', |
||||
paymentNum: '', |
||||
paymentMoney: '', |
||||
monthlyWithholding: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
voucherNumber: '账号', |
||||
customerName: '客户姓名', |
||||
paymentUnit: '缴费单位', |
||||
numType: '号码类型', |
||||
paymentNum: '缴费号码', |
||||
paymentMoney: '缴费金额', |
||||
monthlyWithholding: '每月代扣', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
idNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入证件号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
customerName: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入客户姓名', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentUnit: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费单位', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
numType: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择号码类型', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
paymentNum: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentMoney: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
monthlyWithholding: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择每月代扣', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
myTable2: { |
||||
158: { |
||||
prop: 'certificateType',//证件类型 |
||||
type: '1', |
||||
"subjectId": 19, |
||||
}, |
||||
// 169: { |
||||
// prop: 'customerManage',//客户经理 |
||||
// type: '3', |
||||
// "subjectId": 27, |
||||
// }, |
||||
160: { |
||||
prop: 'clientNumber',//客户号 |
||||
type: '3', |
||||
"subjectId": 6, |
||||
} |
||||
}, |
||||
myTable: { |
||||
159: { |
||||
prop: 'idNumber',// 身份证号码 |
||||
type: '3', |
||||
}, |
||||
161: { |
||||
prop: 'customerName',//客户姓名 |
||||
type: '3', |
||||
"subjectId": 7, |
||||
}, |
||||
162: { |
||||
prop: 'currency',//币种 |
||||
type: '1', |
||||
"subjectId": 8, |
||||
}, |
||||
163: { |
||||
prop: 'goldLogo',//钞汇标识 |
||||
type: '1', |
||||
"subjectId": 9, |
||||
}, |
||||
164: { |
||||
prop: 'voucherType',//凭证类型 |
||||
type: '1', |
||||
"subjectId": 11, |
||||
}, |
||||
166: { |
||||
prop: 'voucherNumber',//凭证号码 |
||||
type: '3', |
||||
"subjectId": 44, |
||||
}, |
||||
167: { |
||||
prop: 'drawPassword', |
||||
type: '3', |
||||
"subjectId": 17, |
||||
}, |
||||
168: { |
||||
prop: 'monthDeposit',//月存金额 |
||||
type: '3', |
||||
"subjectId": 31, |
||||
}, |
||||
170: { |
||||
prop: 'extendDepositTarget',//续存标识 |
||||
type: '1', |
||||
"subjectId": 37, |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('732') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('733') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('740') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
getFormData () { |
||||
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155' |
||||
const cards = { |
||||
// 1399: 'nomUsefulPhrasesOpenCard2', |
||||
// 166: 'nomUsefulPhrasesOpenCard', |
||||
// 167: 'nomUsefulPhrasesOpenPassword' |
||||
} |
||||
const callback = () => { |
||||
if (this.form.idNumber) { |
||||
this.idNumberJudge = true |
||||
} |
||||
if (this.form.voucherNumber) { |
||||
this.cardNumberJudge = true |
||||
} |
||||
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword') |
||||
} |
||||
} |
||||
autoPlay2(parentId, this.form, this.myTable2, this.myTable, cards, callback) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写账号') |
||||
return |
||||
} |
||||
|
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
// 验证通过逻辑写在这 |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,706,711' |
||||
formList.push( |
||||
{ answerId: 731, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',731', type: 1 }, |
||||
{ answerId: 732, emptyOne: '', emptyTwo: '', operationIds: preId + ',732', type: '' }, |
||||
{ answerId: 734, emptyOne: 84, emptyTwo: form.voucherNumber, operationIds: preId + ',734', type: 3 }, |
||||
{ answerId: 733, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',733', type: 3 }, |
||||
{ answerId: 735, emptyOne: 111, emptyTwo: form.paymentUnit, operationIds: preId + ',735', type: 3 }, |
||||
{ answerId: 736, emptyOne: 115, emptyTwo: form.numType, operationIds: preId + ',736', type: 1 }, |
||||
{ answerId: 737, emptyOne: 116, emptyTwo: form.paymentNum, operationIds: preId + ',737', type: 3 }, |
||||
{ answerId: 738, emptyOne: 113, emptyTwo: form.paymentMoney, operationIds: preId + ',738', type: 3 }, |
||||
{ answerId: 739, emptyOne: 114, emptyTwo: form.monthlyWithholding, operationIds: preId + ',739', type: 1 }, |
||||
{ answerId: 740, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',740', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
ismoney, |
||||
checkHanzi, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped></style> |
@ -0,0 +1,373 @@ |
||||
<!-- 代收水费 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="certificateType"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType" disabled> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="账号" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="缴费单位" prop="paymentUnit"> |
||||
<el-input v-model="form.paymentUnit" /> |
||||
</el-form-item> |
||||
<el-form-item label="缴费金额" prop="paymentMoney"> |
||||
<el-input :value="form.paymentMoney" maxlength="15" |
||||
@input="val => ismoney(val, form, 'paymentMoney')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="户号" prop="houseId"> |
||||
<el-input v-model="form.houseId" /> |
||||
</el-form-item> |
||||
<el-form-item label="每月代扣" prop="monthlyWithholding"> |
||||
<el-radio-group v-model.trim="form.monthlyWithholding"> |
||||
<el-radio :label="142">是</el-radio> |
||||
<el-radio :label="143">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
|
||||
const moduleName = 'agent/waterRate' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyDialog |
||||
}, |
||||
mixins: [TipsBefore], |
||||
created () { |
||||
if (sessionStorage.getItem('waterRatePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('waterRatePassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('waterRateIdCard')) { |
||||
this.idNumberJudge = true |
||||
const { idNumber } = this.dataFlow |
||||
this.form.idNumber = idNumber |
||||
} |
||||
if (sessionStorage.getItem('waterRateBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber, userName } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
this.form.customerName = userName |
||||
} |
||||
|
||||
|
||||
// this.getFormData() |
||||
|
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, |
||||
idNumber: '', |
||||
voucherNumber: '', |
||||
customerName: '', |
||||
paymentUnit: '', |
||||
houseId: '', |
||||
paymentMoney: '', |
||||
monthlyWithholding: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
voucherNumber: '账号', |
||||
customerName: '客户姓名', |
||||
paymentUnit: '缴费单位', |
||||
houseId: '户号', |
||||
paymentMoney: '缴费金额', |
||||
monthlyWithholding: '每月代扣', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
idNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入证件号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
customerName: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入客户姓名', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentUnit: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费单位', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
houseId: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入户号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentMoney: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
monthlyWithholding: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择每月代扣', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
myTable2: { |
||||
158: { |
||||
prop: 'certificateType',//证件类型 |
||||
type: '1', |
||||
"subjectId": 19, |
||||
}, |
||||
// 169: { |
||||
// prop: 'customerManage',//客户经理 |
||||
// type: '3', |
||||
// "subjectId": 27, |
||||
// }, |
||||
160: { |
||||
prop: 'clientNumber',//客户号 |
||||
type: '3', |
||||
"subjectId": 6, |
||||
} |
||||
}, |
||||
myTable: { |
||||
159: { |
||||
prop: 'idNumber',// 身份证号码 |
||||
type: '3', |
||||
}, |
||||
161: { |
||||
prop: 'customerName',//客户姓名 |
||||
type: '3', |
||||
"subjectId": 7, |
||||
}, |
||||
162: { |
||||
prop: 'currency',//币种 |
||||
type: '1', |
||||
"subjectId": 8, |
||||
}, |
||||
163: { |
||||
prop: 'goldLogo',//钞汇标识 |
||||
type: '1', |
||||
"subjectId": 9, |
||||
}, |
||||
164: { |
||||
prop: 'voucherType',//凭证类型 |
||||
type: '1', |
||||
"subjectId": 11, |
||||
}, |
||||
166: { |
||||
prop: 'voucherNumber',//凭证号码 |
||||
type: '3', |
||||
"subjectId": 44, |
||||
}, |
||||
167: { |
||||
prop: 'drawPassword', |
||||
type: '3', |
||||
"subjectId": 17, |
||||
}, |
||||
168: { |
||||
prop: 'monthDeposit',//月存金额 |
||||
type: '3', |
||||
"subjectId": 31, |
||||
}, |
||||
170: { |
||||
prop: 'extendDepositTarget',//续存标识 |
||||
type: '1', |
||||
"subjectId": 37, |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('713') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('715') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('720') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
getFormData () { |
||||
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155' |
||||
const cards = { |
||||
// 1399: 'nomUsefulPhrasesOpenCard2', |
||||
// 166: 'nomUsefulPhrasesOpenCard', |
||||
// 167: 'nomUsefulPhrasesOpenPassword' |
||||
} |
||||
const callback = () => { |
||||
if (this.form.idNumber) { |
||||
this.idNumberJudge = true |
||||
} |
||||
if (this.form.voucherNumber) { |
||||
this.cardNumberJudge = true |
||||
} |
||||
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword') |
||||
} |
||||
} |
||||
autoPlay2(parentId, this.form, this.myTable2, this.myTable, cards, callback) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写账号') |
||||
return |
||||
} |
||||
|
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
// 验证通过逻辑写在这 |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,706,709' |
||||
formList.push( |
||||
{ answerId: 712, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',712', type: 1 }, |
||||
{ answerId: 713, emptyOne: '', emptyTwo: '', operationIds: preId + ',713', type: '' }, |
||||
{ answerId: 715, emptyOne: 84, emptyTwo: form.voucherNumber, operationIds: preId + ',715', type: 3 }, |
||||
{ answerId: 714, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',714', type: 3 }, |
||||
{ answerId: 716, emptyOne: 111, emptyTwo: form.paymentUnit, operationIds: preId + ',716', type: 3 }, |
||||
{ answerId: 717, emptyOne: 112, emptyTwo: form.houseId, operationIds: preId + ',717', type: 3 }, |
||||
{ answerId: 718, emptyOne: 113, emptyTwo: form.paymentMoney, operationIds: preId + ',718', type: 3 }, |
||||
{ answerId: 719, emptyOne: 114, emptyTwo: form.monthlyWithholding, operationIds: preId + ',719', type: 1 }, |
||||
{ answerId: 720, emptyOne: 114, emptyTwo: form.drawPassword, operationIds: preId + ',720', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
ismoney, |
||||
checkHanzi, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped></style> |
@ -0,0 +1,111 @@ |
||||
<template> |
||||
<!-- 贷款申请 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷款申请']" /> |
||||
|
||||
<div class="flex j-between m-b-20"> |
||||
<div style="width: 300px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-button type="primary" @click="toDetail(0)">新建贷款申请</el-button> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="申请编号" align="center" /> |
||||
<el-table-column prop="createTime" label="申请日期" align="center" /> |
||||
<el-table-column prop="loanApplicationAmount" label="申请金额" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanApplicationAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="processingStatus" label="办理状态" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.processingStatus || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template slot-scope="scope"> |
||||
<el-button :disabled="!!scope.row.builtIn" @click="toDetail(scope.row)" size="small">{{ |
||||
scope.row.loanApplicationAmount ? '查看' : '编辑' |
||||
}}</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 1, |
||||
}) |
||||
this.list = data.page.records |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 详情 |
||||
toDetail (row) { |
||||
// 缓存信用评估几个id |
||||
this.$store.commit('system/setCreditIds', (row ? { |
||||
companyLoanId: row.companyLoanId, // 顶部三个tab切换的公共id |
||||
} : {})) |
||||
this.$router.push(row.loanApplicationAmount ? `/counter/list/manage/corporateLoans-detail?id=${row.companyLoanId}` : '/counter/list/manage/corporateLoans-apply') |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,480 @@ |
||||
<!-- 信用评估 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="140px"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">申请人个人信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号"> |
||||
<el-input v-model="form.applicationAccount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="证件号码"> |
||||
<el-input v-model="form.identificationNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="抵押房产地址"> |
||||
<el-input v-model="form.propertyAddress" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="婚姻状况"> |
||||
<el-radio-group v-model="form.maritalStatus" disabled> |
||||
<el-radio label="未婚"></el-radio> |
||||
<el-radio label="已婚"></el-radio> |
||||
<el-radio label="离异"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="在袋鼠互联网科技有限公司购买社保" label-width="280px"> |
||||
<el-radio-group v-model="form.socialSecurity" disabled> |
||||
<el-radio label="是"></el-radio> |
||||
<el-radio label="否"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称"> |
||||
<el-input v-model="form.customerName" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="联系电话"> |
||||
<el-input v-model="form.contactPhoneNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="与袋鼠互联网科技有限公司合作年限" label-width="280px"> |
||||
<el-input v-model="form.cooperationPeriod" @input="val => inputListen(val, form, 'cooperationPeriod')" |
||||
ref="cooperationPeriod"> |
||||
<template slot="append">年</template> |
||||
</el-input> |
||||
</el-form-item> |
||||
<el-form-item label="在袋鼠互联网科技有限公司签订劳动合同" label-width="300px"> |
||||
<el-radio-group v-model="form.laborContract" disabled> |
||||
<el-radio label="是"></el-radio> |
||||
<el-radio label="否"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="住址情况"> |
||||
<el-radio-group v-model="form.addressSituation" disabled> |
||||
<el-radio label="购置"></el-radio> |
||||
<el-radio label="按揭中"></el-radio> |
||||
<el-radio label="租住"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">还款来源</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item> |
||||
<div class="flex"> |
||||
<span class="req">*</span> |
||||
<el-checkbox v-model="form.matureRepayment">自行筹款,到期还款</el-checkbox> |
||||
<div class="inline-flex m-l-40"> |
||||
<el-checkbox v-model="form.otherRepaymentsCheck">其他:</el-checkbox> |
||||
<el-input v-if="form.otherRepaymentsCheck" v-model="form.otherRepayments" size="small" maxlength="50" |
||||
placeholder="请输入"></el-input> |
||||
</div> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">用途</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item> |
||||
<div class="flex"> |
||||
<span class="req">*</span> |
||||
<el-checkbox v-model="form.paymentForMaterials">支付材料款</el-checkbox> |
||||
<el-checkbox v-model="form.payLaborCosts">支付人工费</el-checkbox> |
||||
<el-checkbox v-model="form.payExpenses">支付研发费</el-checkbox> |
||||
<div class="inline-flex m-l-40"> |
||||
<el-checkbox v-model="form.otherUseCheck">其他:</el-checkbox> |
||||
<el-input v-if="form.otherUseCheck" v-model="form.otherUses" size="small" maxlength="50" |
||||
placeholder="请输入"></el-input> |
||||
</div> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">申请人特别说明(选填)</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-input v-model="form.specialInstructions" type="textarea" maxlength="500" placeholder="请输入申请诉求"></el-input> |
||||
</el-col> |
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">附件 请上传</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<div class="files"> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.corporateIdCard ? '' : 'primary'" size="small" plain |
||||
@click="importSth('corporateIdCard')">上传</el-button> |
||||
<p class="text"> |
||||
法人身份证 |
||||
<span v-if="creditImportIds.corporateIdCard" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.mortgagePropertyCertificate ? '' : 'primary'" size="small" plain |
||||
@click="importSth('mortgagePropertyCertificate')">上传</el-button> |
||||
<p class="text"> |
||||
抵押物房产证 |
||||
<span v-if="creditImportIds.mortgagePropertyCertificate" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.proofOfMaritalStatus ? '' : 'primary'" size="small" plain |
||||
@click="importSth('proofOfMaritalStatus')">上传</el-button> |
||||
<p class="text"> |
||||
实际控制人婚姻情况证明(结/离婚证) |
||||
<span v-if="creditImportIds.proofOfMaritalStatus" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.copyOfSpouseSIdCard ? '' : 'primary'" size="small" plain |
||||
@click="importSth('copyOfSpouseSIdCard')">上传</el-button> |
||||
<p class="text"> |
||||
实际控制人配偶身份证复印件 |
||||
<span v-if="creditImportIds.copyOfSpouseSIdCard" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.originalBusinessLicense ? '' : 'primary'" size="small" plain |
||||
@click="importSth('originalBusinessLicense')">上传</el-button> |
||||
<p class="text"> |
||||
营业执照正本 |
||||
<span v-if="creditImportIds.originalBusinessLicense" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.accountOpeningPermit ? '' : 'primary'" size="small" plain |
||||
@click="importSth('accountOpeningPermit')">上传</el-button> |
||||
<p class="text"> |
||||
开户许可证(基本存款账户信息) |
||||
<span v-if="creditImportIds.accountOpeningPermit" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.leaseContract ? '' : 'primary'" size="small" plain |
||||
@click="importSth('leaseContract')">上传</el-button> |
||||
<p class="text"> |
||||
企业注册地址租赁合同或对应房产证 |
||||
<span v-if="creditImportIds.leaseContract" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.companyArticlesOfAssociation ? '' : 'primary'" size="small" plain |
||||
@click="importSth('companyArticlesOfAssociation')">上传</el-button> |
||||
<p class="text"> |
||||
公司章程 |
||||
<span v-if="creditImportIds.companyArticlesOfAssociation" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.shareholderDocuments ? '' : 'primary'" size="small" plain |
||||
@click="importSth('shareholderDocuments')">上传</el-button> |
||||
<p class="text"> |
||||
公司股东证件复印件 |
||||
<span v-if="creditImportIds.shareholderDocuments" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.financialSeal ? '' : 'primary'" size="small" plain |
||||
@click="importSth('financialSeal')">上传</el-button> |
||||
<p class="text"> |
||||
公章私章财务章 |
||||
<span v-if="creditImportIds.financialSeal" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.oneYearTaxPaymentCertificate ? '' : 'primary'" size="small" plain |
||||
@click="importSth('oneYearTaxPaymentCertificate')">上传</el-button> |
||||
<p class="text"> |
||||
公司近一年纳税证明 |
||||
<span v-if="creditImportIds.oneYearTaxPaymentCertificate" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.halfYearRevenue ? '' : 'primary'" size="small" plain |
||||
@click="importSth('halfYearRevenue')">上传</el-button> |
||||
<p class="text"> |
||||
公司近半年流水 |
||||
<span v-if="creditImportIds.halfYearRevenue" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.corporateFinancialStatements ? '' : 'primary'" size="small" plain |
||||
@click="importSth('corporateFinancialStatements')">上传</el-button> |
||||
<p class="text"> |
||||
企业财务报表 |
||||
<span v-if="creditImportIds.corporateFinancialStatements" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.loanApplicationForm ? '' : 'primary'" size="small" plain |
||||
@click="importSth('loanApplicationForm')">上传</el-button> |
||||
<p class="text"> |
||||
贷款申请书 |
||||
<span v-if="creditImportIds.loanApplicationForm" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.creditAuthorizationLetter ? '' : 'primary'" size="small" plain |
||||
@click="importSth('creditAuthorizationLetter')">上传</el-button> |
||||
<p class="text"> |
||||
征信授权书 |
||||
<span v-if="creditImportIds.creditAuthorizationLetter" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="m-t-30 text-center"> |
||||
<el-button @click="beforeSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p class="text-lg" style="color: #333">请进行授信审核</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="close btn hover:bg-blue-100 " @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="submit">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible="successVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody" style="flex-direction: column;"> |
||||
<p class="text-lg" style="margin-bottom: 10px;color: #333">授信完成</p> |
||||
<p class="text-lg" style="color: #333">可进行贷款申请</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="toStep3">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { inputListen } from '@/utils/utilFunction.js' |
||||
import { creditApplicationDetails, addOperation, creditApplicationInput } from '@/api/http' |
||||
import { mapState, mapMutations } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
form: { |
||||
applicationAccount: '6227007200580926', |
||||
customerName: '丛小凤', |
||||
identificationNumber: '220602199202281229', |
||||
contactPhoneNumber: '15890317718', |
||||
propertyAddress: '广东省深圳市南山区前海一号2020室', |
||||
cooperationPeriod: '6', |
||||
maritalStatus: '未婚', |
||||
laborContract: '是', |
||||
socialSecurity: '是', |
||||
addressSituation: '购置', |
||||
|
||||
matureRepayment: false, |
||||
otherRepaymentsCheck: false, |
||||
otherRepayments: '', |
||||
paymentForMaterials: false, |
||||
payLaborCosts: false, |
||||
payExpenses: false, |
||||
otherUseCheck: false, |
||||
otherUses: '', |
||||
specialInstructions: '', |
||||
}, |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '不良' |
||||
}, |
||||
], |
||||
visible: false, |
||||
successVisible: false, |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditImportIds', 'creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations('system', ['setCreditImportIndex', 'initCreditImportIds']), |
||||
inputListen, |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
let r |
||||
if (id) { |
||||
const res = await creditApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
r = res.data.bankCreditApplication || {} |
||||
if (r.creditId) { |
||||
this.form.creditId = r.creditId |
||||
this.form.cooperationPeriod = r.cooperationPeriod |
||||
this.form.matureRepayment = r.matureRepayment === 'true' |
||||
this.form.otherRepaymentsCheck = !!r.otherRepayments |
||||
this.form.otherRepayments = r.otherRepayments |
||||
this.form.paymentForMaterials = r.paymentForMaterials === 'true' |
||||
this.form.payLaborCosts = r.payLaborCosts === 'true' |
||||
this.form.payExpenses = r.payExpenses === 'true' |
||||
this.form.otherUseCheck = !!r.otherUses |
||||
this.form.otherUses = r.otherUses |
||||
this.form.specialInstructions = r.specialInstructions |
||||
} |
||||
} |
||||
// 附件回显 |
||||
this.initCreditImportIds({ |
||||
corporateIdCard: r.corporateIdCard || '', |
||||
mortgagePropertyCertificate: r.mortgagePropertyCertificate || '', |
||||
proofOfMaritalStatus: r.proofOfMaritalStatus || '', |
||||
copyOfSpouseSIdCard: r.copyOfSpouseSIdCard || '', |
||||
originalBusinessLicense: r.originalBusinessLicense || '', |
||||
accountOpeningPermit: r.accountOpeningPermit || '', |
||||
leaseContract: r.leaseContract || '', |
||||
companyArticlesOfAssociation: r.companyArticlesOfAssociation || '', |
||||
shareholderDocuments: r.shareholderDocuments || '', |
||||
financialSeal: r.financialSeal || '', |
||||
oneYearTaxPaymentCertificate: r.oneYearTaxPaymentCertificate || '', |
||||
halfYearRevenue: r.halfYearRevenue || '', |
||||
corporateFinancialStatements: r.corporateFinancialStatements || '', |
||||
loanApplicationForm: r.loanApplicationForm || '', |
||||
creditAuthorizationLetter: r.creditAuthorizationLetter || '', |
||||
}) |
||||
}, |
||||
// 导入 |
||||
importSth (i) { |
||||
this.setCreditImportIndex(i) |
||||
this.$parent.$parent.$parent.showData('导入报表', 12) |
||||
}, |
||||
async beforeSubmit () { |
||||
const { form } = this |
||||
if (!form.matureRepayment && !form.otherRepaymentsCheck) return this.$message.error('请选择还款来源!') |
||||
if (form.otherRepaymentsCheck && !form.otherRepayments) return this.$message.error('请输入其他的还款来源!') |
||||
if (!form.paymentForMaterials && !form.payLaborCosts && !form.payExpenses && !form.otherUseCheck) return this.$message.error('请选择贷款用途!') |
||||
if (form.otherUseCheck && !form.otherUses) return this.$message.error('请输入其他的用途!') |
||||
this.visible = true |
||||
}, |
||||
async submit () { |
||||
try { |
||||
const { form } = this |
||||
// 判分 |
||||
await creditApplicationInput({ |
||||
...this.$store.state.system.creditIds, |
||||
...this.$store.state.system.creditImportIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [] |
||||
form.cooperationPeriod && rule.push({ answerId: 875, emptyOne: 149, emptyTwo: form.cooperationPeriod, operationIds: preId + ',875', type: 3 }) |
||||
form.matureRepayment && rule.push({ answerId: 798, emptyOne: 147, emptyTwo: 269, operationIds: preId + ',798', type: 1 }) |
||||
form.otherRepayments && rule.push({ answerId: 798, emptyOne: 147, emptyTwo: 270, operationIds: preId + ',798', type: 1 }) |
||||
|
||||
form.paymentForMaterials && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 271, operationIds: preId + ',833', type: 1 }) |
||||
form.payLaborCosts && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 272, operationIds: preId + ',833', type: 1 }) |
||||
form.payExpenses && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 273, operationIds: preId + ',833', type: 1 }) |
||||
form.otherUses && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 274, operationIds: preId + ',833', type: 1 }) |
||||
|
||||
form.specialInstructions && rule.push({ answerId: 802, emptyOne: 125, emptyTwo: form.specialInstructions, operationIds: preId + ',802', type: 3 }) |
||||
|
||||
// 附件的判分,都是点击题 |
||||
const files = this.creditImportIds |
||||
files.corporateIdCard && rule.push({ answerId: 804, emptyOne: 146, emptyTwo: files.corporateIdCard, operationIds: preId + ',803,804', type: 1 }) |
||||
files.mortgagePropertyCertificate && rule.push({ answerId: 805, emptyOne: 146, emptyTwo: files.mortgagePropertyCertificate, operationIds: preId + ',803,805', type: 1 }) |
||||
files.proofOfMaritalStatus && rule.push({ answerId: 806, emptyOne: 146, emptyTwo: files.proofOfMaritalStatus, operationIds: preId + ',803,806', type: 1 }) |
||||
files.copyOfSpouseSIdCard && rule.push({ answerId: 807, emptyOne: 146, emptyTwo: files.copyOfSpouseSIdCard, operationIds: preId + ',803,807', type: 1 }) |
||||
files.originalBusinessLicense && rule.push({ answerId: 808, emptyOne: 146, emptyTwo: files.originalBusinessLicense, operationIds: preId + ',803,808', type: 1 }) |
||||
files.accountOpeningPermit && rule.push({ answerId: 809, emptyOne: 146, emptyTwo: files.accountOpeningPermit, operationIds: preId + ',803,809', type: 1 }) |
||||
files.leaseContract && rule.push({ answerId: 810, emptyOne: 146, emptyTwo: files.leaseContract, operationIds: preId + ',803,810', type: 1 }) |
||||
files.companyArticlesOfAssociation && rule.push({ answerId: 811, emptyOne: 146, emptyTwo: files.companyArticlesOfAssociation, operationIds: preId + ',803,811', type: 1 }) |
||||
files.shareholderDocuments && rule.push({ answerId: 812, emptyOne: 146, emptyTwo: files.shareholderDocuments, operationIds: preId + ',803,812', type: 1 }) |
||||
files.financialSeal && rule.push({ answerId: 813, emptyOne: 146, emptyTwo: files.financialSeal, operationIds: preId + ',803,813', type: 1 }) |
||||
files.oneYearTaxPaymentCertificate && rule.push({ answerId: 814, emptyOne: 146, emptyTwo: files.oneYearTaxPaymentCertificate, operationIds: preId + ',803,814', type: 1 }) |
||||
files.halfYearRevenue && rule.push({ answerId: 815, emptyOne: 146, emptyTwo: files.halfYearRevenue, operationIds: preId + ',803,815', type: 1 }) |
||||
files.corporateFinancialStatements && rule.push({ answerId: 817, emptyOne: 146, emptyTwo: files.corporateFinancialStatements, operationIds: preId + ',803,817', type: 1 }) |
||||
files.loanApplicationForm && rule.push({ answerId: 818, emptyOne: 146, emptyTwo: files.loanApplicationForm, operationIds: preId + ',803,818', type: 1 }) |
||||
files.creditAuthorizationLetter && rule.push({ answerId: 819, emptyOne: 146, emptyTwo: files.creditAuthorizationLetter, operationIds: preId + ',803,819', type: 1 }) |
||||
|
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.successVisible = true |
||||
} catch { (e) => { } } |
||||
}, |
||||
// 跳转到第三步 |
||||
toStep3 () { |
||||
this.$parent.active = '3' |
||||
this.$parent.curStep = 0 |
||||
this.$parent.tab3Disabled = false |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.files { |
||||
.item { |
||||
display: flex; |
||||
align-items: center; |
||||
margin-bottom: 20px; |
||||
} |
||||
|
||||
.text { |
||||
margin-left: 10px; |
||||
font-size: 14px; |
||||
color: #818181; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,253 @@ |
||||
<!-- 信用评估 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="140px" :rules="rules"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">客户信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号" prop="applicationAccount"> |
||||
<el-input v-model="form.applicationAccount" @input="val => inputListen(val, form, 'applicationAccount')" |
||||
@blur="accountBlur" /> |
||||
</el-form-item> |
||||
<el-form-item label="证件类型" prop="identificationType"> |
||||
<el-select v-model.trim="form.identificationType" placeholder="请选择" disabled> |
||||
<el-option label="统一社会信用代码证" :value="82"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="联系电话" prop="contactPhoneNumber"> |
||||
<el-input v-model="form.contactPhoneNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人姓名" prop="corporateName"> |
||||
<el-input v-model="form.corporateName" /> |
||||
</el-form-item> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" disabled> |
||||
<el-option label='CNY人民币' :value="12"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="利率(%)" prop="interestRate"> |
||||
<el-input v-model="form.interestRate" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="支取方式" prop="withdrawalMethod"> |
||||
<el-select v-model.trim="form.withdrawalMethod" placeholder="请选择" disabled> |
||||
<el-option label="印鉴" :value="114"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="成立年份" prop="yearOfEstablishment"> |
||||
<el-input v-model="form.yearOfEstablishment" /> |
||||
</el-form-item> |
||||
<el-form-item label="主营范围" prop="mainBusinessScope"> |
||||
<el-input v-model="form.mainBusinessScope" /> |
||||
</el-form-item> |
||||
<el-form-item label="财报提交方式" prop="financialReportSubmissionMethod"> |
||||
<el-input v-model="form.financialReportSubmissionMethod" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称" prop="customerName"> |
||||
<el-input v-model="form.customerName" /> |
||||
</el-form-item> |
||||
<el-form-item label="代码证号" prop="identificationNumber"> |
||||
<el-input v-model="form.identificationNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="注册地址" prop="companyRegisteredAddress"> |
||||
<el-input v-model="form.companyRegisteredAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人证件号码" prop="corporateIdNumber"> |
||||
<el-input v-model="form.corporateIdNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="账户类型" prop="accountType"> |
||||
<el-select v-model.trim="form.accountType" placeholder="请选择" disabled> |
||||
<el-option label="结算户" :value="97"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式" prop="interestCalculationMethod"> |
||||
<el-select v-model.trim="form.interestCalculationMethod" placeholder="请选择" disabled> |
||||
<el-option label="按年计息" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="员工人数" prop="numberOfEmployees"> |
||||
<el-input v-model="form.numberOfEmployees" /> |
||||
</el-form-item> |
||||
<el-form-item label="注册类型" prop="registrationType"> |
||||
<el-input v-model="form.registrationType" /> |
||||
</el-form-item> |
||||
<el-form-item label="营业执照到期日" prop="expirationDateOfBusinessLicense"> |
||||
<el-date-picker v-model="form.expirationDateOfBusinessLicense" type="date" placeholder="选择日期" |
||||
:picker-options="pickerOptions"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="借款人性质" prop="natureOfBorrower"> |
||||
<el-input v-model="form.natureOfBorrower" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="$router.back()" v-throttle>返回</el-button> |
||||
<el-button @click="next" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { inputListen } from '@/utils/utilFunction.js' |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id, |
||||
form: { |
||||
applicationAccount: '', |
||||
customerName: '', |
||||
identificationType: '', |
||||
identificationNumber: '', |
||||
contactPhoneNumber: '', |
||||
companyRegisteredAddress: '', |
||||
corporateName: '', |
||||
corporateIdNumber: '', |
||||
contactPhoneNumber: '', |
||||
currency: 12, |
||||
accountType: 97, |
||||
interestRate: 3.2, |
||||
interestCalculationMethod: 83, |
||||
withdrawalMethod: 114, |
||||
numberOfEmployees: '', |
||||
yearOfEstablishment: '', |
||||
registrationType: '', |
||||
mainBusinessScope: '', |
||||
expirationDateOfBusinessLicense: '2050-01-01', |
||||
financialReportSubmissionMethod: '', |
||||
natureOfBorrower: '', |
||||
}, |
||||
rules: { |
||||
applicationAccount: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
pickerOptions: { |
||||
disabledDate (v) { |
||||
return v.getTime() < new Date().getTime() - 86400000 |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate', |
||||
setCreditIds: 'system/setCreditIds', |
||||
setCreditImportIds: 'system/setCreditImportIds', |
||||
}), |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
r.identificationType = +r.identificationType |
||||
r.currency = 12 |
||||
r.accountType = 97 |
||||
r.interestRate = 3.2 |
||||
r.interestCalculationMethod = 83 |
||||
r.withdrawalMethod = 114 |
||||
this.form = r |
||||
} |
||||
}, |
||||
// 账号blur事件 |
||||
accountBlur () { |
||||
if (this.form.applicationAccount === 12802851701099) { |
||||
this.form.customerName = '袋鼠互联网科技有限公司' |
||||
this.form.identificationType = 82 |
||||
this.form.identificationNumber = '913403005685450862' |
||||
this.form.contactPhoneNumber = '15890317718' |
||||
this.form.companyRegisteredAddress = '广东省深圳市南山区前海一号2020室' |
||||
this.form.corporateName = '丛小凤' |
||||
this.form.corporateIdNumber = '220602199202281229' |
||||
|
||||
this.form.numberOfEmployees = 50 |
||||
this.form.yearOfEstablishment = '2018-02-19' |
||||
this.form.registrationType = '有限公司' |
||||
this.form.mainBusinessScope = '信息技术' |
||||
this.form.expirationDateOfBusinessLicense = '2050-01-01' |
||||
this.form.financialReportSubmissionMethod = '半年' |
||||
this.form.natureOfBorrower = '企业法人' |
||||
} |
||||
}, |
||||
// 下一步 |
||||
async next () { |
||||
const { form } = this |
||||
if (!form.applicationAccount) return this.$message.error('请填写账号!') |
||||
try { |
||||
const { data } = await creditEvaluationInput({ |
||||
...this.$store.getters['system/commonIds'], |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [{ answerId: 769, emptyOne: 125, emptyTwo: form.applicationAccount, operationIds: preId + ',769', type: 3 }] |
||||
form.customerName && rule.push({ answerId: 880, emptyOne: 153, emptyTwo: form.customerName, operationIds: preId + ',880', type: 3 }) |
||||
form.identificationNumber && rule.push({ answerId: 881, emptyOne: 153, emptyTwo: form.identificationNumber, operationIds: preId + ',881', type: 3 }) |
||||
form.contactPhoneNumber && rule.push({ answerId: 882, emptyOne: 153, emptyTwo: form.contactPhoneNumber, operationIds: preId + ',882', type: 3 }) |
||||
form.companyRegisteredAddress && rule.push({ answerId: 883, emptyOne: 153, emptyTwo: form.companyRegisteredAddress, operationIds: preId + ',883', type: 3 }) |
||||
form.corporateName && rule.push({ answerId: 884, emptyOne: 153, emptyTwo: form.corporateName, operationIds: preId + ',884', type: 3 }) |
||||
form.corporateIdNumber && rule.push({ answerId: 885, emptyOne: 153, emptyTwo: form.corporateIdNumber, operationIds: preId + ',885', type: 3 }) |
||||
form.numberOfEmployees && rule.push({ answerId: 886, emptyOne: 153, emptyTwo: form.numberOfEmployees, operationIds: preId + ',886', type: 3 }) |
||||
form.yearOfEstablishment && rule.push({ answerId: 887, emptyOne: 153, emptyTwo: form.yearOfEstablishment, operationIds: preId + ',887', type: 3 }) |
||||
form.registrationType && rule.push({ answerId: 888, emptyOne: 153, emptyTwo: form.registrationType, operationIds: preId + ',888', type: 3 }) |
||||
form.mainBusinessScope && rule.push({ answerId: 889, emptyOne: 153, emptyTwo: form.mainBusinessScope, operationIds: preId + ',889', type: 3 }) |
||||
form.expirationDateOfBusinessLicense && rule.push({ answerId: 890, emptyOne: 153, emptyTwo: form.expirationDateOfBusinessLicense, operationIds: preId + ',890', type: 3 }) |
||||
form.financialReportSubmissionMethod && rule.push({ answerId: 891, emptyOne: 153, emptyTwo: form.financialReportSubmissionMethod, operationIds: preId + ',891', type: 3 }) |
||||
form.natureOfBorrower && rule.push({ answerId: 892, emptyOne: 153, emptyTwo: form.natureOfBorrower, operationIds: preId + ',892', type: 3 }) |
||||
|
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.setCreditImportIds() |
||||
// 缓存信用评估几个id |
||||
this.setCreditIds({ |
||||
companyLoanId: data.companyLoanId, // 顶部三个tab切换的公共id |
||||
creditEvaluationId: data.creditEvaluationId, // 信用评估的id |
||||
}) |
||||
this.$emit('updateStep', 1) |
||||
} catch { (e) => { } } |
||||
}, |
||||
inputListen, |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,139 @@ |
||||
<!-- 导入报表 --> |
||||
<template> |
||||
<div> |
||||
<div class="upload-wrap"> |
||||
<div> |
||||
<el-button :type="creditImportIds.importBalanceSheet ? '' : 'primary'" |
||||
@click="importSth('importBalanceSheet')">点击导入资产负债表</el-button> |
||||
<p v-if="creditImportIds.importBalanceSheet" class="already">已导入</p> |
||||
</div> |
||||
|
||||
<img class="icon" src="@/assets/img/arrow-right.png" alt=""> |
||||
|
||||
<div> |
||||
<el-button :type="creditImportIds.importIncomeStatement ? '' : 'primary'" |
||||
@click="importSth('importIncomeStatement')">点击导入损益表</el-button> |
||||
<p v-if="creditImportIds.importIncomeStatement" class="already">已导入</p> |
||||
</div> |
||||
|
||||
<img class="icon" src="@/assets/img/arrow-right.png" alt=""> |
||||
|
||||
<div> |
||||
<el-button :type="creditImportIds.importCashFlowStatement ? '' : 'primary'" |
||||
@click="importSth('importCashFlowStatement')">点击导入现金流量表</el-button> |
||||
<p v-if="creditImportIds.importCashFlowStatement" class="already">已导入</p> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="prev" type="primary" class="submitBtn" v-throttle>上一步</el-button> |
||||
<el-button @click="next(2)" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
|
||||
export default { |
||||
computed: { |
||||
...mapState('system', ['creditImportIds', 'creditIds']), |
||||
}, |
||||
data () { |
||||
return { |
||||
form: {}, |
||||
originForm: {}, |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations('system', ['setCreditImportIndex', 'initCreditImportIds']), |
||||
// 查询详情 |
||||
async getDetail () { |
||||
// debugger |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
this.initCreditImportIds({ |
||||
importBalanceSheet: r.importBalanceSheet || '', |
||||
importIncomeStatement: r.importIncomeStatement || '', |
||||
importCashFlowStatement: r.importCashFlowStatement || '', |
||||
}) |
||||
} |
||||
this.originForm = JSON.stringify(this.creditImportIds) |
||||
}, |
||||
// 导入 |
||||
importSth (i) { |
||||
this.setCreditImportIndex(i) |
||||
this.$parent.$parent.$parent.showData('导入报表', 12) |
||||
}, |
||||
// 上一步 |
||||
async prev () { |
||||
if (this.originForm !== JSON.stringify(this.creditImportIds)) { |
||||
try { |
||||
await this.$confirm(`编辑的内容未保存,是否保存并继续上一步?`, '提示', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning', |
||||
closeOnClickModal: false, |
||||
}) |
||||
this.next(0) |
||||
} catch (e) { } |
||||
} else { |
||||
this.$emit('updateStep', 0) |
||||
} |
||||
}, |
||||
async next (step) { |
||||
const form = this.creditImportIds |
||||
if (step) { |
||||
if (!form.importBalanceSheet) return this.$message.error('请导入资产负债表!') |
||||
if (!form.importIncomeStatement) return this.$message.error('请导入损益表!') |
||||
if (!form.importCashFlowStatement) return this.$message.error('请导入现金流量表!') |
||||
} |
||||
try { |
||||
await creditEvaluationInput({ |
||||
...this.creditIds, |
||||
...form |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768,876' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [ |
||||
{ answerId: 877, emptyOne: 150, emptyTwo: form.importBalanceSheet, operationIds: preId + ',877', type: 1 }, |
||||
{ answerId: 878, emptyOne: 150, emptyTwo: form.importIncomeStatement, operationIds: preId + ',878', type: 1 }, |
||||
{ answerId: 879, emptyOne: 150, emptyTwo: form.importCashFlowStatement, operationIds: preId + ',879', type: 1 }, |
||||
], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.$emit('updateStep', step) |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.upload-wrap { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
min-height: 300px; |
||||
|
||||
.already { |
||||
margin-top: 8px; |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #606060; |
||||
} |
||||
|
||||
.icon { |
||||
margin: 0 40px; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,294 @@ |
||||
<!-- 贷前调查 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="200px" :rules="rules"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">贷前调查</h6> |
||||
</el-col> |
||||
<el-col :span="10"> |
||||
<el-form-item label="调查日期" prop="surveyDate"> |
||||
<el-date-picker v-model="form.surveyDate" ref="surveyDate" type="date" placeholder="请选择调查日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="贸易融资记录" prop="tradeFinancingRecords"> |
||||
<el-select v-model="form.tradeFinancingRecords" placeholder="请选择" ref="tradeFinancingRecords" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="三年内较大经营投资失误" prop="businessInvestmentErrors"> |
||||
<el-select v-model="form.businessInvestmentErrors" placeholder="请选择" ref="businessInvestmentErrors" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业与客户管理分析" prop="enterpriseCustomerAnalysis"> |
||||
<el-select v-model="form.enterpriseCustomerAnalysis" placeholder="请选择" ref="enterpriseCustomerAnalysis" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="重大事故赔偿" prop="compensationMajorAccidents"> |
||||
<el-select v-model="form.compensationMajorAccidents" placeholder="请选择" ref="compensationMajorAccidents" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="对外不利担保" prop="externalUnfavorableGuarantee"> |
||||
<el-select v-model="form.externalUnfavorableGuarantee" placeholder="请选择" ref="externalUnfavorableGuarantee" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="经营状况" prop="businessStatus"> |
||||
<el-select v-model="form.businessStatus" placeholder="请选择" ref="businessStatus" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="坏账准备金提取" prop="badDebtReserves"> |
||||
<el-select v-model="form.badDebtReserves" placeholder="请选择" ref="badDebtReserves" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="重大法律诉讼" prop="majorLegalLitigation"> |
||||
<el-select v-model="form.majorLegalLitigation" placeholder="请选择" ref="majorLegalLitigation" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款风险情况" prop="loanRiskSituation"> |
||||
<el-select v-model="form.loanRiskSituation" placeholder="请选择" ref="loanRiskSituation" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="其他风险情况" prop="preLoanOtherRiskSituations"> |
||||
<el-input v-model="form.preLoanOtherRiskSituations" type="textarea" maxlength="100"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="prev" type="primary" class="submitBtn" v-throttle>上一步</el-button> |
||||
<el-button @click="next(3)" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate } from '@/utils/utilFunction.js'; |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '不良' |
||||
}, |
||||
], |
||||
form: { |
||||
surveyDate: '', |
||||
externalUnfavorableGuarantee: 204, |
||||
tradeFinancingRecords: 204, |
||||
businessStatus: 205, |
||||
businessInvestmentErrors: 204, |
||||
badDebtReserves: 204, |
||||
enterpriseCustomerAnalysis: 205, |
||||
majorLegalLitigation: 204, |
||||
compensationMajorAccidents: 204, |
||||
loanRiskSituation: 204, |
||||
preLoanOtherRiskSituations: '', |
||||
}, |
||||
originForm: {}, |
||||
rules: { |
||||
surveyDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择调查日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
externalUnfavorableGuarantee: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择对外不利担保', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
tradeFinancingRecords: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择贸易融资记录', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
businessStatus: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择经营状况', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
businessInvestmentErrors: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择三年内较大经营投资失误', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
badDebtReserves: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择坏账准备金提取', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
enterpriseCustomerAnalysis: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择企业与客户管理分析', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
majorLegalLitigation: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择重大法律诉讼', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
compensationMajorAccidents: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择重大事故赔偿', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
loanRiskSituation: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择贷款风险情况', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
r.externalUnfavorableGuarantee = +r.externalUnfavorableGuarantee || 204 |
||||
r.tradeFinancingRecords = +r.tradeFinancingRecords || 204 |
||||
r.businessStatus = +r.businessStatus || 205 |
||||
r.businessInvestmentErrors = +r.businessInvestmentErrors || 204 |
||||
r.badDebtReserves = +r.badDebtReserves || 204 |
||||
r.enterpriseCustomerAnalysis = +r.enterpriseCustomerAnalysis || 205 |
||||
r.majorLegalLitigation = +r.majorLegalLitigation || 204 |
||||
r.compensationMajorAccidents = +r.compensationMajorAccidents || 204 |
||||
r.loanRiskSituation = +r.loanRiskSituation || 204 |
||||
this.form = r |
||||
} |
||||
this.originForm = JSON.stringify(this.form) |
||||
}, |
||||
// 上一步 |
||||
async prev () { |
||||
debugger |
||||
if (this.originForm !== JSON.stringify(this.form)) { |
||||
try { |
||||
await this.$confirm(`编辑的内容未保存,是否保存并继续上一步?`, '提示', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning', |
||||
closeOnClickModal: false, |
||||
}) |
||||
this.next(1) |
||||
} catch (e) { } |
||||
} else { |
||||
this.$emit('updateStep', 1) |
||||
} |
||||
}, |
||||
async next (step) { |
||||
this.$refs.form.validate(myValidate(async () => { |
||||
try { |
||||
const { form } = this |
||||
await creditEvaluationInput({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 773, emptyOne: 125, emptyTwo: form.surveyDate, operationIds: preId + ',773', type: 3 }, |
||||
{ answerId: 774, emptyOne: 126, emptyTwo: form.externalUnfavorableGuarantee, operationIds: preId + ',774', type: 1 }, |
||||
{ answerId: 775, emptyOne: 126, emptyTwo: form.tradeFinancingRecords, operationIds: preId + ',775', type: 1 }, |
||||
{ answerId: 776, emptyOne: 127, emptyTwo: form.businessStatus, operationIds: preId + ',776', type: 1 }, |
||||
{ answerId: 777, emptyOne: 126, emptyTwo: form.businessInvestmentErrors, operationIds: preId + ',777', type: 1 }, |
||||
{ answerId: 778, emptyOne: 126, emptyTwo: form.badDebtReserves, operationIds: preId + ',778', type: 1 }, |
||||
{ answerId: 779, emptyOne: 127, emptyTwo: form.enterpriseCustomerAnalysis, operationIds: preId + ',779', type: 1 }, |
||||
{ answerId: 780, emptyOne: 126, emptyTwo: form.majorLegalLitigation, operationIds: preId + ',780', type: 1 }, |
||||
{ answerId: 781, emptyOne: 126, emptyTwo: form.compensationMajorAccidents, operationIds: preId + ',781', type: 1 }, |
||||
{ answerId: 782, emptyOne: 126, emptyTwo: form.loanRiskSituation, operationIds: preId + ',782', type: 1 }, |
||||
] |
||||
form.preLoanOtherRiskSituations && rule.push({ answerId: 783, emptyOne: 125, emptyTwo: form.preLoanOtherRiskSituations, operationIds: preId + ',783', type: 3 },) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.$emit('updateStep', step) |
||||
} catch { (e) => { } } |
||||
}, this.$refs)) |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,314 @@ |
||||
<!-- 等级评定 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="160px" :rules="rules"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">等级评定</h6> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="盈利记录" required> |
||||
<el-select v-model="form.profitRecord" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt3" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="领导作风品行" required> |
||||
<el-select v-model="form.leadershipStyleAndConduct" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="领导经营管理" required> |
||||
<el-select v-model="form.leadershipManagement" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业发展前景" required> |
||||
<el-select v-model="form.enterpriseDevelopmentProspects" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt5" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="有无不良信用记录" required> |
||||
<el-select v-model="form.haveAnyBadCreditRecords" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="领导应变开拓" required> |
||||
<el-select v-model="form.leadershipAdaptabilityAndDevelopment" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="领导才干教育" required> |
||||
<el-select v-model="form.leadershipEducation" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业开发能力" required> |
||||
<el-select v-model="form.enterpriseDevelopmentCapability" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt4" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业信誉" required> |
||||
<el-select v-model="form.corporateReputation" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="其他风险情况"> |
||||
<el-input v-model="form.gradeEvaluationOtherRiskSituations" type="textarea" maxlength="100"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="prev" type="primary" class="submitBtn" v-throttle>上一步</el-button> |
||||
<el-button @click="confirmSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible="submitVisible" append-to-body :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody" style="flex-direction: column;"> |
||||
<p class="text-lg" style="color: #333">评估完成</p> |
||||
<p class="text-lg" style="color: #333">信用评级为AAAA,可进行授信申请</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="submit(0)">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '不良' |
||||
}, |
||||
], |
||||
opt3: [ |
||||
{ |
||||
id: 208, |
||||
name: '本年盈利' |
||||
}, |
||||
{ |
||||
id: 209, |
||||
name: '连续两年盈利' |
||||
}, |
||||
{ |
||||
id: 210, |
||||
name: '连续三年盈利' |
||||
}, |
||||
{ |
||||
id: 211, |
||||
name: '连续五年盈利' |
||||
}, |
||||
{ |
||||
id: 212, |
||||
name: '本年亏损' |
||||
}, |
||||
{ |
||||
id: 213, |
||||
name: '连续两年亏损' |
||||
}, |
||||
{ |
||||
id: 214, |
||||
name: '连续三年亏损' |
||||
}, |
||||
{ |
||||
id: 215, |
||||
name: '连续五年亏损' |
||||
}, |
||||
], |
||||
opt4: [ |
||||
{ |
||||
id: 216, |
||||
name: '业内优秀' |
||||
}, |
||||
{ |
||||
id: 217, |
||||
name: '业内平均水平' |
||||
}, |
||||
{ |
||||
id: 218, |
||||
name: '业内平均水平以下' |
||||
}, |
||||
], |
||||
opt5: [ |
||||
{ |
||||
id: 219, |
||||
name: '很有发展潜力' |
||||
}, |
||||
{ |
||||
id: 220, |
||||
name: '待考察' |
||||
}, |
||||
{ |
||||
id: 221, |
||||
name: '前景一般' |
||||
}, |
||||
{ |
||||
id: 222, |
||||
name: '前景堪忧' |
||||
}, |
||||
], |
||||
form: { |
||||
profitRecord: 208, |
||||
leadershipAdaptabilityAndDevelopment: 205, |
||||
leadershipStyleAndConduct: 205, |
||||
leadershipEducation: 203, |
||||
leadershipManagement: 205, |
||||
enterpriseDevelopmentCapability: 216, |
||||
enterpriseDevelopmentProspects: 219, |
||||
corporateReputation: 205, |
||||
haveAnyBadCreditRecords: 204, |
||||
gradeEvaluationOtherRiskSituations: '', |
||||
}, |
||||
originForm: {}, |
||||
rules: { |
||||
surveyDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择调查日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
|
||||
submitVisible: false, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
r.profitRecord = +r.profitRecord || 208 |
||||
r.leadershipAdaptabilityAndDevelopment = +r.leadershipAdaptabilityAndDevelopment || 205 |
||||
r.leadershipStyleAndConduct = +r.leadershipStyleAndConduct || 205 |
||||
r.leadershipEducation = +r.leadershipEducation || 203 |
||||
r.leadershipManagement = +r.leadershipManagement || 205 |
||||
r.enterpriseDevelopmentCapability = +r.enterpriseDevelopmentCapability || 216 |
||||
r.enterpriseDevelopmentProspects = +r.enterpriseDevelopmentProspects || 219 |
||||
r.corporateReputation = +r.corporateReputation || 205 |
||||
r.haveAnyBadCreditRecords = +r.haveAnyBadCreditRecords || 204 |
||||
this.form = r |
||||
this.originForm = JSON.stringify(this.form) |
||||
} |
||||
}, |
||||
confirmSubmit () { |
||||
this.submitVisible = true |
||||
}, |
||||
// 上一步 |
||||
async prev () { |
||||
debugger |
||||
if (this.originForm !== JSON.stringify(this.form)) { |
||||
try { |
||||
await this.$confirm(`编辑的内容未保存,是否保存并继续上一步?`, '提示', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning', |
||||
closeOnClickModal: false, |
||||
}) |
||||
this.submit(1) |
||||
} catch (e) { } |
||||
} else { |
||||
this.$emit('updateStep', 2) |
||||
} |
||||
}, |
||||
async submit (prev) { |
||||
try { |
||||
const { form } = this |
||||
await creditEvaluationInput({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 784, emptyOne: 128, emptyTwo: form.profitRecord, operationIds: preId + ',784', type: 1 }, |
||||
{ answerId: 785, emptyOne: 127, emptyTwo: form.leadershipAdaptabilityAndDevelopment, operationIds: preId + ',785', type: 1 }, |
||||
{ answerId: 786, emptyOne: 127, emptyTwo: form.leadershipStyleAndConduct, operationIds: preId + ',786', type: 1 }, |
||||
{ answerId: 787, emptyOne: 126, emptyTwo: form.leadershipEducation, operationIds: preId + ',787', type: 1 }, |
||||
{ answerId: 788, emptyOne: 127, emptyTwo: form.leadershipManagement, operationIds: preId + ',788', type: 1 }, |
||||
{ answerId: 789, emptyOne: 129, emptyTwo: form.enterpriseDevelopmentCapability, operationIds: preId + ',789', type: 1 }, |
||||
{ answerId: 790, emptyOne: 130, emptyTwo: form.enterpriseDevelopmentProspects, operationIds: preId + ',790', type: 1 }, |
||||
{ answerId: 791, emptyOne: 127, emptyTwo: form.corporateReputation, operationIds: preId + ',791', type: 1 }, |
||||
{ answerId: 792, emptyOne: 126, emptyTwo: form.haveAnyBadCreditRecords, operationIds: preId + ',792', type: 1 }, |
||||
] |
||||
form.gradeEvaluationOtherRiskSituations && rule.push({ answerId: 793, emptyOne: 125, emptyTwo: form.gradeEvaluationOtherRiskSituations, operationIds: preId + ',793', type: 3 },) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.$message.success('创建成功!') |
||||
if (prev) { |
||||
// 上一步 |
||||
this.$emit('updateStep', 2) |
||||
} else { |
||||
this.$parent.active = '2' |
||||
this.$parent.tab2Disabled = false |
||||
} |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,257 @@ |
||||
<!-- 新建贷款申请 --> |
||||
<template> |
||||
<div class="wrap"> |
||||
<div> |
||||
<div class="nav"> |
||||
<el-menu :default-active="active" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">信用评估</el-menu-item> |
||||
<el-menu-item :disabled="tab2Disabled" index="2">授信申请</el-menu-item> |
||||
<el-menu-item :disabled="tab3Disabled" index="3">贷款申请</el-menu-item> |
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['公司贷款', '新建贷款申请', text]" /> |
||||
|
||||
<ul v-if="active === '1'" class="steps"> |
||||
<li v-for="(step, i) in steps" :key="i" :class="{ active: curStep === i }">{{ step }}</li> |
||||
</ul> |
||||
|
||||
<div class="form-wrap"> |
||||
<template v-if="active === '1'"> |
||||
<Basic v-if="!curStep" :key="0" @updateStep="updateStep" /> |
||||
<ImportReport v-else-if="curStep === 1" :key="1" @updateStep="updateStep" /> |
||||
<PreLoan v-else-if="curStep === 2" :key="2" @updateStep="updateStep" /> |
||||
<Rating v-else-if="curStep === 3" :key="3" @updateStep="updateStep" /> |
||||
</template> |
||||
<CreditApplication v-if="active === '2'" /> |
||||
<template v-if="active === '3'"> |
||||
<LoanApplication1 v-if="!curStep" @updateStep="updateStep" /> |
||||
<LoanApplication2 v-else-if="curStep === 1" @updateStep="updateStep" /> |
||||
</template> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState } from 'vuex' |
||||
import { creditApplicationDetails, loanApplicationDetails } from '@/api/http' |
||||
import Basic from './creditEvaluation/basic.vue' |
||||
import ImportReport from './creditEvaluation/importReport.vue' |
||||
import PreLoan from './creditEvaluation/preLoan.vue' |
||||
import Rating from './creditEvaluation/rating.vue' |
||||
import CreditApplication from './creditApplication' |
||||
import LoanApplication1 from './loanApplication/step1.vue' |
||||
import LoanApplication2 from './loanApplication/step2.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
components: { |
||||
Basic, |
||||
ImportReport, |
||||
PreLoan, |
||||
Rating, |
||||
CreditApplication, |
||||
LoanApplication1, |
||||
LoanApplication2, |
||||
MyTitle |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '', |
||||
textObj: { |
||||
'1': '信用评估', |
||||
'2': '授信申请', |
||||
'3': '贷款申请', |
||||
}, |
||||
visible: false, |
||||
active: '1', |
||||
steps: ['1.客户基本信息', '2.导入报表', '3.贷前调查', '4.等级评定'], |
||||
curStep: 0, |
||||
tab2Disabled: true, |
||||
tab3Disabled: true, |
||||
} |
||||
}, |
||||
mounted () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
this.getTab2Detail(id) |
||||
this.getTab3Detail(id) |
||||
} |
||||
}, |
||||
methods: { |
||||
// 查询授信申请详情(没有则禁用该切换) |
||||
async getTab2Detail (id) { |
||||
const res = await creditApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
this.tab2Disabled = !res.data.bankCreditApplication |
||||
}, |
||||
// 查询贷款申请详情(没有则禁用该切换) |
||||
async getTab3Detail (id) { |
||||
const res = await loanApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
this.tab3Disabled = !res.data.bankLoanApplication |
||||
}, |
||||
handleSelect (val) { |
||||
this.curStep = 0 |
||||
this.text = this.textObj[val] |
||||
this.active = val |
||||
}, |
||||
updateStep (step) { |
||||
this.curStep = step |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
height: calc(100vh - 118px); |
||||
padding: 20px; |
||||
overflow: auto; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.steps { |
||||
display: flex; |
||||
justify-content: center; |
||||
margin-bottom: 20px; |
||||
|
||||
li { |
||||
position: relative; |
||||
width: 160px; |
||||
padding: 6px 0; |
||||
margin-right: 25px; |
||||
text-align: center; |
||||
font-size: 16px; |
||||
color: #fff; |
||||
background-color: #a7bdf5; |
||||
|
||||
&:after { |
||||
content: ''; |
||||
position: absolute; |
||||
top: 0; |
||||
right: -24px; |
||||
border: 18px solid transparent; |
||||
border-right-width: 12px; |
||||
border-left: 12px solid #a7bdf5; |
||||
} |
||||
|
||||
&.active { |
||||
background-color: #5786fc; |
||||
|
||||
&:after { |
||||
border-left-color: #5786fc; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.form-wrap { |
||||
height: calc(100vh - 340px); |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,215 @@ |
||||
<!-- 贷款申请第一步 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="140px"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">客户信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号"> |
||||
<el-input v-model="form.applicationNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="证件类型"> |
||||
<el-select v-model.trim="form.identificationType" placeholder="请选择" disabled> |
||||
<el-option label="统一社会信用代码证" :value="82"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="注册地址"> |
||||
<el-input v-model="form.companyRegisteredAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人证件号码"> |
||||
<el-input v-model="form.corporateIdNumber" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称"> |
||||
<el-input v-model="form.customerName" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="代码证号"> |
||||
<el-input v-model="form.corporateIdNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="法人姓名"> |
||||
<el-input v-model="form.corporateName" /> |
||||
</el-form-item> |
||||
<el-form-item label="信用评级"> |
||||
<el-input v-model="form.creditRating" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<h6 class="l-title">授信</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="form.creditAmount" disabled /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<h6 class="l-title">贷款申请</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信年限" required> |
||||
<el-select v-model="form.creditTermOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款申请金额" required> |
||||
<el-input :value="form.loanApplicationAmount" placeholder="不大于授信金额" |
||||
@input="val => ismoney(val, form, 'loanApplicationAmount')" ref="loanApplicationAmount" /> |
||||
</el-form-item> |
||||
<el-form-item label="发放方式" required> |
||||
<el-select v-model.trim="form.distributionMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.distributionMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="年化利率"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" required> |
||||
<el-select v-model.trim="form.repaymentMethodOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="申请日期" prop="loanApplicationDate" required> |
||||
<el-date-picker v-model="form.loanApplicationDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" ref="loanApplicationDate"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="next" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { ismoney } from '@/utils/utilFunction.js' |
||||
import { loanApplicationDetails, addOperation, loanApplicationInput } from '@/api/http' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
data () { |
||||
return { |
||||
Util, |
||||
form: { |
||||
applicationNumber: '12802851701099', |
||||
customerName: '袋鼠互联网科技有限公司', |
||||
identificationType: 82, |
||||
identificationNumber: '913403005685450862', |
||||
companyRegisteredAddress: '广东省深圳市南山区前海一号2020室', |
||||
corporateName: '丛小凤', |
||||
corporateIdNumber: '913403005685450862', |
||||
creditRating: 'AAAA', |
||||
|
||||
creditAmount: '12,000,000.00', |
||||
creditTermOne: 231, |
||||
loanApplicationAmount: '', |
||||
repaymentMethodOne: 235, |
||||
distributionMethod: 238, |
||||
loanApplicationDate: '', |
||||
}, |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setCreditIds: 'system/setCreditIds', |
||||
}), |
||||
ismoney, |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await loanApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankLoanApplication |
||||
if (r) { |
||||
this.form = { |
||||
applicationNumber: '12802851701099', |
||||
customerName: '袋鼠互联网科技有限公司', |
||||
identificationType: 82, |
||||
identificationNumber: '913403005685450862', |
||||
companyRegisteredAddress: r.companyRegisteredAddress, |
||||
corporateName: r.corporateName, |
||||
corporateIdNumber: r.corporateIdNumber, |
||||
creditRating: r.creditRating, |
||||
|
||||
creditAmount: '12,000,000.00', |
||||
creditTermOne: +r.creditTermOne || 231, |
||||
loanApplicationAmount: r.loanApplicationAmount, |
||||
repaymentMethodOne: +r.repaymentMethodOne || 235, |
||||
distributionMethod: +r.distributionMethod || 238, |
||||
loanApplicationDate: r.loanApplicationDate, |
||||
loanId: r.loanId |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
async next () { |
||||
const { form } = this |
||||
if (!form.loanApplicationAmount) return this.$message.error('请填写贷款申请金额!') |
||||
if (+form.loanApplicationAmount > 12000000) return this.$message.error('贷款申请金额应不大于授信金额!') // 贷款申请金额不能大于授信金额(写死一千二百万) |
||||
try { |
||||
const { data } = await loanApplicationInput({ |
||||
...this.$store.getters['system/commonIds'], |
||||
...form, |
||||
companyLoanId: this.creditIds.companyLoanId, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 820, emptyOne: 134, emptyTwo: form.creditTermOne, operationIds: preId + ',820', type: 1 }, |
||||
{ answerId: 821, emptyOne: 125, emptyTwo: form.loanApplicationAmount, operationIds: preId + ',821', type: 3 }, |
||||
{ answerId: 822, emptyOne: 135, emptyTwo: form.repaymentMethodOne, operationIds: preId + ',822', type: 1 }, |
||||
{ answerId: 823, emptyOne: 136, emptyTwo: form.distributionMethod, operationIds: preId + ',823', type: 1 }, |
||||
{ answerId: 845, emptyOne: 140, emptyTwo: form.loanApplicationDate, operationIds: preId + ',845', type: 3 }, |
||||
] |
||||
form.companyRegisteredAddress && rule.push({ answerId: 883, emptyOne: 153, emptyTwo: form.companyRegisteredAddress, operationIds: preId + ',883', type: 3 }) |
||||
form.corporateName && rule.push({ answerId: 884, emptyOne: 153, emptyTwo: form.corporateName, operationIds: preId + ',884', type: 3 }) |
||||
form.corporateIdNumber && rule.push({ answerId: 885, emptyOne: 153, emptyTwo: form.corporateIdNumber, operationIds: preId + ',885', type: 3 }) |
||||
form.creditRating && rule.push({ answerId: 896, emptyOne: '', emptyTwo: '', operationIds: preId + ',896', type: '' }) |
||||
form.creditAmount && rule.push({ answerId: 897, emptyOne: '', emptyTwo: '', operationIds: preId + ',897', type: '' }) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
// 缓存信用评估几个id |
||||
this.setCreditIds({ |
||||
companyLoanId: data.companyLoanId, // 顶部三个tab切换的公共id |
||||
loanId: data.loanId, // 贷款申请的id |
||||
}) |
||||
this.$emit('updateStep', 1) |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,285 @@ |
||||
<!-- 信用评估 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="140px"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">客户信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="贷款类型"> |
||||
<el-select value="企业经营贷款" placeholder="请选择" disabled> |
||||
<el-option value="企业经营贷款"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="form.creditAmount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="起息日期" prop="valueDate"> |
||||
<el-date-picker v-model="form.valueDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" @change="maturityDateCalc"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式"> |
||||
<el-input value="按LPR浮动计息" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="执行利率"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="担保方式" prop="guaranteeMethod"> |
||||
<el-select v-model="form.guaranteeMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.guaranteeMethods" :key="i" :label="item.name" |
||||
:value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="利息总额"> |
||||
<el-input v-model="form.totalInterestAmount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款账号" prop="repaymentAccount"> |
||||
<el-input v-model="form.repaymentAccount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="合同编号" prop="contractNo"> |
||||
<el-input v-model="form.contractNo" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="授信期限"> |
||||
<el-select v-model="form.creditTermTwo" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款期限" prop="loanTerm" @change="interestCalc"> |
||||
<el-select v-model="form.loanTerm" placeholder="请选择" @change="maturityDateCalc"> |
||||
<el-option v-for="(item, i) in Util.loanTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="到期日期"> |
||||
<el-date-picker v-model="form.expirationDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" disabled></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="基准利率" prop="baseInterestRate"> |
||||
<el-input value="3.20%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="逾期利率" prop="overdueInterestRate"> |
||||
<el-input value="10%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" prop="repaymentMethodTwo"> |
||||
<el-select v-model.trim="form.repaymentMethodTwo" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款金额"> |
||||
<el-input v-model="form.loanAmount" @input="loanAmountInput" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="beforeSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p class="text-lg" style="color: #333">确定提交贷款申请吗?</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="close btn hover:bg-blue-100 " @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="submit">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible="successVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p class="text-lg" style="color: #333">贷款申请成功!</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" |
||||
@click="$router.push('/counter/list/manage/corporateLoans-application')">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { addOperation, loanApplicationInput, loanApplicationDetails, loanApplicationInterestCalculation } from '@/api/http' |
||||
import Util from '@/libs/util' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
Util, |
||||
step1: {}, |
||||
timer: null, |
||||
form: { |
||||
valueDate: '', |
||||
creditTermTwo: 231, |
||||
loanTerm: 120, |
||||
guaranteeMethod: 242, |
||||
expirationDate: '', |
||||
totalInterestAmount: '', |
||||
loanAmount: '', |
||||
repaymentMethodTwo: '', |
||||
repaymentAccount: '', |
||||
}, |
||||
rules: { |
||||
valueDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择起息日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
guaranteeMethod: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择担保方式', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
repaymentAccount: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入还款账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
visible: false, |
||||
successVisible: false, |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
// 第一步填写的贷款金额和还款方式要在这个第二步回显,并且修改后不会影响第一步 |
||||
const res = await loanApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankLoanApplication |
||||
if (r) { |
||||
this.step1 = r |
||||
|
||||
this.form = { |
||||
valueDate: r.valueDate, |
||||
creditTermTwo: +r.creditTermOne, |
||||
loanTerm: +r.loanTerm || 120, |
||||
guaranteeMethod: +r.guaranteeMethod || 242, |
||||
expirationDate: r.expirationDate, |
||||
totalInterestAmount: r.totalInterestAmount, |
||||
loanAmount: r.loanApplicationAmount, |
||||
repaymentMethodTwo: +r.repaymentMethodOne, |
||||
repaymentAccount: r.repaymentAccount, |
||||
creditAmount: r.creditAmount, |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
// 到期日期计算 |
||||
maturityDateCalc () { |
||||
const { valueDate, loanTerm } = this.form |
||||
if (valueDate && loanTerm) { |
||||
const date = new Date(valueDate) |
||||
date.setMonth(date.getMonth() + loanTerm) |
||||
this.form.expirationDate = Util.formatDate('yyyy-MM-dd', date) |
||||
} |
||||
this.interestCalc() |
||||
}, |
||||
// 贷款金额input事件回调 |
||||
loanAmountInput () { |
||||
clearTimeout(this.timer); |
||||
this.timer = setTimeout(() => { |
||||
this.interestCalc() |
||||
}, 500) |
||||
}, |
||||
// 计算利息总额 |
||||
async interestCalc () { |
||||
const { form } = this |
||||
if (form.loanAmount && form.valueDate) { |
||||
const { data } = await loanApplicationInterestCalculation({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
form.totalInterestAmount = data.totalInterestAmount || '' |
||||
} |
||||
}, |
||||
async beforeSubmit () { |
||||
try { |
||||
const { form } = this |
||||
if (!form.valueDate) return this.$message.error('请选择起息日期!') |
||||
if (new Date(form.valueDate) < new Date(this.step1.loanApplicationDate)) return this.$message.error('起息日期不得早于申请日期!') |
||||
if (!form.repaymentAccount) return this.$message.error('请输入还款账号!') |
||||
if (+form.loanAmount > 12000000) return this.$message.error('贷款金额不得大于授信金额!') |
||||
this.visible = true |
||||
} catch { (e) => { } } |
||||
}, |
||||
async submit () { |
||||
try { |
||||
const { form } = this |
||||
await loanApplicationInput({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 824, emptyOne: 137, emptyTwo: 240, operationIds: preId + ',824', type: 1 }, |
||||
{ answerId: 825, emptyOne: 134, emptyTwo: form.creditTermTwo, operationIds: preId + ',825', type: 1 }, |
||||
{ answerId: 826, emptyOne: 125, emptyTwo: form.valueDate, operationIds: preId + ',826', type: 3 }, |
||||
{ answerId: 846, emptyOne: 141, emptyTwo: Util.loanTerms.find(e => e.id === form.loanTerm).pointId, operationIds: preId + ',846', type: 1 }, |
||||
{ answerId: 827, emptyOne: 125, emptyTwo: form.expirationDate, operationIds: preId + ',827', type: 3 }, |
||||
{ answerId: 828, emptyOne: 139, emptyTwo: form.guaranteeMethod, operationIds: preId + ',828', type: 1 }, |
||||
{ answerId: 822, emptyOne: 135, emptyTwo: form.repaymentMethodTwo, operationIds: preId + ',822', type: 1 }, |
||||
{ answerId: 832, emptyOne: 125, emptyTwo: form.repaymentAccount, operationIds: preId + ',832', type: 1 }, |
||||
] |
||||
|
||||
form.loanAmount && rule.push({ answerId: 831, emptyOne: 125, emptyTwo: form.loanAmount, operationIds: preId + ',831', type: 1 }) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.successVisible = true |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,302 @@ |
||||
<!-- 公司贷款详情 --> |
||||
<template> |
||||
<div class="wrap"> |
||||
<MyTitle :titleArr="['公司贷款', '贷款详情']" /> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" disabled> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">信用评估</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号"> |
||||
<el-input v-model="form.applicationAccount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="证件类型"> |
||||
<el-select v-model.trim="form.identificationType" placeholder="请选择" disabled> |
||||
<el-option label="统一社会信用代码证" :value="82"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="注册地址"> |
||||
<el-input v-model="form.companyRegisteredAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人证件号码"> |
||||
<el-input v-model="form.corporateIdNumber" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称"> |
||||
<el-input v-model="form.customerName" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="代码证号"> |
||||
<el-input v-model="bankLoanApplication.corporateIdNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="法人姓名"> |
||||
<el-input v-model="form.corporateName" /> |
||||
</el-form-item> |
||||
<el-form-item label="信用评级"> |
||||
<el-input v-model="bankLoanApplication.creditRating" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">授信</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="bankLoanApplication.creditAmount" disabled /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">贷款申请</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信年限"> |
||||
<el-select v-model="bankLoanApplication.creditTermOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式"> |
||||
<el-select v-model.trim="bankLoanApplication.repaymentMethodOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="申请日期" prop="loanApplicationDate"> |
||||
<el-date-picker v-model="bankLoanApplication.loanApplicationDate" type="date" placeholder="选择日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" ref="loanApplicationDate"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="年化利率"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="发放方式"> |
||||
<el-select v-model.trim="bankLoanApplication.distributionMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.distributionMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">贷款合同录入</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="贷款类型"> |
||||
<el-select value="企业经营贷款" placeholder="请选择"> |
||||
<el-option value="企业经营贷款"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="bankLoanApplication.creditAmount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="起息日期" prop="valueDate"> |
||||
<el-date-picker v-model="bankLoanApplication.valueDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式"> |
||||
<el-input value="按LPR浮动计息" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="执行利率" prop="executedInterestRate"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="担保方式"> |
||||
<el-select v-model="bankLoanApplication.guaranteeMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.guaranteeMethods" :key="i" :label="item.name" |
||||
:value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="利息总额"> |
||||
<el-input v-model="bankLoanApplication.totalInterestAmount" /> |
||||
</el-form-item> |
||||
<el-form-item label="还款账号"> |
||||
<el-input v-model="bankLoanApplication.repaymentAccount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="合同编号" prop="contractNo"> |
||||
<el-input v-model="bankLoanApplication.contractNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="授信期限"> |
||||
<el-select v-model="bankLoanApplication.creditTermTwo" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款期限" prop="loanTerm"> |
||||
<el-select v-model="bankLoanApplication.loanTerm" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.loanTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="到期日期"> |
||||
<el-date-picker v-model="bankLoanApplication.expirationDate" type="date" placeholder="选择日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" disabled></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="基准利率" prop="baseInterestRate"> |
||||
<el-input value="3.20%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="逾期利率" prop="overdueInterestRate"> |
||||
<el-input value="10%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" prop="repaymentMethodTwo"> |
||||
<el-select v-model="bankLoanApplication.repaymentMethodTwo" placeholder="请选择" disabled> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款金额"> |
||||
<el-input v-model="bankLoanApplication.loanAmount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center"> |
||||
<el-button v-if="!bankCompanyLoans.loanDate" @click="showLoan" type="primary" class="submitBtn" |
||||
v-throttle>放款</el-button> |
||||
<el-button @click="$router.back()" type="primary" class="submitBtn" v-throttle>关闭</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible.sync="loanVisible" z-index="6000" width="500px" append-to-body :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">放款</div> |
||||
</div> |
||||
<div style="padding: 30px 0;"> |
||||
<el-date-picker v-model="loanDate" type="date" placeholder="请选择放款日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker> |
||||
</div> |
||||
</div> |
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="loanVisible = false">取消</el-button> |
||||
<el-button type="primary" @click="loanSubmit">确定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { loanDisbursement, companyLoanDetails, addOperation } from '@/api/http' |
||||
import MyTitle from '@/components/myTitle' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
Util, |
||||
id: this.$route.query.id, |
||||
form: { |
||||
applicationAccount: '', |
||||
customerName: '', |
||||
identificationType: '', |
||||
identificationNumber: '', |
||||
contactPhoneNumber: '', |
||||
companyRegisteredAddress: '', |
||||
corporateName: '', |
||||
corporateIdNumber: '', |
||||
contactPhoneNumber: '', |
||||
currency: 12, |
||||
accountType: 97, |
||||
interestRate: 3.2, |
||||
interestCalculationMethod: 83, |
||||
withdrawalMethod: 114, |
||||
numberOfEmployees: '', |
||||
yearOfEstablishment: '', |
||||
registrationType: '', |
||||
mainBusinessScope: '', |
||||
expirationDateOfBusinessLicense: '', |
||||
financialReportSubmissionMethod: '', |
||||
natureOfBorrower: '', |
||||
}, |
||||
loanDate: '', |
||||
loanVisible: false, |
||||
bankCompanyLoans: {}, |
||||
bankLoanApplication: {}, |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
if (this.id) { |
||||
// 查看及展期 |
||||
const { data } = await companyLoanDetails(this.id) |
||||
|
||||
const eva = data.bankCreditEvaluation || {} |
||||
if (eva.identificationType) eva.identificationType = +eva.identificationType |
||||
this.form = eva || {} |
||||
this.bankCompanyLoans = data.bankCompanyLoans || {} |
||||
|
||||
const app = data.bankLoanApplication || {} |
||||
if (app.distributionMethod) app.distributionMethod = +app.distributionMethod |
||||
if (app.repaymentMethodOne) app.repaymentMethodOne = +app.repaymentMethodOne |
||||
if (app.repaymentMethodTwo) app.repaymentMethodTwo = +app.repaymentMethodTwo |
||||
if (app.creditTerm) app.creditTerm = +app.creditTerm |
||||
if (app.guaranteeMethod) app.guaranteeMethod = +app.guaranteeMethod |
||||
if (app.loanTerm) app.loanTerm = +app.loanTerm |
||||
if (app.creditTermOne) app.creditTermOne = +app.creditTermOne |
||||
if (app.creditTermTwo) app.creditTermTwo = +app.creditTermTwo |
||||
|
||||
this.bankLoanApplication = app |
||||
} |
||||
}, |
||||
// 展示放款弹框 |
||||
showLoan () { |
||||
this.loanVisible = true |
||||
}, |
||||
// 放款 |
||||
async loanSubmit () { |
||||
if (!this.loanDate) return this.$message.error('请选择放款日期!') |
||||
try { |
||||
const { data } = await loanDisbursement({ |
||||
companyLoanId: this.id, |
||||
loanDate: this.loanDate, |
||||
}) |
||||
|
||||
this.$message[data.status === 200 ? 'success' : 'error'](data.message) |
||||
if (data.status === 200) { |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: 838, emptyOne: '', emptyTwo: '', operationIds: preId + ',838', type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.loanVisible = false |
||||
this.getDetail() |
||||
} |
||||
} catch (e) { } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
height: calc(100vh - 118px); |
||||
padding: 20px; |
||||
overflow: auto; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,112 @@ |
||||
<template> |
||||
<!-- 贷款放款 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷款放款']" /> |
||||
|
||||
<div style="width: 300px;margin-bottom: 20px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="贷款编号" align="center" /> |
||||
<el-table-column prop="loanDate" label="放款日期" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanDate || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="loanAmount" label="贷款金额(万)" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="loanAmount" label="放款金额(万)" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanDate ? scope.row.loanAmount : '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="loanAmount" label="放款状态" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanDate ? '已放款' : '待放款' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template slot-scope="scope"> |
||||
<el-button :disabled="!!scope.row.builtIn" @click="toDetail(scope.row)" size="small">{{ |
||||
scope.row.loanApplicationAmount ? '查看' : '编辑' |
||||
}}</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 2 |
||||
}) |
||||
this.list = data.page.records |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 详情 |
||||
toDetail (row) { |
||||
// 缓存信用评估几个id |
||||
this.$store.commit('system/setCreditIds', (row ? { |
||||
companyLoanId: row.companyLoanId, // 顶部三个tab切换的公共id |
||||
} : {})) |
||||
this.$router.push(row.loanApplicationAmount ? `/counter/list/manage/corporateLoans-detail?id=${row.companyLoanId}` : '/counter/list/manage/corporateLoans-apply') |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,405 @@ |
||||
<template> |
||||
<!-- 贷后管理 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷后管理']" /> |
||||
|
||||
<div style="width: 300px;margin-bottom: 20px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="贷款编号" align="center" /> |
||||
<el-table-column prop="loanStatus" label="贷款状态" align="center" width="100"> |
||||
<template slot-scope="scope">{{ scope.row.loanStatus || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="fiveLevelClassification" label="五级分类" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.five || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="processingResults" label="处理结果" align="center" width="100"> |
||||
<template slot-scope="scope">{{ scope.row.processingResults || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="updateTime" label="处理日期" align="center" width="160"> |
||||
<template slot-scope="scope">{{ scope.row.updateTime || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="arrearsAmount" label="欠款金额" align="center" width="100"> |
||||
<template slot-scope="scope">{{ scope.row.arrearsAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="360"> |
||||
<template v-if="!scope.row.builtIn" slot-scope="scope"> |
||||
<el-button @click="collection(scope.row)" size="small">催收</el-button> |
||||
<el-button @click="postLoan(scope.row)" size="small">贷后调查</el-button> |
||||
<el-button v-if="!scope.row.nonPerformingLoan" :disabled="scope.row.fiveLevelClassification" |
||||
@click="npl(scope.row)" size="small">不良贷款</el-button> |
||||
<el-button v-if="!scope.row.badDebtRecognition" @click="badDebt(scope.row)" size="small">呆账认定</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
|
||||
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p v-if="curMsg >= 0" class="text-lg" style="color: #333">{{ msgs[curMsg] }}</p> |
||||
|
||||
<el-row v-else style="width: 100%"> |
||||
<el-form class="dia-form" label-width="130px" label-suffix=":"> |
||||
<el-col :span="12"> |
||||
<el-form-item v-if="curType === 5" label="认定日期"> |
||||
<p class="text">{{ today }}</p> |
||||
</el-form-item> |
||||
<el-form-item label="客户名称"> |
||||
<p class="text">{{ curRow.customerName }}</p> |
||||
</el-form-item> |
||||
<el-form-item label="欠款金额"> |
||||
<p class="text">{{ curRow.arrearsAmount || 0 }}</p> |
||||
</el-form-item> |
||||
<el-form-item v-if="curType === 4" label="催收金额"> |
||||
<p class="text">{{ curRow.arrearsAmount || 0 }}</p> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="贷款编号"> |
||||
<p class="text">{{ curRow.applicationNumber }}</p> |
||||
</el-form-item> |
||||
<el-form-item label="催收通知书编号"> |
||||
<p class="text">A012346156281</p> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button v-if="curMsg < 2" class="close btn hover:bg-blue-100 " @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="msgSubmit">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible="postLoanVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" |
||||
:show-close="false" custom-class="dia postLoanDia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">贷后调查</div> |
||||
</div> |
||||
|
||||
<h6>调查日期:{{ today }}</h6> |
||||
<el-row style="width: 100%"> |
||||
<el-form label-width="130px" label-suffix=":" label-position="top"> |
||||
<el-col :span="24"> |
||||
<el-form-item label="客户基本状态变化" required> |
||||
<el-input type="textarea" :rows="3" size="small" maxlength="100" v-model="form.stateChange" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="信贷业务和还本付息情况变化" required> |
||||
<el-select v-model="form.changesInSituation" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt1" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="偿债能力" required> |
||||
<el-select v-model="form.debtPayingAbility" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt3" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="担保状况不利变化" required> |
||||
<el-select v-model="form.adverseChanges" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt1" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :offset="1" :span="11"> |
||||
<el-form-item label="经营状况" required> |
||||
<el-select v-model="form.businessStatus" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt2" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="信用状况" required> |
||||
<el-select v-model="form.creditStatus" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt2" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="五级分类" required> |
||||
<el-select v-model="form.fiveLevelClassification" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt4" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="结论 建议"> |
||||
<el-input type="textarea" :rows="3" size="small" maxlength="100" |
||||
v-model="form.conclusionAndSuggestions"> |
||||
</el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="close btn hover:bg-blue-100 " @click="postLoanVisible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="postLoanSubmit">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList, loanCollection, nonPerformingLoans, badDebtRecognition, postLoanInvestigationInput, addOperation } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
today: Util.formatDate('yyyy-MM-dd', new Date()), |
||||
msgs: [ |
||||
'向贷款人预留各渠道联系方式发送催收信息', |
||||
'确认提交吗?', |
||||
'已成功向贷款人发起催收提醒!', |
||||
'贷后调查提交成功!', |
||||
'不良贷款提交成功!', |
||||
'呆账认定提交成功!', |
||||
], |
||||
visible: false, |
||||
curMsg: 0, |
||||
curType: 3, |
||||
curRow: {}, |
||||
|
||||
postLoanVisible: false, |
||||
selects: [], |
||||
originForm: {}, |
||||
form: { |
||||
stateChange: '', |
||||
changesInSituation: 203, |
||||
debtPayingAbility: 1, |
||||
adverseChanges: 203, |
||||
businessStatus: 205, |
||||
creditStatus: 205, |
||||
fiveLevelClassification: 1, |
||||
conclusionAndSuggestions: '', |
||||
}, |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '差' |
||||
}, |
||||
], |
||||
opt3: [ |
||||
{ |
||||
id: 1, |
||||
name: '能按期偿还' |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '不能按期偿还' |
||||
}, |
||||
], |
||||
opt4: [ |
||||
{ |
||||
id: 1, |
||||
name: '正常贷款' |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '关注贷款' |
||||
}, |
||||
{ |
||||
id: 3, |
||||
name: '次级贷款' |
||||
}, |
||||
{ |
||||
id: 4, |
||||
name: '可疑贷款' |
||||
}, |
||||
{ |
||||
id: 5, |
||||
name: '损失贷款' |
||||
}, |
||||
], |
||||
curRow: {}, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.originForm = JSON.parse(JSON.stringify(this.form)) |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 4 |
||||
}) |
||||
const list = data.page.records |
||||
const { opt4 } = this |
||||
list.forEach(e => { |
||||
const five = e.fiveLevelClassification |
||||
e.bad = five === '4' || five === '5' // 不良贷款和呆账认定是否可点击 |
||||
if (five) e.five = opt4.find(n => n.id == five).name |
||||
}) |
||||
this.list = list |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 催收 |
||||
collection (row) { |
||||
this.curRow = row |
||||
this.visible = true |
||||
this.curMsg = 0 |
||||
}, |
||||
// 贷后调查 |
||||
postLoan (row) { |
||||
this.form = JSON.parse(JSON.stringify(this.originForm)) |
||||
this.curRow = row |
||||
this.postLoanVisible = true |
||||
}, |
||||
// 贷后调查提交 |
||||
async postLoanSubmit () { |
||||
const { form } = this |
||||
if (!form.stateChange) return this.$message.error('请填写客户基本状态变化!') |
||||
form.companyLoanId = this.curRow.companyLoanId |
||||
await postLoanInvestigationInput(form) |
||||
this.submitPoint(841) |
||||
this.getData() |
||||
this.postLoanVisible = false |
||||
}, |
||||
|
||||
// 不良贷款 |
||||
npl (row) { |
||||
this.curRow = row |
||||
this.curType = 4 |
||||
this.curRow = row |
||||
this.visible = true |
||||
this.curMsg = -2 |
||||
}, |
||||
// 呆账认定 |
||||
badDebt (row) { |
||||
this.curRow = row |
||||
this.curType = 5 |
||||
this.curRow = row |
||||
this.visible = true |
||||
this.curMsg = -1 |
||||
}, |
||||
async msgSubmit () { |
||||
if (!this.curMsg) { |
||||
// 催收提交 |
||||
await loanCollection({ |
||||
companyLoanId: this.curRow.companyLoanId |
||||
}) |
||||
this.getData() |
||||
this.curMsg = 2 |
||||
this.submitPoint(840) |
||||
} else if (this.curMsg < 0) { |
||||
this.curMsg = 1 |
||||
} else if (this.curMsg === 1) { |
||||
this.curMsg = this.curType |
||||
if (this.curType === 4) { |
||||
// 不良贷款提交 |
||||
await nonPerformingLoans({ |
||||
companyLoanId: this.curRow.companyLoanId |
||||
}) |
||||
this.submitPoint(842) |
||||
} else { |
||||
// 呆账认定提交 |
||||
await badDebtRecognition({ |
||||
companyLoanId: this.curRow.companyLoanId |
||||
}) |
||||
this.submitPoint(843) |
||||
} |
||||
this.getData() |
||||
} else { |
||||
this.visible = false |
||||
} |
||||
}, |
||||
async submitPoint (id) { |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: id, emptyOne: '', emptyTwo: '', operationIds: `${preId},${id}`, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
|
||||
/deep/.postLoanDia { |
||||
.el-form-item__label { |
||||
padding-bottom: 0; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,358 @@ |
||||
<template> |
||||
<!-- 贷款还款 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷款还款']" /> |
||||
|
||||
<div style="width: 300px;margin-bottom: 20px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="贷款编号" align="center" /> |
||||
<el-table-column prop="totalRepaymentAmount" label="累计还款金额(万)" align="center" /> |
||||
<el-table-column prop="arrearsAmount" label="欠款金额(万)" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.arrearsAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="240"> |
||||
<template slot-scope="scope"> |
||||
<el-button :disabled="!!scope.row.builtIn" @click="toDetail(scope.row)" size="small">{{ |
||||
scope.row.loanApplicationAmount ? '查看' : '编辑' |
||||
}}</el-button> |
||||
<template v-if="!scope.row.builtIn"> |
||||
<el-button size="small" @click="showExtension(scope.row)">展期</el-button> |
||||
<el-button @click="repayment(scope.row)" size="small">还款计划</el-button> |
||||
</template> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
|
||||
<el-dialog title="请选择展期期限" :visible.sync="extensionVisible" width="300px" z-index="6000" :append-to-body="true"> |
||||
<el-select v-model="extensionPeriod" placeholder="请选择" size="small" style="width: 100%;"> |
||||
<el-option v-for="(item, i) in extensions" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
|
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="extensionVisible = false">取消</el-button> |
||||
<el-button type="primary" @click="extensionSubmit">确定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
|
||||
<el-dialog title="还款计划" :visible.sync="repaymentVisible" width="1000px" z-index="6000" :append-to-body="true"> |
||||
<div class="flex j-between a-center m-b-20"> |
||||
<el-form class="filter-form" label-width="90px" inline> |
||||
<el-form-item label="还款周期"> |
||||
<el-date-picker placeholder="请选择还款周期" v-model="date" align="right" unlink-panels type="daterange" |
||||
size="small" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" |
||||
clearable></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="还款状态"> |
||||
<el-select v-model="form.status" placeholder="请选择" size="small" clearable @change="initRepayment"> |
||||
<el-option value="待还款"></el-option> |
||||
<el-option value="已还款"></el-option> |
||||
<el-option value="逾期"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div> |
||||
<el-button @click="batchRepayment('已还款')" size="small" type="primary">批量还款</el-button> |
||||
<el-button @click="batchRepayment('逾期')" size="small" type="primary">批量逾期</el-button> |
||||
</div> |
||||
</div> |
||||
<el-table ref="repayments" :data="repayments" stripe header-align="center" |
||||
@selection-change="handleSelectionChangeRepayment" row-key="id"> |
||||
<el-table-column type="selection" width="55" align="center" :reserve-selection="true" |
||||
:selectable="checkAble"></el-table-column> |
||||
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
||||
<el-table-column prop="contractAmount" label="还款周期" align="center"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.row.periodStart + '~' + scope.row.periodEnd }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="amountDue" label="应还款" align="center"></el-table-column> |
||||
<el-table-column prop="status" label="还款状态" align="center"> |
||||
<template slot-scope="scope"> |
||||
<p :class="{ 'text-red': scope.row.status === '逾期' }">{{ scope.row.status }}</p> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template v-if="scope.row.status !== '已还款'" slot-scope="scope"> |
||||
<el-button @click="handleRepayment(scope.row, '已还款')" size="small">还款</el-button> |
||||
<el-button @click="handleRepayment(scope.row, '逾期')" size="small">逾期</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="pageRepayment" |
||||
@current-change="handleCurrentChangePayment" :total="totalRepayment"></el-pagination> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList, addExtensionPeriod, repaymentPlanCompany, batchProcessingCompany, addOperation } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
|
||||
curRow: {}, |
||||
extensionVisible: false, |
||||
extensionPeriod: 1, |
||||
extensions: [ |
||||
{ |
||||
id: 1, |
||||
name: '1个月' |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '2个月' |
||||
}, |
||||
{ |
||||
id: 3, |
||||
name: '3个月' |
||||
}, |
||||
{ |
||||
id: 4, |
||||
name: '4个月' |
||||
}, |
||||
{ |
||||
id: 5, |
||||
name: '5个月' |
||||
}, |
||||
{ |
||||
id: 6, |
||||
name: '6个月' |
||||
}, |
||||
{ |
||||
id: 7, |
||||
name: '7个月' |
||||
}, |
||||
{ |
||||
id: 8, |
||||
name: '8个月' |
||||
}, |
||||
{ |
||||
id: 9, |
||||
name: '9个月' |
||||
}, |
||||
{ |
||||
id: 10, |
||||
name: '10个月' |
||||
}, |
||||
], |
||||
|
||||
repaymentVisible: false, |
||||
repayments: [], |
||||
pageRepayment: 1, |
||||
pageSizeRepayment: 10, |
||||
totalRepayment: 0, |
||||
multipleSelection: [], |
||||
date: [], |
||||
form: { |
||||
periodEnd: '', |
||||
periodStart: '', |
||||
status: '', |
||||
}, |
||||
curRow: {}, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
date: function (val) { |
||||
if (val) { |
||||
this.form.periodStart = val[0] |
||||
this.form.periodEnd = val[1] |
||||
} else { |
||||
this.form.periodStart = '' |
||||
this.form.periodEnd = '' |
||||
} |
||||
this.initRepayment(); |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 3 |
||||
}) |
||||
this.list = data.page.records |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 详情 |
||||
toDetail (row) { |
||||
// 缓存信用评估几个id |
||||
this.$store.commit('system/setCreditIds', (row ? { |
||||
companyLoanId: row.companyLoanId, // 顶部三个tab切换的公共id |
||||
} : {})) |
||||
this.$router.push(row.loanAmount ? `/counter/list/manage/corporateLoans-detail?id=${row.companyLoanId}` : '/counter/list/manage/corporateLoans-apply') |
||||
}, |
||||
// 展示展期弹框 |
||||
showExtension (row) { |
||||
this.curRow = row |
||||
this.extensionVisible = true |
||||
}, |
||||
// 展期 |
||||
async extensionSubmit () { |
||||
if (!this.extensionPeriod) return this.$message.error('请选择展期期限!') |
||||
const { data } = await addExtensionPeriod({ |
||||
companyLoanId: this.curRow.companyLoanId, |
||||
extensionPeriod: this.extensionPeriod, |
||||
}) |
||||
this.$message.success('展期成功!') |
||||
if (data.status === 200) this.extensionVisible = false |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: 839, emptyOne: '', emptyTwo: '', operationIds: preId + ',839', type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.getData() |
||||
}, |
||||
|
||||
|
||||
// 展示还款计划 |
||||
async repayment (row) { |
||||
this.curRow = row |
||||
this.repaymentVisible = true |
||||
this.getRepayment() |
||||
}, |
||||
// 展示还款计划 |
||||
async getRepayment (row) { |
||||
const { data } = await repaymentPlanCompany({ |
||||
pageNum: this.pageRepayment, |
||||
pageSize: this.pageSizeRepayment, |
||||
...this.form, |
||||
companyLoanId: this.curRow.companyLoanId, |
||||
}) |
||||
this.repayments = data.list.records |
||||
this.totalRepayment = data.list.total |
||||
}, |
||||
initRepayment () { |
||||
this.pageRepayment = 1 |
||||
this.getRepayment() |
||||
}, |
||||
handleCurrentChangePayment (val) { |
||||
this.pageRepayment = val |
||||
this.getRepayment() |
||||
}, |
||||
handleSelectionChangeRepayment (val) { |
||||
this.multipleSelection = val |
||||
}, |
||||
// 还款计划多选框禁用条件 |
||||
checkAble (row) { |
||||
return row.status === '待还款' |
||||
}, |
||||
// 还款/逾期 |
||||
handleRepayment (row, status) { |
||||
const text = status === '已还款' ? '还款' : '逾期' |
||||
this.$confirm(`确定要${text}吗?`, "提示", { |
||||
type: "warning" |
||||
}).then(async () => { |
||||
await batchProcessingCompany([{ |
||||
id: row.id, |
||||
status |
||||
}]) |
||||
|
||||
const answerId = status === '已还款' ? 900 : 901 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$message.success(`${text}成功`) |
||||
this.getRepayment() |
||||
this.getData() |
||||
}).catch(() => { }) |
||||
}, |
||||
// 批量还款/逾期 |
||||
batchRepayment (status) { |
||||
const list = this.multipleSelection |
||||
if (list.length) { |
||||
const text = status === '已还款' ? '还款' : '逾期' |
||||
this.$confirm(`确定要${text}吗?`, "提示", { |
||||
type: "warning" |
||||
}).then(async () => { |
||||
const ids = list.map(e => { |
||||
return { |
||||
id: e.id, |
||||
status |
||||
} |
||||
}) |
||||
await batchProcessingCompany(ids) |
||||
|
||||
const answerId = status === '已还款' ? 898 : 899 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$message.success(`${text}成功`) |
||||
this.$refs.repayments.clearSelection() |
||||
this.multipleSelection = [] |
||||
this.getRepayment() |
||||
this.getData() |
||||
}).catch(() => { }) |
||||
} else { |
||||
this.$message.error(`请选择数据!`) |
||||
} |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,193 @@ |
||||
<template> |
||||
<!-- 外汇业务 --> |
||||
<div class="wrap wrap2"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">购汇</el-menu-item> |
||||
<el-menu-item index="2">结汇</el-menu-item> |
||||
|
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['外汇业务', text]" /> |
||||
|
||||
<!-- 购汇 --> |
||||
<puchasing v-if="activeIndex === '1'"></puchasing> |
||||
<!-- 结汇 --> |
||||
<settlement v-if="activeIndex === '2'"></settlement> |
||||
|
||||
<el-dialog style="margin-top:10vh" :visible.sync="visible" :modal="false" width="40%" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="data-dia"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提交</div> |
||||
</div> |
||||
<div class="popBody"> |
||||
<h2>本业务需要授权</h2> |
||||
</div> |
||||
<div class="popBtns"> |
||||
<el-button class="close btn" @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn" type="primary" @click="visible = false">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import puchasing from './puchasing.vue' |
||||
import settlement from './settlement.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
puchasing, |
||||
settlement, |
||||
MyTitle |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '',/* 顶部文字 */ |
||||
cacheVal: '', |
||||
textObj: { |
||||
'1': '购汇', |
||||
'2': '结汇', |
||||
}, |
||||
visible: false, |
||||
activeIndex: '1', |
||||
} |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('foreignExchangeIndex')) { |
||||
this.handleSelect(sessionStorage.getItem('foreignExchangeIndex')) |
||||
} else { |
||||
this.handleSelect('1') |
||||
} |
||||
}, |
||||
methods: { |
||||
handleSelect (val) { |
||||
this.text = this.textObj[val] |
||||
this.activeIndex = val |
||||
this.cacheVal = val |
||||
}, |
||||
}, |
||||
destroyed () { |
||||
sessionStorage.setItem('foreignExchangeIndex', this.cacheVal) |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.submitBtn { |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,311 @@ |
||||
<!-- 外汇业务-购汇 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<div class="texts"> |
||||
<p class="text"> |
||||
<span>购汇人姓名:</span> |
||||
丛小凤 |
||||
</p> |
||||
<p class="text"> |
||||
<span>本年额度:</span> |
||||
已用 等值80.00美元 |
||||
</p> |
||||
<p class="text"> |
||||
<span></span> |
||||
剩余 等值49,200.00美元 |
||||
</p> |
||||
</div> |
||||
<el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="凭证号码" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp1('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled v-model="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
<p style="color: #8f8f8f;">可用余额:人民币 3,200,000.00</p> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="钞汇" prop="goldLogo"> |
||||
<el-select v-model.trim="form.goldLogo" placeholder="请选择" ref="goldLogo"> |
||||
<el-option v-for="item in goldLogos" :label="item.options" :value="item.itemId" :key="item.itemId"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="购汇用途" prop="buyForeignPurpose"> |
||||
<el-select v-model.trim="form.buyForeignPurpose" placeholder="请选择"> |
||||
<el-option v-for="item in getSelectList.buyForeignPurposeList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" ref="currency"> |
||||
<el-option v-for="item in getSelectList.allCurrencyList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="外币" prop="money"> |
||||
<el-input v-model="form.money" maxlength="15" @input="val => ismoney(val, form, 'money')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp2('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp2('密码器')"> |
||||
<el-input v-model="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" :needAuth="needAuth" /> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate, ismoney, checkName, checkHanzi, messagePassword, messageCard, inputListen } from '@/utils/utilFunction.js' |
||||
import { addOperation, getOperation } from '@/api/http' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
|
||||
const moduleName = 'foreignExchange/puchasing' |
||||
import MyDialog from '@/components/dialog' |
||||
import NeedBefore from '@/components/needBefore' |
||||
export default { |
||||
name: '', |
||||
props: { |
||||
depositFinish: Boolean |
||||
}, |
||||
mixins: [TipsBefore], |
||||
components: { |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('foreignExchangePuchasingPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('foreignExchangePuchasingPassword') |
||||
} |
||||
if (sessionStorage.getItem('foreignExchangePuchasingBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber, goldLogo } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
|
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
form: { |
||||
voucherNumber: '', // 凭证号码 |
||||
currency: '', |
||||
goldLogo: '', |
||||
money: '', |
||||
buyForeignPurpose: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
voucherNumber: '凭证号码', |
||||
currency: '币种', |
||||
goldLogo: '钞汇', |
||||
money: '外币', |
||||
buyForeignPurpose: '购汇用途', |
||||
drawPassword: '支取密码', |
||||
}, |
||||
rules: { |
||||
currency: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择币种', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
goldLogo: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择钞汇标识', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
money: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入外汇金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
buyForeignPurpose: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择购汇用途', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
goldLogos: [ |
||||
{ |
||||
itemId: 150, |
||||
options: '现汇(参考牌价712.34)' |
||||
}, |
||||
{ |
||||
itemId: 151, |
||||
options: '现钞(参考牌价712.34)' |
||||
}, |
||||
], |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
getFormData () { |
||||
let param = { |
||||
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,57,64' |
||||
} |
||||
getOperation(param).then((data) => { |
||||
console.log(data) |
||||
if (data.status == 200) { |
||||
var list = data.data.judgmentRuleReqs |
||||
for (var i = 0; i < list.length; i++) { |
||||
if (list[i].answerId == '85') { |
||||
this.cardNumberJudge = true |
||||
} //卡号 |
||||
else if (list[i].answerId == '87') { this.form.currency = +list[i].emptyTwo } //币种 |
||||
else if (list[i].answerId == '88') { this.form.goldLogo = +list[i].emptyTwo } //钞汇标识 |
||||
else if (list[i].answerId == '89') { this.form.money = list[i].emptyTwo } //金额 |
||||
else if (list[i].answerId == '90') { this.form.buyForeignPurpose = +list[i].emptyTwo } //支取方式 |
||||
else if (list[i].answerId == '91') { |
||||
if (sessionStorage.getItem('nomCurrentWithdrawalPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomCurrentWithdrawalPassword') |
||||
} else { |
||||
this.form.drawPassword = list[i].emptyTwo |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}).catch((error) => { |
||||
}) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写凭证号码') |
||||
return |
||||
} |
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,708,753' |
||||
formList.push( |
||||
{ answerId: 755, emptyOne: '', emptyTwo: '', operationIds: preId + ',755', type: '' }, |
||||
{ answerId: 756, emptyOne: 123, emptyTwo: form.currency, operationIds: preId + ',756', type: 1 }, |
||||
{ answerId: 757, emptyOne: 119, emptyTwo: form.goldLogo, operationIds: preId + ',757', type: 1 }, |
||||
{ answerId: 758, emptyOne: 120, emptyTwo: form.money, operationIds: preId + ',758', type: 3 }, |
||||
{ answerId: 759, emptyOne: 124, emptyTwo: form.buyForeignPurpose, operationIds: preId + ',759', type: 1 }, |
||||
{ answerId: 760, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',760', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('755') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('760') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
ismoney, |
||||
checkName, |
||||
checkHanzi, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}), |
||||
needAuth () { |
||||
return this.form.money >= 50000 |
||||
} |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.wrap .body { |
||||
margin-top: 0; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.texts { |
||||
margin: 30px 0 30px 80px; |
||||
font-size: 14px; |
||||
color: #666; |
||||
|
||||
.text { |
||||
line-height: 1.6; |
||||
} |
||||
|
||||
span { |
||||
display: inline-block; |
||||
width: 90px; |
||||
text-align: right; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,289 @@ |
||||
<!-- 外汇业务-结汇 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<div class="texts"> |
||||
<p class="text"> |
||||
<span>本年额度:</span> |
||||
已用 等值0.00美元 |
||||
</p> |
||||
<p class="text"> |
||||
<span></span> |
||||
剩余 等值50,000.00美元 |
||||
</p> |
||||
</div> |
||||
<el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="凭证号码" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp1('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled v-model="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
<p style="color: #8f8f8f;">可用余额:美元 现汇 5000.00</p> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="外币金额" prop="money"> |
||||
<el-input v-model="form.money" placeholder="最多可结汇5,000.00" maxlength="15" |
||||
@input="val => ismoney(val, form, 'money')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp2('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp2('密码器')"> |
||||
<el-input v-model="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" disabled> |
||||
<el-option :value="153" label="美元 现汇"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="资金来源" prop="fundingSource"> |
||||
<el-select v-model.trim="form.fundingSource" placeholder="请选择"> |
||||
<el-option v-for="item in getSelectList.fundingSourceList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" :needAuth="needAuth" /> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { myValidate, ismoney, checkName, checkHanzi, messagePassword, messageCard } from '@/utils/utilFunction.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
|
||||
const moduleName = 'foreignExchange/settlement' |
||||
import MyDialog from '@/components/dialog' |
||||
import NeedBefore from '@/components/needBefore' |
||||
export default { |
||||
name: '', |
||||
props: { |
||||
depositFinish: Boolean |
||||
}, |
||||
mixins: [TipsBefore], |
||||
components: { |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('foreignExchangSettlePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('foreignExchangSettlePassword') |
||||
} |
||||
if (sessionStorage.getItem('foreignExchangeSettleBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
form: { |
||||
voucherNumber: '', // 凭证号码 |
||||
currency: 153, |
||||
money: '', |
||||
fundingSource: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
voucherNumber: '凭证号码', |
||||
currency: '币种', |
||||
money: '外币金额', |
||||
fundingSource: '资金来源', |
||||
drawPassword: '支取密码', |
||||
}, |
||||
rules: { |
||||
currency: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择币种', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
money: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入外币金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
fundingSource: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择资金来源', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
getFormData () { |
||||
let param = { |
||||
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,57,64' |
||||
} |
||||
getOperation(param).then((data) => { |
||||
console.log(data) |
||||
if (data.status == 200) { |
||||
var list = data.data.judgmentRuleReqs |
||||
for (var i = 0; i < list.length; i++) { |
||||
if (list[i].answerId == '85') { |
||||
// sessionStorage.setItem('nomCurrentWithdrawalCard', list[i].emptyTwo) |
||||
this.form.cardNumber = list[i].emptyTwo |
||||
this.cardNumberJudge = true |
||||
} //卡号 |
||||
else if (list[i].answerId == '86') { this.form.userName = list[i].emptyTwo } //客户姓名 |
||||
else if (list[i].answerId == '87') { this.form.currency = +list[i].emptyTwo } //币种 |
||||
else if (list[i].answerId == '88') { this.form.goldLogo = +list[i].emptyTwo } //钞汇标识 |
||||
else if (list[i].answerId == '89') { this.form.money = list[i].emptyTwo } //金额 |
||||
else if (list[i].answerId == '90') { this.form.fundingSource = +list[i].emptyTwo } //支取方式 |
||||
// if (list[i].answerId == '91') {sessionStorage.setItem('nomCurrentWithdrawalPassword', list[i].emptyTwo)} //支取密码 |
||||
else if (list[i].answerId == '91') { |
||||
console.log(91) |
||||
if (sessionStorage.getItem('nomCurrentWithdrawalPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomCurrentWithdrawalPassword') |
||||
} else { |
||||
this.form.drawPassword = list[i].emptyTwo |
||||
} |
||||
} |
||||
else if (list[i].answerId == '92') { this.form.serviceCharge = list[i].emptyTwo } //手续费 |
||||
else if (list[i].answerId == '93') { this.form.remark = list[i].emptyTwo } //摘要 |
||||
} |
||||
} |
||||
}).catch(() => { }) |
||||
}, |
||||
submitForm () { |
||||
const { form } = this |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!form.voucherNumber) { |
||||
messageCard('请填写凭证号码') |
||||
return |
||||
} |
||||
if (form.money > 5000) return this.$message.warning('外币金额最多结汇5000.00,请重新输入') |
||||
if (!form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
|
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,708,754' |
||||
formList.push( |
||||
{ answerId: 761, emptyOne: '', emptyTwo: '', operationIds: preId + ',761', type: '' }, |
||||
{ answerId: 762, emptyOne: 8, emptyTwo: form.currency, operationIds: preId + ',762', type: 1 }, |
||||
{ answerId: 763, emptyOne: 121, emptyTwo: form.money, operationIds: preId + ',763', type: 3 }, |
||||
{ answerId: 764, emptyOne: 122, emptyTwo: form.fundingSource, operationIds: preId + ',764', type: 1 }, |
||||
{ answerId: 765, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',765', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('761') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('765') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
ismoney, |
||||
checkName, |
||||
checkHanzi, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}), |
||||
needAuth () { |
||||
return this.form.money >= 50000 |
||||
} |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.wrap .body { |
||||
margin-top: 0; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.texts { |
||||
margin: 30px 0 30px 80px; |
||||
font-size: 14px; |
||||
color: #666; |
||||
|
||||
.text { |
||||
line-height: 1.6; |
||||
} |
||||
|
||||
span { |
||||
display: inline-block; |
||||
width: 90px; |
||||
text-align: right; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,367 @@ |
||||
<!-- 网上银行开户 --> |
||||
<template> |
||||
<div class="wrap wrap2"> |
||||
<MyTitle :titleArr="['网上银行', '开户']" /> |
||||
|
||||
<div class="body"> |
||||
<el-row :gutter="20"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择"> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="客户号"> |
||||
<el-input ref="clientNumber" disabled maxlength="20" :value="form.clientNumber" |
||||
@input="(val) => checkHanzi(val, form, 'clientNumber')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" disabled ref="currency"> |
||||
<el-option v-for="item in getSelectList.currencySelectList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="凭证类型" prop="voucherType"> |
||||
<el-select v-model.trim="form.voucherType" placeholder="请选择" disabled ref="voucherType"> |
||||
<el-option label="IC卡" :value="15"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="开通网上银行" prop="openOnlineBanking"> |
||||
<el-radio-group v-model.trim="form.openOnlineBanking"> |
||||
<el-radio :label="146">是</el-radio> |
||||
<el-radio :label="147">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="钞汇标识" prop="goldLogo"> |
||||
<el-select v-model.trim="form.goldLogo" placeholder="请选择" disabled ref="goldLogo"> |
||||
<el-option v-for="item in getSelectList.goldLogoSelectList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="凭证号码" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="开通手机银行" prop="openPhoneBanking"> |
||||
<el-radio-group v-model.trim="form.openPhoneBanking"> |
||||
<el-radio :label="148">是</el-radio> |
||||
<el-radio :label="149">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" |
||||
:formName="formName" :spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2()" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState, mapMutations, mapGetters } from 'vuex' |
||||
import { vername, vermob } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { phoneListen, mailBoxListen, checkHanzi, inputListen, myValidate, checkName, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js' |
||||
|
||||
import MyTitle from '@/components/myTitle' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import NeedBefore from '@/components/needBefore' |
||||
|
||||
const moduleName = 'onlineBank/openAccount' |
||||
export default { |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
idNumberJudge: false, |
||||
visible: false,// 表单 |
||||
cardNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, // 证件类型 |
||||
idNumber: '',//证件号码 |
||||
clientNumber: '', // 客户号 |
||||
customerName: '', // 客户姓名 |
||||
currency: 12, // 币种 |
||||
goldLogo: 13, // 钞汇标识 |
||||
voucherType: 15, // 凭证类型 |
||||
voucherNumber: '', // 凭证号码 |
||||
openOnlineBanking: '', |
||||
openPhoneBanking: '', |
||||
drawPassword: '', // 支付密码 |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
clientNumber: '客户号', |
||||
customerName: '客户姓名', |
||||
currency: '币种', |
||||
goldLogo: '钞汇标识', |
||||
voucherType: '凭证类型', |
||||
voucherNumber: '凭证号码', |
||||
openOnlineBanking: '开通网上银行', |
||||
openPhoneBanking: '开通手机银行', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
currency: [{ |
||||
required: true, |
||||
message: '请选择币种', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
goldLogo: [{ |
||||
required: true, |
||||
message: '请选择钞汇标识', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherType: [{ |
||||
required: true, |
||||
message: '请选择凭证类型', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
openOnlineBanking: [{ |
||||
required: true, |
||||
message: '请选择开通网上银行', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
openPhoneBanking: [{ |
||||
required: true, |
||||
message: '请选择开通手机银行', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
|
||||
authorization: false,// 切授权 |
||||
success: false,// 切成功 |
||||
papers: [ |
||||
{ name: '身份证', id: 1 } |
||||
], |
||||
options: [], |
||||
gender: [ |
||||
{ name: '男', id: 1 }, |
||||
{ name: '女', id: 2 }, |
||||
], |
||||
submited: 0 |
||||
} |
||||
}, |
||||
components: { |
||||
MyTitle, |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('onlineBankPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('onlineBankPassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('onlineBankIdCard')) { |
||||
this.idNumberJudge = true |
||||
const { idNumber, userName, peopleNumber } = this.dataFlow |
||||
this.form.clientNumber = peopleNumber |
||||
this.form.idNumber = idNumber |
||||
this.form.customerName = userName |
||||
} |
||||
if (sessionStorage.getItem('onlineBankBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
// this.getFormData() |
||||
}, |
||||
mixins: [TipsBefore], |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
// 授权提交后 |
||||
submitIt () { |
||||
|
||||
// console.log(this.dataFlow) |
||||
}, |
||||
getFormData () { |
||||
let param = { |
||||
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,707,741' |
||||
} |
||||
getOperation(param).then((data) => { |
||||
if (data.status == 200) { |
||||
var list = data.data.judgmentRuleReqs |
||||
for (var i = 0; i < list.length; i++) { |
||||
if (list[i].answerId == '40') { this.form.idType = +list[i].emptyTwo } |
||||
// if (list[i].answerId == '41') {sessionStorage.setItem('nomClientIdentity', list[i].emptyTwo)} |
||||
if (list[i].answerId == '41' && list[i].emptyTwo) { |
||||
this.idNumberJudge = true |
||||
this.form.idNumber = list[i].emptyTwo |
||||
} |
||||
} |
||||
} |
||||
}).catch((error) => { }) |
||||
|
||||
}, |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { // 身份证扫描仪 |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('743') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('749') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('752') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
//提交个人用户信息 |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
let nomClientIdentity = sessionStorage.getItem('nomClientIdentity') |
||||
let consumerClientDragList = JSON.parse(nomClientIdentity); |
||||
let nomClientIdentitys = JSON.parse(nomClientIdentity); |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写凭证号码') |
||||
return |
||||
} |
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
|
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,707,741' |
||||
formList.push( |
||||
{ answerId: 742, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',742', type: 1 }, |
||||
{ answerId: 743, emptyOne: '', emptyTwo: '', operationIds: preId + ',743', type: '' }, |
||||
{ answerId: 744, emptyOne: 6, emptyTwo: form.clientNumber, operationIds: preId + ',744', type: 3 }, |
||||
{ answerId: 745, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',745', type: 3 }, |
||||
{ answerId: 746, emptyOne: 8, emptyTwo: form.currency, operationIds: preId + ',746', type: 1 }, |
||||
{ answerId: 747, emptyOne: 9, emptyTwo: form.goldLogo, operationIds: preId + ',747', type: 1 }, |
||||
{ answerId: 748, emptyOne: 11, emptyTwo: form.voucherType, operationIds: preId + ',748', type: 1 }, |
||||
{ answerId: 750, emptyOne: 117, emptyTwo: form.openOnlineBanking, operationIds: preId + ',750', type: 1 }, |
||||
{ answerId: 749, emptyOne: 44, emptyTwo: form.voucherNumber, operationIds: preId + ',749', type: 3 }, |
||||
{ answerId: 751, emptyOne: 118, emptyTwo: form.openPhoneBanking, operationIds: preId + ',751', type: 1 }, |
||||
{ answerId: 752, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',752', type: 3 }, |
||||
) |
||||
|
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.setTipsOperate('服务器繁忙哦,提交失败。') |
||||
}) |
||||
|
||||
}, |
||||
|
||||
|
||||
throttle (fn, wait = 1000) {// 节流函数 |
||||
var timer = null; |
||||
return function () { |
||||
var context = this; |
||||
var args = fn; |
||||
if (!timer) { |
||||
timer = setTimeout(function () { |
||||
fn.apply(context, fn); |
||||
timer = null; |
||||
}, wait) |
||||
} |
||||
} |
||||
}, |
||||
checkHanzi, |
||||
phoneListen, |
||||
mailBoxListen, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
inMyWork: 'system/inMyWork', |
||||
needsModule: 'system/needsModule', |
||||
popId: 'system/popId', |
||||
getSelectList: 'system/getSelectList', |
||||
}) |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
height: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: auto; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,715 @@ |
||||
<!-- 代收电费 --> |
||||
<template> |
||||
<div class="wrap"> |
||||
<div class="flex j-between a-center"> |
||||
<MyTitle :titleArr="['个人贷款', '新增贷款申请']" /> |
||||
<el-button size="small" @click="$router.back()">返回</el-button> |
||||
</div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form v-if="curStep === 1 || isDetail" ref="basicForm" :model="basicForm" label-width="120px" |
||||
:rules="basicRules" :disabled="isDetail"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">基本信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="idType"> |
||||
<el-select v-model.trim="basicForm.idType" placeholder="请选择" disabled> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" required> |
||||
<el-input disabled v-model="basicForm.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')" /> |
||||
</el-form-item> |
||||
<el-form-item label="出生日期" prop="birthDate" required> |
||||
<el-date-picker disabled v-model.trim="basicForm.birthDate" type="date" placeholder="选择日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input v-model="basicForm.idNumber" disabled ref="idNumber" /> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="性别" prop="gender"> |
||||
<el-select v-model.trim="basicForm.gender" disabled placeholder="请选择"> |
||||
<el-option :key="1" label="男" :value="1"> |
||||
</el-option> |
||||
<el-option :key="2" label="女" :value="2"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="联系电话" prop="phoneNumber"> |
||||
<el-input v-model="basicForm.phoneNumber" @input="(val) => phoneListen(val, form, 'phoneNumber')" |
||||
maxlength="11" ref="phoneNumber" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">收入信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="岗位"> |
||||
<el-input v-model="basicForm.position" /> |
||||
</el-form-item> |
||||
<el-form-item label="当前单位工作年限" label-width="150px"> |
||||
<el-input v-model="basicForm.currentWorkYears" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="薪酬"> |
||||
<el-input v-model="basicForm.salary"> |
||||
<template slot="append">万/年</template> |
||||
</el-input> |
||||
</el-form-item> |
||||
<el-form-item label="工龄"> |
||||
<el-input v-model="basicForm.totalWorkYears" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">房产信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="产权人"> |
||||
<el-input v-model="basicForm.propertyOwner" /> |
||||
</el-form-item> |
||||
<el-form-item label="共有情况"> |
||||
<el-input v-model="basicForm.coOwnership" /> |
||||
</el-form-item> |
||||
<el-form-item label="权利性质"> |
||||
<el-input v-model="basicForm.propertyRightNature" /> |
||||
</el-form-item> |
||||
<el-form-item label="使用期限"> |
||||
<el-input v-model="basicForm.usagePeriod" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="房产证号"> |
||||
<el-input v-model="basicForm.propertyCertificateNo" /> |
||||
</el-form-item> |
||||
<el-form-item label="坐落"> |
||||
<el-input v-model="basicForm.location" /> |
||||
</el-form-item> |
||||
<el-form-item label="面积"> |
||||
<el-input v-model="basicForm.area" /> |
||||
</el-form-item> |
||||
<el-form-item label="申请日期" prop="applicationDate"> |
||||
<el-date-picker v-model="basicForm.applicationDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" ref="applicationDate"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
|
||||
<el-form v-if="curStep !== 1 || isDetail" ref="form" :model="form" label-width="120px" :rules="rules" |
||||
:disabled="isDetail"> |
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">贷款合同</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="贷款类型"> |
||||
<el-input value="个人住房贷款" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="合同金额" prop="contractAmount"> |
||||
<el-input v-model="form.contractAmount" @change="interestCalc" /> |
||||
</el-form-item> |
||||
<el-form-item label="起息日期" prop="interestStartDate"> |
||||
<el-date-picker v-model="form.interestStartDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" :clearable="false" @change="maturityDateCalc"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式"> |
||||
<el-input value="按年浮动计息" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="浮动比例" prop="interestRateFloat"> |
||||
<el-input value="1%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="逾期利率" prop="overdueInterestRate"> |
||||
<el-input value="30%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" prop="repaymentMethod"> |
||||
<el-select v-model="form.repaymentMethod" placeholder="请选择"> |
||||
<el-option label="等额本金" :value="235"></el-option> |
||||
<el-option label="等额本息" :value="236"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="还款账号" prop="repaymentAccount"> |
||||
<el-input v-model="form.repaymentAccount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="合同编号" prop="contractNo"> |
||||
<el-input v-model="form.contractNo" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="贷款期限" prop="loanTerm"> |
||||
<el-select v-model="form.loanTerm" placeholder="请选择" @change="maturityDateCalc"> |
||||
<el-option v-for="(item, i) in loanTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="到期日期" prop="maturityDate"> |
||||
<el-date-picker v-model="form.maturityDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" disabled></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="基准利率" prop="baseInterestRate"> |
||||
<el-input value="4.30%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="执行利率" prop="executedInterestRate"> |
||||
<el-input value="4.30%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="担保方式" prop="customerName"> |
||||
<el-input value="抵押" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="利息总额" prop="interestTotal"> |
||||
<el-input v-model="form.interestTotal" disabled /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
@submitIt="saveContract" depositNumber='0816' /> |
||||
|
||||
<div class="text-center"> |
||||
<template v-if="isDetail"> |
||||
<el-button v-if="isExtension" @click="showExtension" type="primary" class="submitBtn" v-throttle>展期</el-button> |
||||
<el-button v-else-if="!basicForm.loanOrNot" @click="showLoan" type="primary" class="submitBtn" |
||||
v-throttle>放款</el-button> |
||||
<el-button @click="$router.back()" type="primary" class="submitBtn" v-throttle>关闭</el-button> |
||||
</template> |
||||
|
||||
<el-button v-else @click="next" type="primary" class="submitBtn" v-throttle>{{ curStep === 1 ? '下一步' : '提交' |
||||
}}</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible.sync="loanVisible" z-index="6000" width="500px" append-to-body :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">放款</div> |
||||
</div> |
||||
<div style="padding: 30px 0;"> |
||||
<el-date-picker v-model="disbursementDate" type="date" placeholder="请选择放款日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker> |
||||
</div> |
||||
</div> |
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="loanVisible = false">取消</el-button> |
||||
<el-button type="primary" @click="loanSubmit">确定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible.sync="extensionVisible" width="500px" z-index="6000" append-to-body :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">请选择展期期限</div> |
||||
</div> |
||||
<div style="padding: 30px 0;"> |
||||
<el-select v-model="extensionPeriod" placeholder="请选择" size="small" style="width: 100%;"> |
||||
<el-option v-for="(item, i) in extensions" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
|
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="extensionVisible = false">取消</el-button> |
||||
<el-button type="primary" @click="extensionSubmit">确定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { phoneListen, myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, personalBasicSave, loanContractSave, personalBasicFind, grantALoan, operationExtension, calculateTheReturnInterestSum } from '@/api/http' |
||||
import Util from '@/libs/util' |
||||
|
||||
const moduleName = 'personalLoans/detail' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyTitle, |
||||
MyDialog |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
isDetail: !!this.$route.query.show, // 详情 |
||||
isExtension: this.$route.query.show === '2', // 展期 |
||||
id: this.$route.query.id, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
basicForm: { |
||||
idType: 83, |
||||
idNumber: '', |
||||
customerName: '', |
||||
gender: '', |
||||
birthDate: '', |
||||
phoneNumber: '', |
||||
position: '', |
||||
salary: '', |
||||
currentWorkYears: '', |
||||
totalWorkYears: '', |
||||
propertyOwner: '', |
||||
propertyCertificateNo: '', |
||||
coOwnership: '', |
||||
location: '', |
||||
propertyRightNature: '', |
||||
area: '', |
||||
usagePeriod: '', |
||||
usagePeriodEnd: '', |
||||
applicationDate: Util.formatDate('yyyy-MM-dd', new Date()) |
||||
}, |
||||
basicFormName: { |
||||
idType: '证件类型', |
||||
idNumber: '证件号码', |
||||
customerName: '证件号码', |
||||
gender: '性别', |
||||
birthDate: '出生日期', |
||||
phoneNumber: '联系电话', |
||||
position: '岗位', |
||||
salary: '薪酬', |
||||
currentWorkYears: '当前单位工作年限', |
||||
totalWorkYears: '工龄', |
||||
propertyOwner: '产权人', |
||||
propertyCertificateNo: '房产证号', |
||||
coOwnership: '共有情况', |
||||
location: '坐落', |
||||
propertyRightNature: '权利性质', |
||||
area: '面积', |
||||
usagePeriod: '使用期限', |
||||
applicationDate: '申请日期' |
||||
}, |
||||
basicRules: { |
||||
customerName: vercustomer, |
||||
phoneNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入联系电话', |
||||
trigger: 'blur' |
||||
}, |
||||
], |
||||
applicationDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择申请日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
|
||||
loanTerms: [ |
||||
{ |
||||
pointId: 244, |
||||
id: 120, |
||||
name: '120个月' |
||||
}, |
||||
{ |
||||
pointId: 245, |
||||
id: 240, |
||||
name: '240个月' |
||||
}, |
||||
{ |
||||
pointId: 246, |
||||
id: 360, |
||||
name: '360个月' |
||||
}, |
||||
], |
||||
form: { |
||||
contractNo: '', |
||||
contractAmount: '', |
||||
loanTerm: 120, |
||||
interestStartDate: '', |
||||
maturityDate: '', |
||||
propertyCertificateNo: '', |
||||
repaymentMethod: 235, |
||||
interestTotal: '', |
||||
repaymentAccount: '', |
||||
}, |
||||
formName: { |
||||
contractNo: '合同编号', |
||||
contractAmount: '合同金额', |
||||
loanTerm: '贷款期限', |
||||
interestStartDate: '起息日期', |
||||
maturityDate: '到期日期', |
||||
repaymentMethod: '还款方式', |
||||
interestTotal: '利息总额', |
||||
repaymentAccount: '还款账号', |
||||
}, |
||||
rules: { |
||||
contractAmount: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入合同金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
loanTerm: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择贷款期限', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
interestStartDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择起息日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
repaymentAccount: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入还款账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
submited: 0, |
||||
curStep: 1, |
||||
disbursementDate: '', |
||||
loanVisible: false, |
||||
|
||||
extensionVisible: false, |
||||
extensionPeriod: 1, |
||||
extensions: [ |
||||
{ |
||||
id: 1, |
||||
name: '1个月', |
||||
pointId: 278, |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '2个月', |
||||
pointId: 279, |
||||
}, |
||||
{ |
||||
id: 3, |
||||
name: '3个月', |
||||
pointId: 280, |
||||
}, |
||||
{ |
||||
id: 4, |
||||
name: '4个月', |
||||
pointId: 281, |
||||
}, |
||||
{ |
||||
id: 5, |
||||
name: '5个月', |
||||
pointId: 282, |
||||
}, |
||||
{ |
||||
id: 6, |
||||
name: '6个月', |
||||
pointId: 283, |
||||
}, |
||||
{ |
||||
id: 7, |
||||
name: '7个月', |
||||
pointId: 284, |
||||
}, |
||||
{ |
||||
id: 8, |
||||
name: '8个月', |
||||
pointId: 285, |
||||
}, |
||||
{ |
||||
id: 9, |
||||
name: '9个月', |
||||
pointId: 286, |
||||
}, |
||||
{ |
||||
id: 10, |
||||
name: '10个月', |
||||
pointId: 287, |
||||
}, |
||||
], |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate', |
||||
setCreditIds: 'system/setCreditIds', |
||||
}), |
||||
// 查询详情 |
||||
async getDetail () { |
||||
if (this.id) { |
||||
// 查看及展期 |
||||
const { data } = await personalBasicFind(this.id) |
||||
const form = data.data |
||||
if (form.idType) form.idType = +form.idType |
||||
if (form.gender) form.gender = +form.gender |
||||
this.idNumberJudge = true |
||||
this.basicForm = form |
||||
|
||||
// 贷款合同 |
||||
|
||||
const contract = data.data.bankPersonalLoanContractInfo |
||||
if (contract) { |
||||
if (contract.loanTerm) contract.loanTerm = +contract.loanTerm |
||||
this.form = contract |
||||
} |
||||
} else if (sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) { |
||||
// 新增 |
||||
sessionStorage.removeItem('nomUsefulPhrasesOpenCard2') |
||||
this.idNumberJudge = true |
||||
this.basicForm = { |
||||
idType: 83, |
||||
idNumber: '220602199202281229', |
||||
customerName: '丛小凤', |
||||
gender: 2, |
||||
birthDate: '1992-02-28', |
||||
phoneNumber: '15890317718', |
||||
position: '会计主管', |
||||
salary: '80', |
||||
currentWorkYears: '5年', |
||||
totalWorkYears: '12年', |
||||
propertyOwner: '丛小凤', |
||||
propertyCertificateNo: '不动产权第012000号', |
||||
coOwnership: '单独所有', |
||||
location: '前海新区深圳湾一号1612', |
||||
propertyRightNature: '出让/商品房', |
||||
area: '建筑面积: 189平方米', |
||||
usagePeriod: '70年,2018.3.15 至 2088.3.14 止', |
||||
usagePeriodEnd: '', |
||||
} |
||||
} |
||||
}, |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('1399') |
||||
sessionStorage.setItem('creditPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
// 到期日期计算 |
||||
maturityDateCalc () { |
||||
const { interestStartDate, loanTerm } = this.form |
||||
if (interestStartDate && loanTerm) { |
||||
const date = new Date(interestStartDate) |
||||
date.setMonth(date.getMonth() + loanTerm) |
||||
this.form.maturityDate = Util.formatDate('yyyy-MM-dd', date) |
||||
} |
||||
this.interestCalc() |
||||
}, |
||||
// 计算利息总额 |
||||
async interestCalc () { |
||||
const { form } = this |
||||
if (form.contractAmount && form.maturityDate) { |
||||
const { data } = await calculateTheReturnInterestSum(form) |
||||
form.interestTotal = data.interestTotal || '' |
||||
} |
||||
}, |
||||
// 下一步 |
||||
async next () { |
||||
// 基本信息保存 |
||||
if (this.curStep < 2) { |
||||
const { basicForm } = this |
||||
|
||||
if (!basicForm.idNumber) { |
||||
messageCard('请刷身份证') |
||||
return |
||||
} |
||||
|
||||
this.$refs.basicForm.validate(myValidate(async () => { |
||||
try { |
||||
const { data } = await personalBasicSave({ |
||||
...this.$store.getters['system/commonIds'], |
||||
...basicForm, |
||||
}) |
||||
|
||||
if (data.status === 200) { |
||||
// 判分 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767' |
||||
const rule = [ |
||||
{ answerId: 902, emptyOne: '', emptyTwo: '', operationIds: preId + ',902', type: '' }, |
||||
{ answerId: 847, emptyOne: 125, emptyTwo: basicForm.phoneNumber, operationIds: preId + ',847', type: 3 }, |
||||
{ answerId: 859, emptyOne: 125, emptyTwo: basicForm.applicationDate, operationIds: preId + ',859', type: 3 }, |
||||
] |
||||
|
||||
basicForm.position && rule.push({ answerId: 848, emptyOne: 125, emptyTwo: basicForm.position, operationIds: preId + ',848', type: 3 }) |
||||
basicForm.salary && rule.push({ answerId: 849, emptyOne: 125, emptyTwo: basicForm.salary, operationIds: preId + ',849', type: 3 }) |
||||
basicForm.currentWorkYears && rule.push({ answerId: 850, emptyOne: 125, emptyTwo: basicForm.currentWorkYears, operationIds: preId + ',850', type: 3 }) |
||||
basicForm.totalWorkYears && rule.push({ answerId: 851, emptyOne: 125, emptyTwo: basicForm.totalWorkYears, operationIds: preId + ',851', type: 3 }) |
||||
basicForm.propertyOwner && rule.push({ answerId: 852, emptyOne: 125, emptyTwo: basicForm.propertyOwner, operationIds: preId + ',852', type: 3 }) |
||||
basicForm.propertyCertificateNo && rule.push({ answerId: 853, emptyOne: 125, emptyTwo: basicForm.propertyCertificateNo, operationIds: preId + ',853', type: 3 }) |
||||
basicForm.coOwnership && rule.push({ answerId: 854, emptyOne: 125, emptyTwo: basicForm.coOwnership, operationIds: preId + ',854', type: 3 }) |
||||
basicForm.location && rule.push({ answerId: 855, emptyOne: 125, emptyTwo: basicForm.location, operationIds: preId + ',855', type: 3 }) |
||||
basicForm.propertyRightNature && rule.push({ answerId: 856, emptyOne: 125, emptyTwo: basicForm.propertyRightNature, operationIds: preId + ',856', type: 3 }) |
||||
basicForm.area && rule.push({ answerId: 857, emptyOne: 125, emptyTwo: basicForm.area, operationIds: preId + ',857', type: 3 }) |
||||
basicForm.usagePeriod && rule.push({ answerId: 858, emptyOne: 125, emptyTwo: basicForm.usagePeriod, operationIds: preId + ',858', type: 3 }) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.setCreditIds({ |
||||
personalLoanId: data.personalLoanId, |
||||
applicationDate: data.applicationDate || this.form.applicationDate, |
||||
contractNo: data.contractNo || this.form.contractNo, |
||||
}) |
||||
if (data.contractNo) this.form.contractNo = data.contractNo |
||||
this.curStep++ |
||||
} |
||||
} catch { (e) => { } } |
||||
}, this.$refs)) |
||||
} else { |
||||
// 合同信息校验 |
||||
if (!this.form.contractAmount) return this.$message.warning('请输入合同金额!') |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.saveContract() |
||||
}, this.$refs)) |
||||
} |
||||
}, |
||||
// 合同信息保存 |
||||
async saveContract () { |
||||
try { |
||||
const { form } = this |
||||
form.personalLoanId = this.creditIds.personalLoanId |
||||
form.contractNo = this.creditIds.contractNo |
||||
const { data } = await loanContractSave({ |
||||
...this.$store.getters['system/commonIds'], |
||||
...form, |
||||
}) |
||||
|
||||
if (data.status === 200) { |
||||
// 判分 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767' |
||||
const rule = [ |
||||
{ answerId: 860, emptyOne: 125, emptyTwo: form.contractAmount, operationIds: preId + ',860', type: 3 }, |
||||
{ answerId: 861, emptyOne: 141, emptyTwo: this.loanTerms.find(e => e.id === form.loanTerm).pointId, operationIds: preId + ',861', type: 1 }, |
||||
{ answerId: 862, emptyOne: 125, emptyTwo: form.interestStartDate, operationIds: preId + ',862', type: 3 }, |
||||
{ answerId: 863, emptyOne: 125, emptyTwo: form.repaymentMethod, operationIds: preId + ',863', type: 1 }, |
||||
{ answerId: 864, emptyOne: 125, emptyTwo: form.repaymentAccount, operationIds: preId + ',864', type: 3 }, |
||||
] |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$router.push('/counter/list/manage/personalLoans') |
||||
} else { |
||||
this.$message.error(data.message) |
||||
} |
||||
} catch { (e) => { } } |
||||
}, |
||||
// 展示放款弹框 |
||||
showLoan () { |
||||
this.loanVisible = true |
||||
}, |
||||
// 放款 |
||||
async loanSubmit () { |
||||
if (!this.disbursementDate) return this.$message.error('请选择放款日期!') |
||||
const { data } = await grantALoan({ |
||||
id: this.form.contractId, |
||||
disbursementDate: this.disbursementDate, |
||||
}) |
||||
this.$message[data.status === 200 ? 'success' : 'error'](data.message) |
||||
|
||||
if (data.status === 200) { |
||||
// 判分 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: 865, emptyOne: 151, emptyTwo: this.disbursementDate, operationIds: preId + ',865', type: 3 }], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
setTimeout(this.$router.push('/counter/list/manage/personalLoans'), 1500) |
||||
} |
||||
}, |
||||
|
||||
// 展示展期弹框 |
||||
showExtension () { |
||||
this.extensionVisible = true |
||||
}, |
||||
// 展期 |
||||
async extensionSubmit () { |
||||
if (!this.extensionPeriod) return this.$message.error('请选择展期期限!') |
||||
const { data } = await operationExtension({ |
||||
id: this.form.contractId, |
||||
extensionPeriod: this.extensionPeriod, |
||||
}) |
||||
this.$message[data.status === 200 ? 'success' : 'error'](data.message) |
||||
|
||||
if (data.status === 200) { |
||||
// 判分 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: 866, emptyOne: 152, emptyTwo: this.extensions.find(e => e.id === this.extensionPeriod).pointId, operationIds: preId + ',866', type: 1 }], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
setTimeout(this.$router.push('/counter/list/manage/personalLoans'), 1500) |
||||
} |
||||
}, |
||||
|
||||
phoneListen, |
||||
checkName, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList', |
||||
}), |
||||
// 基础信息id |
||||
creditIds: function () { |
||||
return this.$store.state.system.creditIds |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
height: calc(90vh - 27px); |
||||
padding: 20px; |
||||
overflow: auto; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,169 @@ |
||||
<!-- 现金管理 --> |
||||
<template> |
||||
<div class="wrap"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="active" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">全部</el-menu-item> |
||||
<el-menu-item index="2">正常还款</el-menu-item> |
||||
<el-menu-item index="3">展期</el-menu-item> |
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['个人贷款', text]" /> |
||||
|
||||
<list :index.sync="active" :key="active" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import list from './list.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
list, |
||||
MyTitle |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '全部',/* 顶部文字 */ |
||||
textObj: { |
||||
'1': '全部', |
||||
'2': '正常还款', |
||||
'3': '展期', |
||||
}, |
||||
form: { |
||||
|
||||
}, |
||||
visible: false, |
||||
options: [], |
||||
active: '1', |
||||
} |
||||
}, |
||||
methods: { |
||||
handleSelect (val) { |
||||
this.text = this.textObj[val] |
||||
this.active = val |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.submitBtn { |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,323 @@ |
||||
<template> |
||||
<div class="inner"> |
||||
<div class="flex j-between m-b-20"> |
||||
<div style="width: 300px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-button type="primary" |
||||
@click="$router.push('/counter/list/manage/personalLoans-detail?show=&id=')">新建贷款申请</el-button> |
||||
</div> |
||||
|
||||
<el-table :data="list" :header-cell-style="headerCellStyle" :row-class-name="tableRowClassName"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center"></el-table-column> |
||||
<el-table-column prop="contractNo" label="合同编号" align="center"> |
||||
</el-table-column> |
||||
<el-table-column prop="issueTeller" label="贷款类型" align="center">个人住房贷款</el-table-column> |
||||
<el-table-column prop="applicationDate" label="申请日期" align="center"> |
||||
</el-table-column> |
||||
<el-table-column prop="approvalStatus" label="审批状态" align="center"> |
||||
</el-table-column> |
||||
<el-table-column prop="contractAmount" label="贷款金额" align="center"></el-table-column> |
||||
<el-table-column prop="loanTerm" label="贷款期限" align="center"> |
||||
</el-table-column> |
||||
<el-table-column prop="disbursementDate" label="放款日期" align="center"> |
||||
</el-table-column> |
||||
<el-table-column prop="arrearsAmount" label="欠款金额" align="center"> |
||||
</el-table-column> |
||||
<el-table-column prop="repaymentMethod" label="还款方式" align="center"> |
||||
</el-table-column> |
||||
<el-table-column v-if="index !== '3'" prop="totalRepaymentAmount" key="1" label="累计还款金额" align="center"> |
||||
</el-table-column> |
||||
<el-table-column v-if="index === '3'" prop="extensionPeriod" key="3" label="展期期限" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.extensionPeriod }}个月</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="250"> |
||||
<template slot-scope="scope"> |
||||
<!-- 没加合同的才能编辑 --> |
||||
<el-button @click="toDetail(scope.row, 1)" size="small" :disabled="scope.row.personalLoanId < 0">{{ |
||||
scope.row.contractNo !== '——' ? '查看' : '编辑' |
||||
}}</el-button> |
||||
<template v-if="scope.row.personalLoanId > 0"> |
||||
<el-button v-if="scope.row.disbursementDate !== '——' && !scope.row.renewalOrNot" |
||||
@click="toDetail(scope.row, 2)" size="small">展期</el-button> |
||||
<el-button @click="repayment(scope.row)" size="small">还款计划</el-button> |
||||
</template> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
|
||||
<el-dialog title="还款计划" :visible.sync="repaymentVisible" width="1000px" z-index="6000" :append-to-body="true"> |
||||
<div class="flex j-between a-center m-b-20"> |
||||
<el-form class="filter-form" label-width="90px" inline> |
||||
<el-form-item label="还款周期"> |
||||
<el-date-picker placeholder="请选择还款周期" v-model="date" align="right" unlink-panels type="daterange" |
||||
size="small" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" |
||||
clearable></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="还款状态"> |
||||
<el-select v-model="form.status" placeholder="请选择" size="small" clearable @change="initRepayment"> |
||||
<el-option value="待还款"></el-option> |
||||
<el-option value="已还款"></el-option> |
||||
<el-option value="逾期"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div> |
||||
<el-button @click="batchRepayment('已还款')" size="small" type="primary">批量还款</el-button> |
||||
<el-button @click="batchRepayment('逾期')" size="small" type="primary">批量逾期</el-button> |
||||
</div> |
||||
</div> |
||||
<el-table ref="repayments" :data="repayments" stripe header-align="center" |
||||
@selection-change="handleSelectionChangeRepayment" row-key="id"> |
||||
<el-table-column type="selection" width="55" align="center" :reserve-selection="true" |
||||
:selectable="checkAble"></el-table-column> |
||||
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
||||
<el-table-column prop="contractAmount" label="还款周期" align="center"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.row.periodStart + '~' + scope.row.periodEnd }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="amountDue" label="应还款" align="center"></el-table-column> |
||||
<el-table-column prop="status" label="还款状态" align="center"> |
||||
<template slot-scope="scope"> |
||||
<p :class="{ 'text-red': scope.row.status === '逾期' }">{{ scope.row.status }}</p> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template v-if="scope.row.status !== '已还款'" slot-scope="scope"> |
||||
<el-button @click="handleRepayment(scope.row, '已还款')" size="small">还款</el-button> |
||||
<el-button @click="handleRepayment(scope.row, '逾期')" size="small">逾期</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="pageRepayment" |
||||
@current-change="handleCurrentChangePayment" :total="totalRepayment"></el-pagination> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig' |
||||
import MyDialog from '@/components/dialogTwo' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import { batchProcessing, personalBasicList, repaymentPlan, addOperation } from '@/api/http'; |
||||
|
||||
const moduleName = 'personalLoans/list' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
export default { |
||||
name: 'index', |
||||
props: ['index'], |
||||
components: { |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
headerCellStyle: headerCellStyle, |
||||
searchTimer: null, |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
keyword: '', |
||||
visible: false, |
||||
unNeed: false, |
||||
isNeedBefore: '', |
||||
needBefore: '', |
||||
text: '柜员现金轧账',/* 顶部文字 */ |
||||
visible: false, |
||||
submited: 0, |
||||
|
||||
repaymentVisible: false, |
||||
repayments: [], |
||||
pageRepayment: 1, |
||||
pageSizeRepayment: 10, |
||||
totalRepayment: 0, |
||||
multipleSelection: [], |
||||
date: [], |
||||
form: { |
||||
periodEnd: '', |
||||
periodStart: '', |
||||
status: '', |
||||
}, |
||||
curRow: {}, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
date: function (val) { |
||||
if (val) { |
||||
this.form.periodStart = val[0] |
||||
this.form.periodEnd = val[1] |
||||
} else { |
||||
this.form.periodStart = '' |
||||
this.form.periodEnd = '' |
||||
} |
||||
this.initRepayment(); |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
async getData () { |
||||
const { data } = await personalBasicList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
customerName: this.keyword, |
||||
renewalOrNot: this.$parent.active === '3' ? 1 : '', |
||||
normalRepayment: this.$parent.active === '2' ? 1 : '', |
||||
}) |
||||
this.list = data.list.records |
||||
this.total = data.list.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
toDetail (row, show) { |
||||
this.$router.push(`/counter/list/manage/personalLoans-detail?show=${show === 2 ? 2 : row.contractNo !== '——' ? 1 : ''}&id=${row.personalLoanId}`) |
||||
}, |
||||
// 展示还款计划 |
||||
async repayment (row) { |
||||
this.curRow = row |
||||
this.repaymentVisible = true |
||||
this.getRepayment() |
||||
}, |
||||
// 展示还款计划 |
||||
async getRepayment (row) { |
||||
const { data } = await repaymentPlan({ |
||||
pageNum: this.pageRepayment, |
||||
pageSize: this.pageSizeRepayment, |
||||
...this.form, |
||||
personalLoanId: this.curRow.personalLoanId, |
||||
}) |
||||
this.repayments = data.list.records |
||||
this.totalRepayment = data.list.total |
||||
}, |
||||
initRepayment () { |
||||
this.pageRepayment = 1 |
||||
this.getRepayment() |
||||
}, |
||||
handleCurrentChangePayment (val) { |
||||
this.pageRepayment = val |
||||
this.getRepayment() |
||||
}, |
||||
handleSelectionChangeRepayment (val) { |
||||
this.multipleSelection = val |
||||
}, |
||||
// 还款计划多选框禁用条件 |
||||
checkAble (row) { |
||||
return row.status === '待还款' |
||||
}, |
||||
// 还款/逾期 |
||||
handleRepayment (row, status) { |
||||
const text = status === '已还款' ? '还款' : '逾期' |
||||
this.$confirm(`确定要${text}吗?`, "提示", { |
||||
type: "warning" |
||||
}).then(async () => { |
||||
await batchProcessing([{ |
||||
id: row.id, |
||||
status |
||||
}]) |
||||
|
||||
const answerId = status === '已还款' ? 905 : 906 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$message.success(`${text}成功`) |
||||
this.getRepayment() |
||||
this.getData() |
||||
}).catch(() => { }) |
||||
}, |
||||
// 批量还款/逾期 |
||||
batchRepayment (status) { |
||||
const list = this.multipleSelection |
||||
if (list.length) { |
||||
const text = status === '已还款' ? '还款' : '逾期' |
||||
this.$confirm(`确定要${text}吗?`, "提示", { |
||||
type: "warning" |
||||
}).then(async () => { |
||||
const ids = list.map(e => { |
||||
return { |
||||
id: e.id, |
||||
status |
||||
} |
||||
}) |
||||
await batchProcessing(ids) |
||||
|
||||
const answerId = status === '已还款' ? 903 : 904 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$message.success(`${text}成功`) |
||||
this.$refs.repayments.clearSelection() |
||||
this.multipleSelection = [] |
||||
this.getRepayment() |
||||
this.getData() |
||||
}).catch(() => { }) |
||||
} else { |
||||
this.$message.error(`请选择数据!`) |
||||
} |
||||
}, |
||||
tableRowClassName, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.inner { |
||||
width: 100%; |
||||
max-height: calc(100vh - 246px); |
||||
padding-right: 24px; |
||||
overflow: auto; |
||||
} |
||||
|
||||
|
||||
/deep/.el-table .warning-row { |
||||
background: oldlace; |
||||
} |
||||
|
||||
/deep/.el-table .success-row { |
||||
background: #f0f9eb; |
||||
} |
||||
|
||||
/deep/.filter-form { |
||||
.el-form-item { |
||||
margin-bottom: 0; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,55 @@ |
||||
/deep/.dia { |
||||
-webkit-box-shadow: 0; |
||||
box-shadow: 0 0 0 0 !important; |
||||
border: 0 !important; |
||||
border-radius: 1.5rem; |
||||
.el-dialog__header { |
||||
display: none; |
||||
} |
||||
.el-dialog__body { |
||||
padding-top: 0; |
||||
} |
||||
.dia-form { |
||||
.text { |
||||
text-align: left; |
||||
} |
||||
} |
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
& > .btn { |
||||
width: 180px; |
||||
font-size: 18px; |
||||
} |
||||
} |
||||
} |
||||
.data-dia23 { |
||||
min-width: 40%; |
||||
background-color: white; |
||||
z-index: 9999; |
||||
.popBody { |
||||
// width: 100%; |
||||
min-height: 30vh; |
||||
padding-top: 50px; |
||||
padding-bottom: 20px; |
||||
display: flex; |
||||
align-items: center; |
||||
/deep/ .el-form { |
||||
height: 100%; |
||||
} |
||||
} |
||||
.dia-header { |
||||
height: 100%; |
||||
// position: relative; |
||||
.data-title { |
||||
width: 300px; |
||||
margin: 0 auto; |
||||
line-height: 72px; |
||||
text-align: center; |
||||
color: #fff; |
||||
font-size: 24px; |
||||
background: url(https://izhixinyun.com/images/dia-title.png) 0 0 / cover no-repeat; |
||||
} |
||||
} |
||||
} |
@ -1,74 +0,0 @@ |
||||
data() { |
||||
var validateEveryData = (rule, value, callback) => { |
||||
// console.log("callback", callback);
|
||||
// console.log("校验某一项的规则对象", rule);
|
||||
// console.log("用户输入的值", value);
|
||||
|
||||
// 对输入框类型的校验
|
||||
if (value) { |
||||
if ((value + "").length > 0) { |
||||
// 用于回显时候的校验,因为输入的时候是字符串类型的数字,但是回显的时候可能就是数字
|
||||
callback(); // cb函数告知校验结果,必须要加
|
||||
return; |
||||
} |
||||
} |
||||
|
||||
// 对下拉框类型的校验
|
||||
if ( |
||||
(rule.itemType == "selectOne") | |
||||
(rule.itemType == "selectTwo") | |
||||
(rule.itemType == "selectThree") |
||||
) { |
||||
if (value) { |
||||
if ((value + "").length > 0) { |
||||
// 注意枚举值是数字类型的,所以这里要转换成为字符串类型的
|
||||
callback(); |
||||
return; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// 根据不同的类型给予不同的校验提示
|
||||
switch (rule.itemType) { |
||||
case "text": |
||||
callback(new Error(rule.labelName + "不能为空")); // 文本类型的规则简单,就是得填写
|
||||
break; |
||||
case "number": |
||||
callback(new Error(rule.labelName + "请按规则填写")); // 数字类型的规则比较繁多
|
||||
break; |
||||
case "textarea": |
||||
callback(new Error(rule.labelName + "不能为空")); // 文本域类型的规则也简单,就是得填写
|
||||
break; |
||||
case "selectOne": |
||||
callback(new Error("请选择" + rule.labelName)); // 下拉框类型一 得填写
|
||||
break; |
||||
case "selectTwo": |
||||
callback(new Error("请选择" + rule.labelName)); // 下拉框类型二 得填写
|
||||
break; |
||||
case "selectThree": |
||||
callback(new Error("请选择" + rule.labelName)); // 下拉框类型三 多选数组得填写
|
||||
break; |
||||
case "dateRange": |
||||
callback(new Error("请选择" + rule.labelName + "范围")); // 下拉框类型三 多选数组得填写
|
||||
break; |
||||
|
||||
default: |
||||
break; |
||||
} |
||||
}; |
||||
return { |
||||
// 此对象用于存储各个下拉框的数组数据值,其实也可以挂在vue的原型上,不过个人认为写在data中好些
|
||||
selectTwoOptionsObj: {}, |
||||
// 用于下拉框加载时的效果
|
||||
loadingSelect: false, |
||||
// 绑定的数据
|
||||
form: {}, |
||||
// 校验规则
|
||||
validateEveryData: validateEveryData, |
||||
}; |
||||
}, |
||||
|
||||
作者:水冗水孚 |
||||
链接:https://juejin.cn/post/7060322827148197895
|
||||
来源:稀土掘金 |
||||
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |