贷款业务

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 { get, post, deletes, put } from './api.js'
// import axios from "./"; const host = 'http://192.168.31.51:9000'
export const getProjectBySystemId = (params) => { export const getProjectBySystemId = (params) => {
return get('/occupationlab/occupationlab/projectManage/getProjectBySystemId', params) return get('/occupationlab/occupationlab/projectManage/getProjectBySystemId', params)
} }
@ -48,7 +48,10 @@ export const reportDetail = (reportId) => {
}) })
} }
export const creditEvaluationInput = data => { 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) => { export const loanContractSave = (data) => {
@ -69,4 +72,10 @@ export const personalBasicSave = (data) => {
} }
export const grantALoan = (data) => { export const grantALoan = (data) => {
return post(`/judgment/bankPersonalLoanContractInfo/grantALoan?contractId=${data.id}&disbursementDate=${data.disbursementDate}`) 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> <p :title="item.name">{{ item.name }}</p>
<img src="@/assets/img/seal/sealed.png" alt="" style="width: 50%; right: -40px;top: 40px;" class="absolute" <img src="@/assets/img/seal/sealed.png" alt="" style="width: 50%; right: -40px;top: 40px;" class="absolute"
v-if="finishSealedArr.includes(item.id)"> 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> </div>
<div class="goods" :class="{ active: showGoods }" @click="toggleGoods"> <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 v-for="item in sealCoverIt" :key="item.id" :item="item">
</seal-name> </seal-name>
</div> </div>
<!-- <p class="text">{{item.name}}</p> -->
</div> </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>
</div> </div>
@ -293,7 +283,7 @@
</div> </div>
</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" <div class="img-wrap" v-for="(item, index) in receptionList"
:class="{ checked: commonChecked.includes(item.id), 'img-wrap': true }" @click='dislodgeItem(index)' :class="{ checked: commonChecked.includes(item.id), 'img-wrap': true }" @click='dislodgeItem(index)'
:key="item.id"> :key="item.id">
@ -345,7 +335,7 @@
</div> </div>
<!-- 暂时未确定是否公共使用一个弹框 receptionList--> <!-- 暂时未确定是否公共使用一个弹框 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)' <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"> :class="{ checked: commonChecked.includes(item.id), 'img-wrap': true }" :key="item.id">
<!-- <img :src="item.src" class="file" alt="" /> --> <!-- <img :src="item.src" class="file" alt="" /> -->
@ -1201,7 +1191,8 @@ export default {
outThings: 'system/outThings', outThings: 'system/outThings',
outThings2: 'system/outThings2', outThings2: 'system/outThings2',
outThingsGoods: 'system/outThingsGoods', outThingsGoods: 'system/outThingsGoods',
setTipsOperate: 'system/setTipsOperate' setTipsOperate: 'system/setTipsOperate',
setCreditImportIds: 'system/setCreditImportIds',
}), }),
// //
@ -1516,9 +1507,7 @@ export default {
} }
} else { } else {
this.controlGoodsDblClickFn = setTimeout(() => { this.controlGoodsDblClickFn = setTimeout(() => {
if (this.myMap) { if (this.myMap) {
this.outThingsGoods([item.id]) this.outThingsGoods([item.id])
this.pushThings({ idArr: [item.id], name: this.myMap }) this.pushThings({ idArr: [item.id], name: this.myMap })
} else { } else {
@ -1530,7 +1519,6 @@ export default {
this.clickNum2 = 0 this.clickNum2 = 0
}, 200) }, 200)
} }
}, },
checkSeal (id) {/* 选中印章 */ checkSeal (id) {/* 选中印章 */
this.sealChecked.includes(id) ? this.sealChecked.splice(this.sealChecked.indexOf(id), 1) : this.sealChecked.push(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) this.changeShowGoods(false)
} else { } else {
// Logo
// if(this.myMap) {
// this.finishGoods[this.myMap] = true
// }
let formList = [] let formList = []
// this.toggleGoods()
// this.$message.success(`${this.popText}`)
// nbm0 // nbm0
if (this.nbm == 0) { if (this.nbm == 0) {
let projectId = sessionStorage.getItem('projectId') let projectId = sessionStorage.getItem('projectId')
let startTime = sessionStorage.getItem('startTime') 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": "" }) } 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) const tmpGoods = this.goodState.map(item => item.id)
// this.outThings({name: this.myMap, idArr: [ ...tmpGoods ]})
// this.pushThingsGoods([...tmpGoods])
let params = { let params = {
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,555', parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,555',
lcJudgmentRuleReq: formList, lcJudgmentRuleReq: formList,
@ -1928,8 +1904,6 @@ export default {
clickList = [] clickList = []
} else if (this.nbm == 3) { // } else if (this.nbm == 3) { //
let clickList = this.importantChecked let clickList = this.importantChecked
// console.log("🚀 ~ file: index.vue:2220 ~ popSure ~ clickList:", clickList)
// debugger
// 11 (439) // 11 (439)
if (clickList.length === 1 && clickList[0] === 439) { if (clickList.length === 1 && clickList[0] === 439) {
@ -2098,7 +2072,6 @@ export default {
} }
let projectId = sessionStorage.getItem('projectId') let projectId = sessionStorage.getItem('projectId')
let startTime = sessionStorage.getItem('startTime') let startTime = sessionStorage.getItem('startTime')
console.log('this.goodState=>', this.goodState)
let id let id
for (var i = 0; i < this.goodState.length; i++) { for (var i = 0; i < this.goodState.length; i++) {
if (this.goodState[i].id == 432) { if (this.goodState[i].id == 432) {
@ -2181,8 +2154,15 @@ export default {
this.setTipsOperate('验证身份成功!') this.setTipsOperate('验证身份成功!')
}).catch((error) => { }).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)) { if (this.nbm !== 4 && this.nbm !== 1 && this.nbm !== 5 && this.nbm !== 1 && !(this.nbm === 0 && this.peopleDo !== 1)) {

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

@ -42,7 +42,7 @@
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig' import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig'
import { myValidate, checkHanzi, inputListen } from '@/utils/utilFunction.js' import { myValidate, checkHanzi, inputListen } from '@/utils/utilFunction.js'
import { mapState, mapMutations, mapGetters } from 'vuex' import { mapState, mapMutations, mapGetters } from 'vuex'
import { addOperation, getOperation } from '@/api/http'; import { addOperation, companyLoanList } from '@/api/http';
import MyTitle from '@/components/myTitle' import MyTitle from '@/components/myTitle'
export default { export default {
name: 'index', name: 'index',
@ -62,13 +62,36 @@ export default {
submited: 0 submited: 0
} }
}, },
watch: {
keyword: function (val) {
clearTimeout(this.searchTimer);
this.searchTimer = setTimeout(() => {
this.initData()
}, 500)
},
},
mounted () { mounted () {
// this.initData()
}, },
methods: { methods: {
...mapMutations({ ...mapMutations({
setTipsOperate: 'system/setTipsOperate' 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) { handleCurrentChange (val) {
this.page = val; this.page = val;
}, },

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

@ -2,135 +2,96 @@
<template> <template>
<div> <div>
<div class="upload-wrap"> <div class="upload-wrap">
<Upload @onSuccess="uploadSuccess"> <div>
<div slot="trigger"> <el-button :type="!creditImportIds.includes(770) ? 'primary' : ''"
<el-button type="primary">点击导入资产负债表</el-button> @click="showData('导入报表', 12)">点击导入资产负债表</el-button>
</div> <p v-if="creditImportIds.includes(770)" class="already">已导入</p>
<template slot="tip"> </div>
<div></div>
</template>
</Upload>
<img class="icon" src="@/assets/img/arrow-right.png" alt=""> <img class="icon" src="@/assets/img/arrow-right.png" alt="">
<Upload @onSuccess="uploadSuccess">
<div slot="trigger"> <div>
<el-button type="primary">点击导入损益表</el-button> <el-button :type="!creditImportIds.includes(771) ? 'primary' : ''"
</div> @click="showData('导入报表', 13)">点击导入损益表</el-button>
<template slot="tip"> <p v-if="creditImportIds.includes(771)" class="already">已导入</p>
<div></div> </div>
</template>
</Upload>
<img class="icon" src="@/assets/img/arrow-right.png" alt=""> <img class="icon" src="@/assets/img/arrow-right.png" alt="">
<Upload @onSuccess="uploadSuccess">
<div slot="trigger"> <div>
<el-button type="primary">点击导入现金流量表</el-button> <el-button :type="!creditImportIds.includes(772) ? 'primary' : ''"
</div> @click="showData('导入报表', 14)">点击导入现金流量表</el-button>
<template slot="tip"> <p v-if="creditImportIds.includes(772)" class="already">已导入</p>
<div></div> </div>
</template>
</Upload>
</div> </div>
<div class="text-center m-t-20"> <div class="text-center m-t-20">
<el-button @click="$emit('updateStep', 0)" type="primary" class="submitBtn" v-throttle>上一步</el-button> <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> <el-button @click="next" type="primary" class="submitBtn" v-throttle>下一步</el-button>
</div> </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> </div>
</template> </template>
<script> <script>
import Upload from '@/components/upload';
import { addOperation, creditEvaluationInput } from '@/api/http' import { addOperation, creditEvaluationInput } from '@/api/http'
import { mapMutations, mapGetters } from 'vuex' import { mapMutations, mapGetters } from 'vuex'
import TipsBefore from '@/mixins/tipsBefore'
const moduleName = 'creditEva/importReport'
export default { export default {
components: {
Upload
},
computed: { computed: {
popText: function () {/* 文字 */ creditImportIds: function () {
return this.$store.state.system.popText; return this.$store.state.system.creditImportIds
}, },
showGoods: function () { // id
return this.$store.state.system.showGoods creditIds: function () {
}, return this.$store.state.system.creditIds
//
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;
}, },
}, },
data () { data () {
return { return {
commonChecked: [],// form: {},
receptionList: [],
} }
}, },
mounted () { mounted () {
this.getDetail()
console.log(111, this.$parent.$parent.$parent.showData)
}, },
methods: { methods: {
...mapMutations({ ...mapMutations({
changeShowGoods: 'system/changeShowGoods', setCreditImportIds: 'system/setCreditImportIds',
setTipsOperate: 'system/setTipsOperate',
}), }),
showData (type, nbm) {/* 展示弹窗-type为弹窗标题文字 */ //
this.nbm = nbm async getDetail () {
// this.setCreditImportIds()
this.changeShowGoods(true) if (this.id) {
if (type !== '系统') { //
this.$store.commit('system/changePop', { show: true, text: type, id: this.id }) const { data } = await personalBasicFind(this.id)
this.basicForm = data.data
this.form = data.data.bankPersonalLoanContractInfo
} }
}, },
closePop () {// showData (type, nbm) {/* 展示弹窗-type为弹窗标题文字 */
// v-drag this.$parent.$parent.$parent.showData(type, nbm)
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
}, },
next () { 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; align-items: center;
min-height: 300px; min-height: 300px;
.already {
margin-top: 8px;
font-size: 14px;
text-align: center;
color: #606060;
}
.icon { .icon {
margin: 0 40px; margin: 0 40px;
} }

@ -2,53 +2,72 @@
<template> <template>
<div> <div>
<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 ref="form" :model="form" label-width="200px" :rules="rules">
<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">
<el-form-item label="调查日期" prop="customerName"> <el-form-item label="调查日期" prop="surveyDate">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="贸易融资记录" prop="certificateType"> <el-form-item label="贸易融资记录" prop="tradeFinancingRecords">
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType"> <el-select v-model="form.tradeFinancingRecords" placeholder="请选择" ref="tradeFinancingRecords"
<el-option label="身份证" :value="83"> </el-option> style="width: 100%">
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="三年内较大经营投资失误" prop="customerName"> <el-form-item label="三年内较大经营投资失误" prop="businessInvestmentErrors">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="企业与客户管理分析" prop="customerName"> <el-form-item label="企业与客户管理分析" prop="enterpriseCustomerAnalysis">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="重大事故赔偿" prop="customerName"> <el-form-item label="重大事故赔偿" prop="compensationMajorAccidents">
<el-select v-model.trim="form.certificateType" placeholder="请选择"> <el-select v-model="form.compensationMajorAccidents" placeholder="请选择" ref="compensationMajorAccidents"
<el-option label="身份证" :value="83"> </el-option> style="width: 100%">
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option>
</el-select> </el-select>
</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="对外不利担保" prop="customerName"> <el-form-item label="对外不利担保" prop="externalUnfavorableGuarantee">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="经营状况" prop="customerName"> <el-form-item label="经营状况" prop="businessStatus">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="坏账准备金提取" prop="customerName"> <el-form-item label="坏账准备金提取" prop="badDebtReserves">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="重大法律诉讼" prop="customerName"> <el-form-item label="重大法律诉讼" prop="majorLegalLitigation">
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="贷款风控情况" prop="customerName"> <el-form-item label="贷款风险情况" prop="loanRiskSituation">
<el-select v-model.trim="form.certificateType" placeholder="请选择"> <el-select v-model="form.loanRiskSituation" placeholder="请选择" ref="loanRiskSituation" style="width: 100%">
<el-option label="身份证" :value="83"> </el-option> <el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </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="其他风险情况" prop="customerName"> <el-form-item label="其他风险情况" prop="preLoanOtherRiskSituations">
<el-input v-model="form.customerName" type="textarea"></el-input> <el-input v-model="form.preLoanOtherRiskSituations" type="textarea" maxlength="100"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form> </el-form>
@ -62,205 +81,119 @@
</template> </template>
<script> <script>
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js';
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' import { addOperation, creditEvaluationInput } from '@/api/http'
const moduleName = 'usefulPhrases/openAccount'
import { mapMutations, mapGetters } from 'vuex' 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 { 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 () { data () {
return { return {
moduleName: 'usefulPhrases/openAccount', opt1: [
visible: false, {
cardNumberJudge: false, id: 203,
idNumberJudge: false, name: '有'
},
{
id: 204,
name: '无'
},
],
opt2: [
{
id: 205,
name: '优'
},
{
id: 206,
name: '良'
},
{
id: 207,
name: '不良'
},
],
form: { form: {
// surveyDate: '',
// identityCard: '', // externalUnfavorableGuarantee: 204,
idNumber: '', tradeFinancingRecords: 204,
customerName: '', // businessStatus: 205,
currency: '', // businessInvestmentErrors: 204,
goldLogo: '', // badDebtReserves: 204,
voucherType: '', // enterpriseCustomerAnalysis: 205,
monthDeposit: '', // majorLegalLitigation: 204,
depositTerm: '', // compensationMajorAccidents: 204,
extendDepositTarget: '', // loanRiskSituation: 204,
voucherNumber: '', // preLoanOtherRiskSituations: '',
drawPassword: '', //
//
clientNumber: '', //
certificateType: 83, //
},
formName: {
//
// identityCard: '', //
idNumber: '身份证',
customerName: '客户姓名', //
currency: '币种', //
goldLogo: '钞汇标识', //
voucherType: '凭证类型', //
monthDeposit: '月存金额', //
depositTerm: '存期', //
extendDepositTarget: '续存标识', //
voucherNumber: '凭证号码', //
drawPassword: '支付密码', //
//
clientNumber: '客户号', //
certificateType: '证件类型', //
}, },
rules: { rules: {
customerName: vercustomer, surveyDate: [
currency: [
{ {
required: true, required: true,
message: '请选择币种', message: '请选择调查日期',
trigger: 'blur' trigger: 'change'
} }
], ],
goldLogo: [ externalUnfavorableGuarantee: [
{ {
required: true, required: true,
message: '请选择钞汇标识', message: '请选择对外不利担保',
trigger: 'blur' trigger: 'change'
} }
], ],
voucherType: [ tradeFinancingRecords: [
{ {
required: true, required: true,
message: '请选择凭证类型', message: '请选择贸易融资记录',
trigger: 'blur' trigger: 'change'
} }
], ],
monthDeposit: [ businessStatus: [
{ {
required: true, required: true,
message: '请输入月存金额', message: '请选择经营状况',
trigger: 'blur' trigger: 'change'
} }
], ],
depositTerm: [ businessInvestmentErrors: [
{ {
required: true, required: true,
message: '请选择存期', message: '请选择三年内较大经营投资失误',
trigger: 'blur' trigger: 'change'
} }
], ],
extendDepositTarget: [ badDebtReserves: [
{ {
required: true, required: true,
message: '请选择续存标识', message: '请选择坏账准备金提取',
trigger: 'blur' 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 submited: 0
} }
@ -269,94 +202,17 @@ export default {
}, },
methods: { methods: {
// userName, async next () {
// peopleNumber, this.$refs.form.validate(myValidate(async () => {
// idNumber, try {
// currency:'CNY', await creditEvaluationInput({
// goldLogo:'', ...this.creditIds,
...mapMutations({ ...this.form,
changeShowGoods: 'system/changeShowGoods', })
setDataFlow: 'system/setDataFlow', this.$emit('updateStep', 3)
setNeedsModule: 'system/setNeedsModule', } catch { (e) => { } }
setPopId: 'system/setPopId', }, this.$refs))
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)
}, },
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: { computed: {
...mapGetters({ ...mapGetters({
@ -364,8 +220,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>

@ -7,43 +7,57 @@
<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="customerName"> <el-form-item label="盈利记录" required>
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="领导作风品行" prop="certificateType"> <el-form-item label="领导作风品行" required>
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType"> <el-select v-model="form.leadershipStyleAndConduct" placeholder="请选择" style="width: 100%">
<el-option label="身份证" :value="83"> </el-option> <el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </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 v-model="form.customerName"></el-input> <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>
<el-form-item label="企业发展前景" prop="customerName"> <el-form-item label="企业发展前景" required>
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="有无不良信用记录" prop="customerName"> <el-form-item label="有无不良信用记录" required>
<el-select v-model.trim="form.certificateType" placeholder="请选择"> <el-select v-model="form.haveAnyBadCreditRecords" placeholder="请选择" style="width: 100%">
<el-option label="身份证" :value="83"> </el-option> <el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option>
</el-select> </el-select>
</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="领导应变开拓" prop="customerName"> <el-form-item label="领导应变开拓" required>
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="领导才敢教育" prop="customerName"> <el-form-item label="领导才干教育" required>
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="企业开发能力" prop="customerName"> <el-form-item label="企业开发能力" required>
<el-input v-model="form.customerName"></el-input> <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>
<el-form-item label="企业信誉" prop="customerName"> <el-form-item label="企业信誉" required>
<el-input v-model="form.customerName"></el-input> <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-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="其他风控情况" prop="customerName"> <el-form-item label="其他风险情况">
<el-input v-model="form.customerName" type="textarea"></el-input> <el-input v-model="form.gradeEvaluationOtherRiskSituations" type="textarea"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form> </el-form>
@ -57,205 +71,126 @@
</template> </template>
<script> <script>
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js';
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' import { addOperation, creditEvaluationInput } from '@/api/http'
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'
export default { export default {
name: '', computed: {
props: {}, // id
components: { creditIds: function () {
NeedBefore, return this.$store.state.system.creditIds
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 () { data () {
return { return {
moduleName: 'usefulPhrases/openAccount', opt1: [
visible: false, {
cardNumberJudge: false, id: 203,
idNumberJudge: false, 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: '证件类型', //
},
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,
}, },
// 169: { {
// prop: 'customerManage',// id: 204,
// type: '3', name: '无'
// "subjectId": 27, },
// }, ],
160: { opt2: [
prop: 'clientNumber',// {
type: '3', id: 205,
"subjectId": 6, name: '优'
} },
}, {
myTable: { id: 206,
159: { name: '良'
prop: 'idNumber',// },
type: '3', {
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',// id: 214,
type: '3', name: '连续三年亏损'
"subjectId": 7, },
{
id: 215,
name: '连续五年亏损'
}, },
162: { ],
prop: 'currency',// opt4: [
type: '1', {
"subjectId": 8, id: 216,
name: '业内优秀'
}, },
163: { {
prop: 'goldLogo',// id: 217,
type: '1', name: '业内平均水平'
"subjectId": 9,
}, },
164: { {
prop: 'voucherType',// id: 218,
type: '1', name: '业内平均水平以下'
"subjectId": 11,
}, },
166: { ],
prop: 'voucherNumber',// opt5: [
type: '3', {
"subjectId": 44, id: 219,
name: '很有发展潜力'
}, },
167: { {
prop: 'drawPassword', id: 220,
type: '3', name: '待考察'
"subjectId": 17,
}, },
168: { {
prop: 'monthDeposit',// id: 221,
type: '3', name: '前景一般'
"subjectId": 31,
}, },
170: { {
prop: 'extendDepositTarget',// id: 222,
type: '1', name: '前景堪忧'
"subjectId": 37,
}, },
],
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 submited: 0
} }
@ -264,102 +199,17 @@ export default {
}, },
methods: { methods: {
// userName, async submit () {
// peopleNumber, try {
// idNumber, const { data } = await creditEvaluationInput({
// currency:'CNY', ...this.creditIds,
// goldLogo:'', ...this.form,
...mapMutations({ })
changeShowGoods: 'system/changeShowGoods', this.$message[data.status === 200 ? 'success' : 'error']('创建成功!')
setDataFlow: 'system/setDataFlow', setTimeout(this.$router.push('/counter/list/manage/orporateLoans-application'), 1500)
setNeedsModule: 'system/setNeedsModule', } catch { (e) => { } }
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)
}, },
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> </script>
<style lang='scss' scoped> <style lang='scss' scoped>

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

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

@ -31,10 +31,12 @@
</el-table-column> </el-table-column>
<el-table-column v-if="index === '3'" prop="currency" key="3" label="展期期限" align="center"> <el-table-column v-if="index === '3'" prop="currency" key="3" label="展期期限" align="center">
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="150"> <el-table-column label="操作" align="center" width="250">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -42,6 +44,47 @@
<el-pagination background layout="total, prev, pager, next" :current-page="page" <el-pagination background layout="total, prev, pager, next" :current-page="page"
@current-change="handleCurrentChange" :total="total"></el-pagination> @current-change="handleCurrentChange" :total="total"></el-pagination>
</div> </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> </div>
</template> </template>
@ -49,7 +92,7 @@
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig' import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig'
import MyDialog from '@/components/dialogTwo' import MyDialog from '@/components/dialogTwo'
import NeedBefore from '@/components/needBefore' import NeedBefore from '@/components/needBefore'
import { addOperation, personalBasicList } from '@/api/http'; import { addOperation, personalBasicList, repaymentPlan } from '@/api/http';
const moduleName = 'personalLoans/list' const moduleName = 'personalLoans/list'
import { mapMutations, mapGetters } from 'vuex' import { mapMutations, mapGetters } from 'vuex'
@ -76,7 +119,21 @@ export default {
needBefore: '', needBefore: '',
text: '柜员现金轧账',/* 顶部文字 */ text: '柜员现金轧账',/* 顶部文字 */
visible: false, visible: false,
submited: 0 submited: 0,
repaymentVisible: false,
repayments: [],
pageRepayment: 1,
pageSizeRepayment: 10,
totalRepayment: 0,
multipleSelection: [],
date: [],
form: {
periodEnd: '',
periodStart: '',
status: '',
},
curRow: {},
} }
}, },
watch: { watch: {
@ -85,7 +142,17 @@ export default {
this.searchTimer = setTimeout(() => { this.searchTimer = setTimeout(() => {
this.initData() this.initData()
}, 500) }, 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 () { mounted () {
this.initData() this.initData()
@ -111,11 +178,48 @@ export default {
this.page = val this.page = val
this.getData() this.getData()
}, },
toDetail (row) { toDetail (row, show) {
this.$router.push('/counter/list/manage/personalLoans-detail?show=1&id=' + row.personalLoanId) this.$router.push(`/counter/list/manage/personalLoans-detail?show=${show === 2 ? 2 : row.contractNo ? 1 : ''}&id=${row.personalLoanId}`)
}, },
back (row) { 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, tableRowClassName,
}, },
@ -156,4 +260,10 @@ export default {
left: 50%; left: 50%;
transform: translate(-50%, -20%); transform: translate(-50%, -20%);
} }
/deep/.filter-form {
.el-form-item {
margin-bottom: 0;
}
}
</style> </style>

@ -86,7 +86,10 @@ const allGoods = {
701: { name: '现金支票回单', src: require('@/assets/img/goods/xjzp.png'), id: 701 }, 701: { name: '现金支票回单', src: require('@/assets/img/goods/xjzp.png'), id: 701 },
596: { name: '银行承兑协议一联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 596 }, 596: { name: '银行承兑协议一联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 596 },
702: { name: '银行承兑协议二联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 702 }, 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}, // 407: {name:407,src:require('@/assets/img/goods/businessSpecialApplication.png'),id:407},
@ -1407,7 +1410,7 @@ const myInitState = {
} }
}, },
'业务三十五': { '业务三十五': {
id: 704, id: 705,
name: '外汇业务', name: '外汇业务',
data: [13, 16, 407], data: [13, 16, 407],
needs: [], needs: [],
@ -1427,6 +1430,35 @@ const myInitState = {
printer: [], // 打印机 printer: [], // 打印机
resource: [], // 资料 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: [], // 重要空白凭证箱 importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱 commonArr: [], // 普通凭证箱
dataFlow: { dataFlow: {
@ -2699,7 +2731,7 @@ export default {
} }
}, },
'业务三十五': { '业务三十五': {
id: 704, id: 705,
name: '外汇业务', name: '外汇业务',
data: [13, 16, 407], data: [13, 16, 407],
needs: [], needs: [],
@ -2719,6 +2751,35 @@ export default {
printer: [], // 打印机 printer: [], // 打印机
resource: [], // 资料 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: [], // 重要空白凭证箱 importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱 commonArr: [], // 普通凭证箱
dataFlow: { dataFlow: {
@ -2732,6 +2793,7 @@ export default {
allDataFlow: { ...allDataFlow }, allDataFlow: { ...allDataFlow },
isCredit: false, isCredit: false,
creditIds: {}, creditIds: {},
creditImportIds: [],
}, },
mutations: { mutations: {
// 设置tipDialog组件提示的信息。这个组件是根据UI设计的。 // 设置tipDialog组件提示的信息。这个组件是根据UI设计的。
@ -3194,6 +3256,14 @@ export default {
setCreditIds (state, val) { setCreditIds (state, val) {
state.creditIds = val state.creditIds = val
}, },
// 缓存公司贷款导入报表的id
setCreditImportIds (state, val) {
if (val) {
state.creditImportIds.push(val)
} else {
state.creditImportIds = []
}
},
}, },
actions: { actions: {
}, },
@ -3310,8 +3380,6 @@ export default {
for (let item of state.businessSelect[state.businessKey].resource) { for (let item of state.businessSelect[state.businessKey].resource) {
arr.push(allGoods[item]) arr.push(allGoods[item])
} }
} else {
// return
} }
return arr return arr
}, },

Loading…
Cancel
Save