Compare commits
63 Commits
@ -0,0 +1,32 @@ |
||||
diff.astextplain.textconv=astextplain |
||||
filter.lfs.clean=git-lfs clean -- %f |
||||
filter.lfs.smudge=git-lfs smudge -- %f |
||||
filter.lfs.process=git-lfs filter-process |
||||
filter.lfs.required=true |
||||
http.sslbackend=openssl |
||||
http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt |
||||
core.autocrlf=true |
||||
core.fscache=true |
||||
core.symlinks=false |
||||
pull.rebase=false |
||||
credential.https://dev.azure.com.usehttppath=true |
||||
init.defaultbranch=master |
||||
filter.lfs.smudge=git-lfs smudge -- %f |
||||
filter.lfs.process=git-lfs filter-process |
||||
filter.lfs.required=true |
||||
filter.lfs.clean=git-lfs clean -- %f |
||||
credential.http://121.37.12.51:13000.provider=generic |
||||
user.email=728837162@qq.com |
||||
user.name=wangchenguang |
||||
user.password=huoran.123 |
||||
credential.helper=wincred |
||||
core.repositoryformatversion=0 |
||||
core.filemode=false |
||||
core.bare=false |
||||
core.logallrefupdates=true |
||||
core.symlinks=false |
||||
core.ignorecase=true |
||||
remote.origin.url=http://121.37.12.51:13000/huoran/FE_bankTeaching |
||||
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* |
||||
branch.master.remote=origin |
||||
branch.master.merge=refs/heads/master |
@ -1,18 +1,35 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"> |
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_830376_qzecyukz0s.css"> |
||||
<title>银行教学系统</title> |
||||
</head> |
||||
<body> |
||||
<noscript> |
||||
<strong>We're sorry but vms doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
||||
</noscript> |
||||
<div id="app"></div> |
||||
<!-- built files will be auto injected --> |
||||
</body> |
||||
|
||||
<head> |
||||
<meta charset="utf-8" /> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
||||
<link rel="stylesheet" href="//at.alicdn.com/t/font_830376_qzecyukz0s.css" /> |
||||
<title>银行教学系统</title> |
||||
<script> |
||||
var _hmt = _hmt || []; |
||||
(function() { |
||||
var hm = document.createElement('script'); |
||||
hm.src = 'https://hm.baidu.com/hm.js?dbddd0f4ac914f5ff3128012ded035bc'; |
||||
var s = document.getElementsByTagName('script')[0]; |
||||
s.parentNode.insertBefore(hm, s); |
||||
})(); |
||||
</script> |
||||
</head> |
||||
<body> |
||||
<noscript> |
||||
<strong>We're sorry but vms doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
||||
</noscript> |
||||
<div id="app"></div> |
||||
<!-- built files will be auto injected --> |
||||
<script> |
||||
var _hmt = _hmt || []; |
||||
(function() { |
||||
var hm = document.createElement('script'); |
||||
hm.src = 'https://hm.baidu.com/hm.js?72fbad6ebf1d6c705117fe8fe0686a0e'; |
||||
var s = document.getElementsByTagName('script')[0]; |
||||
s.parentNode.insertBefore(hm, s); |
||||
})(); |
||||
</script> |
||||
</body> |
||||
</html> |
||||
|
@ -1,105 +1,115 @@ |
||||
<template> |
||||
<div id="app" > |
||||
<select-business class="selectBusiness" :showIt.sync="showIt" v-show="!showIt && showBusiness" /> |
||||
<router-view></router-view> |
||||
<vCase :showIt.sync="showIt"></vCase> |
||||
<tip-dialog class="Z-9999" /> |
||||
</div> |
||||
<div id="app"> |
||||
<select-business class="selectBusiness" :showIt.sync="showIt" v-show="!showIt && showBusiness && !submited" /> |
||||
<router-view></router-view> |
||||
<vCase :showIt.sync="showIt"></vCase> |
||||
<tip-dialog class="Z-9999" /> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import vCase from '@/components/case' |
||||
import Setting from '@/setting'; |
||||
import util from '@/libs/util'; |
||||
import selectBusiness from '@/components/selectBusiness' |
||||
import TipDialog from '@/components/tipDialog' |
||||
import { mapState, mapMutations } from 'vuex' |
||||
export default { |
||||
name: 'App', |
||||
components: { |
||||
vCase, |
||||
selectBusiness, |
||||
TipDialog |
||||
}, |
||||
created () { |
||||
//在页面加载时读取localStorage里的状态信息 |
||||
if (util.local.get(Setting.storeKey) ) { |
||||
this.$store.replaceState(Object.assign({}, this.$store.state,util.local.get(Setting.storeKey))) |
||||
this.$store.system.replaceState(Object.assign({}, sessionStorage.getItem('systemData'))) |
||||
|
||||
} |
||||
|
||||
//在页面刷新时将vuex里的信息保存到localStorage里 |
||||
window.addEventListener("beforeunload",()=>{ |
||||
if(this.$route.fullPath.includes('/counter/list/manage')) { |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
} |
||||
import vCase from '@/components/case' |
||||
import Setting from '@/setting'; |
||||
import util from '@/libs/util'; |
||||
import selectBusiness from '@/components/selectBusiness' |
||||
import TipDialog from '@/components/tipDialog' |
||||
import { mapState, mapMutations } from 'vuex' |
||||
import Bus from '@/libs/bus' |
||||
export default { |
||||
name: 'App', |
||||
components: { |
||||
vCase, |
||||
selectBusiness, |
||||
TipDialog |
||||
}, |
||||
created () { |
||||
//在页面加载时读取localStorage里的状态信息 |
||||
if (util.local.get(Setting.storeKey)) { |
||||
this.$store.replaceState(Object.assign({}, this.$store.state, util.local.get(Setting.storeKey))) |
||||
} |
||||
|
||||
util.local.get(Setting.tokenKey) && util.local.set(Setting.storeKey,this.$store.state) |
||||
sessionStorage.setItem('systemData', this.$store.system.state) |
||||
}) |
||||
}, |
||||
data() { |
||||
return { |
||||
showIt: true, |
||||
showSelect: false |
||||
} |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setShowBusiness: 'system/setShowBusiness', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
}, |
||||
watch: { |
||||
showIt: { |
||||
handler(newVal) { |
||||
if(!newVal && !this.businessKey) { |
||||
this.setShowBusiness(true) |
||||
}else { |
||||
if(!newVal) { |
||||
// 如果未选择业务,则关闭后继续弹出弹框 |
||||
if(!this.businessKey) { |
||||
this.$nextTick(() => { this.setShowBusiness(true) }) |
||||
}else { |
||||
// this.setTipsOperate('您正在进行' + this.businessKey + ',加油!'); |
||||
} |
||||
}else { |
||||
this.$nextTick(() => { this.setShowBusiness(false) }) |
||||
} |
||||
} |
||||
}, |
||||
immediate: true |
||||
//在页面刷新时将vuex里的信息保存到localStorage里 |
||||
window.addEventListener("beforeunload", () => { |
||||
if (this.$route.fullPath.includes('/counter/list/manage')) { |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
} |
||||
util.local.set(Setting.storeKey, this.$store.state) |
||||
}) |
||||
}, |
||||
data () { |
||||
return { |
||||
showIt: true, |
||||
showSelect: false, |
||||
submited: false |
||||
} |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setShowBusiness: 'system/setShowBusiness', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
}, |
||||
watch: { |
||||
showIt: { |
||||
handler (newVal) { |
||||
this.submited = sessionStorage.getItem('submited') |
||||
if (!newVal && !this.businessKey && !sessionStorage.getItem('submited')) { |
||||
this.setShowBusiness(true) |
||||
} else { |
||||
if (!newVal) { |
||||
// 如果未选择业务,则关闭后继续弹出弹框 |
||||
if (!this.businessKey && !sessionStorage.getItem('submited')) { |
||||
this.$nextTick(() => { this.setShowBusiness(true) }) |
||||
} else { |
||||
// this.setTipsOperate('您正在进行' + this.businessKey + ',加油!'); |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState({ |
||||
businessKey: state => state.system.businessKey, |
||||
showBusiness: state => state.system.showBusiness, |
||||
businessKey: state => state.system.businessKey |
||||
}) |
||||
}, |
||||
} else { |
||||
this.$nextTick(() => { this.setShowBusiness(false) }) |
||||
} |
||||
} |
||||
}, |
||||
immediate: true |
||||
} |
||||
}, |
||||
mounted () { |
||||
Bus.$on('setShowIt', data => { |
||||
this.showIt = data |
||||
}) |
||||
}, |
||||
computed: { |
||||
...mapState({ |
||||
businessKey: state => state.system.businessKey, |
||||
showBusiness: state => state.system.showBusiness, |
||||
}) |
||||
}, |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
#app { |
||||
font-size: 16px; |
||||
min-width: $inner-width; |
||||
font-size: 16px; |
||||
min-width: $inner-width; |
||||
} |
||||
|
||||
.selectBusiness { |
||||
width: 100%; |
||||
height: 100%; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.fade-enter-active, .fade-leave-active { |
||||
transition: opacity .5s; |
||||
.fade-enter-active, |
||||
.fade-leave-active { |
||||
transition: opacity 0.5s; |
||||
} |
||||
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { |
||||
|
||||
.fade-enter, |
||||
.fade-leave-to |
||||
|
||||
/* .fade-leave-active below version 2.1.8 */ |
||||
{ |
||||
opacity: 0; |
||||
} |
||||
|
||||
.Z-9999 { |
||||
position: absolute; |
||||
z-index: 9999; |
||||
position: absolute; |
||||
z-index: 9999; |
||||
} |
||||
</style> |
@ -1,46 +1,145 @@ |
||||
// 引入封装好的axios
|
||||
// ps:如果没有封装,正常引入axios即可
|
||||
import {get, post,deletes,put} from './api.js' |
||||
// import axios from "./";
|
||||
// /api为配置跨域的路径变量
|
||||
export const getProjectBySystemId= (params) => { |
||||
return get( '/occupationlab/occupationlab/projectManage/getProjectBySystemId',params) |
||||
import { get, post, deletes, put } from './api.js' |
||||
const host = 'http://192.168.31.51:9000' |
||||
export const getProjectBySystemId = (params) => { |
||||
return get('/occupationlab/occupationlab/projectManage/getProjectBySystemId', params) |
||||
} |
||||
export const getProjectDetail= (params) => { |
||||
return get( '/occupationlab/occupationlab/projectManage/getProjectDetail',params) |
||||
export const getProjectDetail = (params) => { |
||||
return get('/occupationlab/occupationlab/projectManage/getProjectDetail', params) |
||||
} |
||||
export const submit= (params) => { |
||||
return post( '/bank/bank/submit',params) |
||||
export const submit = (params) => { |
||||
return post('/bank/bank/submit', params) |
||||
} |
||||
export const getSubjectInfo= (params) => { |
||||
return get( '/judgment/judgment/lcSubject/getSubjectInfo',params) |
||||
export const getSubjectInfo = (params) => { |
||||
return get('/judgment/judgment/lcSubject/getSubjectInfo', params) |
||||
} |
||||
export const getQueryCache= () => { |
||||
return get( '/bank/bank/queryCache') |
||||
export const getQueryCache = () => { |
||||
return get('/bank/bank/queryCache') |
||||
} |
||||
export const addOperation= (params) => { |
||||
return post( '/bank/bank/addOperation',params) |
||||
export const addOperation = (params) => { |
||||
return post('/bank/bank/addOperation', { |
||||
...params, |
||||
assessmentId: sessionStorage.getItem('assessmentId') || '', |
||||
competitionId: sessionStorage.getItem('competitionId') || '', |
||||
}) |
||||
} |
||||
export const getOperation= (params) => { |
||||
return get( '/bank/bank/getOperation',params) |
||||
export const getOperation = (params) => { |
||||
return post('/bank/bank/getOperation', { |
||||
...params, |
||||
assessmentId: sessionStorage.getItem('assessmentId') || '', |
||||
competitionId: sessionStorage.getItem('competitionId') || '', |
||||
}) |
||||
} |
||||
export const deleteCache= () => { |
||||
return get( '/bank/bank/deleteCache') |
||||
export const deleteCache = () => { |
||||
return post('/bank/bank/deleteCache', { |
||||
projectId: sessionStorage.getItem('projectId') || '', |
||||
assessmentId: sessionStorage.getItem('assessmentId') || '', |
||||
competitionId: sessionStorage.getItem('competitionId') || '', |
||||
}) |
||||
} |
||||
export const exportBankExperimentReport = (params) => { |
||||
return post('/occupationlab/occupationlab/achievement/exportBankExperimentReport', params) |
||||
} |
||||
export const updateReport = (params) => { |
||||
return post('/occupationlab/occupationlab/achievement/updateReport', params) |
||||
} |
||||
// 学生查看考核状态
|
||||
export const checkTest= (params) => { |
||||
return get( '/occupationlab/occupationlab/assessment/getDetailById', {...params}) |
||||
export const checkTest = (params) => { |
||||
return get('/occupationlab/occupationlab/assessment/getDetailById', { ...params }) |
||||
} |
||||
export const checkTest2= (params) => { |
||||
return post( '/occupationlab/occupationlab/assessment/pageStuAssessment',{ |
||||
pageNum: 1, |
||||
pageSize: 10000, |
||||
...params |
||||
}) |
||||
export const checkTest2 = (params) => { |
||||
return post('/occupationlab/occupationlab/assessment/pageStuAssessment', { |
||||
pageNum: 1, |
||||
pageSize: 10000, |
||||
...params |
||||
}) |
||||
} |
||||
|
||||
export const reportDetail = (reportId) => { |
||||
return get( '/occupationlab/occupationlab/achievement/reportDetail',{ |
||||
reportId |
||||
}) |
||||
return get('/occupationlab/occupationlab/achievement/reportDetail', { |
||||
reportId |
||||
}) |
||||
} |
||||
export const creditEvaluationInput = data => { |
||||
return post(`/judgment/bankCreditEvaluation/creditEvaluationInput`, data) |
||||
} |
||||
export const creditEvaluationDetails = data => { |
||||
return get(`/judgment/bankCreditEvaluation/creditEvaluationDetails`, data) |
||||
} |
||||
export const loanApplicationInput = data => { |
||||
return post(`/judgment/bankLoanApplication/loanApplicationInput`, data) |
||||
} |
||||
export const loanApplicationInterestCalculation = data => { |
||||
return post(`/judgment/bankLoanApplication/loanApplicationInterestCalculation`, data) |
||||
} |
||||
export const loanApplicationDetails = data => { |
||||
return get(`/judgment/bankLoanApplication/loanApplicationDetails`, data) |
||||
} |
||||
export const creditApplicationInput = data => { |
||||
return post(`/judgment/bankCreditApplication/creditApplicationInput`, data) |
||||
} |
||||
export const creditApplicationDetails = data => { |
||||
return get(`/judgment/bankCreditApplication/creditApplicationDetails`, data) |
||||
} |
||||
export const companyLoanList = data => { |
||||
return post(`/judgment/bankCompanyLoans/companyLoanList`, data) |
||||
} |
||||
export const companyLoanDetails = id => { |
||||
return get(`/judgment/bankCompanyLoans/companyLoanDetails?companyLoanId=${id}`) |
||||
} |
||||
export const loanDisbursement = data => { |
||||
return post(`/judgment/bankCompanyLoans/loanDisbursement`, data) |
||||
} |
||||
export const loanCollection = data => { |
||||
return post(`/judgment/bankCompanyLoans/loanCollection`, data) |
||||
} |
||||
export const nonPerformingLoans = data => { |
||||
return post(`/judgment/bankCompanyLoans/nonPerformingLoans`, data) |
||||
} |
||||
export const badDebtRecognition = data => { |
||||
return post(`/judgment/bankCompanyLoans/badDebtRecognition`, data) |
||||
} |
||||
export const postLoanInvestigationInput = data => { |
||||
return post(`/judgment/bankPostLoanInvestigation/postLoanInvestigationInput`, data) |
||||
} |
||||
export const addExtensionPeriod = data => { |
||||
return post(`/judgment/bankCompanyLoans/addExtensionPeriod`, data) |
||||
} |
||||
|
||||
export const batchProcessingCompany = data => { |
||||
return post(`/judgment/bankCompanyRepaymentPlan/batchProcessing`, data) |
||||
} |
||||
export const repaymentPlanCompany = data => { |
||||
return post(`/judgment/bankCompanyRepaymentPlan/repaymentPlan`, data) |
||||
} |
||||
|
||||
export const loanContractSave = (data) => { |
||||
return post('/judgment/bankPersonalLoanContractInfo/saveOrUpdate', data) |
||||
} |
||||
|
||||
export const personalBasicDel = data => { |
||||
return post('/judgment/bankPersonalBasicInfo/batchDeletion', data) |
||||
} |
||||
export const personalBasicFind = id => { |
||||
return post('/judgment/bankPersonalBasicInfo/findById?id=' + id) |
||||
} |
||||
export const personalBasicList = (data) => { |
||||
return post('/judgment/bankPersonalBasicInfo/personageLoanList', data) |
||||
} |
||||
export const personalBasicSave = (data) => { |
||||
return post('/judgment/bankPersonalBasicInfo/saveOrUpdate', 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 batchProcessing = (data) => { |
||||
return post(`/judgment/bankPersonalRepaymentPlan/batchProcessing`, data) |
||||
} |
||||
export const operationExtension = (data) => { |
||||
return post(`/judgment/bankPersonalLoanContractInfo/operationExtension?contractId=${data.id}&extensionPeriod=${data.extensionPeriod}`) |
||||
} |
||||
export const calculateTheReturnInterestSum = (data) => { |
||||
return post(`/judgment/bankPersonalLoanContractInfo/calculateTheReturnInterestSum`, data) |
||||
} |
After Width: | Height: | Size: 561 B |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 190 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 211 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 138 B |
After Width: | Height: | Size: 221 B |
After Width: | Height: | Size: 239 B |
After Width: | Height: | Size: 292 B |
After Width: | Height: | Size: 376 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
@ -1,33 +1,35 @@ |
||||
<template> |
||||
<div class="sth guide" @click="toPart" alt=""> |
||||
返回 |
||||
</div> |
||||
<div class="sth guide" |
||||
@click="toPart" |
||||
alt=""> |
||||
返回 |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
methods: { |
||||
toPart() { |
||||
this.$router.push('/index') |
||||
} |
||||
methods: { |
||||
toPart () { |
||||
this.$router.push('/index') |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.sth { |
||||
position: absolute; |
||||
&.cp { |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
.guide { |
||||
top: 90px; |
||||
left: 0; |
||||
width: 222px; |
||||
.sth { |
||||
position: absolute; |
||||
&.cp { |
||||
cursor: pointer; |
||||
&:hover { |
||||
opacity: 0.9; |
||||
} |
||||
} |
||||
} |
||||
.guide { |
||||
top: 90px; |
||||
left: 0; |
||||
width: 222px; |
||||
cursor: pointer; |
||||
&:hover { |
||||
opacity: 0.9; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,67 @@ |
||||
<template> |
||||
<!-- 面包屑 --> |
||||
<div class="breadcrumb"> |
||||
<el-breadcrumb separator=">"> |
||||
<template v-for="(item, index) in pages"> |
||||
<el-breadcrumb-item v-if="index != pages.length - 1" |
||||
:key="index"> |
||||
<span @click="toPath">{{item}}</span> |
||||
</el-breadcrumb-item> |
||||
<el-breadcrumb-item v-else |
||||
:key="index"> |
||||
{{item}} |
||||
</el-breadcrumb-item> |
||||
</template> |
||||
</el-breadcrumb> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
props: { |
||||
data: { |
||||
type: String, |
||||
required: true |
||||
}, |
||||
route: { |
||||
type: String, |
||||
default: '/' |
||||
}, |
||||
query: { |
||||
type: Object |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
pages: this.data.split('/') |
||||
}; |
||||
}, |
||||
methods: { |
||||
update (data) { |
||||
this.pages = data.split('/') |
||||
}, |
||||
toPath () { |
||||
this.$router.push('/index') |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.breadcrumb { |
||||
margin: 4px 0 16px; |
||||
/deep/.el-breadcrumb__item { |
||||
&:first-child { |
||||
span { |
||||
font-weight: 400; |
||||
color: #007eff; |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
&:last-child { |
||||
.is-link { |
||||
color: #0b1d30; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -1,179 +1,223 @@ |
||||
<template> |
||||
<div class="quill" :class="classes"> |
||||
<div ref="editor" :style="styles" v-loading="loading"></div> |
||||
<div class="quill" |
||||
:class="classes"> |
||||
<div ref="editor" |
||||
:style="styles" |
||||
v-loading="loading"></div> |
||||
|
||||
<el-upload :action="this.api.fileupload" :before-upload="beforeUpload" :on-success="editorUploadSuccess" style="display: none"> |
||||
<el-button class="editorUpload" size="small" type="primary">点击上传</el-button> |
||||
</el-upload> |
||||
</div> |
||||
<Upload :max-size="1000" |
||||
:limit="100" |
||||
@beforeUpload="beforeUpload" |
||||
@onSuccess="editorUploadSuccess" |
||||
style="display: none"> |
||||
<div slot="trigger"> |
||||
<el-button :id="'editorUpload' + index" |
||||
type="primary">点击上传</el-button> |
||||
</div> |
||||
</Upload> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import Quill from 'quill'; |
||||
import 'quill/dist/quill.core.css'; |
||||
import 'quill/dist/quill.snow.css'; |
||||
import 'quill/dist/quill.bubble.css'; |
||||
import toolbarOptions from './options' |
||||
import Quill from 'quill'; |
||||
import 'quill/dist/quill.core.css'; |
||||
import 'quill/dist/quill.snow.css'; |
||||
import 'quill/dist/quill.bubble.css'; |
||||
import toolbarOptions from './options' |
||||
import Upload from '@/components/upload'; |
||||
import Oss from '@/components/upload/upload.js' |
||||
|
||||
export default { |
||||
name: 'quill', |
||||
props: { |
||||
value: { |
||||
type: String, |
||||
default: '' |
||||
}, |
||||
readonly: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
toTop: { |
||||
type: Boolean, |
||||
default: true |
||||
}, |
||||
border: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
height: { |
||||
type: Number |
||||
}, |
||||
minHeight: { |
||||
type: Number |
||||
} |
||||
}, |
||||
data () { |
||||
return { |
||||
Quill: null, |
||||
currentValue: '', |
||||
options: { |
||||
theme: 'snow', |
||||
bounds: document.body, |
||||
debug: 'warn', |
||||
modules: { |
||||
toolbar: { |
||||
container: toolbarOptions, |
||||
handlers: { |
||||
'image': function (value) { |
||||
if (value) { |
||||
// 调用iview图片上传 |
||||
document.querySelector('.editorUpload').click() |
||||
} else { |
||||
this.Quill.format('image', false); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
placeholder: '', |
||||
readOnly: this.readonly |
||||
}, |
||||
loading: false |
||||
} |
||||
}, |
||||
computed: { |
||||
classes () { |
||||
return [ |
||||
{ |
||||
'quill-no-border': !this.border |
||||
} |
||||
]; |
||||
}, |
||||
styles () { |
||||
let style = {}; |
||||
if (this.minHeight) { |
||||
style.minHeight = `${this.minHeight}px`; |
||||
} |
||||
if (this.height) { |
||||
style.height = `${this.height}px`; |
||||
export default { |
||||
name: 'quill', |
||||
components: { |
||||
Upload, |
||||
}, |
||||
props: { |
||||
value: { |
||||
type: String, |
||||
default: '' |
||||
}, |
||||
readonly: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
toTop: { |
||||
type: Boolean, |
||||
default: true |
||||
}, |
||||
border: { |
||||
type: Boolean, |
||||
default: false |
||||
}, |
||||
height: { |
||||
type: Number |
||||
}, |
||||
minHeight: { |
||||
type: Number |
||||
}, |
||||
// 当前富文本的索引。一个页面引入多个富文本的时候会无法获取到对应的实例,所以通过在父级存储实例的方式来保存 |
||||
index: { |
||||
type: Number, |
||||
default: 0 |
||||
}, |
||||
}, |
||||
data () { |
||||
const that = this |
||||
return { |
||||
Quill: null, |
||||
currentValue: '', |
||||
options: { |
||||
theme: 'snow', |
||||
bounds: document.body, |
||||
debug: 'warn', |
||||
modules: { |
||||
toolbar: { |
||||
container: toolbarOptions, |
||||
handlers: { |
||||
'image': function (value) { |
||||
if (value) { |
||||
// 调用iview图片上传 |
||||
document.querySelector("#editorUpload" + that.index).click(); |
||||
} else { |
||||
this.Quill.format('image', false); |
||||
} |
||||
return style; |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
watch: { |
||||
value: { |
||||
handler (val) { |
||||
if (val !== this.currentValue) { |
||||
this.currentValue = val; |
||||
if (this.Quill) { |
||||
this.Quill.pasteHTML(this.value); |
||||
} |
||||
} |
||||
}, |
||||
immediate: true |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.init(); |
||||
}, |
||||
beforeDestroy () { |
||||
// 在组件销毁后销毁实例 |
||||
this.Quill = null; |
||||
}, |
||||
methods: { |
||||
init () { |
||||
const editor = this.$refs.editor; |
||||
// 初始化编辑器 |
||||
this.Quill = new Quill(editor, this.options); |
||||
// 默认值 |
||||
this.Quill.pasteHTML(this.currentValue); |
||||
if(this.toTop){ |
||||
this.$nextTick(() => { |
||||
window.scrollTo(0,0) |
||||
}) |
||||
} |
||||
// 绑定事件 |
||||
this.Quill.on('text-change', (delta, oldDelta, source) => { |
||||
const html = this.$refs.editor.children[0].innerHTML; |
||||
const text = this.Quill.getText(); |
||||
const quill = this.Quill; |
||||
// 更新内部的值 |
||||
this.currentValue = html; |
||||
// 发出事件 v-model.trim |
||||
this.$emit('input', html); |
||||
// 发出事件 |
||||
this.$emit('on-change', { html, text, quill }); |
||||
}); |
||||
// 将一些 quill 自带的事件传递出去 |
||||
this.Quill.on('text-change', (delta, oldDelta, source) => { |
||||
this.$emit('on-text-change', delta, oldDelta, source); |
||||
}); |
||||
this.Quill.on('selection-change', (range, oldRange, source) => { |
||||
this.$emit('on-selection-change', range, oldRange, source); |
||||
}); |
||||
this.Quill.on('editor-change', (eventName, ...args) => { |
||||
this.$emit('on-editor-change', eventName, ...args); |
||||
}); |
||||
}, |
||||
beforeUpload(file){ |
||||
this.loading = true |
||||
}, |
||||
editorUploadSuccess (res) { |
||||
// 获取富文本组件实例 |
||||
let quill = this.Quill |
||||
// 如果上传成功 |
||||
if (res.data.filesResult.fileUrl) { |
||||
// 获取光标所在位置 |
||||
let length = quill.getSelection().index; |
||||
// 插入图片,res为服务器返回的图片链接地址 |
||||
quill.insertEmbed(length, 'image', res.data.filesResult.fileUrl) |
||||
// 调整光标到最后 |
||||
quill.setSelection(length + 1) |
||||
} else { |
||||
this.$message.success('图片插入失败') |
||||
} |
||||
this.loading = false |
||||
}, |
||||
placeholder: '', |
||||
readOnly: this.readonly |
||||
}, |
||||
loading: false |
||||
} |
||||
}, |
||||
computed: { |
||||
classes () { |
||||
return [ |
||||
{ |
||||
'quill-no-border': !this.border |
||||
} |
||||
]; |
||||
}, |
||||
styles () { |
||||
let style = {}; |
||||
if (this.minHeight) { |
||||
style.minHeight = `${this.minHeight}px`; |
||||
} |
||||
if (this.height) { |
||||
style.height = `${this.height}px`; |
||||
} |
||||
return style; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.quill-no-border{ |
||||
.ql-toolbar.ql-snow{ |
||||
border: none; |
||||
border-bottom: 1px solid #e8eaec; |
||||
}, |
||||
watch: { |
||||
value: { |
||||
handler (val) { |
||||
if (val !== this.currentValue) { |
||||
this.currentValue = val; |
||||
if (this.Quill) { |
||||
this.Quill.pasteHTML(this.value); |
||||
} |
||||
} |
||||
.ql-container.ql-snow{ |
||||
border: none; |
||||
}, |
||||
immediate: true |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.init(); |
||||
}, |
||||
beforeDestroy () { |
||||
// 在组件销毁后销毁实例 |
||||
this.Quill = null; |
||||
}, |
||||
methods: { |
||||
init () { |
||||
const editor = this.$refs.editor; |
||||
// 初始化编辑器 |
||||
this.Quill = new Quill(editor, this.options); |
||||
const ins = this.Quill |
||||
// 默认值 |
||||
ins.pasteHTML(this.currentValue); |
||||
if (this.toTop) { |
||||
this.$nextTick(() => { |
||||
window.scrollTo(0, 0) |
||||
}) |
||||
} |
||||
// 绑定事件 |
||||
ins.on('text-change', (delta, oldDelta, source) => { |
||||
const html = this.$refs.editor.children[0].innerHTML; |
||||
const text = ins.getText(); |
||||
const quill = this.Quill; |
||||
// 更新内部的值 |
||||
this.currentValue = html; |
||||
// 发出事件 v-model |
||||
this.$emit('input', html); |
||||
// 发出事件 |
||||
this.$emit('on-change', { html, text, quill }); |
||||
}); |
||||
// 将一些 quill 自带的事件传递出去 |
||||
ins.on('text-change', (delta, oldDelta, source) => { |
||||
this.$emit('on-text-change', delta, oldDelta, source); |
||||
}); |
||||
ins.on('selection-change', (range, oldRange, source) => { |
||||
this.$emit('on-selection-change', range, oldRange, source); |
||||
}); |
||||
ins.on('editor-change', (eventName, ...args) => { |
||||
this.$emit('on-editor-change', eventName, ...args); |
||||
}); |
||||
// 监听粘贴事件 |
||||
ins.root.addEventListener('paste', evt => { |
||||
if (evt.clipboardData && evt.clipboardData.files && evt.clipboardData.files.length) { |
||||
evt.preventDefault(); |
||||
// 检测是否粘贴的是图片 |
||||
[].forEach.call(evt.clipboardData.files, file => { |
||||
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) { |
||||
return |
||||
} |
||||
// 把图片上传到oss,不然会直接把base64存到数据库 |
||||
Oss.upload(file).then(res => { |
||||
var range = ins.getSelection() |
||||
if (range) { |
||||
// 在当前光标位置插入图片 |
||||
ins.insertEmbed(range.index, 'image', res.url) |
||||
// 将光标移动到图片后面 |
||||
ins.setSelection(range.index + 1) |
||||
} |
||||
}) |
||||
}); |
||||
} |
||||
}, false) |
||||
}, |
||||
beforeUpload (file) { |
||||
this.loading = true |
||||
}, |
||||
editorUploadSuccess (file) { |
||||
// 获取富文本组件实例 |
||||
let quill = this.Quill |
||||
// 如果上传成功 |
||||
if (file.url) { |
||||
// 获取光标所在位置 |
||||
let length = quill.getSelection().index; |
||||
// 插入图片,res为服务器返回的图片链接地址 |
||||
quill.insertEmbed(length, 'image', file.url) |
||||
// 调整光标到最后 |
||||
quill.setSelection(length + 1) |
||||
} else { |
||||
this.$message.success('图片插入失败') |
||||
} |
||||
this.loading = false |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.quill-no-border { |
||||
.ql-toolbar.ql-snow { |
||||
border: none; |
||||
border-bottom: 1px solid #e8eaec; |
||||
} |
||||
.ql-container.ql-snow { |
||||
border: none; |
||||
} |
||||
} |
||||
</style> |
||||
|
@ -0,0 +1,15 @@ |
||||
/** |
||||
* 阿里云oss配置 |
||||
* */ |
||||
|
||||
export default { |
||||
// oss账号信息
|
||||
config: { |
||||
region: 'oss-cn-shenzhen', |
||||
accessKeyId: 'LTAI4FzqQHnk4rozqLZ8jCNj', |
||||
accessKeySecret: 'mveW7B1OyFoKUkHm8WsxmrjHmkJWHq', |
||||
bucket: 'huoran' |
||||
}, |
||||
// 上传成功url前置部分(成功回调没有返回url)
|
||||
preUrl: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/' |
||||
} |
@ -0,0 +1,150 @@ |
||||
<template> |
||||
<el-upload :disabled="uploading" |
||||
:before-upload="beforeUpload" |
||||
:on-remove="onRemove" |
||||
:on-error="uploadError" |
||||
:limit="limit" |
||||
action="" |
||||
:on-exceed="handleExceed" |
||||
:show-file-list="showFiles" |
||||
:file-list="fileList" |
||||
:http-request="handleRequest" |
||||
name="file"> |
||||
<slot name="trigger"> |
||||
<el-button size="small" |
||||
:loading="uploading">{{ uploading ? '正在上传' : '上传文件' }}</el-button> |
||||
</slot> |
||||
<div slot="tip" |
||||
class="el-upload__tip"> |
||||
<el-progress v-if="uploading" |
||||
class="upload-progress" |
||||
:stroke-width="3" |
||||
:percentage="uploadProgress"></el-progress> |
||||
<slot name="tip"> |
||||
<p>支持扩展名:.rar .zip .doc .docx .pdf .jpg...</p> |
||||
</slot> |
||||
</div> |
||||
</el-upload> |
||||
</template> |
||||
|
||||
<script> |
||||
import OSS from 'ali-oss' |
||||
import OssConfig from './config.js' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
props: { |
||||
// 最大允许上传个数 |
||||
limit: { |
||||
type: Number, |
||||
default: 1 |
||||
}, |
||||
// 单个文件最大大小(单位: Mb) |
||||
maxSize: { |
||||
type: Number, |
||||
default: 10 |
||||
}, |
||||
// 是否显示已上传文件列表 |
||||
showFileList: { |
||||
type: Boolean, |
||||
default: true |
||||
}, |
||||
// 已上传文件列表 |
||||
fileList: { |
||||
type: Array, |
||||
default: () => [] |
||||
}, |
||||
// 是否要更新fileList(如果要使用自己的fileList,则这个值传false,一般情况不用给这个值) |
||||
changeFileList: { |
||||
type: Boolean, |
||||
default: true |
||||
}, |
||||
// 已上传文件列表 |
||||
onRemove: { |
||||
type: Function, |
||||
default: new Function() |
||||
}, |
||||
}, |
||||
data () { |
||||
return { |
||||
client: null, |
||||
uploading: false, |
||||
uploadProgress: 0, |
||||
showFiles: this.showFileList |
||||
}; |
||||
}, |
||||
mounted () { |
||||
this.initOss() |
||||
}, |
||||
methods: { |
||||
// 初始化oss |
||||
initOss () { |
||||
this.client = new OSS(OssConfig.config) |
||||
}, |
||||
// 附件上传前 |
||||
beforeUpload (file) { |
||||
const oversize = file.size / 1024 / 1024 < this.maxSize |
||||
if (!oversize) Util.warningMsg(`请上传小于${this.maxSize}MB的附件!`) |
||||
if (oversize) { |
||||
this.$emit('beforeUpload', file) |
||||
return true |
||||
} else { |
||||
return false |
||||
} |
||||
}, |
||||
// 自定义进度条 |
||||
handleProgress (progress) { |
||||
this.uploadProgress = Number((progress * 100).toFixed(2)) |
||||
}, |
||||
// 自定义上传 |
||||
async handleRequest ({ file }) { |
||||
try { |
||||
this.uploadProgress = 0 |
||||
this.uploading = true |
||||
this.showFiles = false |
||||
// 上传到阿里云oss |
||||
const { name } = await this.client.multipartUpload(Date.now() + '.' + Util.getFileExt(file.name), file, { |
||||
progress: this.handleProgress |
||||
}); |
||||
|
||||
this.uploading = false |
||||
const url = OssConfig.preUrl + name |
||||
this.changeFileList && this.$emit('update:fileList', [ |
||||
...this.fileList, |
||||
{ |
||||
name: name, |
||||
url |
||||
} |
||||
]) |
||||
|
||||
this.showFiles = true |
||||
this.$emit('onSuccess', { |
||||
format: Util.getFileExt(file.name), |
||||
name: file.name, |
||||
url, |
||||
size: file.size, |
||||
}) |
||||
} catch (error) { } |
||||
}, |
||||
uploadError (err, file, fileList) { |
||||
this.$message({ |
||||
message: "上传出错,请重试!", |
||||
type: "error", |
||||
center: true |
||||
}) |
||||
}, |
||||
beforeRemove (file, fileList) { |
||||
return this.$confirm(`确定移除 ${file.name}?`); |
||||
}, |
||||
handleExceed (files, fileList) { |
||||
Util.warningMsg(`当前限制选择 ${this.limit} 个文件,如需更换,请删除上一个文件再重新选择!`); |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
/deep/.upload-progress { |
||||
max-width: 300px; |
||||
margin: 10px 0; |
||||
white-space: nowrap; |
||||
} |
||||
</style> |
@ -0,0 +1,37 @@ |
||||
// 阿里云oss上传
|
||||
|
||||
import OSS from 'ali-oss' |
||||
import OssConfig from './config' |
||||
import Util from '@/libs/util' |
||||
|
||||
let client = null |
||||
// 初始化oss
|
||||
const initOss = () => { |
||||
if (!client) client = new OSS(OssConfig.config) |
||||
} |
||||
|
||||
export default { |
||||
// 上传文件
|
||||
upload(file) { |
||||
initOss() |
||||
return new Promise(async (resolve, reject) => { |
||||
try { |
||||
// 上传到阿里云oss
|
||||
const res = await client.multipartUpload(Date.now() + '.' + Util.getFileExt(file.name), file); |
||||
resolve({ |
||||
format: Util.getFileExt(file.name), |
||||
name: file.name, |
||||
url: OssConfig.preUrl + res.name, |
||||
size: file.size, |
||||
}) |
||||
} catch (error) { |
||||
reject() |
||||
} |
||||
}) |
||||
}, |
||||
// 删除文件(传完整url,不是没有https的name,因为很多接口没有存name,只存url,所以统一使用url)
|
||||
async del(url) { |
||||
initOss() |
||||
await client.delete(url.replace(OssConfig.preUrl, '')); |
||||
} |
||||
} |
@ -1,89 +1,114 @@ |
||||
<template> |
||||
<div class="header" ref="exitHeader"> |
||||
<div class="inner" style="width: 100%"> |
||||
<div class="logo" @click="toIndex" style="float: left"> |
||||
<img src="../../assets/img/logo.png" alt=""> |
||||
</div> |
||||
<div style="float: right;margin:0 60px;font-size: 18px"> |
||||
<span style="cursor:pointer" @click="exit"> |
||||
退出<i class="icon el-icon-s-unfold"></i> |
||||
</span> |
||||
</div> |
||||
</div> |
||||
<div class="header" ref="exitHeader"> |
||||
<div class="inner" style="width: 100%"> |
||||
<div class="logo" @click="toIndex" style="float: left"> |
||||
<img src="../../assets/img/logo.png" alt=""> |
||||
</div> |
||||
<div style="float: right;margin:0 60px;font-size: 18px"> |
||||
<span style="cursor:pointer" @click="logout"> |
||||
退出<i class="icon el-icon-s-unfold"></i> |
||||
</span> |
||||
</div> |
||||
<el-radio-group v-if="isDev" class="ip" v-model="ip" @change="ipChange"> |
||||
<el-radio :label="0">刘榕ip</el-radio> |
||||
<el-radio :label="1">陈赓ip</el-radio> |
||||
<el-radio :label="2">测试服ip</el-radio> |
||||
</el-radio-group> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { mapState,mapActions } from 'vuex' |
||||
import { mapMutations } from 'vuex' |
||||
import Setting from '@/setting' |
||||
import util from '@/libs/util' |
||||
import Cookie from 'js-cookie' |
||||
export default { |
||||
data() { |
||||
return { |
||||
token: util.local.get(Setting.tokenKey), |
||||
}; |
||||
data () { |
||||
return { |
||||
isDev: Setting.isDev, |
||||
token: util.local.get(Setting.tokenKey), |
||||
ip: localStorage.getItem('localIp') ? +localStorage.getItem('localIp') : 0, |
||||
}; |
||||
}, |
||||
mounted () { |
||||
this.$route.query.manager ? Cookie.set('manager', 1) : Cookie.remove('manager') |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
logout: 'user/logout', |
||||
}), |
||||
toIndex () { |
||||
this.$refs.nav.jump({ |
||||
index: '/index/list', |
||||
title: '首页' |
||||
}) |
||||
}, |
||||
exit () { |
||||
const url = location.href |
||||
let href = process.env.NODE_ENV === 'development' ? |
||||
`http://${location.hostname}:8082/#/` : |
||||
`${url.includes('huorantech.cn') ? `https://www.occupationlab.com` : location.origin}${Cookie.get('manager') ? |
||||
'/admin' : |
||||
(url.includes('huorantech.cn') || url.includes('izhixinyun.com')) ? |
||||
'' : |
||||
'/student'}/#/` |
||||
let assessmentId = sessionStorage.getItem('assessmentId') |
||||
if (assessmentId != 'null' && assessmentId != null && assessmentId != '') { |
||||
href += `ass/list` |
||||
} else { |
||||
const cid = sessionStorage.getItem('cid') |
||||
href += `station/preview?courseId=${cid}&curriculumName=银行项目&mallId=${this.$route.query.mallId}` |
||||
} |
||||
sessionStorage.clear() |
||||
location.href = href |
||||
}, |
||||
mounted(){ |
||||
|
||||
ipChange (val) { |
||||
localStorage.setItem('localIp', val) |
||||
location.reload() |
||||
}, |
||||
methods: { |
||||
toIndex(){ |
||||
this.$refs.nav.jump({ |
||||
index: '/index/list', |
||||
title: '首页' |
||||
}) |
||||
}, |
||||
exit(){ |
||||
let href = '' |
||||
const url = location.href |
||||
const host = url.includes('huorantech.cn') ? |
||||
`http://www.occupationlab.com` : |
||||
process.env.NODE_ENV === 'development' ? |
||||
`http://192.168.31.155:8082` : |
||||
`http://121.37.12.51/student` |
||||
let assessmentId = sessionStorage.getItem('assessmentId') |
||||
if (assessmentId != 'null' && assessmentId != null && assessmentId != ''){ |
||||
href = `${host}/#/ass/list` |
||||
}else{ |
||||
const cid = sessionStorage.getItem('cid') |
||||
href = `${host}/#/station/preview?courseId=${cid}&curriculumName=银行项目` |
||||
} |
||||
location.href = href |
||||
}, |
||||
watch: { |
||||
'$route.path': { |
||||
handler (newVal) { |
||||
this.$nextTick(() => { |
||||
if (newVal === '/index/list') { |
||||
this.$refs.exitHeader.style.backgroundColor = 'rgb(250, 250, 250)' |
||||
} else { |
||||
this.$refs.exitHeader.style.backgroundColor = 'rgb(244, 245, 248)' |
||||
} |
||||
}) |
||||
}, |
||||
}, |
||||
watch: { |
||||
'$route.path': { |
||||
handler(newVal) { |
||||
this.$nextTick(() => { |
||||
console.log(newVal) |
||||
if(newVal === '/index/list') { |
||||
this.$refs.exitHeader.style.backgroundColor = 'rgb(250, 250, 250)' |
||||
}else { |
||||
this.$refs.exitHeader.style.backgroundColor = 'rgb(244, 245, 248)' |
||||
} |
||||
}) |
||||
}, |
||||
immediate: true |
||||
} |
||||
immediate: true |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.header{ |
||||
width:100%; |
||||
display: flex; |
||||
align-items: center; |
||||
position: relative; |
||||
height: 68px; |
||||
// background-color: #fff; |
||||
background-color: rgb(244,245,248); |
||||
z-index: 1001; |
||||
.logo{ |
||||
width: 500px; |
||||
margin-left: 42px; |
||||
cursor: pointer; |
||||
img{ |
||||
width: 100%; |
||||
} |
||||
} |
||||
.header { |
||||
width: 100%; |
||||
display: flex; |
||||
align-items: center; |
||||
position: relative; |
||||
height: 68px; |
||||
// background-color: #fff; |
||||
background-color: rgb(244, 245, 248); |
||||
z-index: 1001; |
||||
|
||||
.logo { |
||||
width: 500px; |
||||
margin-left: 42px; |
||||
cursor: pointer; |
||||
|
||||
img { |
||||
width: 100%; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.ip { |
||||
position: fixed; |
||||
top: 25px; |
||||
left: 500px; |
||||
} |
||||
</style> |
@ -1,9 +0,0 @@ |
||||
diff a/src/main.js b/src/main.js (rejected hunks) |
||||
@@ -42,6 +42,7 @@ |
||||
} |
||||
}) |
||||
} |
||||
+}); |
||||
|
||||
|
||||
Vue.use(plugins); |
@ -1,360 +1,469 @@ |
||||
// 刷卡的配置文件,map结构,避免写太多if,else,配置更方便。有很多地方刷银行卡和身份证的。
|
||||
|
||||
|
||||
const myConfig = { |
||||
'99': { |
||||
nbm: 118, |
||||
name: 'nomCurrentTransferPassword', |
||||
|
||||
parentId: '5,26,57,65', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'117': { |
||||
nbm: 117, |
||||
name: 'nomCurrentCancellPassword', |
||||
|
||||
parentId: '5,26,57,67', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'118,1': { |
||||
nbm: 118, |
||||
name: 'nomtimeOpenAccount1', |
||||
|
||||
parentId: '5,26,58,118', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'118,2': { |
||||
nbm: 118, |
||||
name: 'nomtimeOpenAccount2', |
||||
|
||||
parentId: '5,26,58,118', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'129': { |
||||
nbm: 129, |
||||
name: 'nomtimeOpenAccountPassword', |
||||
|
||||
parentId: '5,26,58,118', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'131': { |
||||
nbm: 131, |
||||
name: 'nomtimeDeposit1', |
||||
|
||||
parentId: '5,26,58,119', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'140': { |
||||
nbm: 140, |
||||
name: 'nomtimeDepositlPassword', |
||||
|
||||
parentId: '5,26,58,119', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'154': { |
||||
nbm: 154, |
||||
name: 'nomtimeDepositWithdrawalPassword', |
||||
|
||||
parentId: '5,26,58,120', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'154,2': { |
||||
nbm: 154, |
||||
name: 'nomtimeDepositWithdrawalPassword2', |
||||
|
||||
parentId: '5,26,58,120', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'144,1': { |
||||
nbm: 144, |
||||
name: 'nomtimeDepositWithdrawal1', |
||||
|
||||
parentId: '5,26,58,120', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'144,2': { |
||||
nbm: 144, |
||||
name: 'nomtimeDepositWithdrawal2', |
||||
|
||||
parentId: '5,26,58,120', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'156': { |
||||
nbm: 156, |
||||
name: 'nomtimeDepositContinue', |
||||
|
||||
parentId: '5,26,59,156', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'157,2': { |
||||
nbm: 157, |
||||
name: 'nomtimeDepositContinue2', |
||||
|
||||
parentId: '5,26,59,157', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'166': { |
||||
nbm: 166, |
||||
name: 'nomUsefulPhrasesOpenCard', |
||||
|
||||
parentId: '5,26,59,155', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'167': { |
||||
nbm: 167, |
||||
name: 'nomUsefulPhrasesOpenPassword', |
||||
|
||||
parentId: '5,26,59,155', |
||||
isPassword: true |
||||
}, |
||||
'171': { |
||||
nbm: 171, |
||||
name: 'nomUsefulPhrasesContinueCard', |
||||
|
||||
parentId: '5,26,59,156', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'178': { |
||||
nbm: 178, |
||||
name: 'nomUsefulPhrasesContinuePassword', |
||||
|
||||
parentId: '5,26,59,156', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'181': { |
||||
nbm: 181, |
||||
name: 'nomUsefulPhrasesClosed2', |
||||
|
||||
parentId: '5,26,59,157', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'192': { |
||||
nbm: 192, |
||||
name: 'nomUsefulPhrasesClosedPassword', |
||||
|
||||
parentId: '5,26,59,157', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'193,1': { |
||||
nbm: 193, |
||||
name: 'nomCallDepositOpen2', |
||||
|
||||
parentId: '5,26,60,193', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'203': { |
||||
nbm: 203, |
||||
name: 'nomCallDepositOpenPassword', |
||||
|
||||
parentId: '5,26,60,193', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'220': { |
||||
nbm: 220, |
||||
name: 'nomCallDepositClosedPassword', |
||||
|
||||
parentId: '5,26,60,194', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'320': { |
||||
nbm: 320, |
||||
name: 'servicesPasswordChange', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'323': { |
||||
nbm: 323, |
||||
name: 'servicesPasswordChange2', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'325': { |
||||
nbm: 325, |
||||
name: 'servicesPasswordChange3', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'326': { |
||||
nbm: 326, |
||||
name: 'servicesPasswordChange4', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'329': { |
||||
nbm: 329, |
||||
name: 'servicesPasswordLost', |
||||
|
||||
parentId: '5,28,328', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'333': { |
||||
nbm: 333, |
||||
name: 'servicesPasswordLost2', |
||||
|
||||
parentId: '5,28,328', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'341': { |
||||
nbm: 341, |
||||
name: 'servicesPasswordRelieveLost', |
||||
|
||||
parentId: '5,28,336', |
||||
machine: '身份证扫描仪', |
||||
isPassword: false |
||||
}, |
||||
'337': { |
||||
nbm: 337, |
||||
name: 'servicesPasswordRelieveLost2', |
||||
|
||||
parentId: '5,28,336', |
||||
machine: '刷卡器', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'343': { |
||||
nbm: 343, |
||||
name: 'servicesPasswordRelievePassword', |
||||
|
||||
parentId: '5,28,336', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'291': { |
||||
nbm: 291, |
||||
name: 'nomCallDepositOpen2', |
||||
|
||||
parentId: '5,26,38,288', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'297': { |
||||
nbm: 297, |
||||
name: 'nomCallDepositOpen3', |
||||
|
||||
parentId: '5,26,38,288', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'301': { |
||||
nbm: 301, |
||||
name: 'nomCallDepositOpenPassword', |
||||
|
||||
parentId: '5,26,38,288', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'303': { |
||||
nbm: 303, |
||||
name: 'nomCallDepositCard', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'304': { |
||||
nbm: 304, |
||||
name: 'nomCallDepositCard2', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'315': { |
||||
nbm: 303, |
||||
name: 'nomCallDepositClosedPassword', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'1399': { |
||||
nbm: 1399, |
||||
name: 'nomUsefulPhrasesOpenCard2', |
||||
|
||||
parentId: '5,26,59,155', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'180': { |
||||
nbm: 180, |
||||
name: 'nomUsefulPhrasesClosed', |
||||
|
||||
parentId: '5,26,59,157', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'302': { |
||||
nbm: 302, |
||||
name: 'nomCallDepositClosedCard', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'392': { |
||||
nbm: 180, |
||||
name: 'nomCallDepositClosedCard2', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'394': { |
||||
nbm: 180, |
||||
name: 'nomCallDepositClosedPassword', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'99': { |
||||
nbm: 118, |
||||
name: 'nomCurrentTransferPassword', |
||||
|
||||
parentId: '5,26,57,65', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'117': { |
||||
nbm: 117, |
||||
name: 'nomCurrentCancellPassword', |
||||
|
||||
parentId: '5,26,57,67', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'118,1': { |
||||
nbm: 118, |
||||
name: 'nomtimeOpenAccount1', |
||||
|
||||
parentId: '5,26,58,118', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'118,2': { |
||||
nbm: 118, |
||||
name: 'nomtimeOpenAccount2', |
||||
|
||||
parentId: '5,26,58,118', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'129': { |
||||
nbm: 129, |
||||
name: 'nomtimeOpenAccountPassword', |
||||
|
||||
parentId: '5,26,58,118', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'131': { |
||||
nbm: 131, |
||||
name: 'nomtimeDeposit1', |
||||
|
||||
parentId: '5,26,58,119', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'140': { |
||||
nbm: 140, |
||||
name: 'nomtimeDepositlPassword', |
||||
|
||||
parentId: '5,26,58,119', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'154': { |
||||
nbm: 154, |
||||
name: 'nomtimeDepositWithdrawalPassword', |
||||
|
||||
parentId: '5,26,58,120', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'154,2': { |
||||
nbm: 154, |
||||
name: 'nomtimeDepositWithdrawalPassword2', |
||||
|
||||
parentId: '5,26,58,120', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'144,1': { |
||||
nbm: 144, |
||||
name: 'nomtimeDepositWithdrawal1', |
||||
|
||||
parentId: '5,26,58,120', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'144,2': { |
||||
nbm: 144, |
||||
name: 'nomtimeDepositWithdrawal2', |
||||
|
||||
parentId: '5,26,58,120', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'156': { |
||||
nbm: 156, |
||||
name: 'nomtimeDepositContinue', |
||||
|
||||
parentId: '5,26,59,156', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'157,2': { |
||||
nbm: 157, |
||||
name: 'nomtimeDepositContinue2', |
||||
|
||||
parentId: '5,26,59,157', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'166': { |
||||
nbm: 166, |
||||
name: 'nomUsefulPhrasesOpenCard', |
||||
|
||||
parentId: '5,26,59,155', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'167': { |
||||
nbm: 167, |
||||
name: 'nomUsefulPhrasesOpenPassword', |
||||
|
||||
parentId: '5,26,59,155', |
||||
isPassword: true |
||||
}, |
||||
'171': { |
||||
nbm: 171, |
||||
name: 'nomUsefulPhrasesContinueCard', |
||||
|
||||
parentId: '5,26,59,156', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'178': { |
||||
nbm: 178, |
||||
name: 'nomUsefulPhrasesContinuePassword', |
||||
|
||||
parentId: '5,26,59,156', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'181': { |
||||
nbm: 181, |
||||
name: 'nomUsefulPhrasesClosed2', |
||||
|
||||
parentId: '5,26,59,157', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'192': { |
||||
nbm: 192, |
||||
name: 'nomUsefulPhrasesClosedPassword', |
||||
|
||||
parentId: '5,26,59,157', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'193,1': { |
||||
nbm: 193, |
||||
name: 'nomCallDepositOpen2', |
||||
|
||||
parentId: '5,26,60,193', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'203': { |
||||
nbm: 203, |
||||
name: 'nomCallDepositOpenPassword', |
||||
|
||||
parentId: '5,26,60,193', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'220': { |
||||
nbm: 220, |
||||
name: 'nomCallDepositClosedPassword', |
||||
|
||||
parentId: '5,26,60,194', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'320': { |
||||
nbm: 320, |
||||
name: 'servicesPasswordChange', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'323': { |
||||
nbm: 323, |
||||
name: 'servicesPasswordChange2', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'325': { |
||||
nbm: 325, |
||||
name: 'servicesPasswordChange3', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'326': { |
||||
nbm: 326, |
||||
name: 'servicesPasswordChange4', |
||||
|
||||
parentId: '5,28,316', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'329': { |
||||
nbm: 329, |
||||
name: 'servicesPasswordLost', |
||||
|
||||
parentId: '5,28,328', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'333': { |
||||
nbm: 333, |
||||
name: 'servicesPasswordLost2', |
||||
|
||||
parentId: '5,28,328', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'341': { |
||||
nbm: 341, |
||||
name: 'servicesPasswordRelieveLost', |
||||
|
||||
parentId: '5,28,336', |
||||
machine: '身份证扫描仪', |
||||
isPassword: false |
||||
}, |
||||
'337': { |
||||
nbm: 337, |
||||
name: 'servicesPasswordRelieveLost2', |
||||
|
||||
parentId: '5,28,336', |
||||
machine: '刷卡器', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'343': { |
||||
nbm: 343, |
||||
name: 'servicesPasswordRelievePassword', |
||||
|
||||
parentId: '5,28,336', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'291': { |
||||
nbm: 291, |
||||
name: 'nomCallDepositOpen2', |
||||
|
||||
parentId: '5,26,38,288', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'297': { |
||||
nbm: 297, |
||||
name: 'nomCallDepositOpen3', |
||||
|
||||
parentId: '5,26,38,288', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'301': { |
||||
nbm: 301, |
||||
name: 'nomCallDepositOpenPassword', |
||||
|
||||
parentId: '5,26,38,288', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'303': { |
||||
nbm: 303, |
||||
name: 'nomCallDepositCard', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'304': { |
||||
nbm: 304, |
||||
name: 'nomCallDepositCard2', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false |
||||
}, |
||||
'315': { |
||||
nbm: 303, |
||||
name: 'nomCallDepositClosedPassword', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: true |
||||
}, |
||||
'1399': { |
||||
nbm: 1399, |
||||
name: 'nomUsefulPhrasesOpenCard2', |
||||
|
||||
parentId: '5,26,59,155', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'180': { |
||||
nbm: 180, |
||||
name: 'nomUsefulPhrasesClosed', |
||||
|
||||
parentId: '5,26,59,157', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'302': { |
||||
nbm: 302, |
||||
name: 'nomCallDepositClosedCard', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'392': { |
||||
nbm: 180, |
||||
name: 'nomCallDepositClosedCard2', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'394': { |
||||
nbm: 180, |
||||
name: 'nomCallDepositClosedPassword', |
||||
|
||||
parentId: '5,26,38,289', |
||||
|
||||
isPassword: true, |
||||
}, |
||||
'713': { |
||||
nbm: 713, |
||||
name: 'waterRateIdCard', |
||||
parentId: '5,706,709', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'715': { |
||||
nbm: 715, |
||||
name: 'waterRateBankCard', |
||||
parentId: '5,706,709', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'720': { |
||||
nbm: 720, |
||||
name: 'waterRatePassword', |
||||
parentId: '5,706,709', |
||||
isPassword: true |
||||
}, |
||||
|
||||
'722': { |
||||
nbm: 722, |
||||
name: 'electricRateIdCard', |
||||
parentId: '5,706,710', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'724': { |
||||
nbm: 724, |
||||
name: 'electricRateBankCard', |
||||
parentId: '5,706,710', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'729': { |
||||
nbm: 729, |
||||
name: 'electricRatePassword', |
||||
parentId: '5,706,710', |
||||
isPassword: true |
||||
}, |
||||
|
||||
'732': { |
||||
nbm: 732, |
||||
name: 'telRateIdCard', |
||||
parentId: '5,706,711', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'733': { |
||||
nbm: 733, |
||||
name: 'telRateBankCard', |
||||
parentId: '5,706,711', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'740': { |
||||
nbm: 740, |
||||
name: 'telRatePassword', |
||||
parentId: '5,706,711', |
||||
isPassword: true |
||||
}, |
||||
|
||||
'743': { |
||||
nbm: 743, |
||||
name: 'onlineBankIdCard', |
||||
parentId: '5,707,741', |
||||
isPassword: false, |
||||
machine: '身份证扫描仪' |
||||
}, |
||||
'749': { |
||||
nbm: 749, |
||||
name: 'onlineBankBankCard', |
||||
parentId: '5,707,741', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'752': { |
||||
nbm: 752, |
||||
name: 'onlineBankPassword', |
||||
parentId: '5,707,741', |
||||
isPassword: true |
||||
}, |
||||
|
||||
'755': { |
||||
nbm: 755, |
||||
name: 'foreignExchangePuchasingBankCard', |
||||
parentId: '5,708,753', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'760': { |
||||
nbm: 760, |
||||
name: 'foreignExchangePuchasingPassword', |
||||
parentId: '5,708,753', |
||||
isPassword: true |
||||
}, |
||||
|
||||
'761': { |
||||
nbm: 761, |
||||
name: 'foreignExchangeSettleBankCard', |
||||
parentId: '5,708,754', |
||||
isPassword: false, |
||||
machine: '刷卡器' |
||||
}, |
||||
'765': { |
||||
nbm: 765, |
||||
name: 'foreignExchangSettlePassword', |
||||
parentId: '5,708,754', |
||||
isPassword: true |
||||
}, |
||||
} |
||||
|
||||
export { |
||||
myConfig |
||||
myConfig |
||||
} |
@ -1,300 +1,331 @@ |
||||
<template> |
||||
<div class="wrap"> |
||||
<img class="sth bg" src="@/assets/img/index-bg.png" alt=""> |
||||
<div class="case" @click="setShowBusiness(true)">业务选择</div> |
||||
<div class="wrap"> |
||||
<img class="sth bg" src="@/assets/img/index-bg.png" alt=""> |
||||
<div class="case" @click="setShowBusiness(true)">业务选择</div> |
||||
|
||||
<!-- 业务选择 --弹框 --> |
||||
|
||||
<!-- 业务选择 --弹框 --> |
||||
|
||||
|
||||
<div class="sth integrated-counter cp"> |
||||
<img width="100%" v-lazy="lazy1" alt="" @click="toPart('/counter')"> |
||||
<!-- src="@/assets/img/integrated-counter.png" --> |
||||
<div class="name" @click="toPart('/counter')">综合柜台</div> |
||||
</div> |
||||
|
||||
<div class="sth international cp"> |
||||
<!-- <img width="100%" v-lazy="lazy1" alt="" @click="toPart('/counter')"> --> |
||||
<img width="100%" v-lazy="lazy2" alt="" @click="showComing" /> |
||||
<!-- src="@/assets/img/integrated-counter.png" --> |
||||
<!-- <div class="name" @click="showComing">国际结算部</div> --> |
||||
</div> |
||||
<div class="sth integrated-counter cp"> |
||||
<img width="100%" v-lazy="lazy1" alt="" @click="toPart('/counter')"> |
||||
<!-- src="@/assets/img/integrated-counter.png" --> |
||||
<div class="name" @click="toPart('/counter')">综合柜台</div> |
||||
</div> |
||||
|
||||
<!-- <img class="sth international cp" v-lazy="lazy2" alt="" @click="showComing"> --> |
||||
<div class="sth manager cp" @click="toPart('/lobbyManager')"> |
||||
<img width="100%" v-lazy="lazy3" alt=""> |
||||
<div class="name">大堂经理</div> |
||||
</div> |
||||
<div class="sth international cp" @click="toPart('/counter', true)"> |
||||
<!-- <img width="100%" v-lazy="lazy1" alt="" @click="toPart('/counter')"> --> |
||||
<img width="100%" v-lazy="lazy2" alt="" /> |
||||
<!-- src="@/assets/img/integrated-counter.png" --> |
||||
<div class="name" @click="toPart('/counter', true)">信贷部</div> |
||||
</div> |
||||
|
||||
<img class="sth credit-dep cp" v-lazy="lazy4" alt="" @click="showComing"> |
||||
<img class="sth company-finance cp" v-lazy="lazy5" alt="" @click="showComing"> |
||||
<img class="sth personal-finance cp" v-lazy="lazy6" alt="" @click="showComing"> |
||||
<!-- <img class="sth international cp" v-lazy="lazy2" alt="" @click="showComing"> --> |
||||
<div class="sth manager cp" @click="toPart('/lobbyManager')"> |
||||
<img width="100%" v-lazy="lazy3" alt=""> |
||||
<div class="name">大堂经理</div> |
||||
</div> |
||||
|
||||
<img class="sth credit-dep cp" v-lazy="lazy4" alt="" @click="showComing"> |
||||
<img class="sth company-finance cp" v-lazy="lazy5" alt="" @click="showComing"> |
||||
<img class="sth personal-finance cp" v-lazy="lazy6" alt="" @click="showComing"> |
||||
|
||||
<div class="coming" :class="{active: comingVisible}"> |
||||
<div style="width: 20%;margin: auto"> |
||||
<img style="width: 100%" v-lazy="lazy7" alt=""> |
||||
</div> |
||||
<p class="text">敬请期待</p> |
||||
</div> |
||||
<div class="coming" :class="{ active: comingVisible }"> |
||||
<div style="width: 20%;margin: auto"> |
||||
<img style="width: 100%" v-lazy="lazy7" alt=""> |
||||
</div> |
||||
<p class="text">敬请期待</p> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapMutations, mapState } from 'vuex'; |
||||
import saveSystemModule from '@/mixins/saveSystemModule' |
||||
import Bus from '@/libs/bus' |
||||
export default { |
||||
name: 'index', |
||||
mixins: [ saveSystemModule ], |
||||
data() { |
||||
return { |
||||
caseVisible: true, |
||||
comingVisible: false, |
||||
timer: null, |
||||
lazy1: require('@/assets/img/integrated-counter.png'), |
||||
lazy2: require('@/assets/img/international.png'), |
||||
lazy3: require('@/assets/img/manager-index.png'), |
||||
lazy4: require('@/assets/img/credit-dep.png'), |
||||
lazy5: require('@/assets/img/company-finance.png'), |
||||
lazy6: require('@/assets/img/personal-finance.png'), // @/assets/svg/coming.svg |
||||
lazy7: require('@/assets/svg/coming.svg') |
||||
} |
||||
}, |
||||
created() { |
||||
if(!sessionStorage.getItem('firstLoad2')) { |
||||
const loading = this.$loading({ |
||||
lock: true, |
||||
// text: 'Loading', |
||||
text: '努力加载中,请稍等...', |
||||
spinner: 'el-icon-loading', |
||||
background: 'rgba(0, 0, 0, 0.7)' |
||||
}); |
||||
setTimeout(() => { |
||||
loading.close(); |
||||
sessionStorage.setItem('firstLoad2', true) |
||||
}, 1000); |
||||
} |
||||
name: 'index', |
||||
mixins: [saveSystemModule], |
||||
data () { |
||||
return { |
||||
caseVisible: true, |
||||
comingVisible: false, |
||||
timer: null, |
||||
lazy1: require('@/assets/img/integrated-counter.png'), |
||||
lazy2: require('@/assets/img/international.png'), |
||||
lazy3: require('@/assets/img/manager-index.png'), |
||||
lazy4: require('@/assets/img/credit-dep.png'), |
||||
lazy5: require('@/assets/img/company-finance.png'), |
||||
lazy6: require('@/assets/img/personal-finance.png'), // @/assets/svg/coming.svg |
||||
lazy7: require('@/assets/svg/coming.svg') |
||||
} |
||||
}, |
||||
created () { |
||||
if (!sessionStorage.getItem('firstLoad2')) { |
||||
sessionStorage.clear() |
||||
// sessionStorage.removeItem('submited') |
||||
// sessionStorage.removeItem('businessKey') |
||||
this.setBusinessKey('') |
||||
const loading = this.$loading({ |
||||
lock: true, |
||||
// text: 'Loading', |
||||
text: '努力加载中,请稍等...', |
||||
spinner: 'el-icon-loading', |
||||
background: 'rgba(0, 0, 0, 0.7)' |
||||
}); |
||||
setTimeout(() => { |
||||
loading.close(); |
||||
sessionStorage.setItem('firstLoad2', true) |
||||
}, 1000); |
||||
} |
||||
|
||||
if(!this.businessKey) { |
||||
this.setShowBusiness(true) |
||||
} |
||||
}, |
||||
mounted() { |
||||
let token = this.getQueryVariable('token') |
||||
let cid = this.getQueryVariable('cid') |
||||
let systemId = this.getQueryVariable('systemId') |
||||
let stopTime = this.getQueryVariable('stopTime') |
||||
let timestamp =+stopTime; |
||||
if (token != null){ |
||||
sessionStorage.setItem('token', token) |
||||
sessionStorage.setItem('cid', cid) |
||||
sessionStorage.setItem('systemId', systemId) |
||||
sessionStorage.setItem('timestamp', timestamp) |
||||
if (!this.businessKey && this.$route.path !== '/index/report' && !sessionStorage.getItem('submited')) { |
||||
this.setShowBusiness(true) |
||||
} |
||||
// 已经提交,则显示面板 |
||||
if (sessionStorage.getItem('submited')) { |
||||
Bus.$emit('setShowIt', true) |
||||
Bus.$emit('setSubmited', true) |
||||
} |
||||
}, |
||||
mounted () { |
||||
let token = this.getQueryVariable('token') |
||||
let cid = this.getQueryVariable('cid') |
||||
let systemId = this.getQueryVariable('systemId') |
||||
let stopTime = this.getQueryVariable('stopTime') |
||||
let timestamp = +stopTime; |
||||
if (token != null) { |
||||
sessionStorage.setItem('token', token) |
||||
sessionStorage.setItem('cid', cid) |
||||
sessionStorage.setItem('systemId', systemId) |
||||
sessionStorage.setItem('timestamp', timestamp) |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState({ |
||||
showBusiness: state => state.system.showBusiness, |
||||
businessKey: state => state.system.businessKey |
||||
}) |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setBusinessKey: 'system/setBusinessKey', |
||||
setShowBusiness: 'system/setShowBusiness', |
||||
setCredit: 'system/setCredit', |
||||
}), |
||||
getQueryVariable (name) { |
||||
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') |
||||
if (window.location.href.split('?')[1]) { |
||||
var r = window.location.href.split('?')[1].match(reg) |
||||
if (r != null) { |
||||
return (r[2]) |
||||
} else { |
||||
return null |
||||
} |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState({ |
||||
showBusiness: state => state.system.showBusiness, |
||||
businessKey: state => state.system.businessKey |
||||
}) |
||||
toPart (path, isCredit = false) { |
||||
this.setCredit(isCredit) |
||||
this.$router.push(path) |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setShowBusiness: 'system/setShowBusiness' |
||||
}), |
||||
getQueryVariable(name) { |
||||
var reg = new RegExp('(^|&)'+name+'=([^&]*)(&|$)') |
||||
if( window.location.href.split('?')[1]){ |
||||
var r = window.location.href.split('?')[1].match(reg) |
||||
if (r != null){ |
||||
return (r[2]) |
||||
}else{ |
||||
return null |
||||
} |
||||
} |
||||
}, |
||||
toPart(path){ |
||||
this.$router.push(path) |
||||
}, |
||||
showComing(){ |
||||
this.comingVisible = true |
||||
clearTimeout(this.timer) |
||||
this.timer = setTimeout(() => { |
||||
this.comingVisible = false |
||||
},1500) |
||||
} |
||||
showComing () { |
||||
this.comingVisible = true |
||||
clearTimeout(this.timer) |
||||
this.timer = setTimeout(() => { |
||||
this.comingVisible = false |
||||
}, 1500) |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
// 标牌文字 |
||||
@mixin nameTip { |
||||
width: 200px; |
||||
height: 70px; |
||||
line-height: 60px; |
||||
text-align: center; |
||||
font-size: 20px; |
||||
background: url(../../../assets/img/index-btn-bg.png); |
||||
// background-position: center center; |
||||
background-size: 100%; |
||||
color: #fff; |
||||
border-radius: 16px; |
||||
// box-shadow: 0 6px 8px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); |
||||
z-index: 100; |
||||
// 标牌文字 |
||||
@mixin nameTip { |
||||
width: 200px; |
||||
height: 70px; |
||||
line-height: 60px; |
||||
text-align: center; |
||||
font-size: 20px; |
||||
background: url(../../../assets/img/index-btn-bg.png); |
||||
// background-position: center center; |
||||
background-size: 100%; |
||||
color: #fff; |
||||
border-radius: 16px; |
||||
// box-shadow: 0 6px 8px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); |
||||
z-index: 100; |
||||
} |
||||
|
||||
.wrap { |
||||
position: relative; |
||||
min-height: calc(100vh - 68px); |
||||
|
||||
.sth { |
||||
position: absolute; |
||||
|
||||
&.cp { |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
|
||||
.bg { |
||||
top: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.wrap{ |
||||
position: relative; |
||||
min-height: calc(100vh - 68px); |
||||
.sth{ |
||||
position: absolute; |
||||
&.cp{ |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
.bg{ |
||||
top: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
.integrated-counter{ |
||||
top: -14%; |
||||
left: 24%; |
||||
width: 43%; |
||||
transition: all .5s; |
||||
&:hover{ |
||||
margin-top: -10px; |
||||
} |
||||
.name{ |
||||
position: absolute; |
||||
top: 23%; |
||||
left: 20%; |
||||
@include nameTip; |
||||
} |
||||
} |
||||
.international{ |
||||
top: -9%; |
||||
left: 72%; |
||||
width: 28%; |
||||
transition: all .5s; |
||||
// &:hover{ |
||||
// margin-top: -10px; |
||||
// } |
||||
// img{ |
||||
// transition: all .5s; |
||||
// &:hover{ |
||||
// margin-top: -10px; |
||||
// } |
||||
// } |
||||
.name{ |
||||
position: absolute; |
||||
top: 23%; |
||||
right: 0; |
||||
@include nameTip; |
||||
} |
||||
.integrated-counter { |
||||
top: -14%; |
||||
left: 24%; |
||||
width: 43%; |
||||
transition: all 0.5s; |
||||
|
||||
} |
||||
.manager{ |
||||
bottom: 0; |
||||
left: 57%; |
||||
width: 39%; |
||||
transition: all .5s; |
||||
&:hover{ |
||||
bottom: 10px; |
||||
} |
||||
.name { |
||||
position: absolute; |
||||
top: 65%; |
||||
left: 37%; |
||||
@include nameTip; |
||||
} |
||||
} |
||||
.credit-dep{ |
||||
top: 31%; |
||||
left: 0; |
||||
width: 20%; |
||||
transition: all .5s; |
||||
// &:hover{ |
||||
// top: 29%; |
||||
// } |
||||
} |
||||
.company-finance{ |
||||
top: 52%; |
||||
left: 9%; |
||||
width: 28%; |
||||
transition: all .5s; |
||||
// &:hover{ |
||||
// top: 50%; |
||||
// } |
||||
} |
||||
.personal-finance{ |
||||
bottom: 0; |
||||
left: 25%; |
||||
width: 30%; |
||||
transition: all .5s; |
||||
// &:hover{ |
||||
// bottom: 10px; |
||||
// } |
||||
} |
||||
.case{ |
||||
position: absolute; |
||||
top: 92px; |
||||
left: 150px; |
||||
width: 150px; |
||||
height: 50px; |
||||
line-height: 50px; |
||||
text-align: center; |
||||
color: #fff; |
||||
font-size: 24px; |
||||
background: url(../../../assets/img/case.png) 0 0 /cover no-repeat; |
||||
background-size: 150px 50px; |
||||
cursor: pointer; |
||||
// &:hover{ |
||||
// top: 76px; |
||||
// } |
||||
} |
||||
@media(max-width: 1440px){ |
||||
.credit-dep{ |
||||
top: 32%; |
||||
} |
||||
.company-finance{ |
||||
top: 53%; |
||||
} |
||||
.personal-finance{ |
||||
top: 72%; |
||||
} |
||||
.integrated-counter{ |
||||
width: 44%; |
||||
} |
||||
} |
||||
@media(max-width: 1300px){ |
||||
& { |
||||
min-height: calc(100vh - 76px); |
||||
} |
||||
} |
||||
&:hover { |
||||
margin-top: -10px; |
||||
} |
||||
.coming{ |
||||
position: fixed; |
||||
top: -200%; |
||||
left: 50%; |
||||
width: 376px; |
||||
padding: 40px 0; |
||||
text-align: center; |
||||
transform: translate(-50%,-50%); |
||||
border-radius: 16px; |
||||
background-color: rgba(0,0,0,0.80); |
||||
transition: all .3s; |
||||
&.active{ |
||||
top: 50%; |
||||
} |
||||
.text{ |
||||
margin-top: 24px; |
||||
font-size: 22px; |
||||
font-weight: 400; |
||||
color: #fff; |
||||
} |
||||
|
||||
.name { |
||||
position: absolute; |
||||
top: 23%; |
||||
left: 20%; |
||||
@include nameTip; |
||||
} |
||||
} |
||||
|
||||
.international { |
||||
top: -9%; |
||||
left: 72%; |
||||
width: 28%; |
||||
transition: all 0.5s; |
||||
|
||||
// &:hover{ |
||||
// margin-top: -10px; |
||||
// } |
||||
// img{ |
||||
// transition: all .5s; |
||||
// &:hover{ |
||||
// margin-top: -10px; |
||||
// } |
||||
// } |
||||
.name { |
||||
position: absolute; |
||||
top: 18%; |
||||
right: 45%; |
||||
@include nameTip; |
||||
} |
||||
} |
||||
|
||||
.manager { |
||||
bottom: 0; |
||||
left: 57%; |
||||
width: 39%; |
||||
transition: all 0.5s; |
||||
|
||||
&:hover { |
||||
bottom: 10px; |
||||
} |
||||
|
||||
.name { |
||||
position: absolute; |
||||
top: 65%; |
||||
left: 37%; |
||||
@include nameTip; |
||||
} |
||||
} |
||||
|
||||
.credit-dep { |
||||
top: 31%; |
||||
left: 0; |
||||
width: 20%; |
||||
transition: all 0.5s; |
||||
// &:hover{ |
||||
// top: 29%; |
||||
// } |
||||
} |
||||
|
||||
.company-finance { |
||||
top: 52%; |
||||
left: 9%; |
||||
width: 28%; |
||||
transition: all 0.5s; |
||||
// &:hover{ |
||||
// top: 50%; |
||||
// } |
||||
} |
||||
|
||||
.personal-finance { |
||||
bottom: 0; |
||||
left: 25%; |
||||
width: 30%; |
||||
transition: all 0.5s; |
||||
// &:hover{ |
||||
// bottom: 10px; |
||||
// } |
||||
} |
||||
|
||||
.case { |
||||
position: absolute; |
||||
top: 92px; |
||||
left: 150px; |
||||
width: 150px; |
||||
height: 50px; |
||||
line-height: 50px; |
||||
text-align: center; |
||||
color: #fff; |
||||
font-size: 24px; |
||||
background: url(../../../assets/img/case.png) 0 0 / cover no-repeat; |
||||
background-size: 150px 50px; |
||||
cursor: pointer; |
||||
// &:hover{ |
||||
// top: 76px; |
||||
// } |
||||
} |
||||
|
||||
@media (max-width: 1440px) { |
||||
.credit-dep { |
||||
top: 32%; |
||||
} |
||||
|
||||
.company-finance { |
||||
top: 53%; |
||||
} |
||||
|
||||
.personal-finance { |
||||
top: 72%; |
||||
} |
||||
|
||||
.integrated-counter { |
||||
width: 44%; |
||||
} |
||||
} |
||||
|
||||
@media (max-width: 1300px) { |
||||
& { |
||||
min-height: calc(100vh - 76px); |
||||
} |
||||
} |
||||
} |
||||
|
||||
.coming { |
||||
position: fixed; |
||||
top: -200%; |
||||
left: 50%; |
||||
width: 376px; |
||||
padding: 40px 0; |
||||
text-align: center; |
||||
transform: translate(-50%, -50%); |
||||
border-radius: 16px; |
||||
background-color: rgba(0, 0, 0, 0.8); |
||||
transition: all 0.3s; |
||||
|
||||
&.active { |
||||
top: 50%; |
||||
} |
||||
|
||||
.text { |
||||
margin-top: 24px; |
||||
font-size: 22px; |
||||
font-weight: 400; |
||||
color: #fff; |
||||
} |
||||
} |
||||
</style> |
@ -1,327 +1,355 @@ |
||||
<template> |
||||
<!-- :style="full?'height:100vh;':'height: 80vh;'" --> |
||||
<div class="box" :class="full? '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;'"> |
||||
<p style="margin:auto">商业银行系统</p> |
||||
</div> |
||||
<!-- <div class="body2"> |
||||
<!-- :style="fullScreen?'height:100vh;':'height: 80vh;'" --> |
||||
<div class="box" :class="fullScreen || isCredit ? 'h-4/5' : ''"> |
||||
<div class="nav"> |
||||
<!-- <div class="top" :style="fullScreen?'border-radius:0':'border-top-left-radius: 20px;'"> select-none --> |
||||
<div class="top" :style="fullScreen ? 'border-radius:0' : 'border-top-left-radius: 20px;'"> |
||||
<p style="margin:auto">商业银行系统</p> |
||||
</div> |
||||
<!-- <div class="body2"> |
||||
<navbar class="body"></navbar> |
||||
</div> --> |
||||
<div class="body"> |
||||
<navbar /> |
||||
</div> |
||||
<!-- <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" 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"> |
||||
<router-view class="manage-view"></router-view> |
||||
</transition> |
||||
</div> |
||||
</div> |
||||
<div class="body"> |
||||
<navbar /> |
||||
</div> |
||||
<!-- <navbar class="body"></navbar> --> |
||||
</div> |
||||
<div class="manage-layout"> |
||||
<div class="top" :style="fullScreen ? 'border-radius:0' : 'border-top-right-radius: 20px;'"> |
||||
<img v-show="!fullScreen && !isCredit" src="../../../assets/svg/fullscreen.svg" alt="" |
||||
@click="handleFullscreen"> |
||||
<img v-show="fullScreen" src="../../../assets/svg/shrink.svg" alt="" @click="shrink"> |
||||
<i @click="close" class="el-icon-close"></i> |
||||
</div> |
||||
<div class="manage-content"> |
||||
<transition name="fade"> |
||||
<router-view class="manage-view"></router-view> |
||||
</transition> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState } from 'vuex' |
||||
import navbar from '../navbar' |
||||
|
||||
export default { |
||||
name: 'index', |
||||
data() { |
||||
return { |
||||
fullscreen:this.$store.state.system.fullScreen,// 是否全屏--store读取 |
||||
} |
||||
name: 'index', |
||||
data () { |
||||
return { |
||||
curRoute: '' |
||||
} |
||||
}, |
||||
components: { |
||||
navbar |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['fullScreen', 'isCredit']) |
||||
}, |
||||
watch: { |
||||
'$route': { |
||||
handler () { |
||||
this.curRoute = this.$route.path |
||||
}, |
||||
immediate: true |
||||
} |
||||
}, |
||||
beforeDestroy () { |
||||
sessionStorage.setItem(this.curRoute.includes('Loans') ? 'creditPath' : 'computerPath', this.curRoute) |
||||
sessionStorage.getItem('submited') || this.$router.push('/counter/list/') |
||||
}, |
||||
methods: { |
||||
close () { |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
components: { |
||||
navbar |
||||
handleFullscreen () { |
||||
this.$store.commit('system/changeFullscreen', true) |
||||
}, |
||||
// beforeMount() { |
||||
// const path = sessionStorage.getItem('computerPath') |
||||
// console.log('router-view') |
||||
// console.log(path) |
||||
// this.$router.push(path) |
||||
// }, |
||||
methods: { |
||||
close(){ |
||||
// 缓存上一次退出时的系统录入的路径 下一次进来时跳到上一次退出时的页面 用于刷卡 |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
handleFullscreen(){ |
||||
this.fullscreen = true |
||||
this.$store.commit('system/changeFullscreen',true) |
||||
}, |
||||
shrink(){ |
||||
this.fullscreen = false |
||||
this.$store.commit('system/changeFullscreen',false) |
||||
}, |
||||
|
||||
shrink () { |
||||
this.$store.commit('system/changeFullscreen', false) |
||||
}, |
||||
computed: { |
||||
full:function(){ |
||||
return this.$store.state.system.fullScreen |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
$font_size_All: 16px; // 字体大小 |
||||
$submenu_padding_left: 25px; // 相应的padding-left大小 |
||||
$font_size_All: 16px; // 字体大小 |
||||
$submenu_padding_left: 25px; // 相应的padding-left大小 |
||||
|
||||
// /deep/.el-form-item { |
||||
// label { |
||||
// width: 100px!important; |
||||
// text-align-last: justify; |
||||
// } |
||||
// /deep/.el-form-item { |
||||
// label { |
||||
// width: 100px!important; |
||||
// text-align-last: justify; |
||||
// } |
||||
|
||||
// } |
||||
// } |
||||
|
||||
@media screen and (min-width: 1920px) { |
||||
/deep/.body { |
||||
min-height: 50vh; |
||||
} |
||||
} |
||||
@media screen and (min-width: 1920px) { |
||||
/deep/.body { |
||||
min-height: 50vh; |
||||
} |
||||
} |
||||
|
||||
@media screen and (min-width: 1200px) and (max-width: 1700px) { |
||||
/deep/.body { |
||||
min-height: 50vh; |
||||
} |
||||
} |
||||
@media screen and (min-width: 1200px) and (max-width: 1700px) { |
||||
/deep/.body { |
||||
min-height: 50vh; |
||||
} |
||||
} |
||||
|
||||
// .wrap2{ |
||||
// width: 100%; |
||||
// display: flex; |
||||
// flex-direction: column; |
||||
// overflow: hidden; |
||||
// .title{ |
||||
// height: 60px; |
||||
// display: flex; |
||||
// align-items: center; |
||||
// font-size: 20px; |
||||
// padding-left: 50px; |
||||
// } |
||||
// .body{ |
||||
// margin-top: 50px; |
||||
// } |
||||
// } |
||||
|
||||
.box{ |
||||
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%; |
||||
} |
||||
} |
||||
} |
||||
.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 .5s; |
||||
} |
||||
.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; |
||||
} |
||||
// .wrap2{ |
||||
// width: 100%; |
||||
// display: flex; |
||||
// flex-direction: column; |
||||
// overflow: hidden; |
||||
// .title{ |
||||
// height: 60px; |
||||
// display: flex; |
||||
// align-items: center; |
||||
// font-size: 20px; |
||||
// padding-left: 50px; |
||||
// } |
||||
// .body{ |
||||
// margin-top: 50px; |
||||
// } |
||||
// } |
||||
|
||||
} |
||||
.box { |
||||
display: flex; |
||||
min-width: 1300px; |
||||
|
||||
// 校验错误变红 |
||||
/deep/ .is-error input { |
||||
border-color: #f40!important;; |
||||
} |
||||
.nav { |
||||
width: 270px; |
||||
min-height: 80vh; |
||||
border-top-left-radius: 20px; |
||||
border-bottom-left-radius: 20px; |
||||
display: flex; |
||||
flex-direction: column; |
||||
|
||||
/deep/.el-input { |
||||
// width: 15vw!important; |
||||
width: 100%; |
||||
input { |
||||
font-size: $font_size_All!important; |
||||
} |
||||
.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; |
||||
} |
||||
} |
||||
|
||||
/deep/ .text-xl p { |
||||
font-size: $font_size_All!important; |
||||
} |
||||
/deep/ .el-form-item .el-form-item__label { |
||||
font-size: $font_size_All!important; |
||||
} |
||||
.body { |
||||
flex: 1; |
||||
|
||||
/deep/ .el-submenu{ |
||||
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; |
||||
.el-menu { |
||||
height: 100%; |
||||
} |
||||
} |
||||
// /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; |
||||
} |
||||
|
||||
.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; |
||||
} |
||||
} |
||||
|
||||
/deep/ .title p { |
||||
font-size: $font_size_All!important; |
||||
.manage-content { |
||||
flex: 1; |
||||
position: relative; |
||||
border-bottom-right-radius: 20px; |
||||
overflow: hidden; |
||||
|
||||
.manage-view { |
||||
position: absolute; |
||||
top: 0; |
||||
bottom: 0; |
||||
background: #fff; |
||||
} |
||||
} |
||||
/deep/ .idCard p { |
||||
font-size: $font_size_All!important; |
||||
} |
||||
} |
||||
|
||||
.fade-enter-active, |
||||
.fade-leave-active { |
||||
transition: opacity 0.5s; |
||||
} |
||||
|
||||
.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; |
||||
} |
||||
} |
||||
|
||||
// 校验错误变红 |
||||
/deep/ .is-error input { |
||||
border-color: #f40 !important; |
||||
} |
||||
|
||||
/deep/.el-input { |
||||
// width: 15vw!important; |
||||
width: 100%; |
||||
|
||||
input { |
||||
font-size: $font_size_All !important; |
||||
} |
||||
} |
||||
|
||||
/deep/ .text-xl p { |
||||
font-size: $font_size_All !important; |
||||
} |
||||
|
||||
/deep/ .el-form-item .el-form-item__label { |
||||
font-size: $font_size_All !important; |
||||
} |
||||
|
||||
/deep/ .el-submenu { |
||||
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; |
||||
} |
||||
|
||||
// /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; |
||||
} |
||||
|
||||
/deep/ .title p { |
||||
font-size: $font_size_All !important; |
||||
} |
||||
|
||||
/deep/ .idCard p { |
||||
font-size: $font_size_All !important; |
||||
} |
||||
|
||||
// /deep/ .el-form-item__error { |
||||
// top: 105%; |
||||
// left: auto; |
||||
// right: 0; |
||||
// 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/ .el-form-item__error { |
||||
// top: 105%; |
||||
// left: auto; |
||||
// right: 0; |
||||
// 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/ .idCard { |
||||
// width: 15vw; |
||||
width: 100%; |
||||
} |
||||
} |
||||
|
||||
@media screen and (min-width: 1200px) and (max-width: 1900px) { |
||||
.box { |
||||
display: flex; |
||||
min-width: 80vw; |
||||
overflow: auto; |
||||
|
||||
.nav { |
||||
// width: 25vw; |
||||
// min-height: 80vh; |
||||
// overflow: hidden; |
||||
// border-top-left-radius: 20px; |
||||
// display: flex; |
||||
// flex-direction: column; |
||||
|
||||
.top { |
||||
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; |
||||
} |
||||
} |
||||
@media screen and (min-width: 1200px) and (max-width: 1900px) { |
||||
.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; |
||||
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; |
||||
} |
||||
} |
||||
.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-layout { |
||||
width: calc(100% - 270px); |
||||
min-height: 80vh; |
||||
overflow: auto; |
||||
// background: #fff; |
||||
background: transparent; |
||||
display: flex; |
||||
flex-direction: column; |
||||
box-sizing: border-box; |
||||
|
||||
.top { |
||||
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> |
@ -0,0 +1,207 @@ |
||||
<template> |
||||
<!-- 零存整取 --> |
||||
<div class="wrap wrap2"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">代收水费</el-menu-item> |
||||
<el-menu-item index="2">代收电费</el-menu-item> |
||||
<el-menu-item index="3">代收电话费</el-menu-item> |
||||
|
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['代理业务', text]" /> |
||||
|
||||
<!-- 代收水费 --> |
||||
<waterRate v-if="activeIndex === '1'"></waterRate> |
||||
<!-- 代收电费 --> |
||||
<electricRate v-if="activeIndex === '2'"></electricRate> |
||||
<!-- 代收电话费 --> |
||||
<telRate v-if="activeIndex === '3'"></telRate> |
||||
|
||||
<el-dialog style="margin-top:10vh" :visible.sync="visible" :modal="false" width="40%" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="data-dia"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提交</div> |
||||
</div> |
||||
<div class="popBody"> |
||||
<h2>本业务需要授权</h2> |
||||
</div> |
||||
<div class="popBtns"> |
||||
<el-button class="close btn" @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn" type="primary" @click="visible = false">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import waterRate from './waterRate.vue' |
||||
import electricRate from './electricRate.vue' |
||||
import telRate from './telRate.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
waterRate, |
||||
electricRate, |
||||
telRate, |
||||
MyTitle |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '',/* 顶部文字 */ |
||||
cacheVal: '', |
||||
textObj: { |
||||
'1': '代收水费', |
||||
'2': '代收电费', |
||||
'3': '代收电话费', |
||||
}, |
||||
form: { |
||||
|
||||
}, |
||||
visible: false, |
||||
options: [], |
||||
activeIndex: '1', |
||||
second: [// 二级卡数组 |
||||
|
||||
], |
||||
} |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('agentIndex')) { |
||||
this.handleSelect(sessionStorage.getItem('agentIndex')) |
||||
} else { |
||||
this.handleSelect('1') |
||||
} |
||||
}, |
||||
methods: { |
||||
handleSelect (val) { |
||||
this.text = this.textObj[val] |
||||
this.activeIndex = val |
||||
this.cacheVal = val |
||||
}, |
||||
}, |
||||
destroyed () { |
||||
sessionStorage.setItem('agentIndex', this.cacheVal) |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.submitBtn { |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,396 @@ |
||||
<!-- 代收电费 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="certificateType"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType" disabled> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="账号" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="缴费单位" prop="paymentUnit"> |
||||
<el-input v-model="form.paymentUnit" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="户号" prop="houseId"> |
||||
<el-input v-model="form.houseId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="21" :offset="1"> |
||||
<el-form-item label="住址信息" prop="address"> |
||||
<el-input type="textarea" :rows="3" placeholder="请输入住址信息" v-model.trim="form.address"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="缴费金额" prop="paymentMoney"> |
||||
<el-input v-model="form.paymentMoney" maxlength="15" |
||||
@input="val => ismoney(val, form, 'paymentMoney')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="每月代扣" prop="monthlyWithholding" required> |
||||
<el-radio-group v-model.trim="form.monthlyWithholding"> |
||||
<el-radio :label="142">是</el-radio> |
||||
<el-radio :label="143">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
|
||||
const moduleName = 'agent/electricRate' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyDialog |
||||
}, |
||||
mixins: [TipsBefore], |
||||
created () { |
||||
if (sessionStorage.getItem('electricRatePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('electricRatePassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('electricRateIdCard')) { |
||||
this.idNumberJudge = true |
||||
// 身份证号码、客户姓名、币种(人民币)、钞汇标识(钞户) |
||||
const { idNumber, userName, peopleNumber, currency, goldLogo } = this.dataFlow |
||||
this.form.clientNumber = peopleNumber |
||||
this.form.idNumber = idNumber |
||||
this.form.customerName = userName |
||||
this.form.currency = currency |
||||
this.form.goldLogo = goldLogo |
||||
this.form.voucherType = 127 |
||||
} |
||||
if (sessionStorage.getItem('electricRateBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
|
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, |
||||
idNumber: '', |
||||
voucherNumber: '', |
||||
customerName: '', |
||||
paymentUnit: '', |
||||
houseId: '', |
||||
address: '', |
||||
paymentMoney: '', |
||||
monthlyWithholding: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
voucherNumber: '账号', |
||||
customerName: '客户姓名', |
||||
paymentUnit: '缴费单位', |
||||
houseId: '户号', |
||||
address: '住址信息', |
||||
paymentMoney: '缴费金额', |
||||
monthlyWithholding: '每月代扣', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
idNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入证件号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
customerName: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入客户姓名', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentUnit: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费单位', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
houseId: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入户号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
address: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入住址信息', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentMoney: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
monthlyWithholding: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择每月代扣', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
myTable2: { |
||||
158: { |
||||
prop: 'certificateType',//证件类型 |
||||
type: '1', |
||||
"subjectId": 19, |
||||
}, |
||||
// 169: { |
||||
// prop: 'customerManage',//客户经理 |
||||
// type: '3', |
||||
// "subjectId": 27, |
||||
// }, |
||||
160: { |
||||
prop: 'clientNumber',//客户号 |
||||
type: '3', |
||||
"subjectId": 6, |
||||
} |
||||
}, |
||||
myTable: { |
||||
159: { |
||||
prop: 'idNumber',// 身份证号码 |
||||
type: '3', |
||||
}, |
||||
161: { |
||||
prop: 'customerName',//客户姓名 |
||||
type: '3', |
||||
"subjectId": 7, |
||||
}, |
||||
162: { |
||||
prop: 'currency',//币种 |
||||
type: '1', |
||||
"subjectId": 8, |
||||
}, |
||||
163: { |
||||
prop: 'goldLogo',//钞汇标识 |
||||
type: '1', |
||||
"subjectId": 9, |
||||
}, |
||||
164: { |
||||
prop: 'voucherType',//凭证类型 |
||||
type: '1', |
||||
"subjectId": 11, |
||||
}, |
||||
166: { |
||||
prop: 'voucherNumber',//凭证号码 |
||||
type: '3', |
||||
"subjectId": 44, |
||||
}, |
||||
167: { |
||||
prop: 'drawPassword', |
||||
type: '3', |
||||
"subjectId": 17, |
||||
}, |
||||
168: { |
||||
prop: 'monthDeposit',//月存金额 |
||||
type: '3', |
||||
"subjectId": 31, |
||||
}, |
||||
170: { |
||||
prop: 'extendDepositTarget',//续存标识 |
||||
type: '1', |
||||
"subjectId": 37, |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('722') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('724') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('729') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
getFormData () { |
||||
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155' |
||||
const cards = { |
||||
// 1399: 'nomUsefulPhrasesOpenCard2', |
||||
// 166: 'nomUsefulPhrasesOpenCard', |
||||
// 167: 'nomUsefulPhrasesOpenPassword' |
||||
} |
||||
const callback = () => { |
||||
if (this.form.idNumber) { |
||||
this.idNumberJudge = true |
||||
} |
||||
if (this.form.voucherNumber) { |
||||
this.cardNumberJudge = true |
||||
} |
||||
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword') |
||||
} |
||||
} |
||||
autoPlay2(parentId, this.form, this.myTable2, this.myTable, cards, callback) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写账号') |
||||
return |
||||
} |
||||
|
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
// 验证通过逻辑写在这 |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,706,710' |
||||
formList.push( |
||||
{ answerId: 721, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',721', type: 1 }, |
||||
{ answerId: 722, emptyOne: '', emptyTwo: '', operationIds: preId + ',722', type: '' }, |
||||
{ answerId: 724, emptyOne: 84, emptyTwo: form.voucherNumber, operationIds: preId + ',724', type: 3 }, |
||||
{ answerId: 723, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',723', type: 3 }, |
||||
|
||||
{ answerId: 725, emptyOne: 111, emptyTwo: form.paymentUnit, operationIds: preId + ',725', type: 3 }, |
||||
{ answerId: 726, emptyOne: 112, emptyTwo: form.houseId, operationIds: preId + ',726', type: 3 }, |
||||
{ answerId: 730, emptyOne: 153, emptyTwo: form.address, operationIds: preId + ',730', type: 3 }, |
||||
{ answerId: 727, emptyOne: 113, emptyTwo: form.paymentMoney, operationIds: preId + ',727', type: 3 }, |
||||
{ answerId: 728, emptyOne: 114, emptyTwo: form.monthlyWithholding, operationIds: preId + ',728', type: 1 }, |
||||
{ answerId: 729, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',729', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
ismoney, |
||||
checkHanzi, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped></style> |
@ -0,0 +1,388 @@ |
||||
<!-- 代收电话费 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="certificateType"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType"> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="账号" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="缴费单位" prop="paymentUnit"> |
||||
<el-input v-model="form.paymentUnit" /> |
||||
</el-form-item> |
||||
<el-form-item label="缴费号码" prop="paymentNum"> |
||||
<el-input v-model="form.paymentNum" maxlength="30"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="每月代扣" prop="monthlyWithholding"> |
||||
<el-radio-group v-model.trim="form.monthlyWithholding"> |
||||
<el-radio :label="142">是</el-radio> |
||||
<el-radio :label="143">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="号码类型" prop="numType"> |
||||
<el-select v-model.trim="form.numType" placeholder="请选择"> |
||||
<el-option label="手机号码" :value="144"></el-option> |
||||
<el-option label="座机号码" :value="145"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="缴费金额" prop="paymentMoney"> |
||||
<el-input :value="form.paymentMoney" maxlength="15" |
||||
@input="val => ismoney(val, form, 'paymentMoney')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> --> |
||||
</template> |
||||
<script> |
||||
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
|
||||
const moduleName = 'agent/telRate' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyDialog |
||||
}, |
||||
mixins: [TipsBefore], |
||||
created () { |
||||
if (sessionStorage.getItem('telRatePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('telRatePassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('telRateIdCard')) { |
||||
this.idNumberJudge = true |
||||
const { idNumber, userName } = this.dataFlow |
||||
this.form.idNumber = idNumber |
||||
this.form.customerName = userName |
||||
} |
||||
if (sessionStorage.getItem('telRateBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
|
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, |
||||
idNumber: '', |
||||
voucherNumber: '', |
||||
customerName: '', |
||||
paymentUnit: '', |
||||
numType: '', |
||||
paymentNum: '', |
||||
paymentMoney: '', |
||||
monthlyWithholding: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
voucherNumber: '账号', |
||||
customerName: '客户姓名', |
||||
paymentUnit: '缴费单位', |
||||
numType: '号码类型', |
||||
paymentNum: '缴费号码', |
||||
paymentMoney: '缴费金额', |
||||
monthlyWithholding: '每月代扣', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
idNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入证件号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
customerName: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入客户姓名', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentUnit: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费单位', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
numType: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择号码类型', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
paymentNum: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentMoney: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
monthlyWithholding: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择每月代扣', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
myTable2: { |
||||
158: { |
||||
prop: 'certificateType',//证件类型 |
||||
type: '1', |
||||
"subjectId": 19, |
||||
}, |
||||
// 169: { |
||||
// prop: 'customerManage',//客户经理 |
||||
// type: '3', |
||||
// "subjectId": 27, |
||||
// }, |
||||
160: { |
||||
prop: 'clientNumber',//客户号 |
||||
type: '3', |
||||
"subjectId": 6, |
||||
} |
||||
}, |
||||
myTable: { |
||||
159: { |
||||
prop: 'idNumber',// 身份证号码 |
||||
type: '3', |
||||
}, |
||||
161: { |
||||
prop: 'customerName',//客户姓名 |
||||
type: '3', |
||||
"subjectId": 7, |
||||
}, |
||||
162: { |
||||
prop: 'currency',//币种 |
||||
type: '1', |
||||
"subjectId": 8, |
||||
}, |
||||
163: { |
||||
prop: 'goldLogo',//钞汇标识 |
||||
type: '1', |
||||
"subjectId": 9, |
||||
}, |
||||
164: { |
||||
prop: 'voucherType',//凭证类型 |
||||
type: '1', |
||||
"subjectId": 11, |
||||
}, |
||||
166: { |
||||
prop: 'voucherNumber',//凭证号码 |
||||
type: '3', |
||||
"subjectId": 44, |
||||
}, |
||||
167: { |
||||
prop: 'drawPassword', |
||||
type: '3', |
||||
"subjectId": 17, |
||||
}, |
||||
168: { |
||||
prop: 'monthDeposit',//月存金额 |
||||
type: '3', |
||||
"subjectId": 31, |
||||
}, |
||||
170: { |
||||
prop: 'extendDepositTarget',//续存标识 |
||||
type: '1', |
||||
"subjectId": 37, |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('732') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('733') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('740') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
getFormData () { |
||||
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155' |
||||
const cards = { |
||||
// 1399: 'nomUsefulPhrasesOpenCard2', |
||||
// 166: 'nomUsefulPhrasesOpenCard', |
||||
// 167: 'nomUsefulPhrasesOpenPassword' |
||||
} |
||||
const callback = () => { |
||||
if (this.form.idNumber) { |
||||
this.idNumberJudge = true |
||||
} |
||||
if (this.form.voucherNumber) { |
||||
this.cardNumberJudge = true |
||||
} |
||||
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword') |
||||
} |
||||
} |
||||
autoPlay2(parentId, this.form, this.myTable2, this.myTable, cards, callback) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写账号') |
||||
return |
||||
} |
||||
|
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
// 验证通过逻辑写在这 |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,706,711' |
||||
formList.push( |
||||
{ answerId: 731, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',731', type: 1 }, |
||||
{ answerId: 732, emptyOne: '', emptyTwo: '', operationIds: preId + ',732', type: '' }, |
||||
{ answerId: 734, emptyOne: 84, emptyTwo: form.voucherNumber, operationIds: preId + ',734', type: 3 }, |
||||
{ answerId: 733, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',733', type: 3 }, |
||||
{ answerId: 735, emptyOne: 111, emptyTwo: form.paymentUnit, operationIds: preId + ',735', type: 3 }, |
||||
{ answerId: 736, emptyOne: 115, emptyTwo: form.numType, operationIds: preId + ',736', type: 1 }, |
||||
{ answerId: 737, emptyOne: 116, emptyTwo: form.paymentNum, operationIds: preId + ',737', type: 3 }, |
||||
{ answerId: 738, emptyOne: 113, emptyTwo: form.paymentMoney, operationIds: preId + ',738', type: 3 }, |
||||
{ answerId: 739, emptyOne: 114, emptyTwo: form.monthlyWithholding, operationIds: preId + ',739', type: 1 }, |
||||
{ answerId: 740, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',740', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
ismoney, |
||||
checkHanzi, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped></style> |
@ -0,0 +1,373 @@ |
||||
<!-- 代收水费 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型" prop="certificateType"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType" disabled> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="账号" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="缴费单位" prop="paymentUnit"> |
||||
<el-input v-model="form.paymentUnit" /> |
||||
</el-form-item> |
||||
<el-form-item label="缴费金额" prop="paymentMoney"> |
||||
<el-input :value="form.paymentMoney" maxlength="15" |
||||
@input="val => ismoney(val, form, 'paymentMoney')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
|
||||
<el-form-item label="户号" prop="houseId"> |
||||
<el-input v-model="form.houseId" /> |
||||
</el-form-item> |
||||
<el-form-item label="每月代扣" prop="monthlyWithholding"> |
||||
<el-radio-group v-model.trim="form.monthlyWithholding"> |
||||
<el-radio :label="142">是</el-radio> |
||||
<el-radio :label="143">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import NeedBefore from '@/components/needBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
|
||||
const moduleName = 'agent/waterRate' |
||||
export default { |
||||
name: '', |
||||
props: {}, |
||||
components: { |
||||
NeedBefore, |
||||
MyDialog |
||||
}, |
||||
mixins: [TipsBefore], |
||||
created () { |
||||
if (sessionStorage.getItem('waterRatePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('waterRatePassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('waterRateIdCard')) { |
||||
this.idNumberJudge = true |
||||
const { idNumber } = this.dataFlow |
||||
this.form.idNumber = idNumber |
||||
} |
||||
if (sessionStorage.getItem('waterRateBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber, userName } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
this.form.customerName = userName |
||||
} |
||||
|
||||
|
||||
// this.getFormData() |
||||
|
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
idNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, |
||||
idNumber: '', |
||||
voucherNumber: '', |
||||
customerName: '', |
||||
paymentUnit: '', |
||||
houseId: '', |
||||
paymentMoney: '', |
||||
monthlyWithholding: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
voucherNumber: '账号', |
||||
customerName: '客户姓名', |
||||
paymentUnit: '缴费单位', |
||||
houseId: '户号', |
||||
paymentMoney: '缴费金额', |
||||
monthlyWithholding: '每月代扣', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
idNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入证件号码', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherNumber: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
customerName: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入客户姓名', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentUnit: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费单位', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
houseId: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入户号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
paymentMoney: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入缴费金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
monthlyWithholding: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择每月代扣', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
myTable2: { |
||||
158: { |
||||
prop: 'certificateType',//证件类型 |
||||
type: '1', |
||||
"subjectId": 19, |
||||
}, |
||||
// 169: { |
||||
// prop: 'customerManage',//客户经理 |
||||
// type: '3', |
||||
// "subjectId": 27, |
||||
// }, |
||||
160: { |
||||
prop: 'clientNumber',//客户号 |
||||
type: '3', |
||||
"subjectId": 6, |
||||
} |
||||
}, |
||||
myTable: { |
||||
159: { |
||||
prop: 'idNumber',// 身份证号码 |
||||
type: '3', |
||||
}, |
||||
161: { |
||||
prop: 'customerName',//客户姓名 |
||||
type: '3', |
||||
"subjectId": 7, |
||||
}, |
||||
162: { |
||||
prop: 'currency',//币种 |
||||
type: '1', |
||||
"subjectId": 8, |
||||
}, |
||||
163: { |
||||
prop: 'goldLogo',//钞汇标识 |
||||
type: '1', |
||||
"subjectId": 9, |
||||
}, |
||||
164: { |
||||
prop: 'voucherType',//凭证类型 |
||||
type: '1', |
||||
"subjectId": 11, |
||||
}, |
||||
166: { |
||||
prop: 'voucherNumber',//凭证号码 |
||||
type: '3', |
||||
"subjectId": 44, |
||||
}, |
||||
167: { |
||||
prop: 'drawPassword', |
||||
type: '3', |
||||
"subjectId": 17, |
||||
}, |
||||
168: { |
||||
prop: 'monthDeposit',//月存金额 |
||||
type: '3', |
||||
"subjectId": 31, |
||||
}, |
||||
170: { |
||||
prop: 'extendDepositTarget',//续存标识 |
||||
type: '1', |
||||
"subjectId": 37, |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
|
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('713') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('715') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('720') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
getFormData () { |
||||
const parentId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,59,155' |
||||
const cards = { |
||||
// 1399: 'nomUsefulPhrasesOpenCard2', |
||||
// 166: 'nomUsefulPhrasesOpenCard', |
||||
// 167: 'nomUsefulPhrasesOpenPassword' |
||||
} |
||||
const callback = () => { |
||||
if (this.form.idNumber) { |
||||
this.idNumberJudge = true |
||||
} |
||||
if (this.form.voucherNumber) { |
||||
this.cardNumberJudge = true |
||||
} |
||||
if (sessionStorage.getItem('nomUsefulPhrasesOpenPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomUsefulPhrasesOpenPassword') |
||||
} |
||||
} |
||||
autoPlay2(parentId, this.form, this.myTable2, this.myTable, cards, callback) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写账号') |
||||
return |
||||
} |
||||
|
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
// 验证通过逻辑写在这 |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,706,709' |
||||
formList.push( |
||||
{ answerId: 712, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',712', type: 1 }, |
||||
{ answerId: 713, emptyOne: '', emptyTwo: '', operationIds: preId + ',713', type: '' }, |
||||
{ answerId: 715, emptyOne: 84, emptyTwo: form.voucherNumber, operationIds: preId + ',715', type: 3 }, |
||||
{ answerId: 714, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',714', type: 3 }, |
||||
{ answerId: 716, emptyOne: 111, emptyTwo: form.paymentUnit, operationIds: preId + ',716', type: 3 }, |
||||
{ answerId: 717, emptyOne: 112, emptyTwo: form.houseId, operationIds: preId + ',717', type: 3 }, |
||||
{ answerId: 718, emptyOne: 113, emptyTwo: form.paymentMoney, operationIds: preId + ',718', type: 3 }, |
||||
{ answerId: 719, emptyOne: 114, emptyTwo: form.monthlyWithholding, operationIds: preId + ',719', type: 1 }, |
||||
{ answerId: 720, emptyOne: 114, emptyTwo: form.drawPassword, operationIds: preId + ',720', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
ismoney, |
||||
checkHanzi, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}) |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped></style> |
@ -0,0 +1,111 @@ |
||||
<template> |
||||
<!-- 贷款申请 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷款申请']" /> |
||||
|
||||
<div class="flex j-between m-b-20"> |
||||
<div style="width: 300px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-button type="primary" @click="toDetail(0)">新建贷款申请</el-button> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="申请编号" align="center" /> |
||||
<el-table-column prop="createTime" label="申请日期" align="center" /> |
||||
<el-table-column prop="loanApplicationAmount" label="申请金额" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanApplicationAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="processingStatus" label="办理状态" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.processingStatus || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template slot-scope="scope"> |
||||
<el-button :disabled="!!scope.row.builtIn" @click="toDetail(scope.row)" size="small">{{ |
||||
scope.row.loanApplicationAmount ? '查看' : '编辑' |
||||
}}</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 1, |
||||
}) |
||||
this.list = data.page.records |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 详情 |
||||
toDetail (row) { |
||||
// 缓存信用评估几个id |
||||
this.$store.commit('system/setCreditIds', (row ? { |
||||
companyLoanId: row.companyLoanId, // 顶部三个tab切换的公共id |
||||
} : {})) |
||||
this.$router.push(row.loanApplicationAmount ? `/counter/list/manage/corporateLoans-detail?id=${row.companyLoanId}` : '/counter/list/manage/corporateLoans-apply') |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,480 @@ |
||||
<!-- 信用评估 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="140px"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">申请人个人信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号"> |
||||
<el-input v-model="form.applicationAccount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="证件号码"> |
||||
<el-input v-model="form.identificationNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="抵押房产地址"> |
||||
<el-input v-model="form.propertyAddress" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="婚姻状况"> |
||||
<el-radio-group v-model="form.maritalStatus" disabled> |
||||
<el-radio label="未婚"></el-radio> |
||||
<el-radio label="已婚"></el-radio> |
||||
<el-radio label="离异"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="在袋鼠互联网科技有限公司购买社保" label-width="280px"> |
||||
<el-radio-group v-model="form.socialSecurity" disabled> |
||||
<el-radio label="是"></el-radio> |
||||
<el-radio label="否"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称"> |
||||
<el-input v-model="form.customerName" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="联系电话"> |
||||
<el-input v-model="form.contactPhoneNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="与袋鼠互联网科技有限公司合作年限" label-width="280px"> |
||||
<el-input v-model="form.cooperationPeriod" @input="val => inputListen(val, form, 'cooperationPeriod')" |
||||
ref="cooperationPeriod"> |
||||
<template slot="append">年</template> |
||||
</el-input> |
||||
</el-form-item> |
||||
<el-form-item label="在袋鼠互联网科技有限公司签订劳动合同" label-width="300px"> |
||||
<el-radio-group v-model="form.laborContract" disabled> |
||||
<el-radio label="是"></el-radio> |
||||
<el-radio label="否"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="住址情况"> |
||||
<el-radio-group v-model="form.addressSituation" disabled> |
||||
<el-radio label="购置"></el-radio> |
||||
<el-radio label="按揭中"></el-radio> |
||||
<el-radio label="租住"></el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">还款来源</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item> |
||||
<div class="flex"> |
||||
<span class="req">*</span> |
||||
<el-checkbox v-model="form.matureRepayment">自行筹款,到期还款</el-checkbox> |
||||
<div class="inline-flex m-l-40"> |
||||
<el-checkbox v-model="form.otherRepaymentsCheck">其他:</el-checkbox> |
||||
<el-input v-if="form.otherRepaymentsCheck" v-model="form.otherRepayments" size="small" maxlength="50" |
||||
placeholder="请输入"></el-input> |
||||
</div> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">用途</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item> |
||||
<div class="flex"> |
||||
<span class="req">*</span> |
||||
<el-checkbox v-model="form.paymentForMaterials">支付材料款</el-checkbox> |
||||
<el-checkbox v-model="form.payLaborCosts">支付人工费</el-checkbox> |
||||
<el-checkbox v-model="form.payExpenses">支付研发费</el-checkbox> |
||||
<div class="inline-flex m-l-40"> |
||||
<el-checkbox v-model="form.otherUseCheck">其他:</el-checkbox> |
||||
<el-input v-if="form.otherUseCheck" v-model="form.otherUses" size="small" maxlength="50" |
||||
placeholder="请输入"></el-input> |
||||
</div> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">申请人特别说明(选填)</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-input v-model="form.specialInstructions" type="textarea" maxlength="500" placeholder="请输入申请诉求"></el-input> |
||||
</el-col> |
||||
|
||||
<el-col :span="24" style="margin-top: 20px"> |
||||
<h6 class="l-title">附件 请上传</h6> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<div class="files"> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.corporateIdCard ? '' : 'primary'" size="small" plain |
||||
@click="importSth('corporateIdCard')">上传</el-button> |
||||
<p class="text"> |
||||
法人身份证 |
||||
<span v-if="creditImportIds.corporateIdCard" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.mortgagePropertyCertificate ? '' : 'primary'" size="small" plain |
||||
@click="importSth('mortgagePropertyCertificate')">上传</el-button> |
||||
<p class="text"> |
||||
抵押物房产证 |
||||
<span v-if="creditImportIds.mortgagePropertyCertificate" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.proofOfMaritalStatus ? '' : 'primary'" size="small" plain |
||||
@click="importSth('proofOfMaritalStatus')">上传</el-button> |
||||
<p class="text"> |
||||
实际控制人婚姻情况证明(结/离婚证) |
||||
<span v-if="creditImportIds.proofOfMaritalStatus" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.copyOfSpouseSIdCard ? '' : 'primary'" size="small" plain |
||||
@click="importSth('copyOfSpouseSIdCard')">上传</el-button> |
||||
<p class="text"> |
||||
实际控制人配偶身份证复印件 |
||||
<span v-if="creditImportIds.copyOfSpouseSIdCard" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.originalBusinessLicense ? '' : 'primary'" size="small" plain |
||||
@click="importSth('originalBusinessLicense')">上传</el-button> |
||||
<p class="text"> |
||||
营业执照正本 |
||||
<span v-if="creditImportIds.originalBusinessLicense" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.accountOpeningPermit ? '' : 'primary'" size="small" plain |
||||
@click="importSth('accountOpeningPermit')">上传</el-button> |
||||
<p class="text"> |
||||
开户许可证(基本存款账户信息) |
||||
<span v-if="creditImportIds.accountOpeningPermit" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.leaseContract ? '' : 'primary'" size="small" plain |
||||
@click="importSth('leaseContract')">上传</el-button> |
||||
<p class="text"> |
||||
企业注册地址租赁合同或对应房产证 |
||||
<span v-if="creditImportIds.leaseContract" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.companyArticlesOfAssociation ? '' : 'primary'" size="small" plain |
||||
@click="importSth('companyArticlesOfAssociation')">上传</el-button> |
||||
<p class="text"> |
||||
公司章程 |
||||
<span v-if="creditImportIds.companyArticlesOfAssociation" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.shareholderDocuments ? '' : 'primary'" size="small" plain |
||||
@click="importSth('shareholderDocuments')">上传</el-button> |
||||
<p class="text"> |
||||
公司股东证件复印件 |
||||
<span v-if="creditImportIds.shareholderDocuments" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.financialSeal ? '' : 'primary'" size="small" plain |
||||
@click="importSth('financialSeal')">上传</el-button> |
||||
<p class="text"> |
||||
公章私章财务章 |
||||
<span v-if="creditImportIds.financialSeal" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.oneYearTaxPaymentCertificate ? '' : 'primary'" size="small" plain |
||||
@click="importSth('oneYearTaxPaymentCertificate')">上传</el-button> |
||||
<p class="text"> |
||||
公司近一年纳税证明 |
||||
<span v-if="creditImportIds.oneYearTaxPaymentCertificate" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.halfYearRevenue ? '' : 'primary'" size="small" plain |
||||
@click="importSth('halfYearRevenue')">上传</el-button> |
||||
<p class="text"> |
||||
公司近半年流水 |
||||
<span v-if="creditImportIds.halfYearRevenue" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.corporateFinancialStatements ? '' : 'primary'" size="small" plain |
||||
@click="importSth('corporateFinancialStatements')">上传</el-button> |
||||
<p class="text"> |
||||
企业财务报表 |
||||
<span v-if="creditImportIds.corporateFinancialStatements" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.loanApplicationForm ? '' : 'primary'" size="small" plain |
||||
@click="importSth('loanApplicationForm')">上传</el-button> |
||||
<p class="text"> |
||||
贷款申请书 |
||||
<span v-if="creditImportIds.loanApplicationForm" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
<div class="item"> |
||||
<el-button :type="creditImportIds.creditAuthorizationLetter ? '' : 'primary'" size="small" plain |
||||
@click="importSth('creditAuthorizationLetter')">上传</el-button> |
||||
<p class="text"> |
||||
征信授权书 |
||||
<span v-if="creditImportIds.creditAuthorizationLetter" class="text-danger">(已导入)</span> |
||||
</p> |
||||
</div> |
||||
</div> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="m-t-30 text-center"> |
||||
<el-button @click="beforeSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p class="text-lg" style="color: #333">请进行授信审核</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="close btn hover:bg-blue-100 " @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="submit">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible="successVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody" style="flex-direction: column;"> |
||||
<p class="text-lg" style="margin-bottom: 10px;color: #333">授信完成</p> |
||||
<p class="text-lg" style="color: #333">可进行贷款申请</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="toStep3">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { inputListen } from '@/utils/utilFunction.js' |
||||
import { creditApplicationDetails, addOperation, creditApplicationInput } from '@/api/http' |
||||
import { mapState, mapMutations } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
form: { |
||||
applicationAccount: '6227007200580926', |
||||
customerName: '丛小凤', |
||||
identificationNumber: '220602199202281229', |
||||
contactPhoneNumber: '15890317718', |
||||
propertyAddress: '广东省深圳市南山区前海一号2020室', |
||||
cooperationPeriod: '6', |
||||
maritalStatus: '未婚', |
||||
laborContract: '是', |
||||
socialSecurity: '是', |
||||
addressSituation: '购置', |
||||
|
||||
matureRepayment: false, |
||||
otherRepaymentsCheck: false, |
||||
otherRepayments: '', |
||||
paymentForMaterials: false, |
||||
payLaborCosts: false, |
||||
payExpenses: false, |
||||
otherUseCheck: false, |
||||
otherUses: '', |
||||
specialInstructions: '', |
||||
}, |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '不良' |
||||
}, |
||||
], |
||||
visible: false, |
||||
successVisible: false, |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditImportIds', 'creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations('system', ['setCreditImportIndex', 'initCreditImportIds']), |
||||
inputListen, |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
let r |
||||
if (id) { |
||||
const res = await creditApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
r = res.data.bankCreditApplication || {} |
||||
if (r.creditId) { |
||||
this.form.creditId = r.creditId |
||||
this.form.cooperationPeriod = r.cooperationPeriod |
||||
this.form.matureRepayment = r.matureRepayment === 'true' |
||||
this.form.otherRepaymentsCheck = !!r.otherRepayments |
||||
this.form.otherRepayments = r.otherRepayments |
||||
this.form.paymentForMaterials = r.paymentForMaterials === 'true' |
||||
this.form.payLaborCosts = r.payLaborCosts === 'true' |
||||
this.form.payExpenses = r.payExpenses === 'true' |
||||
this.form.otherUseCheck = !!r.otherUses |
||||
this.form.otherUses = r.otherUses |
||||
this.form.specialInstructions = r.specialInstructions |
||||
} |
||||
} |
||||
// 附件回显 |
||||
this.initCreditImportIds({ |
||||
corporateIdCard: r.corporateIdCard || '', |
||||
mortgagePropertyCertificate: r.mortgagePropertyCertificate || '', |
||||
proofOfMaritalStatus: r.proofOfMaritalStatus || '', |
||||
copyOfSpouseSIdCard: r.copyOfSpouseSIdCard || '', |
||||
originalBusinessLicense: r.originalBusinessLicense || '', |
||||
accountOpeningPermit: r.accountOpeningPermit || '', |
||||
leaseContract: r.leaseContract || '', |
||||
companyArticlesOfAssociation: r.companyArticlesOfAssociation || '', |
||||
shareholderDocuments: r.shareholderDocuments || '', |
||||
financialSeal: r.financialSeal || '', |
||||
oneYearTaxPaymentCertificate: r.oneYearTaxPaymentCertificate || '', |
||||
halfYearRevenue: r.halfYearRevenue || '', |
||||
corporateFinancialStatements: r.corporateFinancialStatements || '', |
||||
loanApplicationForm: r.loanApplicationForm || '', |
||||
creditAuthorizationLetter: r.creditAuthorizationLetter || '', |
||||
}) |
||||
}, |
||||
// 导入 |
||||
importSth (i) { |
||||
this.setCreditImportIndex(i) |
||||
this.$parent.$parent.$parent.showData('导入报表', 12) |
||||
}, |
||||
async beforeSubmit () { |
||||
const { form } = this |
||||
if (!form.matureRepayment && !form.otherRepaymentsCheck) return this.$message.error('请选择还款来源!') |
||||
if (form.otherRepaymentsCheck && !form.otherRepayments) return this.$message.error('请输入其他的还款来源!') |
||||
if (!form.paymentForMaterials && !form.payLaborCosts && !form.payExpenses && !form.otherUseCheck) return this.$message.error('请选择贷款用途!') |
||||
if (form.otherUseCheck && !form.otherUses) return this.$message.error('请输入其他的用途!') |
||||
this.visible = true |
||||
}, |
||||
async submit () { |
||||
try { |
||||
const { form } = this |
||||
// 判分 |
||||
await creditApplicationInput({ |
||||
...this.$store.state.system.creditIds, |
||||
...this.$store.state.system.creditImportIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [] |
||||
form.cooperationPeriod && rule.push({ answerId: 875, emptyOne: 149, emptyTwo: form.cooperationPeriod, operationIds: preId + ',875', type: 3 }) |
||||
form.matureRepayment && rule.push({ answerId: 798, emptyOne: 147, emptyTwo: 269, operationIds: preId + ',798', type: 1 }) |
||||
form.otherRepayments && rule.push({ answerId: 798, emptyOne: 147, emptyTwo: 270, operationIds: preId + ',798', type: 1 }) |
||||
|
||||
form.paymentForMaterials && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 271, operationIds: preId + ',833', type: 1 }) |
||||
form.payLaborCosts && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 272, operationIds: preId + ',833', type: 1 }) |
||||
form.payExpenses && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 273, operationIds: preId + ',833', type: 1 }) |
||||
form.otherUses && rule.push({ answerId: 833, emptyOne: 148, emptyTwo: 274, operationIds: preId + ',833', type: 1 }) |
||||
|
||||
form.specialInstructions && rule.push({ answerId: 802, emptyOne: 125, emptyTwo: form.specialInstructions, operationIds: preId + ',802', type: 3 }) |
||||
|
||||
// 附件的判分,都是点击题 |
||||
const files = this.creditImportIds |
||||
files.corporateIdCard && rule.push({ answerId: 804, emptyOne: 146, emptyTwo: files.corporateIdCard, operationIds: preId + ',803,804', type: 1 }) |
||||
files.mortgagePropertyCertificate && rule.push({ answerId: 805, emptyOne: 146, emptyTwo: files.mortgagePropertyCertificate, operationIds: preId + ',803,805', type: 1 }) |
||||
files.proofOfMaritalStatus && rule.push({ answerId: 806, emptyOne: 146, emptyTwo: files.proofOfMaritalStatus, operationIds: preId + ',803,806', type: 1 }) |
||||
files.copyOfSpouseSIdCard && rule.push({ answerId: 807, emptyOne: 146, emptyTwo: files.copyOfSpouseSIdCard, operationIds: preId + ',803,807', type: 1 }) |
||||
files.originalBusinessLicense && rule.push({ answerId: 808, emptyOne: 146, emptyTwo: files.originalBusinessLicense, operationIds: preId + ',803,808', type: 1 }) |
||||
files.accountOpeningPermit && rule.push({ answerId: 809, emptyOne: 146, emptyTwo: files.accountOpeningPermit, operationIds: preId + ',803,809', type: 1 }) |
||||
files.leaseContract && rule.push({ answerId: 810, emptyOne: 146, emptyTwo: files.leaseContract, operationIds: preId + ',803,810', type: 1 }) |
||||
files.companyArticlesOfAssociation && rule.push({ answerId: 811, emptyOne: 146, emptyTwo: files.companyArticlesOfAssociation, operationIds: preId + ',803,811', type: 1 }) |
||||
files.shareholderDocuments && rule.push({ answerId: 812, emptyOne: 146, emptyTwo: files.shareholderDocuments, operationIds: preId + ',803,812', type: 1 }) |
||||
files.financialSeal && rule.push({ answerId: 813, emptyOne: 146, emptyTwo: files.financialSeal, operationIds: preId + ',803,813', type: 1 }) |
||||
files.oneYearTaxPaymentCertificate && rule.push({ answerId: 814, emptyOne: 146, emptyTwo: files.oneYearTaxPaymentCertificate, operationIds: preId + ',803,814', type: 1 }) |
||||
files.halfYearRevenue && rule.push({ answerId: 815, emptyOne: 146, emptyTwo: files.halfYearRevenue, operationIds: preId + ',803,815', type: 1 }) |
||||
files.corporateFinancialStatements && rule.push({ answerId: 817, emptyOne: 146, emptyTwo: files.corporateFinancialStatements, operationIds: preId + ',803,817', type: 1 }) |
||||
files.loanApplicationForm && rule.push({ answerId: 818, emptyOne: 146, emptyTwo: files.loanApplicationForm, operationIds: preId + ',803,818', type: 1 }) |
||||
files.creditAuthorizationLetter && rule.push({ answerId: 819, emptyOne: 146, emptyTwo: files.creditAuthorizationLetter, operationIds: preId + ',803,819', type: 1 }) |
||||
|
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.successVisible = true |
||||
} catch { (e) => { } } |
||||
}, |
||||
// 跳转到第三步 |
||||
toStep3 () { |
||||
this.$parent.active = '3' |
||||
this.$parent.curStep = 0 |
||||
this.$parent.tab3Disabled = false |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.files { |
||||
.item { |
||||
display: flex; |
||||
align-items: center; |
||||
margin-bottom: 20px; |
||||
} |
||||
|
||||
.text { |
||||
margin-left: 10px; |
||||
font-size: 14px; |
||||
color: #818181; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,253 @@ |
||||
<!-- 信用评估 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="140px" :rules="rules"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">客户信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号" prop="applicationAccount"> |
||||
<el-input v-model="form.applicationAccount" @input="val => inputListen(val, form, 'applicationAccount')" |
||||
@blur="accountBlur" /> |
||||
</el-form-item> |
||||
<el-form-item label="证件类型" prop="identificationType"> |
||||
<el-select v-model.trim="form.identificationType" placeholder="请选择" disabled> |
||||
<el-option label="统一社会信用代码证" :value="82"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="联系电话" prop="contactPhoneNumber"> |
||||
<el-input v-model="form.contactPhoneNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人姓名" prop="corporateName"> |
||||
<el-input v-model="form.corporateName" /> |
||||
</el-form-item> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" disabled> |
||||
<el-option label='CNY人民币' :value="12"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="利率(%)" prop="interestRate"> |
||||
<el-input v-model="form.interestRate" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="支取方式" prop="withdrawalMethod"> |
||||
<el-select v-model.trim="form.withdrawalMethod" placeholder="请选择" disabled> |
||||
<el-option label="印鉴" :value="114"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="成立年份" prop="yearOfEstablishment"> |
||||
<el-input v-model="form.yearOfEstablishment" /> |
||||
</el-form-item> |
||||
<el-form-item label="主营范围" prop="mainBusinessScope"> |
||||
<el-input v-model="form.mainBusinessScope" /> |
||||
</el-form-item> |
||||
<el-form-item label="财报提交方式" prop="financialReportSubmissionMethod"> |
||||
<el-input v-model="form.financialReportSubmissionMethod" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称" prop="customerName"> |
||||
<el-input v-model="form.customerName" /> |
||||
</el-form-item> |
||||
<el-form-item label="代码证号" prop="identificationNumber"> |
||||
<el-input v-model="form.identificationNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="注册地址" prop="companyRegisteredAddress"> |
||||
<el-input v-model="form.companyRegisteredAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人证件号码" prop="corporateIdNumber"> |
||||
<el-input v-model="form.corporateIdNumber" /> |
||||
</el-form-item> |
||||
<el-form-item label="账户类型" prop="accountType"> |
||||
<el-select v-model.trim="form.accountType" placeholder="请选择" disabled> |
||||
<el-option label="结算户" :value="97"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式" prop="interestCalculationMethod"> |
||||
<el-select v-model.trim="form.interestCalculationMethod" placeholder="请选择" disabled> |
||||
<el-option label="按年计息" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="员工人数" prop="numberOfEmployees"> |
||||
<el-input v-model="form.numberOfEmployees" /> |
||||
</el-form-item> |
||||
<el-form-item label="注册类型" prop="registrationType"> |
||||
<el-input v-model="form.registrationType" /> |
||||
</el-form-item> |
||||
<el-form-item label="营业执照到期日" prop="expirationDateOfBusinessLicense"> |
||||
<el-date-picker v-model="form.expirationDateOfBusinessLicense" type="date" placeholder="选择日期" |
||||
:picker-options="pickerOptions"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="借款人性质" prop="natureOfBorrower"> |
||||
<el-input v-model="form.natureOfBorrower" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="$router.back()" v-throttle>返回</el-button> |
||||
<el-button @click="next" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { inputListen } from '@/utils/utilFunction.js' |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
id: this.$route.query.id, |
||||
form: { |
||||
applicationAccount: '', |
||||
customerName: '', |
||||
identificationType: '', |
||||
identificationNumber: '', |
||||
contactPhoneNumber: '', |
||||
companyRegisteredAddress: '', |
||||
corporateName: '', |
||||
corporateIdNumber: '', |
||||
contactPhoneNumber: '', |
||||
currency: 12, |
||||
accountType: 97, |
||||
interestRate: 3.2, |
||||
interestCalculationMethod: 83, |
||||
withdrawalMethod: 114, |
||||
numberOfEmployees: '', |
||||
yearOfEstablishment: '', |
||||
registrationType: '', |
||||
mainBusinessScope: '', |
||||
expirationDateOfBusinessLicense: '2050-01-01', |
||||
financialReportSubmissionMethod: '', |
||||
natureOfBorrower: '', |
||||
}, |
||||
rules: { |
||||
applicationAccount: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
pickerOptions: { |
||||
disabledDate (v) { |
||||
return v.getTime() < new Date().getTime() - 86400000 |
||||
}, |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate', |
||||
setCreditIds: 'system/setCreditIds', |
||||
setCreditImportIds: 'system/setCreditImportIds', |
||||
}), |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
r.identificationType = +r.identificationType |
||||
r.currency = 12 |
||||
r.accountType = 97 |
||||
r.interestRate = 3.2 |
||||
r.interestCalculationMethod = 83 |
||||
r.withdrawalMethod = 114 |
||||
this.form = r |
||||
} |
||||
}, |
||||
// 账号blur事件 |
||||
accountBlur () { |
||||
if (this.form.applicationAccount === 12802851701099) { |
||||
this.form.customerName = '袋鼠互联网科技有限公司' |
||||
this.form.identificationType = 82 |
||||
this.form.identificationNumber = '913403005685450862' |
||||
this.form.contactPhoneNumber = '15890317718' |
||||
this.form.companyRegisteredAddress = '广东省深圳市南山区前海一号2020室' |
||||
this.form.corporateName = '丛小凤' |
||||
this.form.corporateIdNumber = '220602199202281229' |
||||
|
||||
this.form.numberOfEmployees = 50 |
||||
this.form.yearOfEstablishment = '2018-02-19' |
||||
this.form.registrationType = '有限公司' |
||||
this.form.mainBusinessScope = '信息技术' |
||||
this.form.expirationDateOfBusinessLicense = '2050-01-01' |
||||
this.form.financialReportSubmissionMethod = '半年' |
||||
this.form.natureOfBorrower = '企业法人' |
||||
} |
||||
}, |
||||
// 下一步 |
||||
async next () { |
||||
const { form } = this |
||||
if (!form.applicationAccount) return this.$message.error('请填写账号!') |
||||
try { |
||||
const { data } = await creditEvaluationInput({ |
||||
...this.$store.getters['system/commonIds'], |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [{ answerId: 769, emptyOne: 125, emptyTwo: form.applicationAccount, operationIds: preId + ',769', type: 3 }] |
||||
form.customerName && rule.push({ answerId: 880, emptyOne: 153, emptyTwo: form.customerName, operationIds: preId + ',880', type: 3 }) |
||||
form.identificationNumber && rule.push({ answerId: 881, emptyOne: 153, emptyTwo: form.identificationNumber, operationIds: preId + ',881', type: 3 }) |
||||
form.contactPhoneNumber && rule.push({ answerId: 882, emptyOne: 153, emptyTwo: form.contactPhoneNumber, operationIds: preId + ',882', type: 3 }) |
||||
form.companyRegisteredAddress && rule.push({ answerId: 883, emptyOne: 153, emptyTwo: form.companyRegisteredAddress, operationIds: preId + ',883', type: 3 }) |
||||
form.corporateName && rule.push({ answerId: 884, emptyOne: 153, emptyTwo: form.corporateName, operationIds: preId + ',884', type: 3 }) |
||||
form.corporateIdNumber && rule.push({ answerId: 885, emptyOne: 153, emptyTwo: form.corporateIdNumber, operationIds: preId + ',885', type: 3 }) |
||||
form.numberOfEmployees && rule.push({ answerId: 886, emptyOne: 153, emptyTwo: form.numberOfEmployees, operationIds: preId + ',886', type: 3 }) |
||||
form.yearOfEstablishment && rule.push({ answerId: 887, emptyOne: 153, emptyTwo: form.yearOfEstablishment, operationIds: preId + ',887', type: 3 }) |
||||
form.registrationType && rule.push({ answerId: 888, emptyOne: 153, emptyTwo: form.registrationType, operationIds: preId + ',888', type: 3 }) |
||||
form.mainBusinessScope && rule.push({ answerId: 889, emptyOne: 153, emptyTwo: form.mainBusinessScope, operationIds: preId + ',889', type: 3 }) |
||||
form.expirationDateOfBusinessLicense && rule.push({ answerId: 890, emptyOne: 153, emptyTwo: form.expirationDateOfBusinessLicense, operationIds: preId + ',890', type: 3 }) |
||||
form.financialReportSubmissionMethod && rule.push({ answerId: 891, emptyOne: 153, emptyTwo: form.financialReportSubmissionMethod, operationIds: preId + ',891', type: 3 }) |
||||
form.natureOfBorrower && rule.push({ answerId: 892, emptyOne: 153, emptyTwo: form.natureOfBorrower, operationIds: preId + ',892', type: 3 }) |
||||
|
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.setCreditImportIds() |
||||
// 缓存信用评估几个id |
||||
this.setCreditIds({ |
||||
companyLoanId: data.companyLoanId, // 顶部三个tab切换的公共id |
||||
creditEvaluationId: data.creditEvaluationId, // 信用评估的id |
||||
}) |
||||
this.$emit('updateStep', 1) |
||||
} catch { (e) => { } } |
||||
}, |
||||
inputListen, |
||||
} |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,139 @@ |
||||
<!-- 导入报表 --> |
||||
<template> |
||||
<div> |
||||
<div class="upload-wrap"> |
||||
<div> |
||||
<el-button :type="creditImportIds.importBalanceSheet ? '' : 'primary'" |
||||
@click="importSth('importBalanceSheet')">点击导入资产负债表</el-button> |
||||
<p v-if="creditImportIds.importBalanceSheet" class="already">已导入</p> |
||||
</div> |
||||
|
||||
<img class="icon" src="@/assets/img/arrow-right.png" alt=""> |
||||
|
||||
<div> |
||||
<el-button :type="creditImportIds.importIncomeStatement ? '' : 'primary'" |
||||
@click="importSth('importIncomeStatement')">点击导入损益表</el-button> |
||||
<p v-if="creditImportIds.importIncomeStatement" class="already">已导入</p> |
||||
</div> |
||||
|
||||
<img class="icon" src="@/assets/img/arrow-right.png" alt=""> |
||||
|
||||
<div> |
||||
<el-button :type="creditImportIds.importCashFlowStatement ? '' : 'primary'" |
||||
@click="importSth('importCashFlowStatement')">点击导入现金流量表</el-button> |
||||
<p v-if="creditImportIds.importCashFlowStatement" class="already">已导入</p> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="prev" type="primary" class="submitBtn" v-throttle>上一步</el-button> |
||||
<el-button @click="next(2)" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
|
||||
export default { |
||||
computed: { |
||||
...mapState('system', ['creditImportIds', 'creditIds']), |
||||
}, |
||||
data () { |
||||
return { |
||||
form: {}, |
||||
originForm: {}, |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations('system', ['setCreditImportIndex', 'initCreditImportIds']), |
||||
// 查询详情 |
||||
async getDetail () { |
||||
// debugger |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
this.initCreditImportIds({ |
||||
importBalanceSheet: r.importBalanceSheet || '', |
||||
importIncomeStatement: r.importIncomeStatement || '', |
||||
importCashFlowStatement: r.importCashFlowStatement || '', |
||||
}) |
||||
} |
||||
this.originForm = JSON.stringify(this.creditImportIds) |
||||
}, |
||||
// 导入 |
||||
importSth (i) { |
||||
this.setCreditImportIndex(i) |
||||
this.$parent.$parent.$parent.showData('导入报表', 12) |
||||
}, |
||||
// 上一步 |
||||
async prev () { |
||||
if (this.originForm !== JSON.stringify(this.creditImportIds)) { |
||||
try { |
||||
await this.$confirm(`编辑的内容未保存,是否保存并继续上一步?`, '提示', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning', |
||||
closeOnClickModal: false, |
||||
}) |
||||
this.next(0) |
||||
} catch (e) { } |
||||
} else { |
||||
this.$emit('updateStep', 0) |
||||
} |
||||
}, |
||||
async next (step) { |
||||
const form = this.creditImportIds |
||||
if (step) { |
||||
if (!form.importBalanceSheet) return this.$message.error('请导入资产负债表!') |
||||
if (!form.importIncomeStatement) return this.$message.error('请导入损益表!') |
||||
if (!form.importCashFlowStatement) return this.$message.error('请导入现金流量表!') |
||||
} |
||||
try { |
||||
await creditEvaluationInput({ |
||||
...this.creditIds, |
||||
...form |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768,876' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [ |
||||
{ answerId: 877, emptyOne: 150, emptyTwo: form.importBalanceSheet, operationIds: preId + ',877', type: 1 }, |
||||
{ answerId: 878, emptyOne: 150, emptyTwo: form.importIncomeStatement, operationIds: preId + ',878', type: 1 }, |
||||
{ answerId: 879, emptyOne: 150, emptyTwo: form.importCashFlowStatement, operationIds: preId + ',879', type: 1 }, |
||||
], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.$emit('updateStep', step) |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.upload-wrap { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
min-height: 300px; |
||||
|
||||
.already { |
||||
margin-top: 8px; |
||||
font-size: 14px; |
||||
text-align: center; |
||||
color: #606060; |
||||
} |
||||
|
||||
.icon { |
||||
margin: 0 40px; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,294 @@ |
||||
<!-- 贷前调查 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="200px" :rules="rules"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">贷前调查</h6> |
||||
</el-col> |
||||
<el-col :span="10"> |
||||
<el-form-item label="调查日期" prop="surveyDate"> |
||||
<el-date-picker v-model="form.surveyDate" ref="surveyDate" type="date" placeholder="请选择调查日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="贸易融资记录" prop="tradeFinancingRecords"> |
||||
<el-select v-model="form.tradeFinancingRecords" placeholder="请选择" ref="tradeFinancingRecords" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="三年内较大经营投资失误" prop="businessInvestmentErrors"> |
||||
<el-select v-model="form.businessInvestmentErrors" placeholder="请选择" ref="businessInvestmentErrors" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业与客户管理分析" prop="enterpriseCustomerAnalysis"> |
||||
<el-select v-model="form.enterpriseCustomerAnalysis" placeholder="请选择" ref="enterpriseCustomerAnalysis" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="重大事故赔偿" prop="compensationMajorAccidents"> |
||||
<el-select v-model="form.compensationMajorAccidents" placeholder="请选择" ref="compensationMajorAccidents" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="对外不利担保" prop="externalUnfavorableGuarantee"> |
||||
<el-select v-model="form.externalUnfavorableGuarantee" placeholder="请选择" ref="externalUnfavorableGuarantee" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="经营状况" prop="businessStatus"> |
||||
<el-select v-model="form.businessStatus" placeholder="请选择" ref="businessStatus" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="坏账准备金提取" prop="badDebtReserves"> |
||||
<el-select v-model="form.badDebtReserves" placeholder="请选择" ref="badDebtReserves" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="重大法律诉讼" prop="majorLegalLitigation"> |
||||
<el-select v-model="form.majorLegalLitigation" placeholder="请选择" ref="majorLegalLitigation" |
||||
style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款风险情况" prop="loanRiskSituation"> |
||||
<el-select v-model="form.loanRiskSituation" placeholder="请选择" ref="loanRiskSituation" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="其他风险情况" prop="preLoanOtherRiskSituations"> |
||||
<el-input v-model="form.preLoanOtherRiskSituations" type="textarea" maxlength="100"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="prev" type="primary" class="submitBtn" v-throttle>上一步</el-button> |
||||
<el-button @click="next(3)" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate } from '@/utils/utilFunction.js'; |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '不良' |
||||
}, |
||||
], |
||||
form: { |
||||
surveyDate: '', |
||||
externalUnfavorableGuarantee: 204, |
||||
tradeFinancingRecords: 204, |
||||
businessStatus: 205, |
||||
businessInvestmentErrors: 204, |
||||
badDebtReserves: 204, |
||||
enterpriseCustomerAnalysis: 205, |
||||
majorLegalLitigation: 204, |
||||
compensationMajorAccidents: 204, |
||||
loanRiskSituation: 204, |
||||
preLoanOtherRiskSituations: '', |
||||
}, |
||||
originForm: {}, |
||||
rules: { |
||||
surveyDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择调查日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
externalUnfavorableGuarantee: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择对外不利担保', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
tradeFinancingRecords: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择贸易融资记录', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
businessStatus: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择经营状况', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
businessInvestmentErrors: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择三年内较大经营投资失误', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
badDebtReserves: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择坏账准备金提取', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
enterpriseCustomerAnalysis: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择企业与客户管理分析', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
majorLegalLitigation: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择重大法律诉讼', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
compensationMajorAccidents: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择重大事故赔偿', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
loanRiskSituation: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择贷款风险情况', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
r.externalUnfavorableGuarantee = +r.externalUnfavorableGuarantee || 204 |
||||
r.tradeFinancingRecords = +r.tradeFinancingRecords || 204 |
||||
r.businessStatus = +r.businessStatus || 205 |
||||
r.businessInvestmentErrors = +r.businessInvestmentErrors || 204 |
||||
r.badDebtReserves = +r.badDebtReserves || 204 |
||||
r.enterpriseCustomerAnalysis = +r.enterpriseCustomerAnalysis || 205 |
||||
r.majorLegalLitigation = +r.majorLegalLitigation || 204 |
||||
r.compensationMajorAccidents = +r.compensationMajorAccidents || 204 |
||||
r.loanRiskSituation = +r.loanRiskSituation || 204 |
||||
this.form = r |
||||
} |
||||
this.originForm = JSON.stringify(this.form) |
||||
}, |
||||
// 上一步 |
||||
async prev () { |
||||
debugger |
||||
if (this.originForm !== JSON.stringify(this.form)) { |
||||
try { |
||||
await this.$confirm(`编辑的内容未保存,是否保存并继续上一步?`, '提示', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning', |
||||
closeOnClickModal: false, |
||||
}) |
||||
this.next(1) |
||||
} catch (e) { } |
||||
} else { |
||||
this.$emit('updateStep', 1) |
||||
} |
||||
}, |
||||
async next (step) { |
||||
this.$refs.form.validate(myValidate(async () => { |
||||
try { |
||||
const { form } = this |
||||
await creditEvaluationInput({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 773, emptyOne: 125, emptyTwo: form.surveyDate, operationIds: preId + ',773', type: 3 }, |
||||
{ answerId: 774, emptyOne: 126, emptyTwo: form.externalUnfavorableGuarantee, operationIds: preId + ',774', type: 1 }, |
||||
{ answerId: 775, emptyOne: 126, emptyTwo: form.tradeFinancingRecords, operationIds: preId + ',775', type: 1 }, |
||||
{ answerId: 776, emptyOne: 127, emptyTwo: form.businessStatus, operationIds: preId + ',776', type: 1 }, |
||||
{ answerId: 777, emptyOne: 126, emptyTwo: form.businessInvestmentErrors, operationIds: preId + ',777', type: 1 }, |
||||
{ answerId: 778, emptyOne: 126, emptyTwo: form.badDebtReserves, operationIds: preId + ',778', type: 1 }, |
||||
{ answerId: 779, emptyOne: 127, emptyTwo: form.enterpriseCustomerAnalysis, operationIds: preId + ',779', type: 1 }, |
||||
{ answerId: 780, emptyOne: 126, emptyTwo: form.majorLegalLitigation, operationIds: preId + ',780', type: 1 }, |
||||
{ answerId: 781, emptyOne: 126, emptyTwo: form.compensationMajorAccidents, operationIds: preId + ',781', type: 1 }, |
||||
{ answerId: 782, emptyOne: 126, emptyTwo: form.loanRiskSituation, operationIds: preId + ',782', type: 1 }, |
||||
] |
||||
form.preLoanOtherRiskSituations && rule.push({ answerId: 783, emptyOne: 125, emptyTwo: form.preLoanOtherRiskSituations, operationIds: preId + ',783', type: 3 },) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.$emit('updateStep', step) |
||||
} catch { (e) => { } } |
||||
}, this.$refs)) |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,314 @@ |
||||
<!-- 等级评定 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="160px" :rules="rules"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">等级评定</h6> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="盈利记录" required> |
||||
<el-select v-model="form.profitRecord" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt3" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="领导作风品行" required> |
||||
<el-select v-model="form.leadershipStyleAndConduct" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="领导经营管理" required> |
||||
<el-select v-model="form.leadershipManagement" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业发展前景" required> |
||||
<el-select v-model="form.enterpriseDevelopmentProspects" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt5" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="有无不良信用记录" required> |
||||
<el-select v-model="form.haveAnyBadCreditRecords" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="领导应变开拓" required> |
||||
<el-select v-model="form.leadershipAdaptabilityAndDevelopment" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="领导才干教育" required> |
||||
<el-select v-model="form.leadershipEducation" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt1" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业开发能力" required> |
||||
<el-select v-model="form.enterpriseDevelopmentCapability" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt4" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="企业信誉" required> |
||||
<el-select v-model="form.corporateReputation" placeholder="请选择" style="width: 100%"> |
||||
<el-option v-for="(item, i) in opt2" :key="i" :label="item.name" :value="item.id"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="其他风险情况"> |
||||
<el-input v-model="form.gradeEvaluationOtherRiskSituations" type="textarea" maxlength="100"></el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="prev" type="primary" class="submitBtn" v-throttle>上一步</el-button> |
||||
<el-button @click="confirmSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible="submitVisible" append-to-body :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody" style="flex-direction: column;"> |
||||
<p class="text-lg" style="color: #333">评估完成</p> |
||||
<p class="text-lg" style="color: #333">信用评级为AAAA,可进行授信申请</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="submit(0)">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { creditEvaluationDetails, addOperation, creditEvaluationInput } from '@/api/http' |
||||
import { mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '不良' |
||||
}, |
||||
], |
||||
opt3: [ |
||||
{ |
||||
id: 208, |
||||
name: '本年盈利' |
||||
}, |
||||
{ |
||||
id: 209, |
||||
name: '连续两年盈利' |
||||
}, |
||||
{ |
||||
id: 210, |
||||
name: '连续三年盈利' |
||||
}, |
||||
{ |
||||
id: 211, |
||||
name: '连续五年盈利' |
||||
}, |
||||
{ |
||||
id: 212, |
||||
name: '本年亏损' |
||||
}, |
||||
{ |
||||
id: 213, |
||||
name: '连续两年亏损' |
||||
}, |
||||
{ |
||||
id: 214, |
||||
name: '连续三年亏损' |
||||
}, |
||||
{ |
||||
id: 215, |
||||
name: '连续五年亏损' |
||||
}, |
||||
], |
||||
opt4: [ |
||||
{ |
||||
id: 216, |
||||
name: '业内优秀' |
||||
}, |
||||
{ |
||||
id: 217, |
||||
name: '业内平均水平' |
||||
}, |
||||
{ |
||||
id: 218, |
||||
name: '业内平均水平以下' |
||||
}, |
||||
], |
||||
opt5: [ |
||||
{ |
||||
id: 219, |
||||
name: '很有发展潜力' |
||||
}, |
||||
{ |
||||
id: 220, |
||||
name: '待考察' |
||||
}, |
||||
{ |
||||
id: 221, |
||||
name: '前景一般' |
||||
}, |
||||
{ |
||||
id: 222, |
||||
name: '前景堪忧' |
||||
}, |
||||
], |
||||
form: { |
||||
profitRecord: 208, |
||||
leadershipAdaptabilityAndDevelopment: 205, |
||||
leadershipStyleAndConduct: 205, |
||||
leadershipEducation: 203, |
||||
leadershipManagement: 205, |
||||
enterpriseDevelopmentCapability: 216, |
||||
enterpriseDevelopmentProspects: 219, |
||||
corporateReputation: 205, |
||||
haveAnyBadCreditRecords: 204, |
||||
gradeEvaluationOtherRiskSituations: '', |
||||
}, |
||||
originForm: {}, |
||||
rules: { |
||||
surveyDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择调查日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
|
||||
submitVisible: false, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await creditEvaluationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankCreditEvaluation |
||||
r.profitRecord = +r.profitRecord || 208 |
||||
r.leadershipAdaptabilityAndDevelopment = +r.leadershipAdaptabilityAndDevelopment || 205 |
||||
r.leadershipStyleAndConduct = +r.leadershipStyleAndConduct || 205 |
||||
r.leadershipEducation = +r.leadershipEducation || 203 |
||||
r.leadershipManagement = +r.leadershipManagement || 205 |
||||
r.enterpriseDevelopmentCapability = +r.enterpriseDevelopmentCapability || 216 |
||||
r.enterpriseDevelopmentProspects = +r.enterpriseDevelopmentProspects || 219 |
||||
r.corporateReputation = +r.corporateReputation || 205 |
||||
r.haveAnyBadCreditRecords = +r.haveAnyBadCreditRecords || 204 |
||||
this.form = r |
||||
this.originForm = JSON.stringify(this.form) |
||||
} |
||||
}, |
||||
confirmSubmit () { |
||||
this.submitVisible = true |
||||
}, |
||||
// 上一步 |
||||
async prev () { |
||||
debugger |
||||
if (this.originForm !== JSON.stringify(this.form)) { |
||||
try { |
||||
await this.$confirm(`编辑的内容未保存,是否保存并继续上一步?`, '提示', { |
||||
confirmButtonText: '确定', |
||||
cancelButtonText: '取消', |
||||
type: 'warning', |
||||
closeOnClickModal: false, |
||||
}) |
||||
this.submit(1) |
||||
} catch (e) { } |
||||
} else { |
||||
this.$emit('updateStep', 2) |
||||
} |
||||
}, |
||||
async submit (prev) { |
||||
try { |
||||
const { form } = this |
||||
await creditEvaluationInput({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 784, emptyOne: 128, emptyTwo: form.profitRecord, operationIds: preId + ',784', type: 1 }, |
||||
{ answerId: 785, emptyOne: 127, emptyTwo: form.leadershipAdaptabilityAndDevelopment, operationIds: preId + ',785', type: 1 }, |
||||
{ answerId: 786, emptyOne: 127, emptyTwo: form.leadershipStyleAndConduct, operationIds: preId + ',786', type: 1 }, |
||||
{ answerId: 787, emptyOne: 126, emptyTwo: form.leadershipEducation, operationIds: preId + ',787', type: 1 }, |
||||
{ answerId: 788, emptyOne: 127, emptyTwo: form.leadershipManagement, operationIds: preId + ',788', type: 1 }, |
||||
{ answerId: 789, emptyOne: 129, emptyTwo: form.enterpriseDevelopmentCapability, operationIds: preId + ',789', type: 1 }, |
||||
{ answerId: 790, emptyOne: 130, emptyTwo: form.enterpriseDevelopmentProspects, operationIds: preId + ',790', type: 1 }, |
||||
{ answerId: 791, emptyOne: 127, emptyTwo: form.corporateReputation, operationIds: preId + ',791', type: 1 }, |
||||
{ answerId: 792, emptyOne: 126, emptyTwo: form.haveAnyBadCreditRecords, operationIds: preId + ',792', type: 1 }, |
||||
] |
||||
form.gradeEvaluationOtherRiskSituations && rule.push({ answerId: 793, emptyOne: 125, emptyTwo: form.gradeEvaluationOtherRiskSituations, operationIds: preId + ',793', type: 3 },) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.$message.success('创建成功!') |
||||
if (prev) { |
||||
// 上一步 |
||||
this.$emit('updateStep', 2) |
||||
} else { |
||||
this.$parent.active = '2' |
||||
this.$parent.tab2Disabled = false |
||||
} |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,257 @@ |
||||
<!-- 新建贷款申请 --> |
||||
<template> |
||||
<div class="wrap"> |
||||
<div> |
||||
<div class="nav"> |
||||
<el-menu :default-active="active" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">信用评估</el-menu-item> |
||||
<el-menu-item :disabled="tab2Disabled" index="2">授信申请</el-menu-item> |
||||
<el-menu-item :disabled="tab3Disabled" index="3">贷款申请</el-menu-item> |
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['公司贷款', '新建贷款申请', text]" /> |
||||
|
||||
<ul v-if="active === '1'" class="steps"> |
||||
<li v-for="(step, i) in steps" :key="i" :class="{ active: curStep === i }">{{ step }}</li> |
||||
</ul> |
||||
|
||||
<div class="form-wrap"> |
||||
<template v-if="active === '1'"> |
||||
<Basic v-if="!curStep" :key="0" @updateStep="updateStep" /> |
||||
<ImportReport v-else-if="curStep === 1" :key="1" @updateStep="updateStep" /> |
||||
<PreLoan v-else-if="curStep === 2" :key="2" @updateStep="updateStep" /> |
||||
<Rating v-else-if="curStep === 3" :key="3" @updateStep="updateStep" /> |
||||
</template> |
||||
<CreditApplication v-if="active === '2'" /> |
||||
<template v-if="active === '3'"> |
||||
<LoanApplication1 v-if="!curStep" @updateStep="updateStep" /> |
||||
<LoanApplication2 v-else-if="curStep === 1" @updateStep="updateStep" /> |
||||
</template> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState } from 'vuex' |
||||
import { creditApplicationDetails, loanApplicationDetails } from '@/api/http' |
||||
import Basic from './creditEvaluation/basic.vue' |
||||
import ImportReport from './creditEvaluation/importReport.vue' |
||||
import PreLoan from './creditEvaluation/preLoan.vue' |
||||
import Rating from './creditEvaluation/rating.vue' |
||||
import CreditApplication from './creditApplication' |
||||
import LoanApplication1 from './loanApplication/step1.vue' |
||||
import LoanApplication2 from './loanApplication/step2.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
components: { |
||||
Basic, |
||||
ImportReport, |
||||
PreLoan, |
||||
Rating, |
||||
CreditApplication, |
||||
LoanApplication1, |
||||
LoanApplication2, |
||||
MyTitle |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '', |
||||
textObj: { |
||||
'1': '信用评估', |
||||
'2': '授信申请', |
||||
'3': '贷款申请', |
||||
}, |
||||
visible: false, |
||||
active: '1', |
||||
steps: ['1.客户基本信息', '2.导入报表', '3.贷前调查', '4.等级评定'], |
||||
curStep: 0, |
||||
tab2Disabled: true, |
||||
tab3Disabled: true, |
||||
} |
||||
}, |
||||
mounted () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
this.getTab2Detail(id) |
||||
this.getTab3Detail(id) |
||||
} |
||||
}, |
||||
methods: { |
||||
// 查询授信申请详情(没有则禁用该切换) |
||||
async getTab2Detail (id) { |
||||
const res = await creditApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
this.tab2Disabled = !res.data.bankCreditApplication |
||||
}, |
||||
// 查询贷款申请详情(没有则禁用该切换) |
||||
async getTab3Detail (id) { |
||||
const res = await loanApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
this.tab3Disabled = !res.data.bankLoanApplication |
||||
}, |
||||
handleSelect (val) { |
||||
this.curStep = 0 |
||||
this.text = this.textObj[val] |
||||
this.active = val |
||||
}, |
||||
updateStep (step) { |
||||
this.curStep = step |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
height: calc(100vh - 118px); |
||||
padding: 20px; |
||||
overflow: auto; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.steps { |
||||
display: flex; |
||||
justify-content: center; |
||||
margin-bottom: 20px; |
||||
|
||||
li { |
||||
position: relative; |
||||
width: 160px; |
||||
padding: 6px 0; |
||||
margin-right: 25px; |
||||
text-align: center; |
||||
font-size: 16px; |
||||
color: #fff; |
||||
background-color: #a7bdf5; |
||||
|
||||
&:after { |
||||
content: ''; |
||||
position: absolute; |
||||
top: 0; |
||||
right: -24px; |
||||
border: 18px solid transparent; |
||||
border-right-width: 12px; |
||||
border-left: 12px solid #a7bdf5; |
||||
} |
||||
|
||||
&.active { |
||||
background-color: #5786fc; |
||||
|
||||
&:after { |
||||
border-left-color: #5786fc; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.form-wrap { |
||||
height: calc(100vh - 340px); |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,215 @@ |
||||
<!-- 贷款申请第一步 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="140px"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">客户信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号"> |
||||
<el-input v-model="form.applicationNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="证件类型"> |
||||
<el-select v-model.trim="form.identificationType" placeholder="请选择" disabled> |
||||
<el-option label="统一社会信用代码证" :value="82"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="注册地址"> |
||||
<el-input v-model="form.companyRegisteredAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人证件号码"> |
||||
<el-input v-model="form.corporateIdNumber" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称"> |
||||
<el-input v-model="form.customerName" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="代码证号"> |
||||
<el-input v-model="form.corporateIdNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="法人姓名"> |
||||
<el-input v-model="form.corporateName" /> |
||||
</el-form-item> |
||||
<el-form-item label="信用评级"> |
||||
<el-input v-model="form.creditRating" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<h6 class="l-title">授信</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="form.creditAmount" disabled /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<h6 class="l-title">贷款申请</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信年限" required> |
||||
<el-select v-model="form.creditTermOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款申请金额" required> |
||||
<el-input :value="form.loanApplicationAmount" placeholder="不大于授信金额" |
||||
@input="val => ismoney(val, form, 'loanApplicationAmount')" ref="loanApplicationAmount" /> |
||||
</el-form-item> |
||||
<el-form-item label="发放方式" required> |
||||
<el-select v-model.trim="form.distributionMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.distributionMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="年化利率"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" required> |
||||
<el-select v-model.trim="form.repaymentMethodOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="申请日期" prop="loanApplicationDate" required> |
||||
<el-date-picker v-model="form.loanApplicationDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" ref="loanApplicationDate"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="next" type="primary" class="submitBtn" v-throttle>下一步</el-button> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { ismoney } from '@/utils/utilFunction.js' |
||||
import { loanApplicationDetails, addOperation, loanApplicationInput } from '@/api/http' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
data () { |
||||
return { |
||||
Util, |
||||
form: { |
||||
applicationNumber: '12802851701099', |
||||
customerName: '袋鼠互联网科技有限公司', |
||||
identificationType: 82, |
||||
identificationNumber: '913403005685450862', |
||||
companyRegisteredAddress: '广东省深圳市南山区前海一号2020室', |
||||
corporateName: '丛小凤', |
||||
corporateIdNumber: '913403005685450862', |
||||
creditRating: 'AAAA', |
||||
|
||||
creditAmount: '12,000,000.00', |
||||
creditTermOne: 231, |
||||
loanApplicationAmount: '', |
||||
repaymentMethodOne: 235, |
||||
distributionMethod: 238, |
||||
loanApplicationDate: '', |
||||
}, |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
setCreditIds: 'system/setCreditIds', |
||||
}), |
||||
ismoney, |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
const res = await loanApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankLoanApplication |
||||
if (r) { |
||||
this.form = { |
||||
applicationNumber: '12802851701099', |
||||
customerName: '袋鼠互联网科技有限公司', |
||||
identificationType: 82, |
||||
identificationNumber: '913403005685450862', |
||||
companyRegisteredAddress: r.companyRegisteredAddress, |
||||
corporateName: r.corporateName, |
||||
corporateIdNumber: r.corporateIdNumber, |
||||
creditRating: r.creditRating, |
||||
|
||||
creditAmount: '12,000,000.00', |
||||
creditTermOne: +r.creditTermOne || 231, |
||||
loanApplicationAmount: r.loanApplicationAmount, |
||||
repaymentMethodOne: +r.repaymentMethodOne || 235, |
||||
distributionMethod: +r.distributionMethod || 238, |
||||
loanApplicationDate: r.loanApplicationDate, |
||||
loanId: r.loanId |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
async next () { |
||||
const { form } = this |
||||
if (!form.loanApplicationAmount) return this.$message.error('请填写贷款申请金额!') |
||||
if (+form.loanApplicationAmount > 12000000) return this.$message.error('贷款申请金额应不大于授信金额!') // 贷款申请金额不能大于授信金额(写死一千二百万) |
||||
try { |
||||
const { data } = await loanApplicationInput({ |
||||
...this.$store.getters['system/commonIds'], |
||||
...form, |
||||
companyLoanId: this.creditIds.companyLoanId, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 820, emptyOne: 134, emptyTwo: form.creditTermOne, operationIds: preId + ',820', type: 1 }, |
||||
{ answerId: 821, emptyOne: 125, emptyTwo: form.loanApplicationAmount, operationIds: preId + ',821', type: 3 }, |
||||
{ answerId: 822, emptyOne: 135, emptyTwo: form.repaymentMethodOne, operationIds: preId + ',822', type: 1 }, |
||||
{ answerId: 823, emptyOne: 136, emptyTwo: form.distributionMethod, operationIds: preId + ',823', type: 1 }, |
||||
{ answerId: 845, emptyOne: 140, emptyTwo: form.loanApplicationDate, operationIds: preId + ',845', type: 3 }, |
||||
] |
||||
form.companyRegisteredAddress && rule.push({ answerId: 883, emptyOne: 153, emptyTwo: form.companyRegisteredAddress, operationIds: preId + ',883', type: 3 }) |
||||
form.corporateName && rule.push({ answerId: 884, emptyOne: 153, emptyTwo: form.corporateName, operationIds: preId + ',884', type: 3 }) |
||||
form.corporateIdNumber && rule.push({ answerId: 885, emptyOne: 153, emptyTwo: form.corporateIdNumber, operationIds: preId + ',885', type: 3 }) |
||||
form.creditRating && rule.push({ answerId: 896, emptyOne: '', emptyTwo: '', operationIds: preId + ',896', type: '' }) |
||||
form.creditAmount && rule.push({ answerId: 897, emptyOne: '', emptyTwo: '', operationIds: preId + ',897', type: '' }) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
// 缓存信用评估几个id |
||||
this.setCreditIds({ |
||||
companyLoanId: data.companyLoanId, // 顶部三个tab切换的公共id |
||||
loanId: data.loanId, // 贷款申请的id |
||||
}) |
||||
this.$emit('updateStep', 1) |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,285 @@ |
||||
<!-- 信用评估 --> |
||||
<template> |
||||
<div> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="140px"> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">客户信息</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="贷款类型"> |
||||
<el-select value="企业经营贷款" placeholder="请选择" disabled> |
||||
<el-option value="企业经营贷款"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="form.creditAmount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="起息日期" prop="valueDate"> |
||||
<el-date-picker v-model="form.valueDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" @change="maturityDateCalc"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式"> |
||||
<el-input value="按LPR浮动计息" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="执行利率"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="担保方式" prop="guaranteeMethod"> |
||||
<el-select v-model="form.guaranteeMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.guaranteeMethods" :key="i" :label="item.name" |
||||
:value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="利息总额"> |
||||
<el-input v-model="form.totalInterestAmount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款账号" prop="repaymentAccount"> |
||||
<el-input v-model="form.repaymentAccount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="合同编号" prop="contractNo"> |
||||
<el-input v-model="form.contractNo" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="授信期限"> |
||||
<el-select v-model="form.creditTermTwo" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款期限" prop="loanTerm" @change="interestCalc"> |
||||
<el-select v-model="form.loanTerm" placeholder="请选择" @change="maturityDateCalc"> |
||||
<el-option v-for="(item, i) in Util.loanTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="到期日期"> |
||||
<el-date-picker v-model="form.expirationDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" disabled></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="基准利率" prop="baseInterestRate"> |
||||
<el-input value="3.20%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="逾期利率" prop="overdueInterestRate"> |
||||
<el-input value="10%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" prop="repaymentMethodTwo"> |
||||
<el-select v-model.trim="form.repaymentMethodTwo" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款金额"> |
||||
<el-input v-model="form.loanAmount" @input="loanAmountInput" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center m-t-20"> |
||||
<el-button @click="beforeSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p class="text-lg" style="color: #333">确定提交贷款申请吗?</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="close btn hover:bg-blue-100 " @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="submit">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible="successVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p class="text-lg" style="color: #333">贷款申请成功!</p> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" |
||||
@click="$router.push('/counter/list/manage/corporateLoans-application')">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { addOperation, loanApplicationInput, loanApplicationDetails, loanApplicationInterestCalculation } from '@/api/http' |
||||
import Util from '@/libs/util' |
||||
import { mapMutations, mapState } from 'vuex' |
||||
export default { |
||||
data () { |
||||
return { |
||||
Util, |
||||
step1: {}, |
||||
timer: null, |
||||
form: { |
||||
valueDate: '', |
||||
creditTermTwo: 231, |
||||
loanTerm: 120, |
||||
guaranteeMethod: 242, |
||||
expirationDate: '', |
||||
totalInterestAmount: '', |
||||
loanAmount: '', |
||||
repaymentMethodTwo: '', |
||||
repaymentAccount: '', |
||||
}, |
||||
rules: { |
||||
valueDate: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择起息日期', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
guaranteeMethod: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择担保方式', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
repaymentAccount: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入还款账号', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
visible: false, |
||||
successVisible: false, |
||||
} |
||||
}, |
||||
computed: { |
||||
...mapState('system', ['creditIds']), |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
const id = this.creditIds.companyLoanId |
||||
if (id) { |
||||
// 第一步填写的贷款金额和还款方式要在这个第二步回显,并且修改后不会影响第一步 |
||||
const res = await loanApplicationDetails({ |
||||
companyLoanId: id |
||||
}) |
||||
const r = res.data.bankLoanApplication |
||||
if (r) { |
||||
this.step1 = r |
||||
|
||||
this.form = { |
||||
valueDate: r.valueDate, |
||||
creditTermTwo: +r.creditTermOne, |
||||
loanTerm: +r.loanTerm || 120, |
||||
guaranteeMethod: +r.guaranteeMethod || 242, |
||||
expirationDate: r.expirationDate, |
||||
totalInterestAmount: r.totalInterestAmount, |
||||
loanAmount: r.loanApplicationAmount, |
||||
repaymentMethodTwo: +r.repaymentMethodOne, |
||||
repaymentAccount: r.repaymentAccount, |
||||
creditAmount: r.creditAmount, |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
// 到期日期计算 |
||||
maturityDateCalc () { |
||||
const { valueDate, loanTerm } = this.form |
||||
if (valueDate && loanTerm) { |
||||
const date = new Date(valueDate) |
||||
date.setMonth(date.getMonth() + loanTerm) |
||||
this.form.expirationDate = Util.formatDate('yyyy-MM-dd', date) |
||||
} |
||||
this.interestCalc() |
||||
}, |
||||
// 贷款金额input事件回调 |
||||
loanAmountInput () { |
||||
clearTimeout(this.timer); |
||||
this.timer = setTimeout(() => { |
||||
this.interestCalc() |
||||
}, 500) |
||||
}, |
||||
// 计算利息总额 |
||||
async interestCalc () { |
||||
const { form } = this |
||||
if (form.loanAmount && form.valueDate) { |
||||
const { data } = await loanApplicationInterestCalculation({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
form.totalInterestAmount = data.totalInterestAmount || '' |
||||
} |
||||
}, |
||||
async beforeSubmit () { |
||||
try { |
||||
const { form } = this |
||||
if (!form.valueDate) return this.$message.error('请选择起息日期!') |
||||
if (new Date(form.valueDate) < new Date(this.step1.loanApplicationDate)) return this.$message.error('起息日期不得早于申请日期!') |
||||
if (!form.repaymentAccount) return this.$message.error('请输入还款账号!') |
||||
if (+form.loanAmount > 12000000) return this.$message.error('贷款金额不得大于授信金额!') |
||||
this.visible = true |
||||
} catch { (e) => { } } |
||||
}, |
||||
async submit () { |
||||
try { |
||||
const { form } = this |
||||
await loanApplicationInput({ |
||||
...this.creditIds, |
||||
...form, |
||||
}) |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
const rule = [ |
||||
{ answerId: 824, emptyOne: 137, emptyTwo: 240, operationIds: preId + ',824', type: 1 }, |
||||
{ answerId: 825, emptyOne: 134, emptyTwo: form.creditTermTwo, operationIds: preId + ',825', type: 1 }, |
||||
{ answerId: 826, emptyOne: 125, emptyTwo: form.valueDate, operationIds: preId + ',826', type: 3 }, |
||||
{ answerId: 846, emptyOne: 141, emptyTwo: Util.loanTerms.find(e => e.id === form.loanTerm).pointId, operationIds: preId + ',846', type: 1 }, |
||||
{ answerId: 827, emptyOne: 125, emptyTwo: form.expirationDate, operationIds: preId + ',827', type: 3 }, |
||||
{ answerId: 828, emptyOne: 139, emptyTwo: form.guaranteeMethod, operationIds: preId + ',828', type: 1 }, |
||||
{ answerId: 822, emptyOne: 135, emptyTwo: form.repaymentMethodTwo, operationIds: preId + ',822', type: 1 }, |
||||
{ answerId: 832, emptyOne: 125, emptyTwo: form.repaymentAccount, operationIds: preId + ',832', type: 1 }, |
||||
] |
||||
|
||||
form.loanAmount && rule.push({ answerId: 831, emptyOne: 125, emptyTwo: form.loanAmount, operationIds: preId + ',831', type: 1 }) |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: rule, |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.successVisible = true |
||||
} catch { (e) => { } } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
</style> |
@ -0,0 +1,302 @@ |
||||
<!-- 公司贷款详情 --> |
||||
<template> |
||||
<div class="wrap"> |
||||
<MyTitle :titleArr="['公司贷款', '贷款详情']" /> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<el-form ref="form" :model="form" label-width="120px" disabled> |
||||
<el-col :span="24"> |
||||
<h6 class="l-title">信用评估</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="账号"> |
||||
<el-input v-model="form.applicationAccount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="证件类型"> |
||||
<el-select v-model.trim="form.identificationType" placeholder="请选择" disabled> |
||||
<el-option label="统一社会信用代码证" :value="82"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="注册地址"> |
||||
<el-input v-model="form.companyRegisteredAddress" /> |
||||
</el-form-item> |
||||
<el-form-item label="法人证件号码"> |
||||
<el-input v-model="form.corporateIdNumber" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="客户名称"> |
||||
<el-input v-model="form.customerName" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="代码证号"> |
||||
<el-input v-model="bankLoanApplication.corporateIdNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="法人姓名"> |
||||
<el-input v-model="form.corporateName" /> |
||||
</el-form-item> |
||||
<el-form-item label="信用评级"> |
||||
<el-input v-model="bankLoanApplication.creditRating" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">授信</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="bankLoanApplication.creditAmount" disabled /> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">贷款申请</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="授信年限"> |
||||
<el-select v-model="bankLoanApplication.creditTermOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式"> |
||||
<el-select v-model.trim="bankLoanApplication.repaymentMethodOne" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="申请日期" prop="loanApplicationDate"> |
||||
<el-date-picker v-model="bankLoanApplication.loanApplicationDate" type="date" placeholder="选择日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" ref="loanApplicationDate"> |
||||
</el-date-picker> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="年化利率"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="发放方式"> |
||||
<el-select v-model.trim="bankLoanApplication.distributionMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.distributionMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="24"> |
||||
<div class="line"></div> |
||||
<h6 class="l-title">贷款合同录入</h6> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="贷款类型"> |
||||
<el-select value="企业经营贷款" placeholder="请选择"> |
||||
<el-option value="企业经营贷款"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="授信金额"> |
||||
<el-input v-model="bankLoanApplication.creditAmount" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="起息日期" prop="valueDate"> |
||||
<el-date-picker v-model="bankLoanApplication.valueDate" type="date" placeholder="选择日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd"></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="计息方式"> |
||||
<el-input value="按LPR浮动计息" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="执行利率" prop="executedInterestRate"> |
||||
<el-input value="3.2%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="担保方式"> |
||||
<el-select v-model="bankLoanApplication.guaranteeMethod" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.guaranteeMethods" :key="i" :label="item.name" |
||||
:value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="利息总额"> |
||||
<el-input v-model="bankLoanApplication.totalInterestAmount" /> |
||||
</el-form-item> |
||||
<el-form-item label="还款账号"> |
||||
<el-input v-model="bankLoanApplication.repaymentAccount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="合同编号" prop="contractNo"> |
||||
<el-input v-model="bankLoanApplication.contractNumber" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="授信期限"> |
||||
<el-select v-model="bankLoanApplication.creditTermTwo" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.creditTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款期限" prop="loanTerm"> |
||||
<el-select v-model="bankLoanApplication.loanTerm" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in Util.loanTerms" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="到期日期"> |
||||
<el-date-picker v-model="bankLoanApplication.expirationDate" type="date" placeholder="选择日期" |
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" disabled></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="基准利率" prop="baseInterestRate"> |
||||
<el-input value="3.20%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="逾期利率" prop="overdueInterestRate"> |
||||
<el-input value="10%" disabled /> |
||||
</el-form-item> |
||||
<el-form-item label="还款方式" prop="repaymentMethodTwo"> |
||||
<el-select v-model="bankLoanApplication.repaymentMethodTwo" placeholder="请选择" disabled> |
||||
<el-option v-for="(item, i) in Util.repaymentMethods" :key="i" :label="item.name" :value="item.id"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="贷款金额"> |
||||
<el-input v-model="bankLoanApplication.loanAmount" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
|
||||
<div class="text-center"> |
||||
<el-button v-if="!bankCompanyLoans.loanDate" @click="showLoan" type="primary" class="submitBtn" |
||||
v-throttle>放款</el-button> |
||||
<el-button @click="$router.back()" type="primary" class="submitBtn" v-throttle>关闭</el-button> |
||||
</div> |
||||
|
||||
<el-dialog :visible.sync="loanVisible" z-index="6000" width="500px" append-to-body :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">放款</div> |
||||
</div> |
||||
<div style="padding: 30px 0;"> |
||||
<el-date-picker v-model="loanDate" type="date" placeholder="请选择放款日期" format="yyyy-MM-dd" |
||||
value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker> |
||||
</div> |
||||
</div> |
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="loanVisible = false">取消</el-button> |
||||
<el-button type="primary" @click="loanSubmit">确定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { loanDisbursement, companyLoanDetails, addOperation } from '@/api/http' |
||||
import MyTitle from '@/components/myTitle' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
Util, |
||||
id: this.$route.query.id, |
||||
form: { |
||||
applicationAccount: '', |
||||
customerName: '', |
||||
identificationType: '', |
||||
identificationNumber: '', |
||||
contactPhoneNumber: '', |
||||
companyRegisteredAddress: '', |
||||
corporateName: '', |
||||
corporateIdNumber: '', |
||||
contactPhoneNumber: '', |
||||
currency: 12, |
||||
accountType: 97, |
||||
interestRate: 3.2, |
||||
interestCalculationMethod: 83, |
||||
withdrawalMethod: 114, |
||||
numberOfEmployees: '', |
||||
yearOfEstablishment: '', |
||||
registrationType: '', |
||||
mainBusinessScope: '', |
||||
expirationDateOfBusinessLicense: '', |
||||
financialReportSubmissionMethod: '', |
||||
natureOfBorrower: '', |
||||
}, |
||||
loanDate: '', |
||||
loanVisible: false, |
||||
bankCompanyLoans: {}, |
||||
bankLoanApplication: {}, |
||||
} |
||||
}, |
||||
mounted () { |
||||
this.getDetail() |
||||
}, |
||||
methods: { |
||||
// 查询详情 |
||||
async getDetail () { |
||||
if (this.id) { |
||||
// 查看及展期 |
||||
const { data } = await companyLoanDetails(this.id) |
||||
|
||||
const eva = data.bankCreditEvaluation || {} |
||||
if (eva.identificationType) eva.identificationType = +eva.identificationType |
||||
this.form = eva || {} |
||||
this.bankCompanyLoans = data.bankCompanyLoans || {} |
||||
|
||||
const app = data.bankLoanApplication || {} |
||||
if (app.distributionMethod) app.distributionMethod = +app.distributionMethod |
||||
if (app.repaymentMethodOne) app.repaymentMethodOne = +app.repaymentMethodOne |
||||
if (app.repaymentMethodTwo) app.repaymentMethodTwo = +app.repaymentMethodTwo |
||||
if (app.creditTerm) app.creditTerm = +app.creditTerm |
||||
if (app.guaranteeMethod) app.guaranteeMethod = +app.guaranteeMethod |
||||
if (app.loanTerm) app.loanTerm = +app.loanTerm |
||||
if (app.creditTermOne) app.creditTermOne = +app.creditTermOne |
||||
if (app.creditTermTwo) app.creditTermTwo = +app.creditTermTwo |
||||
|
||||
this.bankLoanApplication = app |
||||
} |
||||
}, |
||||
// 展示放款弹框 |
||||
showLoan () { |
||||
this.loanVisible = true |
||||
}, |
||||
// 放款 |
||||
async loanSubmit () { |
||||
if (!this.loanDate) return this.$message.error('请选择放款日期!') |
||||
try { |
||||
const { data } = await loanDisbursement({ |
||||
companyLoanId: this.id, |
||||
loanDate: this.loanDate, |
||||
}) |
||||
|
||||
this.$message[data.status === 200 ? 'success' : 'error'](data.message) |
||||
if (data.status === 200) { |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: 838, emptyOne: '', emptyTwo: '', operationIds: preId + ',838', type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.loanVisible = false |
||||
this.getDetail() |
||||
} |
||||
} catch (e) { } |
||||
}, |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
height: calc(100vh - 118px); |
||||
padding: 20px; |
||||
overflow: auto; |
||||
|
||||
.l-title { |
||||
margin-bottom: 15px; |
||||
font-size: 18px; |
||||
font-weight: 600; |
||||
} |
||||
|
||||
.line { |
||||
margin: 20px 0; |
||||
border-bottom: 1px dashed #d7d7d7; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,112 @@ |
||||
<template> |
||||
<!-- 贷款放款 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷款放款']" /> |
||||
|
||||
<div style="width: 300px;margin-bottom: 20px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="贷款编号" align="center" /> |
||||
<el-table-column prop="loanDate" label="放款日期" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanDate || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="loanAmount" label="贷款金额(万)" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="loanAmount" label="放款金额(万)" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanDate ? scope.row.loanAmount : '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="loanAmount" label="放款状态" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.loanDate ? '已放款' : '待放款' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template slot-scope="scope"> |
||||
<el-button :disabled="!!scope.row.builtIn" @click="toDetail(scope.row)" size="small">{{ |
||||
scope.row.loanApplicationAmount ? '查看' : '编辑' |
||||
}}</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 2 |
||||
}) |
||||
this.list = data.page.records |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 详情 |
||||
toDetail (row) { |
||||
// 缓存信用评估几个id |
||||
this.$store.commit('system/setCreditIds', (row ? { |
||||
companyLoanId: row.companyLoanId, // 顶部三个tab切换的公共id |
||||
} : {})) |
||||
this.$router.push(row.loanApplicationAmount ? `/counter/list/manage/corporateLoans-detail?id=${row.companyLoanId}` : '/counter/list/manage/corporateLoans-apply') |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,405 @@ |
||||
<template> |
||||
<!-- 贷后管理 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷后管理']" /> |
||||
|
||||
<div style="width: 300px;margin-bottom: 20px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="贷款编号" align="center" /> |
||||
<el-table-column prop="loanStatus" label="贷款状态" align="center" width="100"> |
||||
<template slot-scope="scope">{{ scope.row.loanStatus || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="fiveLevelClassification" label="五级分类" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.five || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="processingResults" label="处理结果" align="center" width="100"> |
||||
<template slot-scope="scope">{{ scope.row.processingResults || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="updateTime" label="处理日期" align="center" width="160"> |
||||
<template slot-scope="scope">{{ scope.row.updateTime || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column prop="arrearsAmount" label="欠款金额" align="center" width="100"> |
||||
<template slot-scope="scope">{{ scope.row.arrearsAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="360"> |
||||
<template v-if="!scope.row.builtIn" slot-scope="scope"> |
||||
<el-button @click="collection(scope.row)" size="small">催收</el-button> |
||||
<el-button @click="postLoan(scope.row)" size="small">贷后调查</el-button> |
||||
<el-button v-if="!scope.row.nonPerformingLoan" :disabled="scope.row.fiveLevelClassification" |
||||
@click="npl(scope.row)" size="small">不良贷款</el-button> |
||||
<el-button v-if="!scope.row.badDebtRecognition" @click="badDebt(scope.row)" size="small">呆账认定</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
|
||||
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" :show-close="false" |
||||
custom-class="dia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提示</div> |
||||
</div> |
||||
|
||||
<div class="popBody"> |
||||
<p v-if="curMsg >= 0" class="text-lg" style="color: #333">{{ msgs[curMsg] }}</p> |
||||
|
||||
<el-row v-else style="width: 100%"> |
||||
<el-form class="dia-form" label-width="130px" label-suffix=":"> |
||||
<el-col :span="12"> |
||||
<el-form-item v-if="curType === 5" label="认定日期"> |
||||
<p class="text">{{ today }}</p> |
||||
</el-form-item> |
||||
<el-form-item label="客户名称"> |
||||
<p class="text">{{ curRow.customerName }}</p> |
||||
</el-form-item> |
||||
<el-form-item label="欠款金额"> |
||||
<p class="text">{{ curRow.arrearsAmount || 0 }}</p> |
||||
</el-form-item> |
||||
<el-form-item v-if="curType === 4" label="催收金额"> |
||||
<p class="text">{{ curRow.arrearsAmount || 0 }}</p> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="贷款编号"> |
||||
<p class="text">{{ curRow.applicationNumber }}</p> |
||||
</el-form-item> |
||||
<el-form-item label="催收通知书编号"> |
||||
<p class="text">A012346156281</p> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button v-if="curMsg < 2" class="close btn hover:bg-blue-100 " @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="msgSubmit">确 定</el-button> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog :visible="postLoanVisible" append-to-body style="z-index: 6000;" :close-on-click-modal="true" |
||||
:show-close="false" custom-class="dia postLoanDia"> |
||||
<div class="data-dia23"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">贷后调查</div> |
||||
</div> |
||||
|
||||
<h6>调查日期:{{ today }}</h6> |
||||
<el-row style="width: 100%"> |
||||
<el-form label-width="130px" label-suffix=":" label-position="top"> |
||||
<el-col :span="24"> |
||||
<el-form-item label="客户基本状态变化" required> |
||||
<el-input type="textarea" :rows="3" size="small" maxlength="100" v-model="form.stateChange" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="信贷业务和还本付息情况变化" required> |
||||
<el-select v-model="form.changesInSituation" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt1" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="偿债能力" required> |
||||
<el-select v-model="form.debtPayingAbility" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt3" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="担保状况不利变化" required> |
||||
<el-select v-model="form.adverseChanges" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt1" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :offset="1" :span="11"> |
||||
<el-form-item label="经营状况" required> |
||||
<el-select v-model="form.businessStatus" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt2" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="信用状况" required> |
||||
<el-select v-model="form.creditStatus" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt2" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="五级分类" required> |
||||
<el-select v-model="form.fiveLevelClassification" size="small" placeholder="请选择"> |
||||
<el-option v-for="(item, i) in opt4" :label="item.name" :value="item.id" :key="i"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="结论 建议"> |
||||
<el-input type="textarea" :rows="3" size="small" maxlength="100" |
||||
v-model="form.conclusionAndSuggestions"> |
||||
</el-input> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
</div> |
||||
|
||||
<div class="popBtns"> |
||||
<el-button class="close btn hover:bg-blue-100 " @click="postLoanVisible = false">取 消</el-button> |
||||
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="postLoanSubmit">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList, loanCollection, nonPerformingLoans, badDebtRecognition, postLoanInvestigationInput, addOperation } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
import Util from '@/libs/util' |
||||
export default { |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
today: Util.formatDate('yyyy-MM-dd', new Date()), |
||||
msgs: [ |
||||
'向贷款人预留各渠道联系方式发送催收信息', |
||||
'确认提交吗?', |
||||
'已成功向贷款人发起催收提醒!', |
||||
'贷后调查提交成功!', |
||||
'不良贷款提交成功!', |
||||
'呆账认定提交成功!', |
||||
], |
||||
visible: false, |
||||
curMsg: 0, |
||||
curType: 3, |
||||
curRow: {}, |
||||
|
||||
postLoanVisible: false, |
||||
selects: [], |
||||
originForm: {}, |
||||
form: { |
||||
stateChange: '', |
||||
changesInSituation: 203, |
||||
debtPayingAbility: 1, |
||||
adverseChanges: 203, |
||||
businessStatus: 205, |
||||
creditStatus: 205, |
||||
fiveLevelClassification: 1, |
||||
conclusionAndSuggestions: '', |
||||
}, |
||||
opt1: [ |
||||
{ |
||||
id: 203, |
||||
name: '有' |
||||
}, |
||||
{ |
||||
id: 204, |
||||
name: '无' |
||||
}, |
||||
], |
||||
opt2: [ |
||||
{ |
||||
id: 205, |
||||
name: '优' |
||||
}, |
||||
{ |
||||
id: 206, |
||||
name: '良' |
||||
}, |
||||
{ |
||||
id: 207, |
||||
name: '差' |
||||
}, |
||||
], |
||||
opt3: [ |
||||
{ |
||||
id: 1, |
||||
name: '能按期偿还' |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '不能按期偿还' |
||||
}, |
||||
], |
||||
opt4: [ |
||||
{ |
||||
id: 1, |
||||
name: '正常贷款' |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '关注贷款' |
||||
}, |
||||
{ |
||||
id: 3, |
||||
name: '次级贷款' |
||||
}, |
||||
{ |
||||
id: 4, |
||||
name: '可疑贷款' |
||||
}, |
||||
{ |
||||
id: 5, |
||||
name: '损失贷款' |
||||
}, |
||||
], |
||||
curRow: {}, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.originForm = JSON.parse(JSON.stringify(this.form)) |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 4 |
||||
}) |
||||
const list = data.page.records |
||||
const { opt4 } = this |
||||
list.forEach(e => { |
||||
const five = e.fiveLevelClassification |
||||
e.bad = five === '4' || five === '5' // 不良贷款和呆账认定是否可点击 |
||||
if (five) e.five = opt4.find(n => n.id == five).name |
||||
}) |
||||
this.list = list |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 催收 |
||||
collection (row) { |
||||
this.curRow = row |
||||
this.visible = true |
||||
this.curMsg = 0 |
||||
}, |
||||
// 贷后调查 |
||||
postLoan (row) { |
||||
this.form = JSON.parse(JSON.stringify(this.originForm)) |
||||
this.curRow = row |
||||
this.postLoanVisible = true |
||||
}, |
||||
// 贷后调查提交 |
||||
async postLoanSubmit () { |
||||
const { form } = this |
||||
if (!form.stateChange) return this.$message.error('请填写客户基本状态变化!') |
||||
form.companyLoanId = this.curRow.companyLoanId |
||||
await postLoanInvestigationInput(form) |
||||
this.submitPoint(841) |
||||
this.getData() |
||||
this.postLoanVisible = false |
||||
}, |
||||
|
||||
// 不良贷款 |
||||
npl (row) { |
||||
this.curRow = row |
||||
this.curType = 4 |
||||
this.curRow = row |
||||
this.visible = true |
||||
this.curMsg = -2 |
||||
}, |
||||
// 呆账认定 |
||||
badDebt (row) { |
||||
this.curRow = row |
||||
this.curType = 5 |
||||
this.curRow = row |
||||
this.visible = true |
||||
this.curMsg = -1 |
||||
}, |
||||
async msgSubmit () { |
||||
if (!this.curMsg) { |
||||
// 催收提交 |
||||
await loanCollection({ |
||||
companyLoanId: this.curRow.companyLoanId |
||||
}) |
||||
this.getData() |
||||
this.curMsg = 2 |
||||
this.submitPoint(840) |
||||
} else if (this.curMsg < 0) { |
||||
this.curMsg = 1 |
||||
} else if (this.curMsg === 1) { |
||||
this.curMsg = this.curType |
||||
if (this.curType === 4) { |
||||
// 不良贷款提交 |
||||
await nonPerformingLoans({ |
||||
companyLoanId: this.curRow.companyLoanId |
||||
}) |
||||
this.submitPoint(842) |
||||
} else { |
||||
// 呆账认定提交 |
||||
await badDebtRecognition({ |
||||
companyLoanId: this.curRow.companyLoanId |
||||
}) |
||||
this.submitPoint(843) |
||||
} |
||||
this.getData() |
||||
} else { |
||||
this.visible = false |
||||
} |
||||
}, |
||||
async submitPoint (id) { |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: id, emptyOne: '', emptyTwo: '', operationIds: `${preId},${id}`, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
@import '@/styles/dialog.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
|
||||
/deep/.postLoanDia { |
||||
.el-form-item__label { |
||||
padding-bottom: 0; |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,358 @@ |
||||
<template> |
||||
<!-- 贷款还款 --> |
||||
<div class="wrap"> |
||||
<my-title :titleArr="['公司贷款', '贷款还款']" /> |
||||
|
||||
<div style="width: 300px;margin-bottom: 20px;"> |
||||
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable /> |
||||
</div> |
||||
|
||||
<el-table :data="list" stripe :header-cell-style="headerCellStyle"> |
||||
<el-table-column prop="customerName" label="客户姓名" align="center" /> |
||||
<el-table-column prop="applicationNumber" label="贷款编号" align="center" /> |
||||
<el-table-column prop="totalRepaymentAmount" label="累计还款金额(万)" align="center" /> |
||||
<el-table-column prop="arrearsAmount" label="欠款金额(万)" align="center"> |
||||
<template slot-scope="scope">{{ scope.row.arrearsAmount || '-' }}</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="240"> |
||||
<template slot-scope="scope"> |
||||
<el-button :disabled="!!scope.row.builtIn" @click="toDetail(scope.row)" size="small">{{ |
||||
scope.row.loanApplicationAmount ? '查看' : '编辑' |
||||
}}</el-button> |
||||
<template v-if="!scope.row.builtIn"> |
||||
<el-button size="small" @click="showExtension(scope.row)">展期</el-button> |
||||
<el-button @click="repayment(scope.row)" size="small">还款计划</el-button> |
||||
</template> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
|
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="page" |
||||
@current-change="handleCurrentChange" :total="total"></el-pagination> |
||||
</div> |
||||
|
||||
<el-dialog title="请选择展期期限" :visible.sync="extensionVisible" width="300px" z-index="6000" :append-to-body="true"> |
||||
<el-select v-model="extensionPeriod" placeholder="请选择" size="small" style="width: 100%;"> |
||||
<el-option v-for="(item, i) in extensions" :key="i" :label="item.name" :value="item.id"></el-option> |
||||
</el-select> |
||||
|
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="extensionVisible = false">取消</el-button> |
||||
<el-button type="primary" @click="extensionSubmit">确定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
|
||||
<el-dialog title="还款计划" :visible.sync="repaymentVisible" width="1000px" z-index="6000" :append-to-body="true"> |
||||
<div class="flex j-between a-center m-b-20"> |
||||
<el-form class="filter-form" label-width="90px" inline> |
||||
<el-form-item label="还款周期"> |
||||
<el-date-picker placeholder="请选择还款周期" v-model="date" align="right" unlink-panels type="daterange" |
||||
size="small" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" |
||||
clearable></el-date-picker> |
||||
</el-form-item> |
||||
<el-form-item label="还款状态"> |
||||
<el-select v-model="form.status" placeholder="请选择" size="small" clearable @change="initRepayment"> |
||||
<el-option value="待还款"></el-option> |
||||
<el-option value="已还款"></el-option> |
||||
<el-option value="逾期"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-form> |
||||
<div> |
||||
<el-button @click="batchRepayment('已还款')" size="small" type="primary">批量还款</el-button> |
||||
<el-button @click="batchRepayment('逾期')" size="small" type="primary">批量逾期</el-button> |
||||
</div> |
||||
</div> |
||||
<el-table ref="repayments" :data="repayments" stripe header-align="center" |
||||
@selection-change="handleSelectionChangeRepayment" row-key="id"> |
||||
<el-table-column type="selection" width="55" align="center" :reserve-selection="true" |
||||
:selectable="checkAble"></el-table-column> |
||||
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
||||
<el-table-column prop="contractAmount" label="还款周期" align="center"> |
||||
<template slot-scope="scope"> |
||||
{{ scope.row.periodStart + '~' + scope.row.periodEnd }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column prop="amountDue" label="应还款" align="center"></el-table-column> |
||||
<el-table-column prop="status" label="还款状态" align="center"> |
||||
<template slot-scope="scope"> |
||||
<p :class="{ 'text-red': scope.row.status === '逾期' }">{{ scope.row.status }}</p> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" align="center" width="150"> |
||||
<template v-if="scope.row.status !== '已还款'" slot-scope="scope"> |
||||
<el-button @click="handleRepayment(scope.row, '已还款')" size="small">还款</el-button> |
||||
<el-button @click="handleRepayment(scope.row, '逾期')" size="small">逾期</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<div class="pagination"> |
||||
<el-pagination background layout="total, prev, pager, next" :current-page="pageRepayment" |
||||
@current-change="handleCurrentChangePayment" :total="totalRepayment"></el-pagination> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { headerCellStyle } from '@/assets/js/myConfig' |
||||
import { companyLoanList, addExtensionPeriod, repaymentPlanCompany, batchProcessingCompany, addOperation } from '@/api/http'; |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
MyTitle, |
||||
}, |
||||
data () { |
||||
return { |
||||
headerCellStyle, |
||||
searchTimer: null, |
||||
keyword: '', |
||||
list: [], |
||||
page: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
|
||||
curRow: {}, |
||||
extensionVisible: false, |
||||
extensionPeriod: 1, |
||||
extensions: [ |
||||
{ |
||||
id: 1, |
||||
name: '1个月' |
||||
}, |
||||
{ |
||||
id: 2, |
||||
name: '2个月' |
||||
}, |
||||
{ |
||||
id: 3, |
||||
name: '3个月' |
||||
}, |
||||
{ |
||||
id: 4, |
||||
name: '4个月' |
||||
}, |
||||
{ |
||||
id: 5, |
||||
name: '5个月' |
||||
}, |
||||
{ |
||||
id: 6, |
||||
name: '6个月' |
||||
}, |
||||
{ |
||||
id: 7, |
||||
name: '7个月' |
||||
}, |
||||
{ |
||||
id: 8, |
||||
name: '8个月' |
||||
}, |
||||
{ |
||||
id: 9, |
||||
name: '9个月' |
||||
}, |
||||
{ |
||||
id: 10, |
||||
name: '10个月' |
||||
}, |
||||
], |
||||
|
||||
repaymentVisible: false, |
||||
repayments: [], |
||||
pageRepayment: 1, |
||||
pageSizeRepayment: 10, |
||||
totalRepayment: 0, |
||||
multipleSelection: [], |
||||
date: [], |
||||
form: { |
||||
periodEnd: '', |
||||
periodStart: '', |
||||
status: '', |
||||
}, |
||||
curRow: {}, |
||||
} |
||||
}, |
||||
watch: { |
||||
keyword: function (val) { |
||||
clearTimeout(this.searchTimer); |
||||
this.searchTimer = setTimeout(() => { |
||||
this.initData() |
||||
}, 500) |
||||
}, |
||||
date: function (val) { |
||||
if (val) { |
||||
this.form.periodStart = val[0] |
||||
this.form.periodEnd = val[1] |
||||
} else { |
||||
this.form.periodStart = '' |
||||
this.form.periodEnd = '' |
||||
} |
||||
this.initRepayment(); |
||||
}, |
||||
}, |
||||
mounted () { |
||||
this.initData() |
||||
}, |
||||
methods: { |
||||
async getData () { |
||||
const { data } = await companyLoanList({ |
||||
...this.$store.getters['system/commonIds'], |
||||
pageNum: this.page, |
||||
pageSize: this.pageSize, |
||||
searchContent: this.keyword, |
||||
typeId: 3 |
||||
}) |
||||
this.list = data.page.records |
||||
this.total = data.page.total |
||||
}, |
||||
initData () { |
||||
this.page = 1 |
||||
this.getData() |
||||
}, |
||||
handleCurrentChange (val) { |
||||
this.page = val |
||||
this.getData() |
||||
}, |
||||
// 详情 |
||||
toDetail (row) { |
||||
// 缓存信用评估几个id |
||||
this.$store.commit('system/setCreditIds', (row ? { |
||||
companyLoanId: row.companyLoanId, // 顶部三个tab切换的公共id |
||||
} : {})) |
||||
this.$router.push(row.loanAmount ? `/counter/list/manage/corporateLoans-detail?id=${row.companyLoanId}` : '/counter/list/manage/corporateLoans-apply') |
||||
}, |
||||
// 展示展期弹框 |
||||
showExtension (row) { |
||||
this.curRow = row |
||||
this.extensionVisible = true |
||||
}, |
||||
// 展期 |
||||
async extensionSubmit () { |
||||
if (!this.extensionPeriod) return this.$message.error('请选择展期期限!') |
||||
const { data } = await addExtensionPeriod({ |
||||
companyLoanId: this.curRow.companyLoanId, |
||||
extensionPeriod: this.extensionPeriod, |
||||
}) |
||||
this.$message.success('展期成功!') |
||||
if (data.status === 200) this.extensionVisible = false |
||||
|
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId: 839, emptyOne: '', emptyTwo: '', operationIds: preId + ',839', type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
this.getData() |
||||
}, |
||||
|
||||
|
||||
// 展示还款计划 |
||||
async repayment (row) { |
||||
this.curRow = row |
||||
this.repaymentVisible = true |
||||
this.getRepayment() |
||||
}, |
||||
// 展示还款计划 |
||||
async getRepayment (row) { |
||||
const { data } = await repaymentPlanCompany({ |
||||
pageNum: this.pageRepayment, |
||||
pageSize: this.pageSizeRepayment, |
||||
...this.form, |
||||
companyLoanId: this.curRow.companyLoanId, |
||||
}) |
||||
this.repayments = data.list.records |
||||
this.totalRepayment = data.list.total |
||||
}, |
||||
initRepayment () { |
||||
this.pageRepayment = 1 |
||||
this.getRepayment() |
||||
}, |
||||
handleCurrentChangePayment (val) { |
||||
this.pageRepayment = val |
||||
this.getRepayment() |
||||
}, |
||||
handleSelectionChangeRepayment (val) { |
||||
this.multipleSelection = val |
||||
}, |
||||
// 还款计划多选框禁用条件 |
||||
checkAble (row) { |
||||
return row.status === '待还款' |
||||
}, |
||||
// 还款/逾期 |
||||
handleRepayment (row, status) { |
||||
const text = status === '已还款' ? '还款' : '逾期' |
||||
this.$confirm(`确定要${text}吗?`, "提示", { |
||||
type: "warning" |
||||
}).then(async () => { |
||||
await batchProcessingCompany([{ |
||||
id: row.id, |
||||
status |
||||
}]) |
||||
|
||||
const answerId = status === '已还款' ? 900 : 901 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$message.success(`${text}成功`) |
||||
this.getRepayment() |
||||
this.getData() |
||||
}).catch(() => { }) |
||||
}, |
||||
// 批量还款/逾期 |
||||
batchRepayment (status) { |
||||
const list = this.multipleSelection |
||||
if (list.length) { |
||||
const text = status === '已还款' ? '还款' : '逾期' |
||||
this.$confirm(`确定要${text}吗?`, "提示", { |
||||
type: "warning" |
||||
}).then(async () => { |
||||
const ids = list.map(e => { |
||||
return { |
||||
id: e.id, |
||||
status |
||||
} |
||||
}) |
||||
await batchProcessingCompany(ids) |
||||
|
||||
const answerId = status === '已还款' ? 898 : 899 |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,768' |
||||
await addOperation({ |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },], |
||||
projectId: +sessionStorage.getItem('projectId'), |
||||
startTime: sessionStorage.getItem('startTime') |
||||
}) |
||||
|
||||
this.$message.success(`${text}成功`) |
||||
this.$refs.repayments.clearSelection() |
||||
this.multipleSelection = [] |
||||
this.getRepayment() |
||||
this.getData() |
||||
}).catch(() => { }) |
||||
} else { |
||||
this.$message.error(`请选择数据!`) |
||||
} |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
@import '@/assets/css/tablebg.scss'; |
||||
|
||||
.wrap { |
||||
width: 100%; |
||||
max-height: calc(100vh - 118px); |
||||
padding: 24px; |
||||
overflow: auto; |
||||
} |
||||
</style> |
@ -0,0 +1,193 @@ |
||||
<template> |
||||
<!-- 外汇业务 --> |
||||
<div class="wrap wrap2"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">购汇</el-menu-item> |
||||
<el-menu-item index="2">结汇</el-menu-item> |
||||
|
||||
</el-menu> |
||||
</div> |
||||
<MyTitle :titleArr="['外汇业务', text]" /> |
||||
|
||||
<!-- 购汇 --> |
||||
<puchasing v-if="activeIndex === '1'"></puchasing> |
||||
<!-- 结汇 --> |
||||
<settlement v-if="activeIndex === '2'"></settlement> |
||||
|
||||
<el-dialog style="margin-top:10vh" :visible.sync="visible" :modal="false" width="40%" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="data-dia"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title">提交</div> |
||||
</div> |
||||
<div class="popBody"> |
||||
<h2>本业务需要授权</h2> |
||||
</div> |
||||
<div class="popBtns"> |
||||
<el-button class="close btn" @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn" type="primary" @click="visible = false">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import puchasing from './puchasing.vue' |
||||
import settlement from './settlement.vue' |
||||
import MyTitle from '@/components/myTitle' |
||||
export default { |
||||
name: 'index', |
||||
components: { |
||||
puchasing, |
||||
settlement, |
||||
MyTitle |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '',/* 顶部文字 */ |
||||
cacheVal: '', |
||||
textObj: { |
||||
'1': '购汇', |
||||
'2': '结汇', |
||||
}, |
||||
visible: false, |
||||
activeIndex: '1', |
||||
} |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('foreignExchangeIndex')) { |
||||
this.handleSelect(sessionStorage.getItem('foreignExchangeIndex')) |
||||
} else { |
||||
this.handleSelect('1') |
||||
} |
||||
}, |
||||
methods: { |
||||
handleSelect (val) { |
||||
this.text = this.textObj[val] |
||||
this.activeIndex = val |
||||
this.cacheVal = val |
||||
}, |
||||
}, |
||||
destroyed () { |
||||
sessionStorage.setItem('foreignExchangeIndex', this.cacheVal) |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568df2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #cfddff; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.submitBtn { |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #cfdeff; |
||||
color: #6191ff; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191ff; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,311 @@ |
||||
<!-- 外汇业务-购汇 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<div class="texts"> |
||||
<p class="text"> |
||||
<span>购汇人姓名:</span> |
||||
丛小凤 |
||||
</p> |
||||
<p class="text"> |
||||
<span>本年额度:</span> |
||||
已用 等值80.00美元 |
||||
</p> |
||||
<p class="text"> |
||||
<span></span> |
||||
剩余 等值49,200.00美元 |
||||
</p> |
||||
</div> |
||||
<el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="凭证号码" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp1('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled v-model="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
<p style="color: #8f8f8f;">可用余额:人民币 3,200,000.00</p> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="钞汇" prop="goldLogo"> |
||||
<el-select v-model.trim="form.goldLogo" placeholder="请选择" ref="goldLogo"> |
||||
<el-option v-for="item in goldLogos" :label="item.options" :value="item.itemId" :key="item.itemId"> |
||||
</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="购汇用途" prop="buyForeignPurpose"> |
||||
<el-select v-model.trim="form.buyForeignPurpose" placeholder="请选择"> |
||||
<el-option v-for="item in getSelectList.buyForeignPurposeList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" ref="currency"> |
||||
<el-option v-for="item in getSelectList.allCurrencyList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="外币" prop="money"> |
||||
<el-input v-model="form.money" maxlength="15" @input="val => ismoney(val, form, 'money')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp2('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp2('密码器')"> |
||||
<el-input v-model="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" :needAuth="needAuth" /> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { myValidate, ismoney, checkName, checkHanzi, messagePassword, messageCard, inputListen } from '@/utils/utilFunction.js' |
||||
import { addOperation, getOperation } from '@/api/http' |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
|
||||
const moduleName = 'foreignExchange/puchasing' |
||||
import MyDialog from '@/components/dialog' |
||||
import NeedBefore from '@/components/needBefore' |
||||
export default { |
||||
name: '', |
||||
props: { |
||||
depositFinish: Boolean |
||||
}, |
||||
mixins: [TipsBefore], |
||||
components: { |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('foreignExchangePuchasingPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('foreignExchangePuchasingPassword') |
||||
} |
||||
if (sessionStorage.getItem('foreignExchangePuchasingBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber, goldLogo } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
|
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
form: { |
||||
voucherNumber: '', // 凭证号码 |
||||
currency: '', |
||||
goldLogo: '', |
||||
money: '', |
||||
buyForeignPurpose: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
voucherNumber: '凭证号码', |
||||
currency: '币种', |
||||
goldLogo: '钞汇', |
||||
money: '外币', |
||||
buyForeignPurpose: '购汇用途', |
||||
drawPassword: '支取密码', |
||||
}, |
||||
rules: { |
||||
currency: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择币种', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
goldLogo: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择钞汇标识', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
money: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入外汇金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
buyForeignPurpose: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择购汇用途', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
goldLogos: [ |
||||
{ |
||||
itemId: 150, |
||||
options: '现汇(参考牌价712.34)' |
||||
}, |
||||
{ |
||||
itemId: 151, |
||||
options: '现钞(参考牌价712.34)' |
||||
}, |
||||
], |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
getFormData () { |
||||
let param = { |
||||
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,57,64' |
||||
} |
||||
getOperation(param).then((data) => { |
||||
console.log(data) |
||||
if (data.status == 200) { |
||||
var list = data.data.judgmentRuleReqs |
||||
for (var i = 0; i < list.length; i++) { |
||||
if (list[i].answerId == '85') { |
||||
this.cardNumberJudge = true |
||||
} //卡号 |
||||
else if (list[i].answerId == '87') { this.form.currency = +list[i].emptyTwo } //币种 |
||||
else if (list[i].answerId == '88') { this.form.goldLogo = +list[i].emptyTwo } //钞汇标识 |
||||
else if (list[i].answerId == '89') { this.form.money = list[i].emptyTwo } //金额 |
||||
else if (list[i].answerId == '90') { this.form.buyForeignPurpose = +list[i].emptyTwo } //支取方式 |
||||
else if (list[i].answerId == '91') { |
||||
if (sessionStorage.getItem('nomCurrentWithdrawalPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomCurrentWithdrawalPassword') |
||||
} else { |
||||
this.form.drawPassword = list[i].emptyTwo |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}).catch((error) => { |
||||
}) |
||||
}, |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写凭证号码') |
||||
return |
||||
} |
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,708,753' |
||||
formList.push( |
||||
{ answerId: 755, emptyOne: '', emptyTwo: '', operationIds: preId + ',755', type: '' }, |
||||
{ answerId: 756, emptyOne: 123, emptyTwo: form.currency, operationIds: preId + ',756', type: 1 }, |
||||
{ answerId: 757, emptyOne: 119, emptyTwo: form.goldLogo, operationIds: preId + ',757', type: 1 }, |
||||
{ answerId: 758, emptyOne: 120, emptyTwo: form.money, operationIds: preId + ',758', type: 3 }, |
||||
{ answerId: 759, emptyOne: 124, emptyTwo: form.buyForeignPurpose, operationIds: preId + ',759', type: 1 }, |
||||
{ answerId: 760, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',760', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('755') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('760') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
ismoney, |
||||
checkName, |
||||
checkHanzi, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}), |
||||
needAuth () { |
||||
return this.form.money >= 50000 |
||||
} |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.wrap .body { |
||||
margin-top: 0; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.texts { |
||||
margin: 30px 0 30px 80px; |
||||
font-size: 14px; |
||||
color: #666; |
||||
|
||||
.text { |
||||
line-height: 1.6; |
||||
} |
||||
|
||||
span { |
||||
display: inline-block; |
||||
width: 90px; |
||||
text-align: right; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,289 @@ |
||||
<!-- 外汇业务-结汇 --> |
||||
<template> |
||||
<div class="body"> |
||||
<el-row :gutter="20" style="margin: 0"> |
||||
<div class="texts"> |
||||
<p class="text"> |
||||
<span>本年额度:</span> |
||||
已用 等值0.00美元 |
||||
</p> |
||||
<p class="text"> |
||||
<span></span> |
||||
剩余 等值50,000.00美元 |
||||
</p> |
||||
</div> |
||||
<el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="凭证号码" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp1('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled v-model="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
<p style="color: #8f8f8f;">可用余额:美元 现汇 5000.00</p> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="外币金额" prop="money"> |
||||
<el-input v-model="form.money" placeholder="最多可结汇5,000.00" maxlength="15" |
||||
@input="val => ismoney(val, form, 'money')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp2('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp2('密码器')"> |
||||
<el-input v-model="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" disabled> |
||||
<el-option :value="153" label="美元 现汇"></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="资金来源" prop="fundingSource"> |
||||
<el-select v-model.trim="form.fundingSource" placeholder="请选择"> |
||||
<el-option v-for="item in getSelectList.fundingSourceList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2" :needAuth="needAuth" /> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { myValidate, ismoney, checkName, checkHanzi, messagePassword, messageCard } from '@/utils/utilFunction.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
import { mapMutations, mapGetters } from 'vuex' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
|
||||
const moduleName = 'foreignExchange/settlement' |
||||
import MyDialog from '@/components/dialog' |
||||
import NeedBefore from '@/components/needBefore' |
||||
export default { |
||||
name: '', |
||||
props: { |
||||
depositFinish: Boolean |
||||
}, |
||||
mixins: [TipsBefore], |
||||
components: { |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('foreignExchangSettlePassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('foreignExchangSettlePassword') |
||||
} |
||||
if (sessionStorage.getItem('foreignExchangeSettleBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
// this.getFormData() |
||||
}, |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
visible: false, |
||||
cardNumberJudge: false, |
||||
form: { |
||||
voucherNumber: '', // 凭证号码 |
||||
currency: 153, |
||||
money: '', |
||||
fundingSource: '', |
||||
drawPassword: '', |
||||
}, |
||||
formName: { |
||||
voucherNumber: '凭证号码', |
||||
currency: '币种', |
||||
money: '外币金额', |
||||
fundingSource: '资金来源', |
||||
drawPassword: '支取密码', |
||||
}, |
||||
rules: { |
||||
currency: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择币种', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
money: [ |
||||
{ |
||||
required: true, |
||||
message: '请输入外币金额', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
fundingSource: [ |
||||
{ |
||||
required: true, |
||||
message: '请选择资金来源', |
||||
trigger: 'change' |
||||
} |
||||
], |
||||
}, |
||||
submited: 0 |
||||
} |
||||
}, |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
getFormData () { |
||||
let param = { |
||||
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,26,57,64' |
||||
} |
||||
getOperation(param).then((data) => { |
||||
console.log(data) |
||||
if (data.status == 200) { |
||||
var list = data.data.judgmentRuleReqs |
||||
for (var i = 0; i < list.length; i++) { |
||||
if (list[i].answerId == '85') { |
||||
// sessionStorage.setItem('nomCurrentWithdrawalCard', list[i].emptyTwo) |
||||
this.form.cardNumber = list[i].emptyTwo |
||||
this.cardNumberJudge = true |
||||
} //卡号 |
||||
else if (list[i].answerId == '86') { this.form.userName = list[i].emptyTwo } //客户姓名 |
||||
else if (list[i].answerId == '87') { this.form.currency = +list[i].emptyTwo } //币种 |
||||
else if (list[i].answerId == '88') { this.form.goldLogo = +list[i].emptyTwo } //钞汇标识 |
||||
else if (list[i].answerId == '89') { this.form.money = list[i].emptyTwo } //金额 |
||||
else if (list[i].answerId == '90') { this.form.fundingSource = +list[i].emptyTwo } //支取方式 |
||||
// if (list[i].answerId == '91') {sessionStorage.setItem('nomCurrentWithdrawalPassword', list[i].emptyTwo)} //支取密码 |
||||
else if (list[i].answerId == '91') { |
||||
console.log(91) |
||||
if (sessionStorage.getItem('nomCurrentWithdrawalPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('nomCurrentWithdrawalPassword') |
||||
} else { |
||||
this.form.drawPassword = list[i].emptyTwo |
||||
} |
||||
} |
||||
else if (list[i].answerId == '92') { this.form.serviceCharge = list[i].emptyTwo } //手续费 |
||||
else if (list[i].answerId == '93') { this.form.remark = list[i].emptyTwo } //摘要 |
||||
} |
||||
} |
||||
}).catch(() => { }) |
||||
}, |
||||
submitForm () { |
||||
const { form } = this |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
if (!form.voucherNumber) { |
||||
messageCard('请填写凭证号码') |
||||
return |
||||
} |
||||
if (form.money > 5000) return this.$message.warning('外币金额最多结汇5000.00,请重新输入') |
||||
if (!form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
let formList = []; |
||||
|
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,708,754' |
||||
formList.push( |
||||
{ answerId: 761, emptyOne: '', emptyTwo: '', operationIds: preId + ',761', type: '' }, |
||||
{ answerId: 762, emptyOne: 8, emptyTwo: form.currency, operationIds: preId + ',762', type: 1 }, |
||||
{ answerId: 763, emptyOne: 121, emptyTwo: form.money, operationIds: preId + ',763', type: 3 }, |
||||
{ answerId: 764, emptyOne: 122, emptyTwo: form.fundingSource, operationIds: preId + ',764', type: 1 }, |
||||
{ answerId: 765, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',765', type: 3 }, |
||||
) |
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime: startTime, |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.$message({ |
||||
message: '服务器繁忙,提交失败。', |
||||
center: true, |
||||
type: 'info' |
||||
}); |
||||
}) |
||||
}, |
||||
popUp1 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('761') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('765') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
ismoney, |
||||
checkName, |
||||
checkHanzi, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
needsModule: 'system/needsModule', |
||||
idCardNumber: 'system/idCardNumber', |
||||
inMyWork: 'system/inMyWork', |
||||
getSelectList: 'system/getSelectList' |
||||
}), |
||||
needAuth () { |
||||
return this.form.money >= 50000 |
||||
} |
||||
}, |
||||
} |
||||
</script> |
||||
<style lang='scss' scoped> |
||||
.wrap .body { |
||||
margin-top: 0; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #cfddff; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191ff; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
.texts { |
||||
margin: 30px 0 30px 80px; |
||||
font-size: 14px; |
||||
color: #666; |
||||
|
||||
.text { |
||||
line-height: 1.6; |
||||
} |
||||
|
||||
span { |
||||
display: inline-block; |
||||
width: 90px; |
||||
text-align: right; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,367 @@ |
||||
<!-- 网上银行开户 --> |
||||
<template> |
||||
<div class="wrap wrap2"> |
||||
<MyTitle :titleArr="['网上银行', '开户']" /> |
||||
|
||||
<div class="body"> |
||||
<el-row :gutter="20"> |
||||
<el-form ref="form" :model="form" label-width="120px" :rules="rules"> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件类型"> |
||||
<el-select v-model.trim="form.certificateType" placeholder="请选择"> |
||||
<el-option label="身份证" :value="83"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="客户号"> |
||||
<el-input ref="clientNumber" disabled maxlength="20" :value="form.clientNumber" |
||||
@input="(val) => checkHanzi(val, form, 'clientNumber')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="币种" prop="currency"> |
||||
<el-select v-model.trim="form.currency" placeholder="请选择" disabled ref="currency"> |
||||
<el-option v-for="item in getSelectList.currencySelectList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="凭证类型" prop="voucherType"> |
||||
<el-select v-model.trim="form.voucherType" placeholder="请选择" disabled ref="voucherType"> |
||||
<el-option label="IC卡" :value="15"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="开通网上银行" prop="openOnlineBanking"> |
||||
<el-radio-group v-model.trim="form.openOnlineBanking"> |
||||
<el-radio :label="146">是</el-radio> |
||||
<el-radio :label="147">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item label="支取密码" required> |
||||
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')"> |
||||
<p>请输入密码</p> |
||||
</div> |
||||
<div v-else @click="popUp3('密码器')"> |
||||
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="10" :offset="1"> |
||||
<el-form-item label="证件号码" required> |
||||
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'> |
||||
<p>请刷身份证</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input :value="form.idNumber" disabled ref="idNumber"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="客户姓名" prop="customerName"> |
||||
<el-input ref="customerName" disabled :value="form.customerName" |
||||
@input="(val) => checkName(val, form, 'customerName')"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="钞汇标识" prop="goldLogo"> |
||||
<el-select v-model.trim="form.goldLogo" placeholder="请选择" disabled ref="goldLogo"> |
||||
<el-option v-for="item in getSelectList.goldLogoSelectList" :label="item.options" :value="item.itemId" |
||||
:key="item.itemId"> </el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="凭证号码" required> |
||||
<div v-if='!cardNumberJudge' class="idCard" @click="popUp2('刷卡器')"> |
||||
<p>请刷卡</p> |
||||
</div> |
||||
<div v-else> |
||||
<el-input maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" |
||||
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item label="开通手机银行" prop="openPhoneBanking"> |
||||
<el-radio-group v-model.trim="form.openPhoneBanking"> |
||||
<el-radio :label="148">是</el-radio> |
||||
<el-radio :label="149">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" |
||||
:formName="formName" :spare="false" @submitIt="submitForm2" depositNumber='0816' /> |
||||
</el-form> |
||||
</el-row> |
||||
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button> |
||||
</div> |
||||
|
||||
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" |
||||
:spare="false" @submitIt="submitForm2()" /> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState, mapMutations, mapGetters } from 'vuex' |
||||
import { vername, vermob } from '@/utils/verify.js' |
||||
import { addOperation, getOperation } from '@/api/http'; |
||||
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js' |
||||
import { phoneListen, mailBoxListen, checkHanzi, inputListen, myValidate, checkName, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js' |
||||
|
||||
import MyTitle from '@/components/myTitle' |
||||
import TipsBefore from '@/mixins/tipsBefore' |
||||
import MyDialog from '@/components/dialog' |
||||
import NeedBefore from '@/components/needBefore' |
||||
|
||||
const moduleName = 'onlineBank/openAccount' |
||||
export default { |
||||
data () { |
||||
return { |
||||
moduleName, |
||||
idNumberJudge: false, |
||||
visible: false,// 表单 |
||||
cardNumberJudge: false, |
||||
form: { |
||||
certificateType: 83, // 证件类型 |
||||
idNumber: '',//证件号码 |
||||
clientNumber: '', // 客户号 |
||||
customerName: '', // 客户姓名 |
||||
currency: 12, // 币种 |
||||
goldLogo: 13, // 钞汇标识 |
||||
voucherType: 15, // 凭证类型 |
||||
voucherNumber: '', // 凭证号码 |
||||
openOnlineBanking: '', |
||||
openPhoneBanking: '', |
||||
drawPassword: '', // 支付密码 |
||||
}, |
||||
formName: { |
||||
certificateType: '证件类型', |
||||
idNumber: '证件号码', |
||||
clientNumber: '客户号', |
||||
customerName: '客户姓名', |
||||
currency: '币种', |
||||
goldLogo: '钞汇标识', |
||||
voucherType: '凭证类型', |
||||
voucherNumber: '凭证号码', |
||||
openOnlineBanking: '开通网上银行', |
||||
openPhoneBanking: '开通手机银行', |
||||
drawPassword: '支付密码', |
||||
}, |
||||
rules: { |
||||
customerName: vercustomer, |
||||
currency: [{ |
||||
required: true, |
||||
message: '请选择币种', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
goldLogo: [{ |
||||
required: true, |
||||
message: '请选择钞汇标识', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
voucherType: [{ |
||||
required: true, |
||||
message: '请选择凭证类型', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
openOnlineBanking: [{ |
||||
required: true, |
||||
message: '请选择开通网上银行', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
openPhoneBanking: [{ |
||||
required: true, |
||||
message: '请选择开通手机银行', |
||||
trigger: 'blur' |
||||
} |
||||
], |
||||
}, |
||||
|
||||
authorization: false,// 切授权 |
||||
success: false,// 切成功 |
||||
papers: [ |
||||
{ name: '身份证', id: 1 } |
||||
], |
||||
options: [], |
||||
gender: [ |
||||
{ name: '男', id: 1 }, |
||||
{ name: '女', id: 2 }, |
||||
], |
||||
submited: 0 |
||||
} |
||||
}, |
||||
components: { |
||||
MyTitle, |
||||
MyDialog, |
||||
NeedBefore |
||||
}, |
||||
created () { |
||||
if (sessionStorage.getItem('onlineBankPassword')) { |
||||
this.form.drawPassword = sessionStorage.getItem('onlineBankPassword') |
||||
} |
||||
|
||||
if (sessionStorage.getItem('onlineBankIdCard')) { |
||||
this.idNumberJudge = true |
||||
const { idNumber, userName, peopleNumber } = this.dataFlow |
||||
this.form.clientNumber = peopleNumber |
||||
this.form.idNumber = idNumber |
||||
this.form.customerName = userName |
||||
} |
||||
if (sessionStorage.getItem('onlineBankBankCard')) { |
||||
this.cardNumberJudge = true |
||||
const { voucherNumber } = this.dataFlow |
||||
this.form.voucherNumber = voucherNumber |
||||
} |
||||
// this.getFormData() |
||||
}, |
||||
mixins: [TipsBefore], |
||||
mounted () { |
||||
}, |
||||
methods: { |
||||
// 授权提交后 |
||||
submitIt () { |
||||
|
||||
// console.log(this.dataFlow) |
||||
}, |
||||
getFormData () { |
||||
let param = { |
||||
parentId: '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,707,741' |
||||
} |
||||
getOperation(param).then((data) => { |
||||
if (data.status == 200) { |
||||
var list = data.data.judgmentRuleReqs |
||||
for (var i = 0; i < list.length; i++) { |
||||
if (list[i].answerId == '40') { this.form.idType = +list[i].emptyTwo } |
||||
// if (list[i].answerId == '41') {sessionStorage.setItem('nomClientIdentity', list[i].emptyTwo)} |
||||
if (list[i].answerId == '41' && list[i].emptyTwo) { |
||||
this.idNumberJudge = true |
||||
this.form.idNumber = list[i].emptyTwo |
||||
} |
||||
} |
||||
} |
||||
}).catch((error) => { }) |
||||
|
||||
}, |
||||
...mapMutations({ |
||||
changeShowGoods: 'system/changeShowGoods', |
||||
setDataFlow: 'system/setDataFlow', |
||||
setNeedsModule: 'system/setNeedsModule', |
||||
setPopId: 'system/setPopId', |
||||
setTipsOperate: 'system/setTipsOperate' |
||||
}), |
||||
popUp1 (text) { // 身份证扫描仪 |
||||
this.setTipsOperate('请刷身份证'); |
||||
this.setPopId('743') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp2 (text) { |
||||
this.setTipsOperate('请刷银行卡'); |
||||
this.setPopId('749') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
popUp3 (text) { |
||||
this.setTipsOperate('请在密码器输入密码'); |
||||
this.setPopId('752') |
||||
sessionStorage.setItem('computerPath', this.$route.fullPath) |
||||
this.$router.push('/counter/list/') |
||||
}, |
||||
//提交个人用户信息 |
||||
submitForm () { |
||||
if (this.submited) return this.$message.error('已提交!') |
||||
let nomClientIdentity = sessionStorage.getItem('nomClientIdentity') |
||||
let consumerClientDragList = JSON.parse(nomClientIdentity); |
||||
let nomClientIdentitys = JSON.parse(nomClientIdentity); |
||||
if (!this.form.idNumber) { |
||||
messageIdCard() |
||||
return |
||||
} |
||||
if (!this.form.voucherNumber) { |
||||
messageCard('请填写凭证号码') |
||||
return |
||||
} |
||||
if (!this.form.drawPassword) { |
||||
messagePassword() |
||||
return |
||||
} |
||||
this.$refs.form.validate(myValidate(() => { |
||||
this.visible = true; |
||||
}, this.$refs)); |
||||
}, |
||||
submitForm2 () { |
||||
let projectId = sessionStorage.getItem('projectId') |
||||
let startTime = sessionStorage.getItem('startTime') |
||||
|
||||
let formList = []; |
||||
const { form } = this |
||||
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',287,5,707,741' |
||||
formList.push( |
||||
{ answerId: 742, emptyOne: 19, emptyTwo: form.certificateType, operationIds: preId + ',742', type: 1 }, |
||||
{ answerId: 743, emptyOne: '', emptyTwo: '', operationIds: preId + ',743', type: '' }, |
||||
{ answerId: 744, emptyOne: 6, emptyTwo: form.clientNumber, operationIds: preId + ',744', type: 3 }, |
||||
{ answerId: 745, emptyOne: 7, emptyTwo: form.customerName, operationIds: preId + ',745', type: 3 }, |
||||
{ answerId: 746, emptyOne: 8, emptyTwo: form.currency, operationIds: preId + ',746', type: 1 }, |
||||
{ answerId: 747, emptyOne: 9, emptyTwo: form.goldLogo, operationIds: preId + ',747', type: 1 }, |
||||
{ answerId: 748, emptyOne: 11, emptyTwo: form.voucherType, operationIds: preId + ',748', type: 1 }, |
||||
{ answerId: 750, emptyOne: 117, emptyTwo: form.openOnlineBanking, operationIds: preId + ',750', type: 1 }, |
||||
{ answerId: 749, emptyOne: 44, emptyTwo: form.voucherNumber, operationIds: preId + ',749', type: 3 }, |
||||
{ answerId: 751, emptyOne: 118, emptyTwo: form.openPhoneBanking, operationIds: preId + ',751', type: 1 }, |
||||
{ answerId: 752, emptyOne: 17, emptyTwo: form.drawPassword, operationIds: preId + ',752', type: 3 }, |
||||
) |
||||
|
||||
let params = { |
||||
parentId: preId, |
||||
lcJudgmentRuleReq: formList, |
||||
projectId: +projectId, |
||||
startTime |
||||
} |
||||
addOperation(params).then((data) => { |
||||
this.setDataFlow({ ...this.form }) |
||||
this.submited = 1 |
||||
}).catch((error) => { |
||||
this.setTipsOperate('服务器繁忙哦,提交失败。') |
||||
}) |
||||
|
||||
}, |
||||
|
||||
|
||||
throttle (fn, wait = 1000) {// 节流函数 |
||||
var timer = null; |
||||
return function () { |
||||
var context = this; |
||||
var args = fn; |
||||
if (!timer) { |
||||
timer = setTimeout(function () { |
||||
fn.apply(context, fn); |
||||
timer = null; |
||||
}, wait) |
||||
} |
||||
} |
||||
}, |
||||
checkHanzi, |
||||
phoneListen, |
||||
mailBoxListen, |
||||
checkName, |
||||
inputListen, |
||||
}, |
||||
computed: { |
||||
...mapGetters({ |
||||
dataFlow: 'system/dataFlow', |
||||
inMyWork: 'system/inMyWork', |
||||
needsModule: 'system/needsModule', |
||||
popId: 'system/popId', |
||||
getSelectList: 'system/getSelectList', |
||||
}) |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap { |
||||
width: 100%; |
||||
height: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: auto; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
} |
||||
} |
||||
</style> |
@ -1,195 +1,203 @@ |
||||
// 账户服务 |
||||
<template> |
||||
<!-- 账户服务 --> |
||||
<div class="wrap"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">修改密码</el-menu-item> |
||||
<el-menu-item index="2">账户服务</el-menu-item> |
||||
<el-menu-item index="3">修改密码</el-menu-item> |
||||
</el-menu> |
||||
</div> |
||||
<div class="title"> |
||||
<p>个人业务</p> |
||||
<i class="el-icon-arrow-right"></i> |
||||
<p>活期业务</p> |
||||
<i class="el-icon-arrow-right"></i> |
||||
<p>{{text}}</p> |
||||
</div> |
||||
|
||||
<!-- 修改密码 --> |
||||
<change-password></change-password> |
||||
<!-- --> |
||||
|
||||
<!-- --> |
||||
|
||||
<el-dialog |
||||
style="margin-top:10vh" |
||||
:visible.sync="visible" |
||||
:modal="false" |
||||
width="40%" |
||||
:close-on-click-modal="false" |
||||
:show-close="false" |
||||
custom-class="data-dia" |
||||
> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title" v-throttle>提交</div> |
||||
</div> |
||||
<div class="popBody"> |
||||
<h2>本业务需要授权</h2> |
||||
</div> |
||||
<div class="popBtns"> |
||||
<el-button class="close btn" @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn" type="primary" @click="visible = false">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
<!-- 账户服务 --> |
||||
<div class="wrap"> |
||||
<div class="nav"> |
||||
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> |
||||
<el-menu-item index="1">修改密码</el-menu-item> |
||||
<el-menu-item index="2">账户服务</el-menu-item> |
||||
<el-menu-item index="3">修改密码</el-menu-item> |
||||
</el-menu> |
||||
</div> |
||||
<div class="title"> |
||||
<p>个人业务</p> |
||||
<i class="el-icon-arrow-right"></i> |
||||
<p>活期业务</p> |
||||
<i class="el-icon-arrow-right"></i> |
||||
<p>{{ text }}</p> |
||||
</div> |
||||
|
||||
<!-- 修改密码 --> |
||||
<change-password></change-password> |
||||
<!-- --> |
||||
|
||||
<!-- --> |
||||
|
||||
<el-dialog style="margin-top:10vh" :visible.sync="visible" :modal="false" width="40%" :close-on-click-modal="false" |
||||
:show-close="false" custom-class="data-dia"> |
||||
<div slot="title" class="dia-header"> |
||||
<div class="data-title" v-throttle>提交</div> |
||||
</div> |
||||
<div class="popBody"> |
||||
<h2>本业务需要授权</h2> |
||||
</div> |
||||
<div class="popBtns"> |
||||
<el-button class="close btn" @click="visible = false">取 消</el-button> |
||||
<el-button class="sure btn" type="primary" @click="visible = false">确 定</el-button> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
import { mapState } from 'vuex' |
||||
import changePassword from './changePassword.vue' |
||||
export default { |
||||
name: 'index', |
||||
components:{ |
||||
changePassword, |
||||
}, |
||||
data() { |
||||
return { |
||||
text:'修改密码',/* 顶部文字 */ |
||||
textObj:{ |
||||
'1':'修改密码', |
||||
'2':'账户服务', |
||||
'3':'修改密码', |
||||
}, |
||||
form:{ |
||||
name: 'index', |
||||
components: { |
||||
changePassword, |
||||
}, |
||||
data () { |
||||
return { |
||||
text: '修改密码',/* 顶部文字 */ |
||||
textObj: { |
||||
'1': '修改密码', |
||||
'2': '账户服务', |
||||
'3': '修改密码', |
||||
}, |
||||
form: { |
||||
|
||||
}, |
||||
visible:false, |
||||
options:[], |
||||
activeIndex:'1', |
||||
second:[// 二级卡数组 |
||||
}, |
||||
visible: false, |
||||
options: [], |
||||
activeIndex: '1', |
||||
second: [// 二级卡数组 |
||||
|
||||
], |
||||
], |
||||
|
||||
|
||||
|
||||
} |
||||
}, |
||||
created() { |
||||
} |
||||
}, |
||||
created () { |
||||
|
||||
}, |
||||
methods: { |
||||
handleSelect (val) { |
||||
this.text = this.textObj[val] |
||||
this.activeIndex = val |
||||
}, |
||||
methods: { |
||||
handleSelect(val){ |
||||
this.text = this.textObj[val] |
||||
this.activeIndex = val |
||||
}, |
||||
|
||||
|
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.wrap{ |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
.nav{ |
||||
/deep/ .el-menu.el-menu--horizontal{ |
||||
border: 0; |
||||
} |
||||
/deep/ .el-menu--horizontal > .el-menu-item.is-active{ |
||||
border:2px solid #568DF2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
/deep/ .el-menu--horizontal > .el-menu-item{ |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
.title{ |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
.body{ |
||||
margin-top: 50px; |
||||
overflow: auto; |
||||
.idCard{ |
||||
border-radius: 5px; |
||||
background: #CFDDFF; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191FF; |
||||
} |
||||
.add{ |
||||
position: relative; |
||||
&::after{ |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #CFDDFF; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
.addBtn{ |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%,-50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
.submitBtn{ |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%,-50%); |
||||
} |
||||
.popBody{ |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
.popBtns{ |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
.btn{ |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
.close{ |
||||
background: #CFDEFF; |
||||
color: #6191FF; |
||||
} |
||||
.sure{ |
||||
background: #6191FF; |
||||
color: #fff; |
||||
} |
||||
} |
||||
.wrap { |
||||
width: 100%; |
||||
display: flex; |
||||
flex-direction: column; |
||||
overflow: hidden; |
||||
padding: 24px 0 24px 24px; |
||||
|
||||
.nav { |
||||
/deep/ .el-menu.el-menu--horizontal { |
||||
border: 0; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item.is-active { |
||||
border: 2px solid #568DF2; |
||||
border-radius: 10px; |
||||
color: #000; |
||||
} |
||||
|
||||
/deep/ .el-menu--horizontal>.el-menu-item { |
||||
border: 2px solid transparent; |
||||
border-radius: 10px; |
||||
margin-right: 10px; |
||||
height: 30px; |
||||
line-height: 28px; |
||||
} |
||||
} |
||||
|
||||
.title { |
||||
height: 60px; |
||||
display: flex; |
||||
align-items: center; |
||||
font-size: 20px; |
||||
padding-left: 0px; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.body { |
||||
margin-top: 50px; |
||||
overflow: auto; |
||||
|
||||
.idCard { |
||||
border-radius: 5px; |
||||
background: #CFDDFF; |
||||
text-align: center; |
||||
height: 40px; |
||||
line-height: 40px; |
||||
font-size: 18px; |
||||
color: #6191FF; |
||||
} |
||||
|
||||
.add { |
||||
position: relative; |
||||
|
||||
&::after { |
||||
content: ''; |
||||
display: block; |
||||
position: absolute; |
||||
right: 3%; |
||||
top: -4%; |
||||
border: 1px dashed #CFDDFF; |
||||
width: 88%; |
||||
height: 268px; |
||||
} |
||||
|
||||
.addBtn { |
||||
position: absolute; |
||||
left: 0; |
||||
top: 50%; |
||||
transform: translate(50%, -50%); |
||||
font-size: 22px; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.submitBtn { |
||||
position: relative; |
||||
width: 300px; |
||||
font-size: 18px; |
||||
height: 45px; |
||||
margin-top: 50px; |
||||
border-radius: 10px; |
||||
bottom: 10px; |
||||
left: 50%; |
||||
transform: translate(-50%, -50%); |
||||
} |
||||
|
||||
.popBody { |
||||
min-height: 200px; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
text-align: center; |
||||
} |
||||
|
||||
.popBtns { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
.btn { |
||||
width: 180px; |
||||
border-radius: 10px; |
||||
font-size: 18px; |
||||
} |
||||
|
||||
.close { |
||||
background: #CFDEFF; |
||||
color: #6191FF; |
||||
} |
||||
|
||||
.sure { |
||||
background: #6191FF; |
||||
color: #fff; |
||||
} |
||||
} |
||||
} |
||||
</style> |
||||
|