个人贷款

20240205
yujialong 5 months ago
parent faccbdd5f7
commit 921cf1f228
  1. 16
      src/api/http.js
  2. 1
      src/components/dialog/index.vue
  3. 186
      src/pages/manage/list/corporateLoans/management.vue
  4. 561
      src/pages/manage/list/personalLoans/detail.vue
  5. 280
      src/pages/manage/list/personalLoans/list.vue

@ -51,17 +51,8 @@ export const creditEvaluationInput = data => {
return post('/judgment/bankCreditEvaluation/creditEvaluationInput', data) return post('/judgment/bankCreditEvaluation/creditEvaluationInput', data)
} }
export const loanContractDel = data => {
return post('/judgment/bankLoanContractInfo/batchDeletion', data)
}
export const loanContractFind = id => {
return post('/judgment/bankLoanContractInfo/findById?id=' + id)
}
export const loanContractList = (data) => {
return post('/judgment/bankLoanContractInfo/pagingQuery', data)
}
export const loanContractSave = (data) => { export const loanContractSave = (data) => {
return post('/judgment/bankLoanContractInfo/saveOrUpdate', data) return post('/judgment/bankPersonalLoanContractInfo/saveOrUpdate', data)
} }
export const personalBasicDel = data => { export const personalBasicDel = data => {
@ -71,8 +62,11 @@ export const personalBasicFind = id => {
return post('/judgment/bankPersonalBasicInfo/findById?id=' + id) return post('/judgment/bankPersonalBasicInfo/findById?id=' + id)
} }
export const personalBasicList = (data) => { export const personalBasicList = (data) => {
return post('/judgment/bankPersonalBasicInfo/pagingQuery', data) return post('/judgment/bankPersonalBasicInfo/personageLoanList', data)
} }
export const personalBasicSave = (data) => { export const personalBasicSave = (data) => {
return post('/judgment/bankPersonalBasicInfo/saveOrUpdate', data) return post('/judgment/bankPersonalBasicInfo/saveOrUpdate', data)
}
export const grantALoan = (data) => {
return post(`/judgment/bankPersonalLoanContractInfo/grantALoan?contractId=${data.id}&disbursementDate=${data.disbursementDate}`)
} }

@ -101,6 +101,7 @@ const obj = {
'agent/waterRate': '代收水费', 'agent/waterRate': '代收水费',
'agent/electricRate': '代收电费', 'agent/electricRate': '代收电费',
'agent/telRate': '代收电话费', 'agent/telRate': '代收电话费',
'personalLoans/detail': '新建个人贷款',
'spacial': '提交' 'spacial': '提交'
} }

@ -4,94 +4,54 @@
<my-title :titleArr="['公司贷款', '贷后管理']" /> <my-title :titleArr="['公司贷款', '贷后管理']" />
<div style="width: 300px;margin-bottom: 20px;"> <div style="width: 300px;margin-bottom: 20px;">
<el-input v-model="keyword" <el-input v-model="keyword" placeholder="请输入客户姓名" clearable />
placeholder="请输入客户姓名"
clearable />
</div> </div>
<el-table max-height="350" <el-table max-height="350" ref="filterTable" :data="list" :header-cell-style="headerCellStyle"
ref="filterTable" :row-class-name="tableRowClassName">
:data="list" <el-table-column prop="currency" label="客户姓名" align="center">
:header-cell-style="headerCellStyle"
:row-class-name="tableRowClassName">
<el-table-column prop="currency"
label="客户姓名"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="贷款编号" align="center">
label="贷款编号"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="贷款状态" align="center">
label="贷款状态"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="五级分类" align="center">
label="五级分类"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="处理结果" align="center">
label="处理结果"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="处理日期" align="center">
label="处理日期"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="还款状态" align="center">
label="还款状态"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="currency" label="欠款金额" align="center">
label="欠款金额"
align="center">
</el-table-column> </el-table-column>
<el-table-column label="操作" <el-table-column label="操作" align="center" width="360">
align="center"
width="360">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="collection(scope.row)" <el-button @click="collection(scope.row)" size="small">催收</el-button>
size="small">催收</el-button> <el-button @click="postLoan(scope.row)" size="small">贷后调查</el-button>
<el-button @click="postLoan(scope.row)" <el-button @click="npl(scope.row)" size="small">不良贷款</el-button>
size="small">贷后调查</el-button> <el-button @click="badDebt(scope.row)" size="small">呆账认定</el-button>
<el-button @click="npl(scope.row)"
size="small">不良贷款</el-button>
<el-button @click="badDebt(scope.row)"
size="small">呆账认定</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination"> <div class="pagination">
<el-pagination background <el-pagination background layout="total, prev, pager, next" :current-page="page"
layout="total, prev, pager, next" @current-change="handleCurrentChange" :total="total"></el-pagination>
:current-page="page"
@current-change="handleCurrentChange"
:total="total"></el-pagination>
</div> </div>
<el-dialog :visible="visible" <el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false"
append-to-body custom-class="dia">
style="z-index: 6000;"
:close-on-click-modal="true"
:show-close="false"
custom-class="dia">
<div class="data-dia23"> <div class="data-dia23">
<div slot="title" <div slot="title" class="dia-header">
class="dia-header">
<div class="data-title">提示</div> <div class="data-title">提示</div>
</div> </div>
<div class="popBody"> <div class="popBody">
<p v-if="curMsg >= 0" <p v-if="curMsg >= 0" class="text-lg" style="color: #333">{{ msgs[curMsg] }}</p>
class="text-lg"
style="color: #333">{{ msgs[curMsg] }}</p>
<el-row v-else <el-row v-else style="width: 100%">
style="width: 100%"> <el-form class="dia-form" label-width="130px" label-suffix="">
<el-form class="dia-form"
label-width="130px"
label-suffix=":">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="客户名称"> <el-form-item label="客户名称">
<p class="text">炳胜集团</p> <p class="text">炳胜集团</p>
@ -116,105 +76,71 @@
</div> </div>
<div class="popBtns"> <div class="popBtns">
<el-button v-if="curMsg < 2" <el-button v-if="curMsg < 2" class="close btn hover:bg-blue-100 " @click="visible = false"> </el-button>
class="close btn hover:bg-blue-100 " <el-button class="sure btn hover:bg-blue-700 " type="primary" @click="msgSubmit"> </el-button>
@click="visible = false"> </el-button>
<el-button class="sure btn hover:bg-blue-700 "
type="primary"
@click="msgSubmit"> </el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible="formVisible" <el-dialog :visible="formVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="true"
append-to-body :show-close="false" custom-class="dia">
style="z-index: 6000;"
:close-on-click-modal="true"
:show-close="false"
custom-class="dia">
<div class="data-dia23"> <div class="data-dia23">
<div slot="title" <div slot="title" class="dia-header">
class="dia-header">
<div class="data-title">贷后调查</div> <div class="data-title">贷后调查</div>
</div> </div>
<h6>调查日期2024-04-02</h6> <h6>调查日期2024-04-02</h6>
<el-row style="width: 100%"> <el-row style="width: 100%">
<el-form class="dia-form" <el-form class="dia-form" label-width="130px" label-suffix="" label-position="top">
label-width="130px"
label-suffix=":"
label-position="top">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="客户基本状态变化"> <el-form-item label="客户基本状态变化">
<el-input type="textarea" <el-input type="textarea" :rows="2" v-model="textarea">
:rows="2"
v-model="textarea">
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="信贷业务和还本付息情况变化"> <el-form-item label="信贷业务和还本付息情况变化">
<el-select v-model="form.goldLogo" <el-select v-model="form.goldLogo" placeholder="请选择">
placeholder="请选择"> <el-option v-for="item in selects" :label="item.options" :value="item.itemId" :key="item.itemId">
<el-option v-for="item in selects" </el-option>
:label="item.options"
:value="item.itemId"
:key="item.itemId"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="偿债能力"> <el-form-item label="偿债能力">
<el-select v-model="form.goldLogo" <el-select v-model="form.goldLogo" placeholder="请选择">
placeholder="请选择"> <el-option v-for="item in selects" :label="item.options" :value="item.itemId" :key="item.itemId">
<el-option v-for="item in selects" </el-option>
:label="item.options"
:value="item.itemId"
:key="item.itemId"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="担保状况不利变化"> <el-form-item label="担保状况不利变化">
<el-select v-model="form.goldLogo" <el-select v-model="form.goldLogo" placeholder="请选择">
placeholder="请选择"> <el-option v-for="item in selects" :label="item.options" :value="item.itemId" :key="item.itemId">
<el-option v-for="item in selects" </el-option>
:label="item.options"
:value="item.itemId"
:key="item.itemId"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="经营状况"> <el-form-item label="经营状况">
<el-select v-model="form.goldLogo" <el-select v-model="form.goldLogo" placeholder="请选择">
placeholder="请选择"> <el-option v-for="item in selects" :label="item.options" :value="item.itemId" :key="item.itemId">
<el-option v-for="item in selects" </el-option>
:label="item.options"
:value="item.itemId"
:key="item.itemId"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="信用状况"> <el-form-item label="信用状况">
<el-select v-model="form.goldLogo" <el-select v-model="form.goldLogo" placeholder="请选择">
placeholder="请选择"> <el-option v-for="item in selects" :label="item.options" :value="item.itemId" :key="item.itemId">
<el-option v-for="item in selects" </el-option>
:label="item.options"
:value="item.itemId"
:key="item.itemId"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="五级分类"> <el-form-item label="五级分类">
<el-select v-model="form.goldLogo" <el-select v-model="form.goldLogo" placeholder="请选择">
placeholder="请选择"> <el-option v-for="item in selects" :label="item.options" :value="item.itemId" :key="item.itemId">
<el-option v-for="item in selects" </el-option>
:label="item.options"
:value="item.itemId"
:key="item.itemId"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="结论 建议"> <el-form-item label="结论 建议">
<el-input type="textarea" <el-input type="textarea" :rows="2" v-model="textarea">
:rows="2"
v-model="textarea">
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -223,11 +149,8 @@
</div> </div>
<div class="popBtns"> <div class="popBtns">
<el-button class="close btn hover:bg-blue-100 " <el-button class="close btn hover:bg-blue-100 " @click="formVisible = false"> </el-button>
@click="formVisible = false"> </el-button> <el-button class="sure btn hover:bg-blue-700 " type="primary" @click="msgSubmit"> </el-button>
<el-button class="sure btn hover:bg-blue-700 "
type="primary"
@click="msgSubmit"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -331,8 +254,9 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/css/tablebg.scss'; @import '@/assets/css/tablebg.scss';
@import '@/styles/dialog.scss'; @import '@/styles/dialog.scss';
.body { .body {
width: 100%; width: 100%;
padding: 24px; padding: 24px;
} }
</style> </style>

@ -3,180 +3,205 @@
<div class="wrap"> <div class="wrap">
<MyTitle :titleArr="['个人贷款', '新增贷款申请']" /> <MyTitle :titleArr="['个人贷款', '新增贷款申请']" />
<el-row :gutter="20" style="margin: 0"> <el-row :gutter="20" style="margin: 0">
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> <el-form v-if="curStep === 1 || isDetail" ref="basicForm" :model="basicForm" label-width="120px"
<template v-if="curStep === 1 || isDetail"> :rules="basicRules" :disabled="isDetail">
<el-col :span="24"> <el-col :span="24">
<h6 class="l-title">基本信息</h6> <h6 class="l-title">基本信息</h6>
</el-col> </el-col>
<el-col :span="10" :offset="1"> <el-col :span="10" :offset="1">
<el-form-item label="证件类型" prop="idType"> <el-form-item label="证件类型" prop="idType">
<el-select v-model.trim="form.idType" placeholder="请选择" disabled> <el-select v-model.trim="basicForm.idType" placeholder="请选择" disabled>
<el-option label="身份证" :value="83"> </el-option> <el-option label="身份证" :value="83"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="客户姓名" prop="customerName"> <el-form-item label="客户姓名" required>
<el-input disabled v-model="form.customerName" @input="(val) => checkName(val, form, 'customerName')" /> <el-input disabled v-model="basicForm.customerName"
</el-form-item> @input="(val) => checkName(val, form, 'customerName')" />
<el-form-item label="出生日期" prop="birthDate"> </el-form-item>
<el-date-picker disabled v-model.trim="form.birthDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" <el-form-item label="出生日期" prop="birthDate" required>
value-format="yyyy-MM-dd"> <el-date-picker disabled v-model.trim="basicForm.birthDate" type="date" placeholder="选择日期"
</el-date-picker> format="yyyy-MM-dd" value-format="yyyy-MM-dd">
</el-form-item> </el-date-picker>
</el-col> </el-form-item>
<el-col :span="10" :offset="1"> </el-col>
<el-form-item label="证件号码" required> <el-col :span="10" :offset="1">
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> <el-form-item label="证件号码" required>
<p>请刷身份证</p> <div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'>
</div> <p>请刷身份证</p>
<div v-else> </div>
<el-input v-model="form.idNumber" disabled ref="idNumber" /> <div v-else>
</div> <el-input v-model="basicForm.idNumber" disabled ref="idNumber" />
</el-form-item> </div>
<el-form-item label="性别" prop="gender"> </el-form-item>
<el-select v-model.trim="form.gender" disabled placeholder="请选择"> <el-form-item label="性别" prop="gender">
<el-option :key="1" label="男" :value="1"> <el-select v-model.trim="basicForm.gender" disabled placeholder="请选择">
</el-option> <el-option :key="1" label="男" :value="1">
<el-option :key="2" label="女" :value="2"> </el-option>
</el-option> <el-option :key="2" label="女" :value="2">
</el-select> </el-option>
</el-form-item> </el-select>
</el-form-item>
<el-form-item label="联系电话" prop="phoneNumber"> <el-form-item label="联系电话" prop="phoneNumber">
<el-input v-model="form.phoneNumber" @input="(val) => phoneListen(val, form, 'phoneNumber')" <el-input v-model="basicForm.phoneNumber" @input="(val) => phoneListen(val, form, 'phoneNumber')"
maxlength="11" /> maxlength="11" ref="phoneNumber" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<div class="line"></div> <div class="line"></div>
<h6 class="l-title">收入信息</h6> <h6 class="l-title">收入信息</h6>
</el-col> </el-col>
<el-col :span="10" :offset="1"> <el-col :span="10" :offset="1">
<el-form-item label="岗位"> <el-form-item label="岗位">
<el-input v-model="form.position" /> <el-input v-model="basicForm.position" />
</el-form-item> </el-form-item>
<el-form-item label="当前单位工作年限" label-width="150px"> <el-form-item label="当前单位工作年限" label-width="150px">
<el-input v-model="form.currentWorkYears" /> <el-input v-model="basicForm.currentWorkYears" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10" :offset="1"> <el-col :span="10" :offset="1">
<el-form-item label="薪酬"> <el-form-item label="薪酬">
<el-input v-model="form.salary" /> <el-input v-model="basicForm.salary" />
</el-form-item> </el-form-item>
<el-form-item label="工龄"> <el-form-item label="工龄">
<el-input v-model="form.totalWorkYears" /> <el-input v-model="basicForm.totalWorkYears" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<div class="line"></div> <div class="line"></div>
<h6 class="l-title">房产信息</h6> <h6 class="l-title">房产信息</h6>
</el-col> </el-col>
<el-col :span="10" :offset="1"> <el-col :span="10" :offset="1">
<el-form-item label="产权人"> <el-form-item label="产权人">
<el-input v-model="form.propertyOwner" /> <el-input v-model="basicForm.propertyOwner" />
</el-form-item> </el-form-item>
<el-form-item label="共有情况"> <el-form-item label="共有情况">
<el-input v-model="form.coOwnership" /> <el-input v-model="basicForm.coOwnership" />
</el-form-item> </el-form-item>
<el-form-item label="权利性质"> <el-form-item label="权利性质">
<el-input v-model="form.propertyRightNature" /> <el-input v-model="basicForm.propertyRightNature" />
</el-form-item> </el-form-item>
<el-form-item label="使用期限"> <el-form-item label="使用期限">
<el-input v-model="form.usagePeriodStart" /> <el-input v-model="basicForm.usagePeriod" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10" :offset="1"> <el-col :span="10" :offset="1">
<el-form-item label="房产证号"> <el-form-item label="房产证号">
<el-input v-model="form.propertyCertificateNo" /> <el-input v-model="basicForm.propertyCertificateNo" />
</el-form-item> </el-form-item>
<el-form-item label="坐落"> <el-form-item label="坐落">
<el-input v-model="form.location" /> <el-input v-model="basicForm.location" />
</el-form-item> </el-form-item>
<el-form-item label="面积"> <el-form-item label="面积">
<el-input v-model="form.area" /> <el-input v-model="basicForm.area" />
</el-form-item> </el-form-item>
</el-col> <el-form-item label="申请日期" prop="applicationDate">
</template> <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>
<template v-if="curStep !== 1 || isDetail"> <el-form v-if="curStep !== 1 || isDetail" ref="form" :model="form" label-width="120px" :rules="rules"
<el-col :span="24"> :disabled="isDetail">
<div class="line"></div> <el-col :span="24">
<h6 class="l-title">贷款合同</h6> <div class="line"></div>
</el-col> <h6 class="l-title">贷款合同</h6>
<el-col :span="10" :offset="1"> </el-col>
<el-form-item label="贷款类型"> <el-col :span="10" :offset="1">
<el-input v-model="form.customerName" /> <el-form-item label="贷款类型">
</el-form-item> <el-input value="个人住房贷款" disabled />
<el-form-item label="合同金额"> </el-form-item>
<el-input v-model="form.customerName" /> <el-form-item label="合同金额" prop="contractAmount">
</el-form-item> <el-input v-model="form.contractAmount" />
<el-form-item label="起息日期" prop="customerName"> </el-form-item>
<el-input ref="customerName" v-model="form.customerName"></el-input> <el-form-item label="起息日期" prop="interestStartDate">
</el-form-item> <el-date-picker v-model="form.interestStartDate" type="date" placeholder="选择日期" format="yyyy-MM-dd"
<el-form-item label="计息方式" prop="customerName"> value-format="yyyy-MM-dd" @change="interestStartDateChange"></el-date-picker>
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="计息方式">
<el-form-item label="浮动比例" prop="customerName"> <el-input value="按年浮动计息" disabled />
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="浮动比例" prop="interestRateFloat">
<el-form-item label="逾期利率" prop="customerName"> <el-input value="1%" disabled />
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="逾期利率" prop="overdueInterestRate">
<el-form-item label="还款方式" prop="customerName"> <el-input value="30%" disabled />
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="还款方式" prop="repaymentMethod">
<el-form-item label="还款账号" prop="customerName"> <el-select v-model="form.repaymentMethod" placeholder="请选择">
<el-input ref="customerName" v-model="form.customerName"></el-input> <el-option label="等额本金" :value="1"></el-option>
</el-form-item> <el-option label="等额本息" :value="2"></el-option>
</el-col> </el-select>
<el-col :span="10" :offset="1"> </el-form-item>
<el-form-item label="合同编号" prop="customerName"> <el-form-item label="还款账号" prop="repaymentAccount">
<el-input ref="customerName" v-model="form.customerName"></el-input> <el-input v-model="form.repaymentAccount" />
</el-form-item> </el-form-item>
<el-form-item label="贷款期限" prop="customerName"> </el-col>
<el-input ref="customerName" v-model="form.customerName"></el-input> <el-col :span="10" :offset="1">
</el-form-item> <el-form-item label="合同编号" prop="contractNo">
<el-form-item label="到期日期" prop="customerName"> <el-input v-model="form.contractNo" disabled />
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="贷款期限" prop="loanTerm">
<el-form-item label="基准利率" prop="customerName"> <el-select v-model="form.loanTerm" placeholder="请选择">
<el-input ref="customerName" v-model="form.customerName"></el-input> <el-option v-for="(item, i) in loanTerms" :key="i" :label="item.name" :value="item.id"></el-option>
</el-form-item> </el-select>
<el-form-item label="执行利率" prop="customerName"> </el-form-item>
<el-input ref="customerName" v-model="form.customerName"></el-input> <el-form-item label="到期日期" prop="maturityDate">
</el-form-item> <el-date-picker v-model="form.maturityDate" type="date" placeholder="选择日期" format="yyyy-MM-dd"
<el-form-item label="担保方式" prop="customerName"> value-format="yyyy-MM-dd" disabled></el-date-picker>
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="基准利率" prop="baseInterestRate">
<el-form-item label="利息总额" prop="customerName"> <el-input value="4.30%" disabled />
<el-input ref="customerName" v-model="form.customerName"></el-input> </el-form-item>
</el-form-item> <el-form-item label="执行利率" prop="executedInterestRate">
</el-col> <el-input value="4.30%" disabled />
</template> </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" />
</el-form-item>
</el-col>
</el-form> </el-form>
</el-row> </el-row>
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" <my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2" depositNumber='0816' /> @submitIt="saveContract" depositNumber='0816' />
<div class="text-center"> <div class="text-center">
<el-button @click="next" type="primary" class="submitBtn" v-throttle>{{ curStep === 1 ? '下一步' : '提交' <template v-if="isDetail">
<el-button @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> }}</el-button>
</div> </div>
<el-dialog title="放款" :visible.sync="loanVisible" width="300px" z-index="6000" :append-to-body="true">
<el-date-picker v-model="disbursementDate" type="date" placeholder="请选择放款日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker>
<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> </div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> -->
</template> </template>
<script> <script>
import { phoneListen, myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; 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 { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js'
import { addOperation, personalBasicSave } from '@/api/http' import { addOperation, personalBasicSave, loanContractSave, personalBasicFind, grantALoan } from '@/api/http'
import Util from '@/libs/util'
const moduleName = 'usefulPhrases/openAccount' const moduleName = 'personalLoans/detail'
import { mapMutations, mapGetters } from 'vuex' import { mapMutations, mapGetters } from 'vuex'
import NeedBefore from '@/components/needBefore' import NeedBefore from '@/components/needBefore'
import MyDialog from '@/components/dialog' import MyDialog from '@/components/dialog'
import TipsBefore from '@/mixins/tipsBefore'
import MyTitle from '@/components/myTitle' import MyTitle from '@/components/myTitle'
export default { export default {
name: '', name: '',
@ -186,18 +211,15 @@ export default {
MyTitle, MyTitle,
MyDialog MyDialog
}, },
mixins: [TipsBefore],
created () {
this.getFormData()
},
data () { data () {
return { return {
moduleName: 'usefulPhrases/openAccount', moduleName,
isDetail: +this.$route.query.show, isDetail: !!this.$route.query.show,
id: this.$route.query.id,
visible: false, visible: false,
cardNumberJudge: false, cardNumberJudge: false,
idNumberJudge: false, idNumberJudge: false,
form: { basicForm: {
idType: 83, idType: 83,
idNumber: '', idNumber: '',
customerName: '', customerName: '',
@ -214,10 +236,11 @@ export default {
location: '', location: '',
propertyRightNature: '', propertyRightNature: '',
area: '', area: '',
usagePeriodStart: '', usagePeriod: '',
usagePeriodEnd: '', usagePeriodEnd: '',
applicationDate: new Date()
}, },
formName: { basicFormName: {
idType: '证件类型', idType: '证件类型',
idNumber: '证件号码', idNumber: '证件号码',
customerName: '证件号码', customerName: '证件号码',
@ -234,14 +257,88 @@ export default {
location: '坐落', location: '坐落',
propertyRightNature: '权利性质', propertyRightNature: '权利性质',
area: '面积', area: '面积',
usagePeriodStart: '使用期限', usagePeriod: '使用期限',
applicationDate: '申请日期'
}, },
rules: { basicRules: {
customerName: vercustomer, customerName: vercustomer,
birthday: [ phoneNumber: [
{ {
required: true, required: true,
message: '请选择出生日期', message: '请输入联系电话',
trigger: 'blur'
},
],
applicationDate: [
{
required: true,
message: '请选择申请日期',
trigger: 'change'
}
],
},
loanTerms: [
{
id: 120,
name: '120个月'
},
{
id: 240,
name: '240个月'
},
{
id: 360,
name: '360个月'
},
],
form: {
contractNo: '',
contractAmount: '',
loanTerm: 120,
interestStartDate: '',
maturityDate: '',
propertyCertificateNo: '',
repaymentMethod: '',
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' trigger: 'blur'
} }
], ],
@ -249,6 +346,8 @@ export default {
submited: 0, submited: 0,
curRoute: '', curRoute: '',
curStep: 1, curStep: 1,
disbursementDate: '',
loanVisible: false,
} }
}, },
beforeDestroy () { beforeDestroy () {
@ -257,29 +356,7 @@ export default {
mounted () { mounted () {
this.curRoute = this.$route.path this.curRoute = this.$route.path
if (sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) { this.getDetail()
this.idNumberJudge = true
this.form = {
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平方米',
usagePeriodStart: '70年,2018.3.15 至 2088.3.14 止',
usagePeriodEnd: '',
}
}
}, },
methods: { methods: {
...mapMutations({ ...mapMutations({
@ -287,29 +364,107 @@ export default {
setDataFlow: 'system/setDataFlow', setDataFlow: 'system/setDataFlow',
setNeedsModule: 'system/setNeedsModule', setNeedsModule: 'system/setNeedsModule',
setPopId: 'system/setPopId', setPopId: 'system/setPopId',
setTipsOperate: 'system/setTipsOperate' setTipsOperate: 'system/setTipsOperate',
setCreditIds: 'system/setCreditIds',
}), }),
//
async getDetail () {
if (this.id) {
//
const { data } = await personalBasicFind(this.id)
this.basicForm = data.data
this.form = data.data.bankPersonalLoanContractInfo
} 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) { popUp1 (text) {
this.setTipsOperate('请刷身份证'); this.setTipsOperate('请刷身份证');
this.setPopId('1399') this.setPopId('1399')
sessionStorage.setItem('computerPath', this.$route.fullPath) sessionStorage.setItem('computerPath', this.$route.fullPath)
this.$router.push('/counter/list/') this.$router.push('/counter/list/')
}, },
//
interestStartDateChange (val) {
if (val) {
const date = new Date(val)
date.setMonth(this.form.loanTerm)
this.form.maturityDate = Util.formatDate('yyyy-MM-dd', date)
}
},
//
async next () { async next () {
//
if (this.curStep < 2) { if (this.curStep < 2) {
try { const { basicForm } = this
const res = personalBasicSave(form)
this.curStep++ if (!basicForm.idNumber) {
} catch { (e) => { } } messageCard('请刷身份证')
} else { return
}
this.$refs.basicForm.validate(myValidate(async () => {
try {
const { data } = await personalBasicSave(basicForm)
this.setCreditIds({
personalLoanId: data.personalLoanId,
applicationDate: data.applicationDate,
contractNo: data.contractNo,
})
this.curStep++
} catch { (e) => { } }
}, this.$refs))
} else {
//
this.$refs.form.validate(myValidate(() => {
this.visible = true
}, this.$refs))
} }
}, },
getFormData () { //
async saveContract () {
try {
const { form } = this
form.personalLoanId = this.creditIds.personalLoanId
form.contractNo = this.creditIds.contractNo
await loanContractSave(form)
this.$router.push('/counter/list/manage/personalLoans')
} catch { (e) => { } }
}, },
submitForm2 () { showLoan () {
this.loanVisible = true
},
//
async loanSubmit () {
if (!this.disbursementDate) return this.$message.error('请选择放款日期!')
await grantALoan({
id: this.form.contractId,
disbursementDate: this.disbursementDate,
})
this.$message.success('放款成功!')
setTimeout(this.$router.back, 1500)
}, },
phoneListen, phoneListen,
checkName, checkName,
@ -320,8 +475,12 @@ export default {
needsModule: 'system/needsModule', needsModule: 'system/needsModule',
idCardNumber: 'system/idCardNumber', idCardNumber: 'system/idCardNumber',
inMyWork: 'system/inMyWork', inMyWork: 'system/inMyWork',
getSelectList: 'system/getSelectList' getSelectList: 'system/getSelectList',
}) }),
// id
creditIds: function () {
return this.$store.state.system.creditIds
},
} }
} }
</script> </script>

@ -1,101 +1,57 @@
<template> <template>
<div> <div>
<div style="width: 300px;margin-bottom: 20px;"> <div style="width: 300px;margin-bottom: 20px;">
<el-input v-model="keyword" <el-input v-model="keyword" placeholder="请输入客户姓名" clearable />
placeholder="请输入客户姓名"
clearable />
</div> </div>
<el-button style="margin-bottom: 20px;" <el-button style="margin-bottom: 20px;" type="primary"
type="primary" @click="$router.push('/counter/list/manage/personalLoans-detail?show=&id=')">新建贷款申请</el-button>
@click="$router.push('/counter/list/manage/personalLoans-detail?show=0')">新建贷款申请</el-button> <el-table ref="filterTable" :data="list" height="300" :header-cell-style="headerCellStyle"
<el-table ref="filterTable" :row-class-name="tableRowClassName" style="width: 95%">
:data="list" <el-table-column prop="customerName" label="客户姓名" align="center"></el-table-column>
height="300" <el-table-column prop="contractNo" label="合同编号" align="center">
:header-cell-style="headerCellStyle"
:row-class-name="tableRowClassName"
style="width: 95%">
<el-table-column prop="name"
label="客户姓名"
align="center"></el-table-column>
<el-table-column prop="serial"
label="合同编号"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="issueTeller" <el-table-column prop="issueTeller" label="贷款类型" align="center">个人住房贷款</el-table-column>
label="贷款类型" <el-table-column prop="applicationDate" label="申请日期" align="center">
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="receiveTeller" <el-table-column prop="approvalStatus" label="审批状态" align="center">
label="申请日期"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="contractAmount" label="贷款金额" align="center"></el-table-column>
label="审批状态" <el-table-column prop="loanTerm" label="贷款期限" align="center">
align="center">
</el-table-column> </el-table-column>
<el-table-column label="贷款金额" <el-table-column prop="disbursementDate" label="放款日期" align="center">
align="center"></el-table-column>
<el-table-column prop="currency"
label="贷款期限"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="arrearsAmount" label="欠款金额" align="center">
label="放款日期"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="repaymentMethod" label="还款方式" align="center">
label="欠款金额"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column v-if="index !== '3'" prop="totalRepaymentAmount" key="1" label="累计还款金额" align="center">
label="还款方式"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column prop="repaymentStatus" label="还款状态" key="2" align="center">
label="本月应还"
align="center">
</el-table-column> </el-table-column>
<el-table-column v-if="index !== '3'" <el-table-column v-if="index === '3'" prop="currency" key="3" label="展期期限" align="center">
prop="currency"
key="1"
label="实际还款"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="currency" <el-table-column label="操作" align="center" width="150">
label="还款状态"
key="2"
align="center">
</el-table-column>
<el-table-column v-if="index === '3'"
prop="currency"
key="3"
label="展期期限"
align="center">
</el-table-column>
<el-table-column label="操作"
align="center"
width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="toDetail(scope.row)" <el-button @click="toDetail(scope.row)" size="small">查看</el-button>
size="small">查看</el-button> <el-button @click="back(scope.row)" size="small">展期</el-button>
<el-button @click="back(scope.row)"
size="small">展期</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </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> </div>
</template> </template>
<script> <script>
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig' import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig'
import { getNowDate } from '@/utils/utilFunction'
import MyDialog from '@/components/dialogTwo' import MyDialog from '@/components/dialogTwo'
import NeedBefore from '@/components/needBefore' import NeedBefore from '@/components/needBefore'
import { addOperation, getOperation } from '@/api/http'; import { addOperation, personalBasicList } from '@/api/http';
import list from './list'
const moduleName = 'controlCash/cashRecipients' const moduleName = 'personalLoans/list'
import { mapMutations, mapGetters } from 'vuex' import { mapMutations, mapGetters } from 'vuex'
export default { export default {
name: 'index', name: 'index',
@ -108,178 +64,96 @@ export default {
return { return {
moduleName, moduleName,
headerCellStyle: headerCellStyle, headerCellStyle: headerCellStyle,
list, searchTimer: null,
list: [],
page: 1,
pageSize: 10,
total: 0,
keyword: '', keyword: '',
visible: false, visible: false,
unNeed: false, unNeed: false,
isNeedBefore: '', isNeedBefore: '',
needBefore: '', needBefore: '',
text: '柜员现金轧账',/* 顶部文字 */ text: '柜员现金轧账',/* 顶部文字 */
form: {
clickIt1: '', //
clickIt2: '',//
},
formName: {
clickIt1: '领用状态',
clickIt2: '退回状态',
},
tableData: [
{
// issueDate: new Date(),
organizationNumber: '1234100',
issueTeller: '002119',
receiveTeller: '002110',
currency: 'CNY人民币',
money: '490000.00'
},
],
visible: false, visible: false,
submited: 0 submited: 0
} }
}, },
filters: { watch: {
cashRule (cash) { keyword: function (val) {
const arr = (cash + '').split('.') clearTimeout(this.searchTimer);
if (arr.length === 1) { this.searchTimer = setTimeout(() => {
return arr[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',') + '.' + '00' this.initData()
} else { }, 500)
return arr[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',') + '.' + arr[1];
}
},
dateRule (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
return y + '-' + m + '-' + d;
} }
}, },
created () { mounted () {
getOperation({ this.initData()
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ",287,5,31,518,521"
}).then((data) => {
if (data.data.status === 500) {
return;
}
const { data: { judgmentRuleReqs } } = data;
if (judgmentRuleReqs.length > 0) {
const { answerId } = judgmentRuleReqs[0];
if (answerId == '525') {
this.form.clickIt1 = '已领用'
} else {
this.form.clickIt2 = '已退回'
}
}
})
}, },
methods: { methods: {
...mapMutations({ ...mapMutations({
setTipsOperate: 'system/setTipsOperate' setTipsOperate: 'system/setTipsOperate'
}), }),
async getData () {
const { data } = await personalBasicList({
pageNum: this.page,
pageSize: this.pageSize,
customerName: this.keyword,
})
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) { toDetail (row) {
this.$router.push('/counter/list/manage/personalLoans-detail?show=1') this.$router.push('/counter/list/manage/personalLoans-detail?show=1&id=' + row.personalLoanId)
}, },
back (row) { back (row) {
if (this.form.clickIt1 === '已领用') {
this.$confirm('该项目只能选择将现金领用或退回现金,请问是否改为现金退回?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(() => {
this.form.clickIt2 = '已退回'
this.form.clickIt1 = ''
this.$message({
type: 'success',
message: '当前选择为退回现金!'
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消退回现金'
});
});
return
} else {
this.form.clickIt2 = '已退回'
}
}, },
submitClick () { tableRowClassName,
if (this.submited) return this.$message.error('已提交!')
this.visible = true
},
submitForm2 () {
let projectId = sessionStorage.getItem('projectId')
let startTime = sessionStorage.getItem('startTime')
const formList = []
if (this.form.clickIt1 === '已领用') {
formList.push({ "answerId": '525', "emptyOne": "", "emptyTwo": "", "operationIds": "285," + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ",287,5,31,518,521,525", "type": "" })
// formList.push()
}
if (this.form.clickIt2 === '已退回') {
formList.push({ "answerId": '526', "emptyOne": "", "emptyTwo": "", "operationIds": "285," + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ",287,5,31,518,521,526", "type": "" })
}
let params = {
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,31,518,521',
lcJudgmentRuleReq: formList,
projectId: +projectId,
startTime: startTime,
}
addOperation(params).then((data) => {
// this.$message({
// message: '',
// type: 'success'
// });
this.setNeedsModule(moduleName)
this.submited = 1
// this.setDataFlow({ ...this.form })
}).catch((error) => {
})
},
tableRowClassName: tableRowClassName,
getNowDate
}, },
computed: {
...mapGetters({
needsModule: 'system/needsModule',
inMyWork: 'system/inMyWork',
})
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/assets/css/tablebg.scss'; @import '@/assets/css/tablebg.scss';
.wrap { .wrap {
width: 100%; width: 100%;
.body {
margin-top: 20px !important; .body {
} margin-top: 20px !important;
}
} }
/deep/ .blueText { /deep/ .blueText {
color: blue; color: blue;
} }
/deep/.el-table .warning-row { /deep/.el-table .warning-row {
background: oldlace; background: oldlace;
} }
/deep/.el-table .success-row { /deep/.el-table .success-row {
background: #f0f9eb; background: #f0f9eb;
} }
.submitBtn { .submitBtn {
position: relative; position: relative;
width: 200px; width: 200px;
font-size: 18px; font-size: 18px;
height: 45px; height: 45px;
margin-top: 50px; margin-top: 50px;
border-radius: 10px; border-radius: 10px;
bottom: 10px; bottom: 10px;
left: 50%; left: 50%;
transform: translate(-50%, -20%); transform: translate(-50%, -20%);
} }
</style> </style>
Loading…
Cancel
Save