贷款业务

20240205
yujialong 5 months ago
parent 921cf1f228
commit 317228af2d
  1. 13
      src/api/http.js
  2. BIN
      src/assets/img/goods/syb.jpg
  3. BIN
      src/assets/img/goods/xjllb.jpg
  4. BIN
      src/assets/img/goods/zcfzb.jpg
  5. 46
      src/pages/counter/list/index.vue
  6. 372
      src/pages/manage/index/index.vue
  7. 27
      src/pages/manage/list/corporateLoans/application.vue
  8. 15
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/basic.vue
  9. 162
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/importReport.vue
  10. 428
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/preLoan.vue
  11. 452
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/rating.vue
  12. 10
      src/pages/manage/list/corporateLoans/apply/index.vue
  13. 120
      src/pages/manage/list/personalLoans/detail.vue
  14. 126
      src/pages/manage/list/personalLoans/list.vue
  15. 78
      src/store/modules/system.js

@ -1,5 +1,5 @@
import { get, post, deletes, put } from './api.js'
// import axios from "./";
const host = 'http://192.168.31.51:9000'
export const getProjectBySystemId = (params) => {
return get('/occupationlab/occupationlab/projectManage/getProjectBySystemId', params)
}
@ -48,7 +48,10 @@ export const reportDetail = (reportId) => {
})
}
export const creditEvaluationInput = data => {
return post('/judgment/bankCreditEvaluation/creditEvaluationInput', data)
return post(`${host}/judgment/bankCreditEvaluation/creditEvaluationInput`, data)
}
export const companyLoanList = data => {
return post(`${host}/judgment/bankCompanyLoans/companyLoanList`, data)
}
export const loanContractSave = (data) => {
@ -70,3 +73,9 @@ export const personalBasicSave = (data) => {
export const grantALoan = (data) => {
return post(`/judgment/bankPersonalLoanContractInfo/grantALoan?contractId=${data.id}&disbursementDate=${data.disbursementDate}`)
}
export const repaymentPlan = (data) => {
return post(`/judgment/bankPersonalRepaymentPlan/repaymentPlan`, data)
}
export const operationExtension = (data) => {
return post(`/judgment/bankPersonalLoanContractInfo/operationExtension?contractId=${data.id}&extensionPeriod=${data.extensionPeriod}`)
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

@ -166,11 +166,6 @@
<p :title="item.name">{{ item.name }}</p>
<img src="@/assets/img/seal/sealed.png" alt="" style="width: 50%; right: -40px;top: 40px;" class="absolute"
v-if="finishSealedArr.includes(item.id)">
<!-- <el-image
style="width: 100px; height: 70px;margin-top: 10px;"
:src="item.src"
fit="scale-down"></el-image>
<p>{{item.name}}</p> -->
</div>
</div>
<div class="goods" :class="{ active: showGoods }" @click="toggleGoods">
@ -245,12 +240,7 @@
<seal-name v-for="item in sealCoverIt" :key="item.id" :item="item">
</seal-name>
</div>
<!-- <p class="text">{{item.name}}</p> -->
</div>
<!-- <div v-for="(item, index) in goods" :key="index" :class="{ checked: checkList.includes(item.id),file:true }" @click="dblClickFn(item)">-->
<!-- <img :src="item.src" alt="" />-->
<!-- <p>{{item.name}}</p>-->
<!-- </div>-->
</div>
</div>
@ -293,7 +283,7 @@
</div>
</div>
<div v-else-if="popText === '刷卡器'" ref="popUp" class="list ">
<div v-else-if="popText === '刷卡器' || popText === '导入报表'" ref="popUp" class="list ">
<div class="img-wrap" v-for="(item, index) in receptionList"
:class="{ checked: commonChecked.includes(item.id), 'img-wrap': true }" @click='dislodgeItem(index)'
:key="item.id">
@ -345,7 +335,7 @@
</div>
<!-- 暂时未确定是否公共使用一个弹框 receptionList-->
<div v-else class="list " ref="popUp"><!-- 钱箱 / 传票栏 ... 一系列可存物品弹框 -->
<div v-else class="list" ref="popUp"><!-- 钱箱 / 传票栏 ... 一系列可存物品弹框 -->
<div class="img-wrap" v-for="(item, index) in goodState" @click='dislodgeItem(index)'
:class="{ checked: commonChecked.includes(item.id), 'img-wrap': true }" :key="item.id">
<!-- <img :src="item.src" class="file" alt="" /> -->
@ -1201,7 +1191,8 @@ export default {
outThings: 'system/outThings',
outThings2: 'system/outThings2',
outThingsGoods: 'system/outThingsGoods',
setTipsOperate: 'system/setTipsOperate'
setTipsOperate: 'system/setTipsOperate',
setCreditImportIds: 'system/setCreditImportIds',
}),
//
@ -1516,9 +1507,7 @@ export default {
}
} else {
this.controlGoodsDblClickFn = setTimeout(() => {
if (this.myMap) {
this.outThingsGoods([item.id])
this.pushThings({ idArr: [item.id], name: this.myMap })
} else {
@ -1530,7 +1519,6 @@ export default {
this.clickNum2 = 0
}, 200)
}
},
checkSeal (id) {/* 选中印章 */
this.sealChecked.includes(id) ? this.sealChecked.splice(this.sealChecked.indexOf(id), 1) : this.sealChecked.push(id);
@ -1815,19 +1803,9 @@ export default {
this.changeShowGoods(false)
} else {
// Logo
// if(this.myMap) {
// this.finishGoods[this.myMap] = true
// }
let formList = []
// this.toggleGoods()
// this.$message.success(`${this.popText}`)
// nbm0
if (this.nbm == 0) {
let projectId = sessionStorage.getItem('projectId')
let startTime = sessionStorage.getItem('startTime')
@ -1840,8 +1818,6 @@ export default {
for (var i = 0; i < this.goodState.length; i++) { formList.push({ "answerId": this.goodState[i].id, "emptyOne": "", "emptyTwo": "", "operationIds": "285," + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ",287,555," + this.goodState[i].id, "type": "" }) }
const tmpGoods = this.goodState.map(item => item.id)
// this.outThings({name: this.myMap, idArr: [ ...tmpGoods ]})
// this.pushThingsGoods([...tmpGoods])
let params = {
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,555',
lcJudgmentRuleReq: formList,
@ -1928,8 +1904,6 @@ export default {
clickList = []
} else if (this.nbm == 3) { //
let clickList = this.importantChecked
// console.log("🚀 ~ file: index.vue:2220 ~ popSure ~ clickList:", clickList)
// debugger
// 11 (439)
if (clickList.length === 1 && clickList[0] === 439) {
@ -2098,7 +2072,6 @@ export default {
}
let projectId = sessionStorage.getItem('projectId')
let startTime = sessionStorage.getItem('startTime')
console.log('this.goodState=>', this.goodState)
let id
for (var i = 0; i < this.goodState.length; i++) {
if (this.goodState[i].id == 432) {
@ -2181,8 +2154,15 @@ export default {
this.setTipsOperate('验证身份成功!')
}).catch((error) => {
})
} else {
} else if (this.nbm == 12) {
this.setCreditImportIds(770)
this.setTipsOperate('导入成功!')
} else if (this.nbm == 13) {
this.setCreditImportIds(771)
this.setTipsOperate('导入成功!')
} else if (this.nbm == 14) {
this.setCreditImportIds(772)
this.setTipsOperate('导入成功!')
}
//
if (this.nbm !== 4 && this.nbm !== 1 && this.nbm !== 5 && this.nbm !== 1 && !(this.nbm === 0 && this.peopleDo !== 1)) {

@ -1,11 +1,9 @@
<template>
<!-- :style="full?'height:100vh;':'height: 80vh;'" -->
<div class="box"
:class="full || isCredit? 'h-4/5': ''">
<div class="box" :class="full || isCredit ? 'h-4/5' : ''">
<div class="nav">
<!-- <div class="top" :style="full?'border-radius:0':'border-top-left-radius: 20px;'"> select-none -->
<div class="top"
:style="full?'border-radius:0':'border-top-left-radius: 20px;'">
<div class="top" :style="full ? 'border-radius:0' : 'border-top-left-radius: 20px;'">
<p style="margin:auto">商业银行系统</p>
</div>
<!-- <div class="body2">
@ -17,18 +15,10 @@
<!-- <navbar class="body"></navbar> -->
</div>
<div class="manage-layout">
<div class="top"
:style="full?'border-radius:0':'border-top-right-radius: 20px;'">
<img v-show="!full && !isCredit"
src="../../../assets/svg/fullscreen.svg"
alt=""
@click="handleFullscreen">
<img v-show="full"
src="../../../assets/svg/shrink.svg"
alt=""
@click="shrink">
<i @click="close"
class="el-icon-close"></i>
<div class="top" :style="full ? 'border-radius:0' : 'border-top-right-radius: 20px;'">
<img v-show="!full && !isCredit" src="../../../assets/svg/fullscreen.svg" alt="" @click="handleFullscreen">
<img v-show="full" src="../../../assets/svg/shrink.svg" alt="" @click="shrink">
<i @click="close" class="el-icon-close"></i>
</div>
<div class="manage-content">
<transition name="fade">
@ -99,15 +89,15 @@ $submenu_padding_left: 25px; // 相应的padding-left大小
// }
@media screen and (min-width: 1920px) {
/deep/.body {
min-height: 50vh;
}
/deep/.body {
min-height: 50vh;
}
}
@media screen and (min-width: 1200px) and (max-width: 1700px) {
/deep/.body {
min-height: 50vh;
}
/deep/.body {
min-height: 50vh;
}
}
// .wrap2{
@ -128,125 +118,148 @@ $submenu_padding_left: 25px; // 相应的padding-left大小
// }
.box {
display: flex;
min-width: 1300px;
.nav {
width: 270px;
min-height: 80vh;
border-top-left-radius: 20px;
border-bottom-left-radius: 20px;
display: flex;
min-width: 1300px;
.nav {
width: 270px;
min-height: 80vh;
border-top-left-radius: 20px;
border-bottom-left-radius: 20px;
display: flex;
flex-direction: column;
.top {
height: 50px;
font-size: 20px;
display: flex;
align-items: center;
text-align: center;
border-top-left-radius: 15px;
color: #b3b3b3;
background: #222428;
p {
font-size: 21px;
}
}
.body {
flex: 1;
.el-menu {
height: 100%;
}
}
flex-direction: column;
.top {
height: 50px;
font-size: 20px;
display: flex;
align-items: center;
text-align: center;
border-top-left-radius: 15px;
color: #b3b3b3;
background: #222428;
p {
font-size: 21px;
}
}
.manage-layout {
width: calc(100% - 270px);
// background: #fff;
background: transparent;
display: flex;
flex-direction: column;
.top {
height: 50px;
font-size: 30px;
display: flex;
justify-content: flex-end;
align-items: center;
text-align: center;
color: #000;
background: #e6e6e6;
border-top-right-radius: 20px;
i {
margin-right: 10px;
cursor: pointer;
}
}
.manage-content {
flex: 1;
position: relative;
border-bottom-right-radius: 20px;
overflow: hidden;
.manage-view {
position: absolute;
top: 0;
bottom: 0;
background: #fff;
}
}
.body {
flex: 1;
.el-menu {
height: 100%;
}
}
}
.manage-layout {
width: calc(100% - 270px);
// background: #fff;
background: transparent;
display: flex;
flex-direction: column;
.top {
height: 50px;
font-size: 30px;
display: flex;
justify-content: flex-end;
align-items: center;
text-align: center;
color: #000;
background: #e6e6e6;
border-top-right-radius: 20px;
i {
margin-right: 10px;
cursor: pointer;
}
}
.manage-content {
flex: 1;
position: relative;
border-bottom-right-radius: 20px;
overflow: hidden;
.manage-view {
position: absolute;
top: 0;
bottom: 0;
background: #fff;
}
}
}
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0.5;
.fade-enter,
.fade-leave-to
/* .fade-leave-active below version 2.1.8 */
{
opacity: 0.5;
}
// el-input
/deep/ .el-input input {
&:focus {
border-color: skyblue;
}
&:focus {
border-color: skyblue;
}
}
//
/deep/ .is-error input {
border-color: #f40 !important;
border-color: #f40 !important;
}
/deep/.el-input {
// width: 15vw!important;
width: 100%;
input {
font-size: $font_size_All !important;
}
// width: 15vw!important;
width: 100%;
input {
font-size: $font_size_All !important;
}
}
/deep/ .text-xl p {
font-size: $font_size_All !important;
font-size: $font_size_All !important;
}
/deep/ .el-form-item .el-form-item__label {
font-size: $font_size_All !important;
font-size: $font_size_All !important;
}
/deep/ .el-submenu {
padding-left: $submenu_padding_left !important;
padding-left: $submenu_padding_left !important;
}
/deep/ .el-submenu .el-menu-item {
padding-left: $submenu_padding_left + 25px !important;
font-size: $font_size_All !important;
padding-left: $submenu_padding_left + 25px !important;
font-size: $font_size_All !important;
}
// /deep/ .el-menu-item {
// padding-left: $submenu_padding_left + 25px!important;
// font-size: $font_size_All!important;
// }
/deep/ .el-menu span {
font-size: $font_size_All !important;
font-size: $font_size_All !important;
}
/deep/ .title p {
font-size: $font_size_All !important;
font-size: $font_size_All !important;
}
/deep/ .idCard p {
font-size: $font_size_All !important;
font-size: $font_size_All !important;
}
// /deep/ .el-form-item__error {
// top: 105%;
// left: auto;
@ -254,85 +267,96 @@ $submenu_padding_left: 25px; // 相应的padding-left大小
// color: #FFA94E;
// }
@media screen and (min-width: 1200px) and (max-width: 1700px) {
/deep/.el-input {
// width: 15vw!important;
width: 100%;
input {
font-size: $font_size_All !important;
}
}
/deep/ .idCard {
// width: 15vw;
width: 100%;
/deep/.el-input {
// width: 15vw!important;
width: 100%;
input {
font-size: $font_size_All !important;
}
}
/deep/ .idCard {
// width: 15vw;
width: 100%;
}
}
@media screen and (min-width: 1200px) and (max-width: 1900px) {
.box {
.box {
display: flex;
min-width: 80vw;
// margin-top: 6vh;
overflow: auto;
// height: 70vh;
.nav {
width: 25vw;
min-height: 80vh;
overflow: hidden;
border-top-left-radius: 20px;
display: flex;
flex-direction: column;
.top {
min-height: 10vh;
font-size: 3vh;
line-height: 3vh;
display: flex;
min-width: 80vw;
// margin-top: 6vh;
align-items: center;
text-align: center;
border-top-left-radius: 15px;
color: #b3b3b3;
background: #222428;
}
.body {
// flex: 1;
// height: calc(80vh-10vh);
overflow: auto;
// height: 70vh;
.nav {
width: 25vw;
min-height: 80vh;
overflow: hidden;
border-top-left-radius: 20px;
display: flex;
flex-direction: column;
.top {
min-height: 10vh;
font-size: 3vh;
line-height: 3vh;
display: flex;
align-items: center;
text-align: center;
border-top-left-radius: 15px;
color: #b3b3b3;
background: #222428;
}
.body {
// flex: 1;
// height: calc(80vh-10vh);
overflow: auto;
background-color: #313540;
}
background-color: #313540;
}
}
.manage-layout {
width: calc(100% - 270px);
min-height: 80vh;
overflow: auto;
// background: #fff;
background: transparent;
display: flex;
flex-direction: column;
box-sizing: border-box;
.top {
min-height: 10vh;
font-size: 30px;
display: flex;
justify-content: flex-end;
align-items: center;
text-align: center;
color: #000;
background: #e6e6e6;
border-top-right-radius: 20px;
i {
margin-right: 10px;
cursor: pointer;
}
.manage-layout {
width: calc(100% - 270px);
min-height: 80vh;
overflow: auto;
// background: #fff;
background: transparent;
display: flex;
flex-direction: column;
box-sizing: border-box;
.top {
min-height: 10vh;
font-size: 30px;
display: flex;
justify-content: flex-end;
align-items: center;
text-align: center;
color: #000;
background: #e6e6e6;
border-top-right-radius: 20px;
i {
margin-right: 10px;
cursor: pointer;
}
}
.manage-content {
flex: 1;
position: relative;
.manage-view {
position: absolute;
top: 0;
bottom: 0;
background: #fff;
}
}
}
.manage-content {
flex: 1;
position: relative;
.manage-view {
position: absolute;
top: 0;
bottom: 0;
background: #fff;
}
}
}
}
}
</style>

@ -42,7 +42,7 @@
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig'
import { myValidate, checkHanzi, inputListen } from '@/utils/utilFunction.js'
import { mapState, mapMutations, mapGetters } from 'vuex'
import { addOperation, getOperation } from '@/api/http';
import { addOperation, companyLoanList } from '@/api/http';
import MyTitle from '@/components/myTitle'
export default {
name: 'index',
@ -62,13 +62,36 @@ export default {
submited: 0
}
},
watch: {
keyword: function (val) {
clearTimeout(this.searchTimer);
this.searchTimer = setTimeout(() => {
this.initData()
}, 500)
},
},
mounted () {
// this.initData()
},
methods: {
...mapMutations({
setTipsOperate: 'system/setTipsOperate'
}),
async getData () {
// debugger
const { data } = await companyLoanList({
businessId: this.$store.getters.system.businessId,
pageNum: this.page,
pageSize: this.pageSize,
searchContent: this.keyword,
})
this.list = data.list.records
this.total = data.list.total
},
initData () {
this.page = 1
this.getData()
},
handleCurrentChange (val) {
this.page = val;
},

@ -94,15 +94,10 @@
<script>
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js';
import { addOperation, creditEvaluationInput } from '@/api/http'
const moduleName = 'creditEva/basic'
import { mapMutations, mapGetters } from 'vuex'
import TipsBefore from '@/mixins/tipsBefore'
export default {
mixins: [TipsBefore],
data () {
return {
moduleName,
form: {
applicationAccount: '',
customerName: '',
@ -201,11 +196,11 @@ export default {
return
}
try {
const res = creditEvaluationInput(form)
const { data } = await creditEvaluationInput(form)
// id
this.setCredit({
companyLoanId: res.companyLoanId, // tabid
creditEvaluationId: res.creditEvaluationId, // id
this.setCreditIds({
companyLoanId: data.companyLoanId, // tabid
creditEvaluationId: data.creditEvaluationId, // id
})
this.$emit('updateStep', 1)
} catch { (e) => { } }
@ -221,7 +216,7 @@ export default {
needsModule: 'system/needsModule',
idCardNumber: 'system/idCardNumber',
inMyWork: 'system/inMyWork',
getSelectList: 'system/getSelectList'
getSelectList: 'system/getSelectList',
})
}
}

@ -2,135 +2,96 @@
<template>
<div>
<div class="upload-wrap">
<Upload @onSuccess="uploadSuccess">
<div slot="trigger">
<el-button type="primary">点击导入资产负债表</el-button>
</div>
<template slot="tip">
<div></div>
</template>
</Upload>
<div>
<el-button :type="!creditImportIds.includes(770) ? 'primary' : ''"
@click="showData('导入报表', 12)">点击导入资产负债表</el-button>
<p v-if="creditImportIds.includes(770)" class="already">已导入</p>
</div>
<img class="icon" src="@/assets/img/arrow-right.png" alt="">
<Upload @onSuccess="uploadSuccess">
<div slot="trigger">
<el-button type="primary">点击导入损益表</el-button>
</div>
<template slot="tip">
<div></div>
</template>
</Upload>
<div>
<el-button :type="!creditImportIds.includes(771) ? 'primary' : ''"
@click="showData('导入报表', 13)">点击导入损益表</el-button>
<p v-if="creditImportIds.includes(771)" class="already">已导入</p>
</div>
<img class="icon" src="@/assets/img/arrow-right.png" alt="">
<Upload @onSuccess="uploadSuccess">
<div slot="trigger">
<el-button type="primary">点击导入现金流量表</el-button>
</div>
<template slot="tip">
<div></div>
</template>
</Upload>
<div>
<el-button :type="!creditImportIds.includes(772) ? 'primary' : ''"
@click="showData('导入报表', 14)">点击导入现金流量表</el-button>
<p v-if="creditImportIds.includes(772)" class="already">已导入</p>
</div>
</div>
<div class="text-center m-t-20">
<el-button @click="$emit('updateStep', 0)" type="primary" class="submitBtn" v-throttle>上一步</el-button>
<el-button @click="next" type="primary" class="submitBtn" v-throttle>下一步</el-button>
</div>
<div v-show="showPop" width="900px" class="data-dia z500 max-h-screen 2xl:-mt-20;" ref="dataDia" v-drag>
<div class="dia-header h-1/6">
<div class="data-title">{{ popText }}</div>
<div class="close-wrap">
<img class="close" v-lazy="lazyImg[28]" alt="" @click="closePop" />
</div>
</div>
<p class="tips">- 请从物品栏选中或拖拽所需材料 -</p>
<div class="list" ref="popUp">
<div class="img-wrap" :class="{ checked: commonChecked.includes(item.id), 'img-wrap': true }"
v-for="(item, index) in receptionList" :key="item.id" @click='dislodgeItem(index)'>
<!-- <img :src="item.src" class="file" alt="" /> -->
<el-image :src="item.src" class="file" :alt="item.name" :title="item.name" fit="scale-down"></el-image>
<p class="text">{{ item.name }}</p>
</div>
</div>
</div>
</div>
</template>
<script>
import Upload from '@/components/upload';
import { addOperation, creditEvaluationInput } from '@/api/http'
import { mapMutations, mapGetters } from 'vuex'
import TipsBefore from '@/mixins/tipsBefore'
const moduleName = 'creditEva/importReport'
export default {
components: {
Upload
},
computed: {
popText: function () {/* 文字 */
return this.$store.state.system.popText;
creditImportIds: function () {
return this.$store.state.system.creditImportIds
},
showGoods: function () {
return this.$store.state.system.showGoods
},
//
showPop: function () {
const dataDia = this.$refs.dataDia
//
if (dataDia) {
dataDia.style.top = '68px'
dataDia.style.left = '50%'
}
this.$refs.dataDia
this.receptionList = []
this.passwordForm.passwordAgain = ''
this.passwordForm.password2 = ''
if (!this.showGoods) this.checkList = []
return this.$store.state.system.showPop;
// id
creditIds: function () {
return this.$store.state.system.creditIds
},
},
data () {
return {
commonChecked: [],//
receptionList: [],
form: {},
}
},
mounted () {
this.getDetail()
console.log(111, this.$parent.$parent.$parent.showData)
},
methods: {
...mapMutations({
changeShowGoods: 'system/changeShowGoods',
setCreditImportIds: 'system/setCreditImportIds',
setTipsOperate: 'system/setTipsOperate',
}),
showData (type, nbm) {/* 展示弹窗-type为弹窗标题文字 */
this.nbm = nbm
//
this.changeShowGoods(true)
if (type !== '系统') {
this.$store.commit('system/changePop', { show: true, text: type, id: this.id })
//
async getDetail () {
this.setCreditImportIds()
if (this.id) {
//
const { data } = await personalBasicFind(this.id)
this.basicForm = data.data
this.form = data.data.bankPersonalLoanContractInfo
}
},
closePop () {//
// v-drag
document.onmousemove = null
document.onmouseup = null
this.receptionList = [];
this.changeShowGoods(false)
this.$store.commit('system/changePop', { show: false, text: '' })
},
uploadSuccess (file) {
this.fileId = ''
this.fileType = file.format
this.fileUrl = file.url
this.fileName = file.name
showData (type, nbm) {/* 展示弹窗-type为弹窗标题文字 */
this.$parent.$parent.$parent.showData(type, nbm)
},
next () {
this.$emit('updateStep', 2)
const form = this.creditIds
const ids = this.creditImportIds
if (!ids.includes(770)) {
return this.setTipsOperate('请导入资产负债表')
}
if (!ids.includes(771)) {
return this.setTipsOperate('请导入损益表')
}
if (!ids.includes(772)) {
return this.setTipsOperate('请导入现金流量表')
}
this.creditIds
form.importBalanceSheet = 770
form.importIncomeStatement = 771
form.importCashFlowStatement = 772
try {
creditEvaluationInput(form)
this.$emit('updateStep', 2)
} catch { (e) => { } }
},
},
}
@ -142,6 +103,13 @@ export default {
align-items: center;
min-height: 300px;
.already {
margin-top: 8px;
font-size: 14px;
text-align: center;
color: #606060;
}
.icon {
margin: 0 40px;
}

@ -2,53 +2,72 @@
<template>
<div>
<el-row :gutter="20" style="margin: 0">
<el-form ref="form" :model="form" label-width="120px" :rules="rules">
<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" :offset="1">
<el-form-item label="调查日期" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="certificateType">
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType">
<el-option label="身份证" :value="83"> </el-option>
<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="customerName">
<el-input v-model="form.customerName"></el-input>
<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="customerName">
<el-input v-model="form.customerName"></el-input>
<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="customerName">
<el-select v-model.trim="form.certificateType" placeholder="请选择">
<el-option label="身份证" :value="83"> </el-option>
<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="customerName">
<el-input v-model="form.customerName"></el-input>
<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="customerName">
<el-input v-model="form.customerName"></el-input>
<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="customerName">
<el-input v-model="form.customerName"></el-input>
<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="customerName">
<el-input v-model="form.customerName"></el-input>
<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="customerName">
<el-select v-model.trim="form.certificateType" placeholder="请选择">
<el-option label="身份证" :value="83"> </el-option>
<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="customerName">
<el-input v-model="form.customerName" type="textarea"></el-input>
<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>
@ -62,205 +81,119 @@
</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'
const moduleName = 'usefulPhrases/openAccount'
import { addOperation, creditEvaluationInput } from '@/api/http'
import { mapMutations, mapGetters } from 'vuex'
import NeedBefore from '@/components/needBefore'
import MyDialog from '@/components/dialog'
import TipsBefore from '@/mixins/tipsBefore'
import MyTitle from '@/components/myTitle'
export default {
name: '',
props: {},
components: {
NeedBefore,
MyTitle,
MyDialog
},
mixins: [TipsBefore],
created () {
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) {
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword')
}
// if(sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) {
// this.idNumberJudge = true
// this.form.idNumber = this.dataFlow.idNumber || '441515199812064569'
// }
// if(sessionStorage.getItem('nomUsefulPhrasesOpenCard')) {
// this.cardNumberJudge = true
// this.form.voucherNumber = this.dataFlow.voucherNumber || '159753'
// }
if (sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) {
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('nomUsefulPhrasesOpenCard')) {
this.cardNumberJudge = true
const { voucherNumber } = this.dataFlow
this.form.voucherNumber = voucherNumber
}
this.getFormData()
},
data () {
return {
moduleName: 'usefulPhrases/openAccount',
visible: false,
cardNumberJudge: false,
idNumberJudge: false,
opt1: [
{
id: 203,
name: '有'
},
{
id: 204,
name: '无'
},
],
opt2: [
{
id: 205,
name: '优'
},
{
id: 206,
name: '良'
},
{
id: 207,
name: '不良'
},
],
form: {
//
// identityCard: '', //
idNumber: '',
customerName: '', //
currency: '', //
goldLogo: '', //
voucherType: '', //
monthDeposit: '', //
depositTerm: '', //
extendDepositTarget: '', //
voucherNumber: '', //
drawPassword: '', //
//
clientNumber: '', //
certificateType: 83, //
},
formName: {
//
// identityCard: '', //
idNumber: '身份证',
customerName: '客户姓名', //
currency: '币种', //
goldLogo: '钞汇标识', //
voucherType: '凭证类型', //
monthDeposit: '月存金额', //
depositTerm: '存期', //
extendDepositTarget: '续存标识', //
voucherNumber: '凭证号码', //
drawPassword: '支付密码', //
//
clientNumber: '客户号', //
certificateType: '证件类型', //
surveyDate: '',
externalUnfavorableGuarantee: 204,
tradeFinancingRecords: 204,
businessStatus: 205,
businessInvestmentErrors: 204,
badDebtReserves: 204,
enterpriseCustomerAnalysis: 205,
majorLegalLitigation: 204,
compensationMajorAccidents: 204,
loanRiskSituation: 204,
preLoanOtherRiskSituations: '',
},
rules: {
customerName: vercustomer,
currency: [
surveyDate: [
{
required: true,
message: '请选择币种',
trigger: 'blur'
message: '请选择调查日期',
trigger: 'change'
}
],
goldLogo: [
externalUnfavorableGuarantee: [
{
required: true,
message: '请选择钞汇标识',
trigger: 'blur'
message: '请选择对外不利担保',
trigger: 'change'
}
],
voucherType: [
tradeFinancingRecords: [
{
required: true,
message: '请选择凭证类型',
trigger: 'blur'
message: '请选择贸易融资记录',
trigger: 'change'
}
],
monthDeposit: [
businessStatus: [
{
required: true,
message: '请输入月存金额',
trigger: 'blur'
message: '请选择经营状况',
trigger: 'change'
}
],
depositTerm: [
businessInvestmentErrors: [
{
required: true,
message: '请选择存期',
trigger: 'blur'
message: '请选择三年内较大经营投资失误',
trigger: 'change'
}
],
extendDepositTarget: [
badDebtReserves: [
{
required: true,
message: '请选择续存标识',
trigger: 'blur'
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'
}
],
},
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
}
@ -269,94 +202,17 @@ export default {
},
methods: {
// userName,
// peopleNumber,
// idNumber,
// currency:'CNY',
// goldLogo:'',
...mapMutations({
changeShowGoods: 'system/changeShowGoods',
setDataFlow: 'system/setDataFlow',
setNeedsModule: 'system/setNeedsModule',
setPopId: 'system/setPopId',
setTipsOperate: 'system/setTipsOperate'
}),
getDataBlur () {
// console.log('???')
},
popUp1 (text) {
this.setTipsOperate('请刷身份证');
this.setPopId('1399')
sessionStorage.setItem('computerPath', this.$route.fullPath)
this.$router.push('/counter/list/')
},
popUp2 (text) {
this.setTipsOperate('请刷银行卡');
this.setPopId('166')
sessionStorage.setItem('computerPath', this.$route.fullPath)
this.$router.push('/counter/list/')
},
popUp3 (text) {
this.setTipsOperate('请在密码器输入密码');
this.setPopId('167')
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)
async next () {
this.$refs.form.validate(myValidate(async () => {
try {
await creditEvaluationInput({
...this.creditIds,
...this.form,
})
this.$emit('updateStep', 3)
} catch { (e) => { } }
}, this.$refs))
},
next () {
this.$emit('updateStep', 3)
},
submitForm () {
},
submitForm2 () {
// let nomUsefulPhrasesOpenCard = sessionStorage.getItem('nomUsefulPhrasesOpenCard')
// let nomUsefulPhrasesOpenCard2 = sessionStorage.getItem('nomUsefulPhrasesOpenCard2')
// let nomUsefulPhrasesOpenPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword')
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155'
const cards = [
{
key: '159,13'
}
// {
// 1399: nomUsefulPhrasesOpenCard2
// },
// {
// 166: nomUsefulPhrasesOpenCard
// },
// {
// 167: nomUsefulPhrasesOpenPassword,
// "subjectId": 17,
// }
]
this.setDataFlow(this.form)
autoPlay(parentId, this.form, this.myTable2, this.myTable, cards)
this.submited = 1
},
ismoney: ismoney,
checkHanzi: checkHanzi,
checkName: checkName,
inputListen: inputListen
},
computed: {
...mapGetters({
@ -364,8 +220,12 @@ export default {
needsModule: 'system/needsModule',
idCardNumber: 'system/idCardNumber',
inMyWork: 'system/inMyWork',
getSelectList: 'system/getSelectList'
})
getSelectList: 'system/getSelectList',
}),
// id
creditIds: function () {
return this.$store.state.system.creditIds
},
}
}
</script>

@ -7,43 +7,57 @@
<h6 class="l-title">等级评定</h6>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="盈利记录" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="领导作风品行" prop="certificateType">
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType">
<el-option label="身份证" :value="83"> </el-option>
<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="领导经营管理" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="企业发展前景" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="有无不良信用记录" prop="customerName">
<el-select v-model.trim="form.certificateType" placeholder="请选择">
<el-option label="身份证" :value="83"> </el-option>
<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="领导应变开拓" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="领导才敢教育" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="企业开发能力" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="企业信誉" prop="customerName">
<el-input v-model="form.customerName"></el-input>
<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="其他风控情况" prop="customerName">
<el-input v-model="form.customerName" type="textarea"></el-input>
<el-form-item label="其他风险情况">
<el-input v-model="form.gradeEvaluationOtherRiskSituations" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-form>
@ -57,205 +71,126 @@
</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'
const moduleName = 'usefulPhrases/openAccount'
import { mapMutations, mapGetters } from 'vuex'
import NeedBefore from '@/components/needBefore'
import MyDialog from '@/components/dialog'
import TipsBefore from '@/mixins/tipsBefore'
import MyTitle from '@/components/myTitle'
import { addOperation, creditEvaluationInput } from '@/api/http'
export default {
name: '',
props: {},
components: {
NeedBefore,
MyTitle,
MyDialog
},
mixins: [TipsBefore],
created () {
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) {
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword')
}
// if(sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) {
// this.idNumberJudge = true
// this.form.idNumber = this.dataFlow.idNumber || '441515199812064569'
// }
// if(sessionStorage.getItem('nomUsefulPhrasesOpenCard')) {
// this.cardNumberJudge = true
// this.form.voucherNumber = this.dataFlow.voucherNumber || '159753'
// }
if (sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) {
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('nomUsefulPhrasesOpenCard')) {
this.cardNumberJudge = true
const { voucherNumber } = this.dataFlow
this.form.voucherNumber = voucherNumber
}
this.getFormData()
computed: {
// id
creditIds: function () {
return this.$store.state.system.creditIds
},
},
data () {
return {
moduleName: 'usefulPhrases/openAccount',
visible: false,
cardNumberJudge: false,
idNumberJudge: false,
form: {
//
// identityCard: '', //
idNumber: '',
customerName: '', //
currency: '', //
goldLogo: '', //
voucherType: '', //
monthDeposit: '', //
depositTerm: '', //
extendDepositTarget: '', //
voucherNumber: '', //
drawPassword: '', //
//
clientNumber: '', //
certificateType: 83, //
},
formName: {
//
// identityCard: '', //
idNumber: '身份证',
customerName: '客户姓名', //
currency: '币种', //
goldLogo: '钞汇标识', //
voucherType: '凭证类型', //
monthDeposit: '月存金额', //
depositTerm: '存期', //
extendDepositTarget: '续存标识', //
voucherNumber: '凭证号码', //
drawPassword: '支付密码', //
//
clientNumber: '客户号', //
certificateType: '证件类型', //
},
rules: {
customerName: vercustomer,
currency: [
{
required: true,
message: '请选择币种',
trigger: 'blur'
}
],
goldLogo: [
{
required: true,
message: '请选择钞汇标识',
trigger: 'blur'
}
],
voucherType: [
{
required: true,
message: '请选择凭证类型',
trigger: 'blur'
}
],
monthDeposit: [
{
required: true,
message: '请输入月存金额',
trigger: 'blur'
}
],
depositTerm: [
{
required: true,
message: '请选择存期',
trigger: 'blur'
}
],
extendDepositTarget: [
{
required: true,
message: '请选择续存标识',
trigger: 'blur'
}
],
},
myTable2: {
158: {
prop: 'certificateType',//
type: '1',
"subjectId": 19,
opt1: [
{
id: 203,
name: '有'
},
// 169: {
// prop: 'customerManage',//
// type: '3',
// "subjectId": 27,
// },
160: {
prop: 'clientNumber',//
type: '3',
"subjectId": 6,
}
},
myTable: {
159: {
prop: 'idNumber',//
type: '3',
{
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: '连续两年亏损'
},
161: {
prop: 'customerName',//
type: '3',
"subjectId": 7,
{
id: 214,
name: '连续三年亏损'
},
{
id: 215,
name: '连续五年亏损'
},
162: {
prop: 'currency',//
type: '1',
"subjectId": 8,
],
opt4: [
{
id: 216,
name: '业内优秀'
},
163: {
prop: 'goldLogo',//
type: '1',
"subjectId": 9,
{
id: 217,
name: '业内平均水平'
},
164: {
prop: 'voucherType',//
type: '1',
"subjectId": 11,
{
id: 218,
name: '业内平均水平以下'
},
166: {
prop: 'voucherNumber',//
type: '3',
"subjectId": 44,
],
opt5: [
{
id: 219,
name: '很有发展潜力'
},
167: {
prop: 'drawPassword',
type: '3',
"subjectId": 17,
{
id: 220,
name: '待考察'
},
168: {
prop: 'monthDeposit',//
type: '3',
"subjectId": 31,
{
id: 221,
name: '前景一般'
},
170: {
prop: 'extendDepositTarget',//
type: '1',
"subjectId": 37,
{
id: 222,
name: '前景堪忧'
},
],
form: {
profitRecord: 208,
leadershipAdaptabilityAndDevelopment: 205,
leadershipStyleAndConduct: 205,
leadershipEducation: 203,
leadershipManagement: 205,
enterpriseDevelopmentCapability: 216,
enterpriseDevelopmentProspects: 219,
corporateReputation: 205,
haveAnyBadCreditRecords: 204,
gradeEvaluationOtherRiskSituations: '',
},
rules: {
surveyDate: [
{
required: true,
message: '请选择调查日期',
trigger: 'change'
}
],
},
submited: 0
}
@ -264,102 +199,17 @@ export default {
},
methods: {
// userName,
// peopleNumber,
// idNumber,
// currency:'CNY',
// goldLogo:'',
...mapMutations({
changeShowGoods: 'system/changeShowGoods',
setDataFlow: 'system/setDataFlow',
setNeedsModule: 'system/setNeedsModule',
setPopId: 'system/setPopId',
setTipsOperate: 'system/setTipsOperate'
}),
getDataBlur () {
// console.log('???')
},
popUp1 (text) {
this.setTipsOperate('请刷身份证');
this.setPopId('1399')
sessionStorage.setItem('computerPath', this.$route.fullPath)
this.$router.push('/counter/list/')
},
popUp2 (text) {
this.setTipsOperate('请刷银行卡');
this.setPopId('166')
sessionStorage.setItem('computerPath', this.$route.fullPath)
this.$router.push('/counter/list/')
},
popUp3 (text) {
this.setTipsOperate('请在密码器输入密码');
this.setPopId('167')
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)
async submit () {
try {
const { data } = await creditEvaluationInput({
...this.creditIds,
...this.form,
})
this.$message[data.status === 200 ? 'success' : 'error']('创建成功!')
setTimeout(this.$router.push('/counter/list/manage/orporateLoans-application'), 1500)
} catch { (e) => { } }
},
submit () { },
submitForm () {
},
submitForm2 () {
// let nomUsefulPhrasesOpenCard = sessionStorage.getItem('nomUsefulPhrasesOpenCard')
// let nomUsefulPhrasesOpenCard2 = sessionStorage.getItem('nomUsefulPhrasesOpenCard2')
// let nomUsefulPhrasesOpenPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword')
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155'
const cards = [
{
key: '159,13'
}
// {
// 1399: nomUsefulPhrasesOpenCard2
// },
// {
// 166: nomUsefulPhrasesOpenCard
// },
// {
// 167: nomUsefulPhrasesOpenPassword,
// "subjectId": 17,
// }
]
this.setDataFlow(this.form)
autoPlay(parentId, this.form, this.myTable2, this.myTable, cards)
this.submited = 1
},
ismoney: ismoney,
checkHanzi: checkHanzi,
checkName: checkName,
inputListen: inputListen
},
computed: {
...mapGetters({
dataFlow: 'system/dataFlow',
needsModule: 'system/needsModule',
idCardNumber: 'system/idCardNumber',
inMyWork: 'system/inMyWork',
getSelectList: 'system/getSelectList'
})
}
}
</script>
<style lang='scss' scoped>

@ -17,10 +17,10 @@
<div class="form-wrap">
<template v-if="activeIndex === '1'">
<Basic v-if="!curStep" @updateStep="updateStep" />
<ImportReport v-else-if="curStep === 1" @updateStep="updateStep" />
<PreLoan v-else-if="curStep === 2" @updateStep="updateStep" />
<Rating v-else-if="curStep === 3" @updateStep="updateStep" />
<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="activeIndex === '2'" />
<template v-if="activeIndex === '3'">
@ -74,7 +74,7 @@ export default {
},
methods: {
handleSelect (val) {
this.curStep = 1
this.curStep = 0
this.text = this.textObj[val]
this.activeIndex = val
this.cacheVal = val

@ -120,7 +120,7 @@
</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" @change="interestStartDateChange"></el-date-picker>
value-format="yyyy-MM-dd" @change="maturityDateCalc"></el-date-picker>
</el-form-item>
<el-form-item label="计息方式">
<el-input value="按年浮动计息" disabled />
@ -146,7 +146,7 @@
<el-input v-model="form.contractNo" disabled />
</el-form-item>
<el-form-item label="贷款期限" prop="loanTerm">
<el-select v-model="form.loanTerm" placeholder="请选择">
<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>
@ -164,7 +164,7 @@
<el-input value="抵押" disabled />
</el-form-item>
<el-form-item label="利息总额" prop="interestTotal">
<el-input v-model="form.interestTotal" />
<el-input v-model="form.interestTotal" disabled />
</el-form-item>
</el-col>
</el-form>
@ -175,9 +175,12 @@
<div class="text-center">
<template v-if="isDetail">
<el-button @click="showLoan" type="primary" class="submitBtn" v-throttle>放款</el-button>
<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>
@ -190,12 +193,23 @@
<el-button type="primary" @click="loanSubmit">确定</el-button>
</span>
</el-dialog>
<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>
</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 } from '@/api/http'
import { addOperation, personalBasicSave, loanContractSave, personalBasicFind, grantALoan, operationExtension } from '@/api/http'
import Util from '@/libs/util'
const moduleName = 'personalLoans/detail'
@ -214,7 +228,8 @@ export default {
data () {
return {
moduleName,
isDetail: !!this.$route.query.show,
isDetail: !!this.$route.query.show, //
isExtension: this.$route.query.show === '2', //
id: this.$route.query.id,
visible: false,
cardNumberJudge: false,
@ -348,6 +363,51 @@ export default {
curStep: 1,
disbursementDate: '',
loanVisible: false,
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个月'
},
],
}
},
beforeDestroy () {
@ -373,7 +433,7 @@ export default {
//
const { data } = await personalBasicFind(this.id)
this.basicForm = data.data
this.form = data.data.bankPersonalLoanContractInfo
if (data.data.bankPersonalLoanContractInfo) this.form = data.data.bankPersonalLoanContractInfo
} else if (sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) {
//
sessionStorage.removeItem('nomUsefulPhrasesOpenCard2')
@ -406,11 +466,12 @@ export default {
sessionStorage.setItem('computerPath', this.$route.fullPath)
this.$router.push('/counter/list/')
},
//
interestStartDateChange (val) {
if (val) {
const date = new Date(val)
date.setMonth(this.form.loanTerm)
//
maturityDateCalc () {
const { interestStartDate, loanTerm } = this.form
if (interestStartDate && loanTerm) {
const date = new Date(interestStartDate)
date.setMonth(loanTerm)
this.form.maturityDate = Util.formatDate('yyyy-MM-dd', date)
}
},
@ -430,16 +491,18 @@ export default {
const { data } = await personalBasicSave(basicForm)
this.setCreditIds({
personalLoanId: data.personalLoanId,
applicationDate: data.applicationDate,
contractNo: data.contractNo,
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 {
//
this.$refs.form.validate(myValidate(() => {
this.visible = true
// this.visible = true
this.saveContract()
}, this.$refs))
}
},
@ -449,23 +512,40 @@ export default {
const { form } = this
form.personalLoanId = this.creditIds.personalLoanId
form.contractNo = this.creditIds.contractNo
await loanContractSave(form)
this.$router.push('/counter/list/manage/personalLoans')
const { data } = await loanContractSave(form)
data.status === 200 ? this.$router.push('/counter/list/manage/personalLoans') : this.$message.error(data.message)
} catch { (e) => { } }
},
//
showLoan () {
this.loanVisible = true
},
//
async loanSubmit () {
if (!this.disbursementDate) return this.$message.error('请选择放款日期!')
await grantALoan({
const { data } = await grantALoan({
id: this.form.contractId,
disbursementDate: this.disbursementDate,
})
this.$message.success('放款成功!')
setTimeout(this.$router.back, 1500)
this.$message[data.status === 200 ? 'success' : 'error'](data.message)
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)
setTimeout(this.$router.push('/counter/list/manage/personalLoans'), 1500)
},
phoneListen,
checkName,
},

@ -31,10 +31,12 @@
</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">
<el-table-column label="操作" align="center" width="250">
<template slot-scope="scope">
<el-button @click="toDetail(scope.row)" size="small">查看</el-button>
<el-button @click="back(scope.row)" size="small">展期</el-button>
<!-- 没加合同的才能编辑 -->
<el-button @click="toDetail(scope.row, 1)" size="small">{{ scope.row.contractNo ? '查看' : '编辑' }}</el-button>
<el-button v-if="!scope.row.renewalOrNot" @click="toDetail(scope.row, 2)" size="small">展期</el-button>
<el-button @click="repayment(scope.row)" size="small">还款计划</el-button>
</template>
</el-table-column>
</el-table>
@ -42,6 +44,47 @@
<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">
<el-option label="待还款"></el-option>
<el-option label="未还款"></el-option>
<el-option label="已还款"></el-option>
</el-select>
</el-form-item>
</el-form>
<div>
<el-button @click="batchRepayment" size="small" type="primary">批量还款</el-button>
<el-button @click="batchOverdue" size="small" type="primary">批量逾期</el-button>
</div>
</div>
<el-table :data="repayments" stripe header-align="center" @selection-change="handleSelectionChangeRepayment"
row-key="id">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
<el-table-column prop="contractAmount" label="还款周期" align="center"></el-table-column>
<el-table-column prop="contractAmount" label="应还款" align="center"></el-table-column>
<el-table-column prop="contractAmount" label="还款状态" align="center"></el-table-column>
<el-table-column label="操作" align="center" width="150">
<template slot-scope="scope">
<el-button @click="back(scope.row)" size="small">还款</el-button>
<el-button @click="repayment(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="handleSelectionChangeRepayment" :total="totalRepayment"></el-pagination>
</div>
</el-dialog>
</div>
</template>
@ -49,7 +92,7 @@
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig'
import MyDialog from '@/components/dialogTwo'
import NeedBefore from '@/components/needBefore'
import { addOperation, personalBasicList } from '@/api/http';
import { addOperation, personalBasicList, repaymentPlan } from '@/api/http';
const moduleName = 'personalLoans/list'
import { mapMutations, mapGetters } from 'vuex'
@ -76,7 +119,21 @@ export default {
needBefore: '',
text: '柜员现金轧账',/* 顶部文字 */
visible: false,
submited: 0
submited: 0,
repaymentVisible: false,
repayments: [],
pageRepayment: 1,
pageSizeRepayment: 10,
totalRepayment: 0,
multipleSelection: [],
date: [],
form: {
periodEnd: '',
periodStart: '',
status: '',
},
curRow: {},
}
},
watch: {
@ -85,7 +142,17 @@ export default {
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()
@ -111,11 +178,48 @@ export default {
this.page = val
this.getData()
},
toDetail (row) {
this.$router.push('/counter/list/manage/personalLoans-detail?show=1&id=' + row.personalLoanId)
toDetail (row, show) {
this.$router.push(`/counter/list/manage/personalLoans-detail?show=${show === 2 ? 2 : row.contractNo ? 1 : ''}&id=${row.personalLoanId}`)
},
back (row) {
},
//
async repayment (row) {
this.curRow = row
this.repaymentVisible = true
this.getRepayment()
},
//
async getRepayment (row) {
this.repaymentVisible = true
const { data } = await repaymentPlan({
pageNum: this.pageRepayment,
pageSize: this.pageSizeRepayment,
...this.form,
personalLoanId: this.curRow.personalLoanId,
})
this.list = data.list.records
this.total = data.list.total
},
initRepayment () {
this.pageRepayment = 1
this.getRepayment()
},
handleCurrentChange (val) {
this.pageRepayment = val
this.getRepayment()
},
handleSelectionChangeRepayment (val) {
this.multipleSelection = val
},
//
batchRepayment () {
},
//
batchOverdue () {
},
tableRowClassName,
},
@ -156,4 +260,10 @@ export default {
left: 50%;
transform: translate(-50%, -20%);
}
/deep/.filter-form {
.el-form-item {
margin-bottom: 0;
}
}
</style>

@ -86,7 +86,10 @@ const allGoods = {
701: { name: '现金支票回单', src: require('@/assets/img/goods/xjzp.png'), id: 701 },
596: { name: '银行承兑协议一联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 596 },
702: { name: '银行承兑协议二联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 702 },
597: { name: '银行承兑协议三联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 597 }
597: { name: '银行承兑协议三联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 597 },
770: { name: '资产负债表', src: require('@/assets/img/goods/zcfzb.jpg'), id: 770 },
771: { name: '损益表', src: require('@/assets/img/goods/syb.jpg'), id: 771 },
772: { name: '现金流量表', src: require('@/assets/img/goods/xjllb.jpg'), id: 772 },
// // 有图片的
// 407: {name:407,src:require('@/assets/img/goods/businessSpecialApplication.png'),id:407},
@ -1407,7 +1410,7 @@ const myInitState = {
}
},
'业务三十五': {
id: 704,
id: 705,
name: '外汇业务',
data: [13, 16, 407],
needs: [],
@ -1427,6 +1430,35 @@ const myInitState = {
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
'业务三十六': {
id: 844,
name: '贷款业务',
data: [13, 16, 770, 771, 772],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
@ -2699,7 +2731,7 @@ export default {
}
},
'业务三十五': {
id: 704,
id: 705,
name: '外汇业务',
data: [13, 16, 407],
needs: [],
@ -2719,6 +2751,35 @@ export default {
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
'业务三十六': {
id: 844,
name: '贷款业务',
data: [13, 16, 770, 771, 772],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
@ -2732,6 +2793,7 @@ export default {
allDataFlow: { ...allDataFlow },
isCredit: false,
creditIds: {},
creditImportIds: [],
},
mutations: {
// 设置tipDialog组件提示的信息。这个组件是根据UI设计的。
@ -3194,6 +3256,14 @@ export default {
setCreditIds (state, val) {
state.creditIds = val
},
// 缓存公司贷款导入报表的id
setCreditImportIds (state, val) {
if (val) {
state.creditImportIds.push(val)
} else {
state.creditImportIds = []
}
},
},
actions: {
},
@ -3310,8 +3380,6 @@ export default {
for (let item of state.businessSelect[state.businessKey].resource) {
arr.push(allGoods[item])
}
} else {
// return
}
return arr
},

Loading…
Cancel
Save