Compare commits

..

41 Commits

Author SHA1 Message Date
yujialong 333c7c9ebb fix 3 weeks ago
yujialong 1ed979b853 fix 3 weeks ago
yujialong fbb6eb61de fix 4 weeks ago
yujialong 2dd4cf8180 fix 1 month ago
yujialong 7d405d1daf 企业贷款回显 1 month ago
yujialong 947e28dd9d fix 2 months ago
yujialong 6207d29f6f fix 2 months ago
yujialong d469a1f86f fix 2 months ago
yujialong 6626316a7f fix 2 months ago
yujialong 069d84fc0d fix 2 months ago
yujialong 8b5481c175 fix 2 months ago
yujialong 6a91504fc5 bug修复 2 months ago
yujialong eba2da3c2d fix 2 months ago
yujialong d987fef680 实验报告修复 3 months ago
yujialong de14d96d30 fix 3 months ago
yujialong 92a9475c60 fix 4 months ago
yujialong e5ff0cf593 fix 5 months ago
yujialong 8f6f3d7dcf 贷款业务联调 5 months ago
yujialong 5172cd1234 贷款业务联调 5 months ago
yujialong 2de86fced4 贷款联调 5 months ago
yujialong 317228af2d 贷款业务 5 months ago
yujialong 921cf1f228 个人贷款 5 months ago
yujialong faccbdd5f7 贷款业务 5 months ago
yujialong ec9e3319a0 外汇等联调 5 months ago
yujialong e5239c3c53 代理业务 5 months ago
yujialong 45dfe32c87 代收水费、电费 5 months ago
yujialong e48876d125 代收水费 5 months ago
yujialong 1cc5ac52bc 外汇等 6 months ago
yujialong 489286f758 外汇业务联调 6 months ago
yujialong e0cf703271 网银联调 6 months ago
yujialong 88d7e50f6e fix 6 months ago
yujialong bdc5f09888 外汇业务 6 months ago
yujialong 8b9ac8c068 网上银行开户开发完成 6 months ago
yujialong 8b768a0671 授信申请、贷款申请 6 months ago
yujialong 5ccfd2aa1f 授信申请 6 months ago
yujialong b5a1982168 遗留bug修复 6 months ago
yujialong a9aa216bee 个人贷款等 6 months ago
yujialong 99d3072817 个人贷款 9 months ago
yujialong 18533d3fc7 公司贷款(未完成) 10 months ago
yujialong e8e11376be 个人贷款 10 months ago
yujialong f52e2076c0 代理、网银、外汇 3个业务页面开发完成 10 months ago
  1. 6
      package-lock.json
  2. 1
      package.json
  3. 18
      src/App.vue
  4. 41
      src/api/api.js
  5. 107
      src/api/http.js
  6. BIN
      src/assets/img/arrow-right.png
  7. BIN
      src/assets/img/goods/syb.jpg
  8. BIN
      src/assets/img/goods/xjllb.jpg
  9. BIN
      src/assets/img/goods/zcfzb.jpg
  10. 1
      src/assets/img/systemInput/个人贷款.svg
  11. 1
      src/assets/img/systemInput/代理业务.svg
  12. 1
      src/assets/img/systemInput/公司贷款.svg
  13. 1
      src/assets/img/systemInput/外汇业务.svg
  14. 1
      src/assets/img/systemInput/网上银行.svg
  15. 318
      src/components/case/index.vue
  16. 210
      src/components/dialog/index.vue
  17. 96
      src/components/dialogTwo/index.vue
  18. 42
      src/layouts/header/index.vue
  19. 4
      src/layouts/home/index.vue
  20. 70
      src/libs/util.js
  21. 9
      src/main.js.rej
  22. 5
      src/mixins/tipsBefore/index.js
  23. 882
      src/pages/counter/list/index.vue
  24. 113
      src/pages/counter/list/myConfig.js
  25. 93
      src/pages/index/list/index.vue
  26. 116
      src/pages/manage/index/index.vue
  27. 28
      src/pages/manage/list/ImportantCash/controlCash/index.vue
  28. 28
      src/pages/manage/list/ImportantCash/controlCash2/index.vue
  29. 33
      src/pages/manage/list/ImportantCash/controlCash3/index.vue
  30. 207
      src/pages/manage/list/agent/agent.vue
  31. 396
      src/pages/manage/list/agent/electricRate.vue
  32. 388
      src/pages/manage/list/agent/telRate.vue
  33. 373
      src/pages/manage/list/agent/waterRate.vue
  34. 32
      src/pages/manage/list/business/transfer.vue
  35. 37
      src/pages/manage/list/client/consumerClient.vue
  36. 111
      src/pages/manage/list/corporateLoans/application.vue
  37. 480
      src/pages/manage/list/corporateLoans/apply/creditApplication/index.vue
  38. 253
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/basic.vue
  39. 139
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/importReport.vue
  40. 294
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/preLoan.vue
  41. 314
      src/pages/manage/list/corporateLoans/apply/creditEvaluation/rating.vue
  42. 257
      src/pages/manage/list/corporateLoans/apply/index.vue
  43. 215
      src/pages/manage/list/corporateLoans/apply/loanApplication/step1.vue
  44. 285
      src/pages/manage/list/corporateLoans/apply/loanApplication/step2.vue
  45. 302
      src/pages/manage/list/corporateLoans/detail.vue
  46. 112
      src/pages/manage/list/corporateLoans/loan.vue
  47. 405
      src/pages/manage/list/corporateLoans/management.vue
  48. 358
      src/pages/manage/list/corporateLoans/repayment.vue
  49. 193
      src/pages/manage/list/foreignExchange/foreignExchange.vue
  50. 311
      src/pages/manage/list/foreignExchange/puchasing.vue
  51. 289
      src/pages/manage/list/foreignExchange/settlement.vue
  52. 367
      src/pages/manage/list/onlineBank/openAccount.vue
  53. 26
      src/pages/manage/list/personal/accountService/accountService.vue
  54. 187
      src/pages/manage/list/personal/callDeposits/accountClosed.vue
  55. 392
      src/pages/manage/list/personal/currentAccount/openAccount.vue
  56. 27
      src/pages/manage/list/personal/timeDeposit/deposit.vue
  57. 47
      src/pages/manage/list/personal/timeDeposit/openAccount.vue
  58. 42
      src/pages/manage/list/personal/usefulPhrases/openAccount.vue
  59. 715
      src/pages/manage/list/personalLoans/detail.vue
  60. 169
      src/pages/manage/list/personalLoans/index.vue
  61. 323
      src/pages/manage/list/personalLoans/list.vue
  62. 126
      src/pages/manage/navbar/index.vue
  63. 203
      src/pages/report/index.vue
  64. 65
      src/router/modules/counter.js
  65. 15
      src/router/routes.js
  66. 3
      src/setting.js
  67. 398
      src/store/modules/system.js
  68. 76
      src/store/modules/user.js
  69. 10
      src/styles/common.scss
  70. 55
      src/styles/dialog.scss
  71. 2
      src/utils/utilFunction.js
  72. 74
      test.js
  73. 264886
      test2.js
  74. 39
      vue.config.js

6
package-lock.json generated

@ -8298,9 +8298,9 @@
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash._basecopy": {
"version": "3.0.1",

@ -18,6 +18,7 @@
"element-theme": "^2.0.1",
"element-ui": "^2.13.0",
"js-cookie": "^2.2.1",
"lodash": "^4.17.21",
"mavon-editor": "^2.6.17",
"postcss": "^7.0.36",
"postcss-px2rem": "^0.3.0",

@ -1,8 +1,6 @@
<template>
<div id="app">
<select-business class="selectBusiness"
:showIt.sync="showIt"
v-show="!showIt && showBusiness && !submited" />
<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" />
@ -27,8 +25,6 @@ export default {
//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')))
}
//vuexlocalStorage
@ -36,9 +32,7 @@ export default {
if (this.$route.fullPath.includes('/counter/list/manage')) {
sessionStorage.setItem('computerPath', this.$route.fullPath)
}
util.local.get(Setting.tokenKey) && util.local.set(Setting.storeKey, this.$store.state)
sessionStorage.setItem('systemData', this.$store.system.state)
util.local.set(Setting.storeKey, this.$store.state)
})
},
data () {
@ -95,6 +89,7 @@ export default {
font-size: 16px;
min-width: $inner-width;
}
.selectBusiness {
width: 100%;
height: 100%;
@ -104,7 +99,12 @@ export default {
.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;
}

@ -1,5 +1,7 @@
import axios from 'axios';
import router from '../router';
import store from '@/store'
import Util from '@/libs/util'
const url = location.host
const dev = process.env.NODE_ENV === 'development' // 开发环境
@ -8,14 +10,17 @@ if (dev) {
// 本地
host = 'http://121.37.12.51/' // 中台测试服
// host = 'https://www.occupationlab.com/' // 正式服
// host = 'http://192.168.31.151:9000/' // 榕
// host = 'http://192.168.31.116:9000/' // 赓
// host = 'http://192.168.31.51:9000/'
const ip = localStorage.getItem('localIp')
const ips = ['http://192.168.31.217:9000/', 'http://192.168.31.51:9000/', 'http://121.37.12.51/']
host = ips[+ip]
}
// 创建axios实例
const service = axios.create({
baseURL: host, // 测试
timeout: 30000 // 请求超时时间
})
let logouted = 0;
// 添加request拦截器
service.interceptors.request.use(config => {
return config
@ -25,14 +30,34 @@ service.interceptors.request.use(config => {
// 添加respone拦截器
service.interceptors.response.use(
response => {
let res={};
res.status=response.status
res.data=response.data;
return res;
const { status, data } = response
if (data.code === 401) {
// 账号互踢
if (!logouted) {
Util.errorMsg(data.msg.includes('顶') ? '您的账号已在其他设备登录,您已被迫下线!' : '登录过期,请重新登录!')
setTimeout(() => {
store.commit('user/logout')
logouted = 0
}, 1500)
logouted = 1
}
} else {
return {
status,
data
}
}
},
error => {
if(error.response && error.response.status == 404){
router.push('/blank.vue')
if (error.response.status == 401) {
if (!logouted) {
Util.errorMsg('登录过期,请重新登录')
setTimeout(() => {
store.commit('user/logout')
}, 3500)
logouted = 1
}
}
return Promise.reject(error.response)
}

@ -1,8 +1,5 @@
// 引入封装好的axios
// ps:如果没有封装,正常引入axios即可
import { get, post, deletes, put } from './api.js'
// import axios from "./";
// /api为配置跨域的路径变量
const host = 'http://192.168.31.51:9000'
export const getProjectBySystemId = (params) => {
return get('/occupationlab/occupationlab/projectManage/getProjectBySystemId', params)
}
@ -19,13 +16,25 @@ export const getQueryCache= () => {
return get('/bank/bank/queryCache')
}
export const addOperation = (params) => {
return post( '/bank/bank/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)
return post('/bank/bank/getOperation', {
...params,
assessmentId: sessionStorage.getItem('assessmentId') || '',
competitionId: sessionStorage.getItem('competitionId') || '',
})
}
export const deleteCache = () => {
return get( '/bank/bank/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)
@ -50,3 +59,87 @@ export const reportDetail = (reportId) => {
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)
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1707275227001" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4270" width="22" height="22" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M504.341494 375.700275m-215.955408 0a215.955408 215.955408 0 1 0 431.910817 0 215.955408 215.955408 0 1 0-431.910817 0Z" p-id="4271" fill="#ffffff"></path><path d="M510.627249 591.655683a357.782262 357.782262 0 0 0-355.903761 321.584986H853.59825c-17.051012-180.625132-157.577365-321.584986-342.971001-321.584986z m62.785296 201.649898a18.857264 18.857264 0 0 1 0 37.642278h-50.575037v23.625767a18.929514 18.929514 0 0 1-37.859028 0V830.875609H434.547943a18.857264 18.857264 0 0 1 0-37.642278h50.575037v-31.284273h-50.575037a18.857264 18.857264 0 0 1 0-37.642278h37.570028l-32.729274-32.657023a18.712764 18.712764 0 0 1 0-26.37127 18.929514 18.929514 0 0 1 26.732519 0L499.572991 698.296761a18.785014 18.785014 0 0 1 8.959006 0l33.307275-33.162774a19.001764 19.001764 0 0 1 26.804769 0 18.568264 18.568264 0 0 1 0 26.371269L535.698017 724.30678h37.570028a18.857264 18.857264 0 0 1 0 37.642278h-50.575037v31.356523z" p-id="4272" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1707128657430" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4315" width="22" height="22" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 0h234.666667v234.666667A234.666667 234.666667 0 1 1 512 0zM13.568 970.794667A42.666667 42.666667 0 0 0 54.954667 1024h914.133333a42.666667 42.666667 0 0 0 41.386667-53.205333l-75.050667-294.101334a42.666667 42.666667 0 0 0-20.48-26.666666l-129.450667-72.533334a42.666667 42.666667 0 0 0-59.818666 19.84l-120.576 270.208-42.922667-144.256a42.666667 42.666667 0 0 1 0-24.32l26.624-89.472A42.666667 42.666667 0 0 0 547.84 554.666667H476.16a42.666667 42.666667 0 0 0-40.874667 54.826666l26.581334 89.429334c2.389333 7.978667 2.389333 16.426667 0 24.32l-42.922667 144.298666L298.325333 597.333333a42.666667 42.666667 0 0 0-59.818666-19.84l-129.450667 72.533334a42.666667 42.666667 0 0 0-20.48 26.666666L13.568 970.794667z" p-id="4316" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1707275318677" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5428" width="22" height="22" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M628.224 127.25248 390.07232 127.25248l0 101.9136L628.224 229.16608 628.224 127.25248 628.224 127.25248 628.224 127.25248zM763.33568 160.4864l-101.87776 0L661.45792 262.4 356.8384 262.4 356.8384 160.4864 254.9248 160.4864c-37.66272 0-67.55328 31.01696-67.55328 68.67968l0 610.39616c0 37.66272 29.89056 67.59424 67.55328 67.59424l508.41088 0c37.66272 0 67.59424-29.9264 67.59424-67.59424L830.92992 229.16608C830.92992 191.50336 800.9984 160.4864 763.33568 160.4864L763.33568 160.4864 763.33568 160.4864zM683.61216 767.5392c-76.45184-2.176-134.05696-16.59904-172.81024-44.27264-42.09664 27.6736-103.00416 42.09664-182.76352 44.27264l0-37.62688c104.13056-13.33248 151.74656-42.09664 145.1008-85.31456l0-18.85184 73.1136 0 0 18.85184c-6.64576 43.22304 39.87968 71.9872 138.45504 85.31456l0 37.62688L683.61216 767.5392 683.61216 767.5392 683.61216 767.5392zM650.38336 570.35776l1.09056 0 0 121.85088-66.46784 0L585.00608 612.4544 427.74016 612.4544l0 79.75936L361.27232 692.21376l0-121.85088 225.9456 0c-46.52544-8.86272-77.5424-39.87968-91.92448-94.14144L441.03168 476.22144l0-37.66272c-2.21696 3.30752-4.43392 6.64576-7.77216 11.07968-1.09056 3.3024-2.21696 5.51936-3.3024 6.64576l0 101.9136-65.3824 0L364.57472 503.89504c-11.07968 4.43392-23.2448 7.77216-37.62688 11.07968l0-37.66272c29.89056-12.16512 49.83296-36.53632 61.99808-73.1136l66.46784 0c-1.09056 3.34336-2.21696 7.77216-4.43392 12.20608-1.09056 3.3024-3.3024 8.86272-7.73632 17.72544l43.1872 0c-1.09056-3.34336-1.09056-8.86272-1.09056-15.50848-1.1264-7.77216-1.1264-12.20096-1.1264-15.50848l66.46272 0c0 3.30752 0 8.86272 1.09056 15.50848 0 7.73632 0 12.17024 1.1264 15.50848l33.23392 0 0-25.4976 58.69056 0 0 25.4976 38.75328 0 0 43.18208-120.7296 0c11.07968 36.57728 28.8 53.1712 55.38816 52.08576 16.63488 1.09056 24.3712-6.64576 24.3712-24.3712l48.7424 0C692.47488 542.68416 679.18336 563.712 650.38336 570.35776L650.38336 570.35776 650.38336 570.35776z" fill="#ffffff" p-id="5429"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1707128838231" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7655" width="22" height="22" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M606.4 120c-30.4 0-60.8 3.2-90.4 9.6l0.8 2.4c-31.2-7.2-64-12-97.6-12-229.6 0-416 186.4-416 416 0 228.8 186.4 416 416 416 32 0 63.2-4 92.8-11.2 30.4 7.2 62.4 11.2 94.4 11.2 228.8 0 416-186.4 416-416-0.8-229.6-187.2-416-416-416zM436.8 729.6v65.6h-40v-63.2c-36.8-0.8-74.4-12-96-28l15.2-42.4c22.4 14.4 55.2 27.2 90.4 27.2 44.8 0 71.2-25.6 71.2-62.4 0-34.4-20.8-56-67.2-75.2-64.8-25.6-104.8-55.2-104.8-110.4 0-52.8 37.6-92 95.2-101.6v-63.2h40v61.6c37.6 0.8 63.2 11.2 82.4 22.4l-16 41.6c-13.6-7.2-39.2-22.4-80-22.4-48.8 0-63.2 28.8-63.2 55.2 0 32 19.2 48.8 74.4 72 64.8 26.4 98.4 59.2 98.4 115.2 0 51.2-35.2 98.4-100 108zM606.4 912c-3.2 0-6.4-0.8-9.6-0.8 140-67.2 237.6-209.6 237.6-375.2S736.8 228 596.8 160.8c3.2 0 6.4-0.8 9.6-0.8 207.2 0 376 168.8 376 376-0.8 207.2-168.8 376-376 376z m0 0" fill="#ffffff" p-id="7656"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

@ -5,25 +5,16 @@
<el-container v-show="showIt">
<el-header>
<div class="flex a-center j-between">
<div class="flex a-center"
style="width: 28%">
<div class="flex a-center" style="width: 28%">
<p>实训项目</p>
<el-select v-model.trim="projectId"
placeholder="请选择"
class="select"
disabled
@change="selectProject">
<el-option v-for="item in topicList"
:key="item.projectId"
:label="item.projectName"
<el-select v-model.trim="projectId" placeholder="请选择" class="select" disabled @change="selectProject">
<el-option v-for="item in topicList" :key="item.projectId" :label="item.projectName"
:value="item.projectId"></el-option>
</el-select>
</div>
<div class="countDownBox">
<div style="margin-left: -40px;">
<div :sendSync="sendSync"
:autoStart="autoStart"
:defaultVal="defaultVal">
<div :sendSync="sendSync" :autoStart="autoStart" :defaultVal="defaultVal">
实训{{ text }}时间
<span class="timeSpan">{{ day }}</span>
<span class="timeSpan">{{ hour }}</span>小时
@ -39,25 +30,20 @@
</div>
</div>
<div>
<el-button @click="toReport"
v-if="popContainer">查看实验报告</el-button>
<el-button style="background: #202020;color: #d0d0d0;font-size:16px;"
v-show="projectPermissions == 0"
<el-button @click="toReport" v-if="popContainer">查看实验报告</el-button>
<el-button style="background: #202020;color: #d0d0d0;font-size:16px;" v-show="projectPermissions == 0"
@click="reload"
:disabled="popContainer && (assessmentId != '' && assessmentId != 'null' && assessmentId != null)">
重新开始
</el-button>
<el-button class="submit-btn"
style="margin-right:7px"
@click="Submit()"
<el-button class="submit-btn" style="margin-right:7px" @click="Submit()"
:disabled="popContainer || requires.length == 0">提交</el-button>
</div>
</div>
</el-header>
<el-container>
<el-aside width="30%"
class="flex flex-col">
<el-aside width="30%" class="flex flex-col">
<div class="aside-header">
<div class="header_h flex a-center">
<i class="el-icon-s-order"></i>
@ -65,9 +51,7 @@
</div>
<div class="font_css">
<div class="experimentalGoal">
<div class="break-all"
v-html="projectManage.experimentTarget"
style="font-size: 0.875rem;">
<div class="break-all" v-html="projectManage.experimentTarget" style="font-size: 0.875rem;">
</div>
</div>
</div>
@ -81,37 +65,19 @@
<el-row>
<el-col :span="24">
<el-card shadow="hover">
<el-table :data="requires"
height="43.5vh"
v-loading="loading"
ref='testTable'>
<el-table :data="requires" height="43.5vh" v-loading="loading" ref='testTable'>
<el-table-column type="index"></el-table-column>
<el-table-column prop="name"
label="判分点"
align="left">
<el-table-column prop="name" label="判分点" align="left">
</el-table-column>
<el-table-column prop="score"
label="分值"
width="60"
align="center">
<el-table-column prop="score" label="分值" width="60" align="center">
</el-table-column>
<el-table-column prop="right"
label="完成结果"
width="80"
align="center">
<el-table-column prop="right" label="完成结果" width="80" align="center">
<template slot-scope="scope">
<i v-if="scope.row.right==true"
class="el-icon-check"
style="color:green;"></i>
<i v-else-if="scope.row.right==false"
class="el-icon-close"
style="color:red;"></i>
<i v-if="scope.row.right == true" class="el-icon-check" style="color:green;"></i>
<i v-else-if="scope.row.right == false" class="el-icon-close" style="color:red;"></i>
</template>
</el-table-column>
<el-table-column prop="scores"
label="得分"
width="60"
align="center"></el-table-column>
<el-table-column prop="scores" label="得分" width="60" align="center"></el-table-column>
</el-table>
</el-card>
</el-col>
@ -120,36 +86,24 @@
</div>
</el-aside>
<el-main>
<el-tabs v-model.trim="activeName"
type="card">
<el-tab-pane label="案例"
name="first">
<div class="break-all"
v-html="projectManage.experimentDescription"></div>
<el-tabs v-model.trim="activeName" type="card">
<el-tab-pane label="案例" name="first">
<div class="break-all" v-html="projectManage.experimentDescription"></div>
</el-tab-pane>
<el-tab-pane label="实验要求"
name="second">
<el-collapse :value="activeNames"
accordion>
<el-collapse-item v-for="(item,index) in requires"
:key="index"
:name="item.id">
<template slot="title"
style='line-height: 0px;'>
<el-tab-pane label="实验要求" name="second">
<el-collapse :value="activeNames" accordion>
<el-collapse-item v-for="(item, index) in requires" :key="index" :name="item.id">
<template slot="title" style='line-height: 0px;'>
<i class='el-icon-s-ticket'></i>
<span style="margin: 0px 10px;font-size: 1rem;">{{ item.name }}</span>
</template>
<div class="break-all"
v-html="item.experimentalRequirements"></div>
<div class="break-all" v-html="item.experimentalRequirements"></div>
</el-collapse-item>
<!-- <p ref="scrollTag" style="font-size:16px;"></p> -->
</el-collapse>
</el-tab-pane>
<el-tab-pane label="实验提示"
name="fifth"
v-if="hintOpen == 0">
<div class="break-all"
v-html="projectManage.experimentHint"></div>
<el-tab-pane label="实验提示" name="fifth" v-if="hintOpen == 0">
<div class="break-all" v-html="projectManage.experimentHint"></div>
</el-tab-pane>
</el-tabs>
</el-main>
@ -157,32 +111,21 @@
</el-container>
<!-- </transition> -->
<!-- </div> -->
<div class="panel"
:class="{active: showIt}">
<div class="panel" :class="{ active: showIt }">
<div @click="toggleCase">
<img src="../../assets/img/case/left.png"
alt
v-if="showIt" />
<img src="../../assets/img/case/right.png"
alt
v-else />
<img src="../../assets/img/case/left.png" alt v-if="showIt" />
<img src="../../assets/img/case/right.png" alt v-else />
</div>
</div>
<div class='popContainer'
v-if='popContainer'></div>
<div class='popContainer' v-if='popContainer'></div>
<!-- 遮罩层 -->
<div class="absolute z-50 h-screen bg-transparent inset-0"
v-show="showIt"></div>
<div class="absolute z-50 h-screen bg-transparent inset-0" v-show="showIt"></div>
<el-dialog title="提示"
:visible.sync="closePaneJudge"
width="30%"
center>
<el-dialog title="提示" :visible.sync="closePaneJudge" width="30%" center>
<h4 class="antialiased text-center text-2xl">请选择你将进行的操作</h4>
<span slot="footer"
class="dialog-footer">
<span slot="footer" class="dialog-footer">
<el-button @click="closePane()">再试一次</el-button>
<!-- <el-button type="primary" @click="closePane(true)">其他业务</el-button> -->
</span>
@ -286,6 +229,42 @@ export default {
submitType: false
}
},
computed: {
needSendSunc: function () {
return this.sendSync;
},
//
second: function () {
return this.num(this.seconds);
},
minute: function () {
return this.num(this.minutes);
},
activeNames () {
//
return this.requires.map(item => item.id)
},
},
watch: {
countVal: {
deep: true,
handler: function (val, oldVal) {
let vm = this;
if (vm.needSendSunc) {
vm.passToParent(val);
}
}
},
needSendSunc: {
deep: true,
handler: function (val) {
let vm = this;
if (val) {
vm.passToParent(vm.countString);
}
}
},
},
created () {
let assessmentId = this.getQueryVariable('assessmentId')
sessionStorage.setItem('assessmentId', assessmentId)
@ -309,7 +288,6 @@ export default {
});
//
this.sureSubmit(true)
} else {
}
})
}, 4000)
@ -318,73 +296,27 @@ export default {
this.popContainer = data
})
},
watch: {
countVal: {
deep: true,
handler: function (val, oldVal) {
let vm = this;
if (vm.needSendSunc) {
vm.passToParent(val);
}
}
},
needSendSunc: {
deep: true,
handler: function (val) {
let vm = this;
if (val) {
vm.passToParent(vm.countString);
}
}
},
// caseVisible(newVal) {
// if(!newVal) {
// console.log(this.$refs.scrollTag)
// }
// }
},
computed: {
needSendSunc: function () {
return this.sendSync;
},
//
second: function () {
return this.num(this.seconds);
},
minute: function () {
return this.num(this.minutes);
},
activeNames () {
//
return this.requires.map(item => item.id)
},
},
mounted () {
let token = sessionStorage.getItem('token') || this.getQueryVariable('token')
let cid = sessionStorage.getItem('cid') || this.getQueryVariable('cid')
let systemId = sessionStorage.getItem('systemId') || this.getQueryVariable('systemId')
let projectId = this.getQueryVariable('projectId')
if (sessionStorage.getItem('projectId')) {
projectId = sessionStorage.getItem('projectId')
}
let assessmentId = sessionStorage.getItem('assessmentId') || this.getQueryVariable('assessmentId')
let competitionId = sessionStorage.getItem('competitionId') || this.getQueryVariable('competitionId')
let stageId = sessionStorage.getItem('stageId') || this.getQueryVariable('stageId')
let teamId = sessionStorage.getItem('teamId') || this.getQueryVariable('teamId')
let classId = sessionStorage.getItem('classId') || this.getQueryVariable('classId')
let stopTime = sessionStorage.getItem('stopTime') || this.getQueryVariable('stopTime')
let mallId = sessionStorage.getItem('mallId') || this.getQueryVariable('mallId')
let timestamp = +stopTime;
if (timestamp != null) {
} else {
sessionStorage.setItem('timestamp', null)
}
if (token != null) {
let token = this.getParam('token')
let cid = this.getParam('cid')
let systemId = this.getParam('systemId')
let projectId = this.getParam('projectId')
let assessmentId = this.getParam('assessmentId')
let competitionId = this.getParam('competitionId')
let stageId = this.getParam('stageId')
let teamId = this.getParam('teamId')
let classId = this.getParam('classId')
let stopTime = this.getParam('stopTime')
let mallId = this.getParam('mallId')
let timestamp = +stopTime
timestamp || sessionStorage.removeItem('timestamp')
if (token) {
sessionStorage.setItem('token', token)
sessionStorage.setItem('cid', cid)
sessionStorage.setItem('systemId', systemId)
sessionStorage.setItem('timestamp', timestamp)
console.log("🚀 ~ mounted ~ projectId:", token, projectId)
sessionStorage.setItem('projectId', projectId)
sessionStorage.setItem('assessmentId', assessmentId)
sessionStorage.setItem('competitionId', competitionId)
@ -392,21 +324,20 @@ export default {
sessionStorage.setItem('teamId', teamId)
sessionStorage.setItem('classId', classId)
this.assessmentId = assessmentId
this.competitionId = JSON.parse(competitionId)
this.competitionId = competitionId
this.stageId = stageId
this.teamId = teamId
this.classId = classId
this.mallId = mallId
}
let tokens = sessionStorage.getItem('token')
if (tokens || token) {
if (token) {
this.projectPermissions = this.assessmentId ?
1 :
this.competitionId ?
2 :
0
this.assessmentId && this.projectId && this.checkVer()
if (JSON.parse(assessmentId != null && assessmentId != '' && assessmentId != 'null' || this.competitionId)) {
if (assessmentId || this.competitionId) {
this.selectProjects({
projectId
})
@ -468,6 +399,11 @@ export default {
this.toggleCase()
}
},
//
getParam (field) {
const s = sessionStorage.getItem(field)
return s !== 'null' && s !== 'undefined' && s ? s : this.getQueryVariable(field)
},
getQueryVariable (name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
if (window.location.href.split('?')[1]) {
@ -478,20 +414,6 @@ export default {
return null
}
}
// if(sessionStorage.getItem(name)) {
// return sessionStorage.getItem(name)
// }else {
// 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
// }
// }
// }
},
//
getData () {
@ -729,7 +651,7 @@ export default {
// this.initState();
this.actEndTime = new Date().getTime();
let ruleReqs = sessionStorage.getItem('ruleReqs')
let startTime = sessionStorage.getItem('startTime')
let startTime = sessionStorage.getItem('startTime') || this.entryTime
let ruleReqsList = JSON.parse(ruleReqs);
let lcld = []
for (var i = 0; i < this.requires.length; i++) {
@ -1002,7 +924,8 @@ $togetherFontSize: 16px;
.popContainer {
position: absolute;
width: 100%; /*宽度设置为100%,这样才能使隐藏背景层覆盖原页面*/
width: 100%;
/*宽度设置为100%,这样才能使隐藏背景层覆盖原页面*/
height: 100%;
z-index: 1000;
top: 0;
@ -1011,8 +934,10 @@ $togetherFontSize: 16px;
bottom: 0;
background: rgba(0, 0, 0, 0.3);
}
/deep/.el-container {
height: 80%;
&.is-vertical {
position: fixed;
top: 200px;
@ -1023,6 +948,7 @@ $togetherFontSize: 16px;
background-color: #f5f5f5;
z-index: 1001;
}
.el-header {
color: #333;
padding: 0 12px 0 20px;
@ -1041,9 +967,11 @@ $togetherFontSize: 16px;
background: $main-color url(../../assets/img/case/btn.png) 0 0/100% 100% no-repeat;
}
}
.el-aside {
font-size: $togetherFontSize;
color: #333;
[class*=' el-icon-'],
[class^='el-icon-'] {
line-height: 40px;
@ -1051,6 +979,7 @@ $togetherFontSize: 16px;
font-size: $togetherFontSize;
}
}
.el-main {
width: 60%;
background-color: #fff;
@ -1062,22 +991,27 @@ $togetherFontSize: 16px;
background: #fff url(../../assets/img/case/bg.png) top right no-repeat;
// overflow: visible;
}
.aside-header {
margin: 0px 10px 10px 10px;
background-color: #fff;
font-size: 0.875rem;
}
.aside-footer {
margin: 0px 10px 10px 10px;
background-color: #fff;
}
.header_h {
height: 40px;
background: url(../../assets/img/case/header.png) 0 0/100% 100% no-repeat;
justify-content: center;
i {
color: #fff;
}
p {
line-height: 40px;
font-size: 16px;
@ -1085,21 +1019,27 @@ $togetherFontSize: 16px;
padding-left: 10px;
}
}
.el-card {
border: 0;
border-radius: 0;
.el-card__body {
padding: 0;
}
}
.select {
flex: 1;
input::-webkit-input-placeholder {
color: #333;
}
.el-input__icon {
line-height: 60px;
}
.el-select__caret:before {
content: '\e78f';
font-size: 16px;
@ -1108,6 +1048,7 @@ $togetherFontSize: 16px;
border-radius: 50%;
color: #ffffff;
}
.el-input--suffix .el-input__inner {
color: #333;
font-size: $togetherFontSize;
@ -1119,6 +1060,7 @@ $togetherFontSize: 16px;
text-overflow: ellipsis;
white-space: nowrap;
}
.el-input {
padding: 10px 0;
}
@ -1136,6 +1078,7 @@ $togetherFontSize: 16px;
margin: 0 10px;
padding: 20px 0;
}
.timeSpan {
color: #333333;
padding: 5px 15px;
@ -1145,6 +1088,7 @@ $togetherFontSize: 16px;
margin: 0 5px;
text-align: center;
}
.gradeSpan {
color: #878787;
padding: 10px;
@ -1153,6 +1097,7 @@ $togetherFontSize: 16px;
border-radius: 6px;
text-align: center;
}
.el-header /deep/.el-button:hover,
.el-button:focus,
.el-button:active {
@ -1162,16 +1107,20 @@ $togetherFontSize: 16px;
/deep/.el-table {
font-size: 12px;
thead {
color: #fff;
}
.el-table__cell {
padding: 12px 0;
}
.cell {
font-weight: 100;
font-size: 12px;
}
td,
th.is-leaf {
border-bottom: 0 !important;
@ -1182,47 +1131,58 @@ $togetherFontSize: 16px;
thead {
color: #ffffff;
font-size: 12px;
th {
font-weight: 100;
}
}
th,
tr {
background-color: #badfff;
}
}
.el-table__row--striped {
td {
background-color: #badfff !important;
}
}
/deep/ .el-collapse {
font-size: 0.875rem;
}
.el-collapse-item__content {
padding-left: 10px;
padding-right: 10px;
font-size: $togetherFontSize;
}
.el-collapse-item__wrap {
border-bottom: none;
}
/deep/.el-collapse-item__header {
font-size: 1rem;
border-bottom: none;
}
.el-tabs__content {
margin: 0 20px;
}
.el-icon-s-ticket:before {
font-size: togetherFontSize;
//padding: 5px;
color: $main-color;
}
.el-collapse-item__arrow {
margin: 0 5px 0 0;
}
.el-icon-arrow-right:before {
font-size: 12px;
font-size: $togetherFontSize;
@ -1232,18 +1192,23 @@ $togetherFontSize: 16px;
border-radius: 50%;
color: #ffffff;
}
.el-tabs__item {
font-size: 16px;
}
.el-tabs--card>.el-tabs__header .el-tabs__nav {
border: none;
}
.el-tabs--card>.el-tabs__header .el-tabs__item {
border-left: none;
}
.el-tabs--card>.el-tabs__header {
border-bottom: none;
}
.el-collapse {
border-bottom: none;
border-top: none;
@ -1251,32 +1216,39 @@ $togetherFontSize: 16px;
overflow: hidden;
overflow-y: auto;
}
/deep/.el-collapse-item {
font-size: $togetherFontSize;
background-color: red;
color: red;
}
.el-tabs__item.is-active {
color: #fff;
background-color: $main-color;
}
.el-tabs__header {
padding: 5px 20px;
}
}
.break-all {
font-size: 16px;
word-break: break-all;
}
.panel {
position: fixed;
z-index: 10010000;
top: 50%;
&.active {
//z-index: 10;
left: 85%;
z-index: 1001;
}
img {
height: 175px;
cursor: pointer;

@ -4,69 +4,46 @@
<!-- 这个是自己封装的提示组件 用于系统录入中弹出的授权弹框 业务需求是有些业务需要授权有些业务不需要授权 -->
<el-dialog :visible="visible"
append-to-body
style="z-index: 6000;"
class="apple"
:close-on-click-modal="true"
:show-close="false"
custom-class="w3w5 bgNone z6000">
<div class="data-dia23 mx-auto w-9/12 rounded-3xl"
:class="{ ['w-full']: flow === 3 }">
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" class="apple" :close-on-click-modal="true"
:show-close="false" custom-class="w3w5 bgNone z6000">
<div class="data-dia23 mx-auto w-9/12 rounded-3xl" :class="{ ['w-full']: flow === 3 }">
<!-- 2xl:w-3/5 xl:w-4/5 lg:w-full -->
<div slot="title"
class="dia-header rounded-3xl">
<div class="data-title"
v-if="flow === 1 || flow === 2">提示</div>
<div class="data-title"
v-else-if="flow === 4">提交</div>
<div class="data-title"
v-else>{{ successName }}</div>
<div slot="title" class="dia-header rounded-3xl">
<div class="data-title" v-if="flow === 1 || flow === 2">提示</div>
<div class="data-title" v-else-if="flow === 4">提交</div>
<div class="data-title" v-else>{{ successName }}</div>
</div>
<!-- 需要授权时父组件传进的flow为1 -->
<div class="popBody"
v-if="flow === 1">
<div class="popBody" v-if="flow === 1">
<h2 class="text-red-500 text-2xl">本业务需要授权</h2>
</div>
<!-- 不需要授权时父组件传进的flow为4 -->
<div class="popBody"
v-else-if="flow === 4">
<div class="popBody" v-else-if="flow === 4">
<h2 class="text-red-500 text-2xl">提交后将不可更改您确定要提交吗</h2>
</div>
<!-- 上面说的需要授权的flow为1点击确认后flow变为2弹出授权柜员的账号和密码 -->
<div class="popBody"
v-else-if="flow === 2">
<el-form ref="form2"
:model="disForm"
label-width="200px">
<div class="popBody" v-else-if="flow === 2">
<el-form ref="form2" :model="disForm" label-width="200px">
<el-form-item label="授权柜员">
<el-input disabled
v-model.trim="disForm.name"></el-input>
<el-input disabled v-model.trim="disForm.name"></el-input>
</el-form-item>
<el-form-item label="授权柜员">
<el-input type="password"
disabled
v-model.trim="disForm.pass"></el-input>
<el-input type="password" disabled v-model.trim="disForm.pass"></el-input>
</el-form-item>
</el-form>
</div>
<!-- 不管授权与否最后一步都是展示提交的信息 -->
<div class="popBody w-full"
v-else>
<div class="popBody w-full" v-else>
<el-row :gutter="20">
<el-form label-width="200px">
<el-col :span="12">
<el-form-item v-for="(val, key) in leftObj"
:key="key"
:label="key + ':'">
<el-form-item v-for="(val, key) in leftObj" :key="key" :label="key + ':'">
<div>{{ val }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-for="(val, key) in rightObj"
:key="key"
:label="key + ':'">
<el-form-item v-for="(val, key) in rightObj" :key="key" :label="key + ':'">
<div>{{ val }}</div>
</el-form-item>
</el-col>
@ -74,20 +51,13 @@
</el-row>
</div>
<!-- 不是最后的提交信息有取消按钮只要点击取消就不会发送请求给后端 -->
<div class="popBtns"
v-if="flow === 1 || flow === 2 || flow === 4">
<el-button class="close btn hover:bg-blue-100 "
@click="cancelIt"> </el-button>
<el-button class="sure btn hover:bg-blue-700 "
type="primary"
@click="sureIt"> </el-button>
<div class="popBtns" v-if="flow === 1 || flow === 2 || flow === 4">
<el-button class="close btn hover:bg-blue-100 " @click="cancelIt"> </el-button>
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="sureIt"> </el-button>
</div>
<!-- 展示信息的弹框没有取消按钮此时已经发送请求给后端了 -->
<div class="myPopBtns"
v-else>
<el-button class="sure btn hover:bg-blue-700 "
type="primary"
@click="sureIt"> </el-button>
<div class="myPopBtns" v-else>
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="sureIt"> </el-button>
</div>
</div>
</el-dialog>
@ -95,6 +65,7 @@
</template>
<script>
import { mapGetters } from 'vuex'
// objmoduleName,
const obj = {
@ -125,6 +96,13 @@ const obj = {
'controlCash/cashTransferInto': '现金上缴',
'business/deposit': '存款',
'business/withdrawal': '取款',
'onlineBank/openAccount': '网上银行开户',
'foreignExchange/puchasing': '外汇业务购汇',
'foreignExchange/settlement': '外汇业务结汇',
'agent/waterRate': '代收水费',
'agent/electricRate': '代收电费',
'agent/telRate': '代收电话费',
'personalLoans/detail': '新建个人贷款',
'spacial': '提交'
}
@ -144,10 +122,37 @@ const nameMap = {
116: '现金支票'
},
currency: {
12: 'CNY人民币'
12: 'CNY人民币',
153: '美元 现汇',
163: '美元',
164: '澳大利亚元',
165: '加拿大元',
166: '港币',
167: '英镑',
168: '欧元',
169: '日元',
170: '新西兰元',
171: '新加坡元',
172: '泰国铢',
173: '韩元',
174: '新台币(不支持跨进汇款)',
175: '瑞土法郎',
176: '瑞典克朗',
177: '丹麦克朗',
178: '卢布',
179: '挪威克朗',
180: '菲律宾比索(不支持跨进汇款)',
181: '澳门元',
182: '印尼卢比 (不支持跨进汇款)',
183: '巴西里亚尔(不支持跨进汇款)',
184: '阿联酋迪拉姆(不支持跨进汇款)',
185: '印度卢比(不支持跨进汇款)',
186: '印度卢比(南非兰特)',
},
goldLogo: {
13: '钞户'
13: '钞户',
150: '现汇(参考牌价712.34)',
151: '现钞(参考牌价712.34)',
},
accountQuality: {
14: '个人结算户',
@ -304,6 +309,51 @@ const nameMap = {
112: '按月',
113: '满页'
},
openOnlineBanking: {
146: '是',
147: '否'
},
openPhoneBanking: {
148: '是',
149: '否'
},
monthlyWithholding: {
142: '是',
143: '否'
},
numType: {
144: '手机号码',
145: '座机号码'
},
buyForeignPurpose: {
187: '因私旅游',
188: '境外留学',
189: '公务及商务出国',
190: '探亲',
191: '境外就医',
192: '海外购物',
193: '非投资类保险',
194: '咨询服务',
195: '境内外汇储蓄存款',
196: '购买境内外汇理财产品',
197: '职工报酬和婚家款',
198: '专有权利使用费和特许费',
199: '投资收益',
200: '运输',
201: '其他服务',
202: '其他经常转移',
},
fundingSource: {
154: '职工报酬和赡家款',
155: '旅游',
156: '金融和保险服务',
157: '专有权利使用费和特许费',
158: '咨询服务',
159: '其他服务',
160: '投资收益',
161: '其他经常转移',
162: '运输',
},
}
export default {
props: {
@ -330,14 +380,30 @@ export default {
moduleName: {
type: String,
default: 'spacial'
},
spare: {
type: Boolean,
default: true
},
},
data () {
return {
flow: 1, //
disForm: { //
name: '002288',
pass: '123456'
},
leftObj: {}, //
rightObj: {} //
}
},
created () {
// flow4
if (!this.needAuth) {
this.flow = 4
}
let num = 0;
let num = 0
// 1
for (const key in this.showForm) {
if (!this.showForm[key]) {
@ -378,7 +444,7 @@ export default {
return str;
}
if (this.spare) {
if (num % 2 === 1) {
//
this.leftObj['流水号'] = tmpFunc2()
@ -409,20 +475,8 @@ export default {
}
this.rightObj['会计时间'] = tmpFunc()
if (this.leftObj['支取方式'] == 114) this.leftObj['支取方式'] = '印鉴'
console.log("🚀 ~ file: index.vue ~ line 393 ~ created ~ this.rightObj", this.leftObj, this.rightObj, this.showForm, this.formName)
// 002110
},
data () {
return {
flow: 1, //
disForm: { //
name: '002288',
pass: '123456'
},
leftObj: {}, //
rightObj: {} //
}
},
methods: {
cancel () {
@ -459,7 +513,10 @@ export default {
// +
successName () {
return obj[this.moduleName] + '成功'
}
},
...mapGetters({
getSelectList: 'system/getSelectList'
}),
}
}
</script>
@ -469,15 +526,18 @@ export default {
transform: translateY(-100px);
min-width: 1300px;
}
/deep/.w4w5 {
min-width: 800px;
}
/deep/.el-dialog {
-webkit-box-shadow: 0;
box-shadow: 0 0 0 0 !important;
border: 0 !important;
// display: none;
}
/deep/.el-form-item {
label {
font-family: PingFangSC-Regular;
@ -486,6 +546,7 @@ export default {
letter-spacing: 0.21px;
font-weight: 400;
}
.el-form-item__content {
padding-left: 30px;
text-align: left;
@ -505,6 +566,7 @@ export default {
height: 0;
z-index: 9899999;
}
.masking {
width: 100vw;
height: 100vh;
@ -515,11 +577,13 @@ export default {
opacity: 0.5;
background-color: rgba(51, 51, 51, 0.9);
}
.data-dia23 {
// position: absolute;
min-width: 40%;
background-color: white;
z-index: 9999;
.popBody {
// width: 100%;
min-height: 30vh;
@ -527,12 +591,15 @@ export default {
padding-bottom: 20px;
display: flex;
align-items: center;
/deep/ .el-form {
height: 100%;
}
}
.dia-header {
height: 100%;
// position: relative;
.data-title {
width: 300px;
@ -550,6 +617,7 @@ export default {
width: 100%;
padding: 0 50px;
}
// /deep/.popbody {
// width: 100vw!important;
// height: 100%!important;
@ -560,16 +628,19 @@ export default {
justify-content: center;
align-items: center;
padding-bottom: 20px;
&>.btn {
width: 180px;
font-size: 18px;
}
}
.myPopBtns {
display: flex;
justify-content: center;
align-items: center;
padding-bottom: 20px;
&>.btn {
width: 180px;
font-size: 18px;
@ -589,12 +660,15 @@ export default {
/deep/.bgNone {
background-color: transparent;
}
/deep/.myFull {
width: 90%;
}
/deep/.el-dialog {
z-index: 9999 !important;
}
/deep/.el-dialog__wrapper {
z-index: 9999 !important;
}

@ -1,82 +1,52 @@
<template>
<!-- 这个组件原理和dialog一样 -->
<el-dialog :visible="visible"
append-to-body
style="z-index: 6000;"
class="apple"
:close-on-click-modal="true"
:show-close="false"
custom-class="w4w5 bgNone z6000">
<div class="data-dia23 mx-auto w-9/12 rounded-3xl"
:class="{ ['w-full']: flow === 3 }">
<el-dialog :visible="visible" append-to-body style="z-index: 6000;" class="apple" :close-on-click-modal="true"
:show-close="false" custom-class="w4w5 bgNone z6000">
<div class="data-dia23 mx-auto w-9/12 rounded-3xl" :class="{ ['w-full']: flow === 3 }">
<!-- 2xl:w-3/5 xl:w-4/5 lg:w-full -->
<div slot="title"
class="dia-header rounded-3xl">
<div class="data-title"
v-if="flow === 1 || flow === 2">提示</div>
<div class="data-title"
v-else-if="flow === 4">提交</div>
<div class="data-title"
v-else>{{ successName }}</div>
<div slot="title" class="dia-header rounded-3xl">
<div class="data-title" v-if="flow === 1 || flow === 2">提示</div>
<div class="data-title" v-else-if="flow === 4">提交</div>
<div class="data-title" v-else>{{ successName }}</div>
</div>
<div class="popBody"
v-if="flow === 1">
<div class="popBody" v-if="flow === 1">
<h2 class="text-red-500 text-2xl">本业务需要授权</h2>
</div>
<div class="popBody"
v-else-if="flow === 4">
<div class="popBody" v-else-if="flow === 4">
<h2 class="text-red-500 text-2xl">提交后将不可更改您确定要提交吗</h2>
</div>
<div class="popBody"
v-else-if="flow === 2">
<el-form ref="form2"
:model="disForm"
label-width="200px">
<div class="popBody" v-else-if="flow === 2">
<el-form ref="form2" :model="disForm" label-width="200px">
<el-form-item label="授权柜员号">
<el-input disabled
v-model.trim="disForm.name"></el-input>
<el-input disabled v-model.trim="disForm.name"></el-input>
</el-form-item>
<el-form-item label="授权柜员">
<el-input type="password"
disabled
v-model.trim="disForm.pass"></el-input>
<el-input type="password" disabled v-model.trim="disForm.pass"></el-input>
</el-form-item>
</el-form>
</div>
<div class="popBody w-full"
v-else>
<div class="popBody w-full" v-else>
<el-row :gutter="20">
<el-form label-width="200px">
<el-col :span="12">
<el-form-item v-for="(val, key) in leftObj"
:key="key"
:label="key + ':'">
<el-form-item v-for="(val, key) in leftObj" :key="key" :label="key + ':'">
<div>{{ val }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-for="(val, key) in rightObj"
:key="key"
:label="key + ':'">
<el-form-item v-for="(val, key) in rightObj" :key="key" :label="key + ':'">
<div>{{ val }}</div>
</el-form-item>
</el-col>
</el-form>
</el-row>
</div>
<div class="popBtns"
v-if="flow === 1 || flow === 2 || flow === 4">
<el-button class="close btn hover:bg-blue-100 "
@click="cancelIt"> </el-button>
<el-button class="sure btn hover:bg-blue-700 "
type="primary"
@click="sureIt"> </el-button>
<div class="popBtns" v-if="flow === 1 || flow === 2 || flow === 4">
<el-button class="close btn hover:bg-blue-100 " @click="cancelIt"> </el-button>
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="sureIt"> </el-button>
</div>
<div class="myPopBtns"
v-else>
<el-button class="sure btn hover:bg-blue-700 "
type="primary"
@click="sureIt"> </el-button>
<div class="myPopBtns" v-else>
<el-button class="sure btn hover:bg-blue-700 " type="primary" @click="sureIt"> </el-button>
</div>
</div>
</el-dialog>
@ -118,7 +88,7 @@ const obj = {
'spacial': '提交',
"cityWide/cityWideOut": '同城提出',
"cityWide/cityWideIn": '同城提入',
'acceptanceDraft/invoice': '承兑汇票开票'
'acceptanceDraft/invoice': '承兑汇票开票',
}
const nameMap = {
sex: {
@ -407,23 +377,28 @@ export default {
/deep/ .el-row {
width: 100%;
}
/deep/.popbody {
width: 100vw !important;
}
.popBtns {
display: flex;
justify-content: center;
align-items: center;
&>.btn {
width: 180px;
border-radius: 10px;
font-size: 18px;
}
}
.myPopBtns {
display: flex;
justify-content: center;
align-items: center;
&>.btn {
width: 180px;
border-radius: 10px;
@ -438,14 +413,17 @@ export default {
/deep/.w3w5 {
min-width: 1400px;
}
/deep/.w4w5 {
min-width: 800px;
}
/deep/.el-dialog {
-webkit-box-shadow: 0;
box-shadow: 0 0 0 0 !important;
border: 0 !important;
}
/deep/.el-form-item {
label {
font-family: PingFangSC-Regular;
@ -454,6 +432,7 @@ export default {
letter-spacing: 0.21px;
font-weight: 400;
}
.el-form-item__content {
padding-left: 30px;
text-align: left;
@ -473,6 +452,7 @@ export default {
height: 0;
z-index: 9899999;
}
.masking {
width: 100vw;
height: 100vh;
@ -483,11 +463,13 @@ export default {
opacity: 0.5;
background-color: rgba(51, 51, 51, 0.9);
}
.data-dia23 {
// position: absolute;
min-width: 40%;
background-color: white;
z-index: 9999;
.popBody {
// width: 100%;
min-height: 30vh;
@ -495,12 +477,15 @@ export default {
padding-bottom: 20px;
display: flex;
align-items: center;
/deep/ .el-form {
height: 100%;
}
}
.dia-header {
height: 100%;
// position: relative;
.data-title {
width: 300px;
@ -518,6 +503,7 @@ export default {
width: 100%;
padding: 0 50px;
}
// /deep/.popbody {
// width: 100vw!important;
// height: 100%!important;
@ -528,16 +514,19 @@ export default {
justify-content: center;
align-items: center;
padding-bottom: 20px;
&>.btn {
width: 180px;
font-size: 18px;
}
}
.myPopBtns {
display: flex;
justify-content: center;
align-items: center;
padding-bottom: 20px;
&>.btn {
width: 180px;
font-size: 18px;
@ -557,12 +546,15 @@ export default {
/deep/.bgNone {
background-color: transparent;
}
/deep/.myFull {
width: 90%;
}
/deep/.el-dialog {
z-index: 9999 !important;
}
/deep/.el-dialog__wrapper {
z-index: 9999 !important;
}

@ -1,38 +1,42 @@
<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 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">
<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 {
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',
@ -58,12 +62,16 @@ export default {
sessionStorage.clear()
location.href = href
},
ipChange (val) {
localStorage.setItem('localIp', val)
location.reload()
},
},
watch: {
'$route.path': {
handler (newVal) {
this.$nextTick(() => {
console.log(newVal)
if (newVal === '/index/list') {
this.$refs.exitHeader.style.backgroundColor = 'rgb(250, 250, 250)'
} else {
@ -86,13 +94,21 @@ export default {
// 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>

@ -55,6 +55,4 @@ export default {
}
};
</script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>

@ -133,6 +133,76 @@ const util = {
errorMsg (message, duration = 3000) {
return Message.error({ message, showClose: true, offset: (document.documentElement.clientHeight - 40) / 2, duration })
},
// 授信年限
creditTerms: [
{
id: 231,
name: '1年'
},
{
id: 232,
name: '3年'
},
{
id: 233,
name: '5年'
},
{
id: 234,
name: '10年'
},
],
// 还款方式
repaymentMethods: [
{
id: 235,
name: '等额本金'
},
{
id: 236,
name: '等额本息'
},
],
// 发放方式
distributionMethods: [
{
id: 238,
name: '一次性到账'
},
{
id: 239,
name: '随借随还'
},
],
// 担保方式
guaranteeMethods: [
{
id: 242,
name: '质押'
},
{
id: 243,
name: '抵押'
},
],
// 贷款期限
loanTerms: [
{
pointId: 244,
id: 120,
name: '120个月'
},
{
pointId: 245,
id: 240,
name: '240个月'
},
{
pointId: 246,
id: 360,
name: '360个月'
},
],
}
export default util

@ -1,9 +0,0 @@
diff a/src/main.js b/src/main.js (rejected hunks)
@@ -42,6 +42,7 @@
}
})
}
+});
Vue.use(plugins);

@ -60,11 +60,7 @@ export default {
}
},
beforeDestroy () {
// clearInterval(this.myTipBefore)
// this.myTipBefore = null
// 这个业务是我们需要的,所以我们存数据
let tmpForm = {}
for (const key in this.form) {
if (this.form[key] !== '') {
@ -74,7 +70,6 @@ export default {
// 系统录入当前页面关闭或离开的时候,保存当前模块的数据。回来的时候这些数据还在(业务需求)。
sessionStorage.setItem(this.moduleName, JSON.stringify(tmpForm))
},
computed: {
...mapGetters({

File diff suppressed because it is too large Load Diff

@ -1,6 +1,4 @@
// 刷卡的配置文件,map结构,避免写太多if,else,配置更方便。有很多地方刷银行卡和身份证的。
const myConfig = {
'99': {
nbm: 118,
@ -353,6 +351,117 @@ const myConfig = {
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 {

@ -1,61 +1,36 @@
<template>
<div class="wrap">
<img class="sth bg"
src="@/assets/img/index-bg.png"
alt="">
<div class="case"
@click="setShowBusiness(true)">业务选择</div>
<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')">
<img width="100%" v-lazy="lazy1" alt="" @click="toPart('/counter')">
<!-- src="@/assets/img/integrated-counter.png" -->
<div class="name"
@click="toPart('/counter')">综合柜台</div>
<div class="name" @click="toPart('/counter')">综合柜台</div>
</div>
<div class="sth international cp">
<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=""
@click="showComing" />
<img width="100%" v-lazy="lazy2" alt="" />
<!-- src="@/assets/img/integrated-counter.png" -->
<!-- <div class="name" @click="showComing">国际结算部</div> -->
<div class="name" @click="toPart('/counter', true)">信贷部</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="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}">
<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="">
<img style="width: 100%" v-lazy="lazy7" alt="">
</div>
<p class="text">敬请期待</p>
</div>
@ -85,8 +60,9 @@ export default {
},
created () {
if (!sessionStorage.getItem('firstLoad2')) {
sessionStorage.removeItem('submited')
sessionStorage.removeItem('businessKey')
sessionStorage.clear()
// sessionStorage.removeItem('submited')
// sessionStorage.removeItem('businessKey')
this.setBusinessKey('')
const loading = this.$loading({
lock: true,
@ -132,7 +108,8 @@ export default {
methods: {
...mapMutations({
setBusinessKey: 'system/setBusinessKey',
setShowBusiness: 'system/setShowBusiness'
setShowBusiness: 'system/setShowBusiness',
setCredit: 'system/setCredit',
}),
getQueryVariable (name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
@ -145,7 +122,8 @@ export default {
}
}
},
toPart (path) {
toPart (path, isCredit = false) {
this.setCredit(isCredit)
this.$router.push(path)
},
showComing () {
@ -179,26 +157,32 @@ export default {
.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 0.5s;
&:hover {
margin-top: -10px;
}
.name {
position: absolute;
top: 23%;
@ -206,11 +190,13 @@ export default {
@include nameTip;
}
}
.international {
top: -9%;
left: 72%;
width: 28%;
transition: all 0.5s;
// &:hover{
// margin-top: -10px;
// }
@ -222,19 +208,22 @@ export default {
// }
.name {
position: absolute;
top: 23%;
right: 0;
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%;
@ -242,6 +231,7 @@ export default {
@include nameTip;
}
}
.credit-dep {
top: 31%;
left: 0;
@ -251,6 +241,7 @@ export default {
// top: 29%;
// }
}
.company-finance {
top: 52%;
left: 9%;
@ -260,6 +251,7 @@ export default {
// top: 50%;
// }
}
.personal-finance {
bottom: 0;
left: 25%;
@ -269,6 +261,7 @@ export default {
// bottom: 10px;
// }
}
.case {
position: absolute;
top: 92px;
@ -286,26 +279,32 @@ export default {
// 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%;
@ -317,9 +316,11 @@ export default {
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;

@ -1,9 +1,9 @@
<template>
<!-- :style="full?'height:100vh;':'height: 80vh;'" -->
<div class="box" :class="full? 'h-4/5': ''">
<!-- :style="fullScreen?'height:100vh;':'height: 80vh;'" -->
<div class="box" :class="fullScreen || isCredit ? 'h-4/5' : ''">
<div class="nav">
<!-- <div class="top" :style="full?'border-radius:0':'border-top-left-radius: 20px;'"> select-none -->
<div class="top" :style="full?'border-radius:0':'border-top-left-radius: 20px;'">
<!-- <div class="top" :style="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">
@ -15,9 +15,10 @@
<!-- <navbar class="body"></navbar> -->
</div>
<div class="manage-layout">
<div class="top" :style="full?'border-radius:0':'border-top-right-radius: 20px;'">
<img v-show="!full" src="../../../assets/svg/fullscreen.svg" alt="" @click="handleFullscreen">
<img v-show="full" src="../../../assets/svg/shrink.svg" alt="" @click="shrink">
<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">
@ -30,44 +31,44 @@
</template>
<script>
import { mapState } from 'vuex'
import navbar from '../navbar'
export default {
name: 'index',
data () {
return {
fullscreen:this.$store.state.system.fullScreen,// --store
curRoute: ''
}
},
components: {
navbar
},
// beforeMount() {
// const path = sessionStorage.getItem('computerPath')
// console.log('router-view')
// console.log(path)
// this.$router.push(path)
// },
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 () {
// 退 退
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)
},
},
computed: {
full:function(){
return this.$store.state.system.fullScreen
}
}
};
</script>
@ -116,6 +117,7 @@ export default {
.box {
display: flex;
min-width: 1300px;
.nav {
width: 270px;
min-height: 80vh;
@ -123,6 +125,7 @@ export default {
border-bottom-left-radius: 20px;
display: flex;
flex-direction: column;
.top {
height: 50px;
font-size: 20px;
@ -130,25 +133,30 @@ export default {
align-items: center;
text-align: center;
border-top-left-radius: 15px;
color: #B3B3B3;
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;
@ -159,16 +167,19 @@ export default {
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;
@ -178,37 +189,45 @@ export default {
}
}
}
.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.5;
}
// el-input
/deep/ .el-input input {
&:focus {
border-color: skyblue;
}
}
//
/deep/ .is-error input {
border-color: #f40!important;;
border-color: #f40 !important;
}
/deep/.el-input {
// width: 15vw!important;
width: 100%;
input {
font-size: $font_size_All !important;
}
}
/deep/ .text-xl p {
font-size: $font_size_All !important;
}
/deep/ .el-form-item .el-form-item__label {
font-size: $font_size_All !important;
}
@ -216,10 +235,12 @@ export default {
/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;
@ -231,9 +252,11 @@ export default {
/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;
@ -244,41 +267,43 @@ export default {
/deep/.el-input {
// width: 15vw!important;
width: 100%;
input {
font-size: $font_size_All !important;
}
}
/deep/ .idCard {
// width: 15vw;
width: 100%;
}
}
@media screen and (min-width: 1200px) and (max-width: 1900px) {
.box {
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;
// 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;
color: #b3b3b3;
background: #222428;
}
.body {
// flex: 1;
// height: calc(80vh-10vh);
@ -286,6 +311,7 @@ export default {
background-color: #313540;
}
}
.manage-layout {
width: calc(100% - 270px);
min-height: 80vh;
@ -295,8 +321,8 @@ export default {
display: flex;
flex-direction: column;
box-sizing: border-box;
.top {
min-height: 10vh;
font-size: 30px;
display: flex;
justify-content: flex-end;
@ -305,14 +331,17 @@ export default {
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;
@ -322,6 +351,5 @@ export default {
}
}
}
}
</style>

@ -10,7 +10,7 @@
</el-menu>
</div>
<div class="title">
<p>现金</p>
<p>现金</p>
<i class="el-icon-arrow-right"></i>
<p>现金管理</p>
<i class="el-icon-arrow-right"></i>
@ -21,15 +21,8 @@
<cashTransferInto v-if="activeIndex === '2'"></cashTransferInto>
<cashPaid v-if="activeIndex === '3'"></cashPaid>
<cashOut v-if="activeIndex === '4'"></cashOut>
<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"
>
<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>
@ -108,15 +101,18 @@ export default {
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;
@ -125,6 +121,7 @@ export default {
line-height: 28px;
}
}
.title {
height: 60px;
display: flex;
@ -133,10 +130,12 @@ export default {
padding-left: 0px;
margin-top: 10px;
}
.body {
margin-top: 50px;
overflow-y: auto;
overflow-x: hidden;
.idCard {
border-radius: 5px;
background: #CFDDFF;
@ -146,8 +145,10 @@ export default {
font-size: 18px;
color: #6191FF;
}
.add {
position: relative;
&::after {
content: '';
display: block;
@ -158,6 +159,7 @@ export default {
width: 88%;
height: 268px;
}
.addBtn {
position: absolute;
left: 0;
@ -167,6 +169,7 @@ export default {
}
}
}
.submitBtn {
position: relative;
width: 300px;
@ -178,6 +181,7 @@ export default {
left: 50%;
transform: translate(-50%, -50%);
}
.popBody {
min-height: 200px;
display: flex;
@ -185,19 +189,23 @@ export default {
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;

@ -10,7 +10,7 @@
</el-menu>
</div>
<div class="title">
<p>现金</p>
<p>现金</p>
<i class="el-icon-arrow-right"></i>
<p>凭证管理</p>
<i class="el-icon-arrow-right"></i>
@ -23,15 +23,8 @@
<cash-paid v-if="activeIndex === '3'"></cash-paid>
<cash-out v-if="activeIndex === '4'"></cash-out>
<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"
>
<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>
@ -112,15 +105,18 @@ export default {
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;
@ -129,6 +125,7 @@ export default {
line-height: 28px;
}
}
.title {
height: 60px;
display: flex;
@ -137,10 +134,12 @@ export default {
padding-left: 0px;
margin-top: 10px;
}
.body {
margin-top: 50px;
overflow-x: hidden;
overflow-y: auto;
.idCard {
border-radius: 5px;
background: #CFDDFF;
@ -150,8 +149,10 @@ export default {
font-size: 18px;
color: #6191FF;
}
.add {
position: relative;
&::after {
content: '';
display: block;
@ -162,6 +163,7 @@ export default {
width: 88%;
height: 268px;
}
.addBtn {
position: absolute;
left: 0;
@ -171,6 +173,7 @@ export default {
}
}
}
.submitBtn {
position: relative;
width: 300px;
@ -182,6 +185,7 @@ export default {
left: 50%;
transform: translate(-50%, -50%);
}
.popBody {
min-height: 200px;
display: flex;
@ -189,19 +193,23 @@ export default {
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;

@ -8,13 +8,14 @@
<i class="el-icon-arrow-right"></i>
<p>支票出售</p>
</div> -->
<my-title :titleArr="['重现金', '支票管理', '支票出售']"/>
<my-title :titleArr="['重现金', '支票管理', '支票出售']" />
<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="username">
<el-input @blur="onBlur()" :value="form.username" @input="val => checkHanzi(val, form, 'username')" ref="username"></el-input>
<el-input @blur="onBlur()" :value="form.username" @input="val => checkHanzi(val, form, 'username')"
ref="username"></el-input>
</el-form-item>
<el-form-item label="凭证类型" prop="voucherType">
<el-select v-model.trim="form.voucherType" placeholder="请选择" ref="voucherType">
@ -31,7 +32,8 @@
</el-select>
</el-form-item>
<el-form-item label="凭证终止号" prop="endNumber">
<el-input :value="form.endNumber" @blur="getBlur()" @input="val => certificateNumber(val, form, 'endNumber')" ref="endNumber"></el-input>
<el-input :value="form.endNumber" @blur="getBlur()"
@input="val => certificateNumber(val, form, 'endNumber')" ref="endNumber"></el-input>
</el-form-item>
<el-form-item label="收费类型" prop="chargeWay2">
@ -40,7 +42,8 @@
</el-select>
</el-form-item>
<el-form-item label="手续费" prop="serviceCharge">
<el-input :value="form.serviceCharge" @input="(val) => ismoney(val, form, 'serviceCharge')" ref="serviceCharge"></el-input>
<el-input :value="form.serviceCharge" @input="(val) => ismoney(val, form, 'serviceCharge')"
ref="serviceCharge"></el-input>
</el-form-item>
</el-col>
<el-col :span="10" :offset="1">
@ -48,10 +51,12 @@
<el-input v-model.trim="form.customerName" ref="customerName"></el-input>
</el-form-item>
<el-form-item label="凭证起始号" prop="startNumber">
<el-input :value="form.startNumber" @input="(val) => certificateNumber(val, form, 'startNumber')" ref="startNumber"></el-input>
<el-input :value="form.startNumber" @input="(val) => certificateNumber(val, form, 'startNumber')"
ref="startNumber"></el-input>
</el-form-item>
<el-form-item label="数量" prop="number">
<el-input :value="form.number" disabled @input="val => inputListen(val, form, 'number')" ref="number" ></el-input>
<el-input :value="form.number" disabled @input="val => inputListen(val, form, 'number')"
ref="number"></el-input>
</el-form-item>
<el-form-item label="工本费" prop="cost">
<el-input :value="form.cost" @input="val => ismoney(val, form, 'cost')" ref="cost"></el-input>
@ -64,7 +69,8 @@
</el-form>
</el-row>
<el-button @click="submitIt()" type="primary" class="submitBtn">提交</el-button>
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" @submitIt="submitForm2" />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2" />
</div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" class="wrap" /> -->
</template>
@ -303,7 +309,8 @@ export default {
// left: 50%;
// transform: translate(-50%,-20%);
// }
.el-input, .el-select {
.el-input,
.el-select {
width: 100% !important;
}
@ -313,15 +320,18 @@ export default {
flex-direction: column;
overflow: auto;
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;
@ -330,6 +340,7 @@ export default {
line-height: 28px;
}
}
.title {
height: 60px;
display: flex;
@ -338,9 +349,11 @@ export default {
padding-left: 0px;
margin-top: 10px;
}
.body {
margin-top: 50px;
overflow: auto;
.idCard {
border-radius: 5px;
background: #CFDDFF;
@ -350,8 +363,10 @@ export default {
font-size: 18px;
color: #6191FF;
}
.add {
position: relative;
&::after {
content: '';
display: block;
@ -362,6 +377,7 @@ export default {
width: 88%;
height: 268px;
}
.addBtn {
position: absolute;
left: 0;
@ -371,6 +387,7 @@ export default {
}
}
}
.submitBtn {
position: relative;
width: 200px;

@ -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>

@ -8,27 +8,26 @@
<el-form ref="form" :model="form" label-width="120px" :rules="rules">
<el-col :span="10" :offset="2">
<el-form-item label="转出账号" prop="transoutNum">
<el-input :value="form.transoutNum" @blur="getBlurData" maxlength="20" @input="(val) => checkHanzi(val, form, 'transoutNum')" ref="transoutNum"></el-input>
<el-input :value="form.transoutNum" @blur="getBlurData" maxlength="20"
@input="(val) => checkHanzi(val, form, 'transoutNum')" ref="transoutNum"></el-input>
</el-form-item>
<el-form-item label="凭证号码" prop="certificateNum">
<el-input :value="form.certificateNum" maxlength="20" @input="(val) => checkHanzi(val, form, 'certificateNum')" ref="certificateNum"></el-input>
<el-input :value="form.certificateNum" maxlength="20"
@input="(val) => checkHanzi(val, form, 'certificateNum')" ref="certificateNum"></el-input>
</el-form-item>
<el-form-item label="签发日期" prop="signDate">
<el-date-picker
v-model.trim="form.signDate"
disabled
type="date"
placeholder="选择日期"
ref="signDate">
<el-date-picker v-model.trim="form.signDate" disabled type="date" placeholder="选择日期" ref="signDate">
</el-date-picker>
</el-form-item>
<el-form-item label="钞汇标识" prop="currencyMark">
<el-select v-model.trim="form.currencyMark" disabled placeholder="请选择" ref="currencyMark">
<el-option v-for="item in getSelectList.goldLogoSelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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="转入账号" prop="transinNum">
<el-input :value="form.transinNum" maxlength="20" @input="(val) => checkHanzi(val, form, 'transinNum')" ref="transinNum"></el-input>
<el-input :value="form.transinNum" maxlength="20" @input="(val) => checkHanzi(val, form, 'transinNum')"
ref="transinNum"></el-input>
</el-form-item>
<el-form-item label="金额" prop="money">
<el-input :value="form.money" maxlength="15" @input="val => ismoney(val, form, 'money')"></el-input>
@ -37,7 +36,8 @@
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="客户姓名" prop="customerName">
<el-input :value="form.customerName" maxlength="20" @input="(val) => checkName(val, form, 'customerName')" ref="customerName"></el-input>
<el-input :value="form.customerName" maxlength="20" @input="(val) => checkName(val, form, 'customerName')"
ref="customerName"></el-input>
</el-form-item>
<el-form-item label="凭证类型" prop="certificateType">
<el-select v-model.trim="form.certificateType" placeholder="请选择" ref="certificateType">
@ -47,7 +47,8 @@
</el-form-item>
<el-form-item label="币种" prop="currencyType">
<el-select v-model.trim="form.currencyType" disabled placeholder="请选择" ref="currencyType">
<el-option v-for="item in getSelectList.currencySelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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="payWay">
@ -56,7 +57,8 @@
</el-select>
</el-form-item>
<el-form-item label="转入户名" prop="transinName">
<el-input :value="form.transinName" maxlength="40" @input="(val) => checkName(val, form, 'transinName')"></el-input>
<el-input :value="form.transinName" maxlength="40"
@input="(val) => checkName(val, form, 'transinName')"></el-input>
</el-form-item>
<el-form-item label="摘要" prop="abstract">
<el-input v-model.trim="form.abstract" maxlength="60"></el-input>
@ -65,7 +67,8 @@
</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" @submitIt="submitForm2" :needAuth="needAuth" />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2" :needAuth="needAuth" />
</div>
</div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" class="wrap" /> -->
@ -320,6 +323,7 @@ export default {
flex-direction: column;
overflow: auto;
padding: 24px 0 24px 24px;
.body {
margin-top: 50px;
overflow-y: auto;

@ -9,27 +9,22 @@
<el-col :span="10" :offset="1">
<el-form-item label="证件类型">
<el-select v-model.trim="form.idType" disabled placeholder="请选择" ref="idType">
<el-option
label="身份证"
:value="83">
<el-option label="身份证" :value="83">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="客户姓名" prop="userName">
<el-input ref="userName" disabled :value="form.userName" @input="(val) => checkName(val, form, 'userName')"></el-input>
<el-input ref="userName" disabled :value="form.userName"
@input="(val) => checkName(val, form, 'userName')"></el-input>
</el-form-item>
<el-form-item label="出生日期" prop="birthday">
<el-date-picker
disabled
v-model.trim="form.birthday"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
<el-date-picker disabled v-model.trim="form.birthday" 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="form.mailbox" @input="val => mailBoxListen(val, form, 'mailbox')" maxlength="30" ref="mailbox"></el-input>
<el-input :value="form.mailbox" @input="val => mailBoxListen(val, form, 'mailbox')" maxlength="30"
ref="mailbox"></el-input>
</el-form-item>
</el-col>
<el-col :span="10" :offset="1">
@ -50,22 +45,15 @@
:value="item.id"
>
</el-option> -->
<el-option
:key="1"
label="男"
:value="1"
>
<el-option :key="1" label="男" :value="1">
</el-option>
<el-option
:key="2"
label="女"
:value="2"
>
<el-option :key="2" label="女" :value="2">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="联系电话" :rules="rules.phone" prop="phone">
<el-input :value="form.phone" @input="(val) => phoneListen(val, form, 'phone')" maxlength="12" ref='phone'></el-input>
<el-input :value="form.phone" @input="(val) => phoneListen(val, form, 'phone')" maxlength="12"
ref='phone'></el-input>
</el-form-item>
</el-col>
@ -74,7 +62,8 @@
<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" @submitIt="submitForm2()" />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2()" />
</div>
<!-- <need-before class='wrap' v-else :moduleName='needBefore' :unNeed="unNeed">
</need-before> -->
@ -435,11 +424,11 @@ export default {
flex-direction: column;
overflow: auto;
padding: 24px 0 24px 24px;
.body {
margin-top: 50px;
overflow-y: auto;
overflow-x: hidden;
}
}
</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, // tabid
} : {}))
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, // tabid
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, // tabid
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, // tabid
} : {}))
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, // tabid
} : {}))
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>

@ -23,15 +23,8 @@
<!-- -->
<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"
>
<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>
@ -97,15 +90,18 @@ export default {
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;
@ -114,6 +110,7 @@ export default {
line-height: 28px;
}
}
.title {
height: 60px;
display: flex;
@ -122,9 +119,11 @@ export default {
padding-left: 0px;
margin-top: 10px;
}
.body {
margin-top: 50px;
overflow: auto;
.idCard {
border-radius: 5px;
background: #CFDDFF;
@ -134,8 +133,10 @@ export default {
font-size: 18px;
color: #6191FF;
}
.add {
position: relative;
&::after {
content: '';
display: block;
@ -146,6 +147,7 @@ export default {
width: 88%;
height: 268px;
}
.addBtn {
position: absolute;
left: 0;
@ -155,6 +157,7 @@ export default {
}
}
}
.submitBtn {
position: relative;
width: 300px;
@ -166,6 +169,7 @@ export default {
left: 50%;
transform: translate(-50%, -50%);
}
.popBody {
min-height: 200px;
display: flex;
@ -173,19 +177,23 @@ export default {
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;

@ -1,190 +1,108 @@
//
<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="凭证号码"
required="">
<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="凭证号码" required="">
<!-- <div v-if='!cardNumberJudge' class="idCard" @click="popUp('刷卡器')">
<p>请刷卡</p>
</div>
<div v-else>
<el-input ref="voucherNumber" disabled :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</div> -->
<el-input @blur="getDataBlur"
ref="voucherNumber"
:value="form.voucherNumber"
<el-input @blur="getDataBlur" ref="voucherNumber" :value="form.voucherNumber"
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</el-form-item>
<el-form-item label="客户号"
prop="customerNumber">
<el-input v-model.trim="form.customerNumber"
disabled></el-input>
<el-form-item label="客户号" prop="customerNumber">
<el-input v-model.trim="form.customerNumber" disabled></el-input>
</el-form-item>
<el-form-item label="币种"
prop="currency">
<el-select v-model.trim="form.currency"
disabled
placeholder="请选择"
ref="currency">
<el-option v-for="item in getSelectList.currencySelectList"
:label="item.options"
:value="item.itemId"
<el-form-item label="币种" prop="currency">
<el-select v-model.trim="form.currency" disabled placeholder="请选择" 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="noticeType">
<el-select v-model.trim="form.noticeType"
disabled
placeholder="请选择"
ref="noticeType">
<el-option label="1天"
:value="95"> </el-option>
<el-option label="7天"
:value="96"> </el-option>
<el-form-item label="通知类型" prop="noticeType">
<el-select v-model.trim="form.noticeType" disabled placeholder="请选择" ref="noticeType">
<el-option label="1天" :value="95"> </el-option>
<el-option label="7天" :value="96"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="起息日期"
prop="breathDate">
<el-input autocomplete="off"
v-model.trim="form.breathDate"></el-input>
<el-form-item label="起息日期" prop="breathDate">
<el-input autocomplete="off" v-model.trim="form.breathDate"></el-input>
</el-form-item>
<el-form-item label="利息"
prop="interest">
<el-input :value="form.interest"
disabled
@input="val => ismoney(val, form, 'interest')"
<el-form-item label="利息" prop="interest">
<el-input :value="form.interest" disabled @input="val => ismoney(val, form, 'interest')"
ref="interest"></el-input>
</el-form-item>
<el-form-item label="支取类别"
prop="drawWayType">
<el-select v-model.trim="form.drawWayType"
disabled
placeholder="请选择"
ref="drawWayType">
<el-option label="现金"
:value="133"> </el-option>
<el-form-item label="支取类别" prop="drawWayType">
<el-select v-model.trim="form.drawWayType" disabled placeholder="请选择" ref="drawWayType">
<el-option label="现金" :value="133"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="证件类型"
prop="certificateType">
<el-select v-model.trim="form.certificateType"
disabled
placeholder="请选择"
ref="certificateType">
<el-option label="身份证"
:value="83"> </el-option>
<el-form-item label="证件类型" prop="certificateType">
<el-select v-model.trim="form.certificateType" disabled placeholder="请选择" ref="certificateType">
<el-option label="身份证" :value="83"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="支取密码"
required>
<div v-if='!form.drawPassword'
class="idCard"
@click="popUp3('密码器')">
<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 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="voucherType">
<el-select v-model.trim="form.voucherType"
disabled
placeholder="请选择"
ref="voucherType">
<el-option label="存单"
:value="123"> </el-option>
<el-col :span="10" :offset="1">
<el-form-item label="凭证类型" prop="voucherType">
<el-select v-model.trim="form.voucherType" disabled placeholder="请选择" ref="voucherType">
<el-option label="存单" :value="123"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="客户姓名"
prop="clientName">
<el-input :value="form.clientName"
disabled
@input="(val) => checkName(val, form, 'clientName')"
<el-form-item label="客户姓名" prop="clientName">
<el-input :value="form.clientName" disabled @input="(val) => checkName(val, form, 'clientName')"
ref="clientName"></el-input>
</el-form-item>
<el-form-item label="钞汇标识"
prop="goldLogo">
<el-select v-model.trim="form.goldLogo"
disabled
placeholder="请选择"
ref="goldLogo">
<el-option v-for="item in getSelectList.goldLogo"
:label="item.options"
:value="item.itemId"
<el-form-item label="钞汇标识" prop="goldLogo">
<el-select v-model.trim="form.goldLogo" disabled placeholder="请选择" ref="goldLogo">
<el-option v-for="item in getSelectList.goldLogo" :label="item.options" :value="item.itemId"
:key="item.itemId"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="定存编号"
prop="depositNumber">
<el-input disabled
v-model.trim="form.depositNumber"></el-input>
<el-form-item label="定存编号" prop="depositNumber">
<el-input disabled v-model.trim="form.depositNumber"></el-input>
</el-form-item>
<el-form-item label="本金"
prop="capital">
<el-input :value="form.capital"
disabled
@input="val => ismoney(val, form, 'capital')"
<el-form-item label="本金" prop="capital">
<el-input :value="form.capital" disabled @input="val => ismoney(val, form, 'capital')"
ref="capital"></el-input>
</el-form-item>
<el-form-item label="总金额"
prop="totalMoney">
<el-input :value="form.totalMoney"
disabled
@input="val => ismoney(val, form, 'totalMoney')"
<el-form-item label="总金额" prop="totalMoney">
<el-input :value="form.totalMoney" disabled @input="val => ismoney(val, form, 'totalMoney')"
ref="totalMoney"></el-input>
</el-form-item>
<el-form-item label="支取金额"
prop="payMoney">
<el-input :value="form.payMoney"
disabled
@input="val => ismoney(val, form, 'payMoney')"
<el-form-item label="支取金额" prop="payMoney">
<el-input :value="form.payMoney" disabled @input="val => ismoney(val, form, 'payMoney')"
ref="payMoney"></el-input>
</el-form-item>
<el-form-item label="证件号码"
required>
<div class="idCard"
@click="popUp2('身份证扫描仪')"
v-if='!idNumberJudge'>
<el-form-item label="证件号码" required>
<div class="idCard" @click="popUp2('身份证扫描仪')" v-if='!idNumberJudge'>
<p>请刷身份证</p>
</div>
<div v-else>
<el-input :value="form.idNumber"
disabled
ref="idNumber"></el-input>
<el-input :value="form.idNumber" disabled ref="idNumber"></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"
@submitIt="submitForm2"
depositNumber='0812' />
<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"
@submitIt="submitForm2" depositNumber='0812' />
</div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> -->
</template>
@ -563,5 +481,4 @@ export default {
// bottom: 10px;
// left: 50%;
// transform: translate(-50%,0);
// }
</style>
// }</style>

@ -3,49 +3,27 @@
<div>
<div class="body">
<div>
<el-row :gutter="20"
style="margin: 0">
<el-form ref="form"
:model="form"
label-width="120px"
:rules="rules">
<el-col :span="10"
:offset="2">
<el-row :gutter="20" style="margin: 0">
<el-form ref="form" :model="form" label-width="120px" :rules="rules">
<el-col :span="10" :offset="2">
<el-form-item label="客户号">
<el-input :value="form.userNumber"
disabled
@input="(val) => checkHanzi(val, form, 'userNumber')"
<el-input :value="form.userNumber" disabled @input="(val) => checkHanzi(val, form, 'userNumber')"
ref="userNumber"></el-input>
</el-form-item>
<el-form-item label="币种"
prop="currency">
<el-select v-model.trim="form.currency"
placeholder="请选择"
ref="currency">
<el-option label='CNY人民币'
:value="12"
:key="12">CNY人民币</el-option>
<el-form-item label="币种" prop="currency">
<el-select v-model.trim="form.currency" placeholder="请选择" ref="currency">
<el-option label='CNY人民币' :value="12" :key="12">CNY人民币</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10"
:offset="1">
<el-form-item label="客户姓名"
prop="userName">
<el-input :value="form.userName"
disabled
@input="(val) => checkName(val, form, 'userName')"
<el-col :span="10" :offset="1">
<el-form-item label="客户姓名" prop="userName">
<el-input :value="form.userName" disabled @input="(val) => checkName(val, form, 'userName')"
ref="userName"></el-input>
</el-form-item>
<el-form-item label="钞汇标识"
prop="goldLogo">
<el-select v-model.trim="form.goldLogo"
disabled
placeholder="请选择"
ref="goldLogo">
<el-option v-for="item in goldLogoSelectList"
:label="item.options"
:value="item.itemId"
<el-form-item label="钞汇标识" prop="goldLogo">
<el-select v-model.trim="form.goldLogo" disabled placeholder="请选择" ref="goldLogo">
<el-option v-for="item in goldLogoSelectList" :label="item.options" :value="item.itemId"
:key="item.itemId"> </el-option>
</el-select>
</el-form-item>
@ -60,29 +38,18 @@
</el-form>
</el-row>
<div class="add">
<el-row :gutter="20"
style="margin: 0;z-index:9">
<el-form ref="form1"
:model="form"
label-width="120px">
<el-col :span="10"
:offset="2">
<el-row :gutter="20" style="margin: 0;z-index:9">
<el-form ref="form1" :model="form" label-width="120px">
<el-col :span="10" :offset="2">
<el-form-item label="账户性质">
<el-select v-model.trim="form.accountQuality"
placeholder="请选择"
ref="accountQuality">
<el-select v-model.trim="form.accountQuality" placeholder="请选择" ref="accountQuality">
<!-- <el-option v-for="item in accountQualitySelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
-->
<el-option label="个人结算户"
:value="14"> </el-option>
<el-option label="基本户"
:value="101"> </el-option>
<el-option label="一般户"
:value="102"> </el-option>
<el-option label="专用户"
:value="103"> </el-option>
<el-option label="临时户"
:value="104"> </el-option>
<el-option label="个人结算户" :value="14"> </el-option>
<el-option label="基本户" :value="101"> </el-option>
<el-option label="一般户" :value="102"> </el-option>
<el-option label="专用户" :value="103"> </el-option>
<el-option label="临时户" :value="104"> </el-option>
<!-- 14: '个人结算户',
101: '基本户',
102: '一般户',
@ -90,308 +57,187 @@
104: '临时户' -->
</el-select>
</el-form-item>
<el-form-item label="账户类型"
prop="accountType">
<el-select v-model.trim="form.accountType"
placeholder="请选择"
ref="accountType">
<el-form-item label="账户类型" prop="accountType">
<el-select v-model.trim="form.accountType" placeholder="请选择" ref="accountType">
<!-- 16: '一类户',
17: '二类户',
97: '结算户',
98: '结算户',
99: '委托保障金户',
100: '资本临时户' -->
<el-option label="一类户"
:value="16"> </el-option>
<el-option label="二类户"
:value="17"> </el-option>
<el-option label="一类户" :value="16"> </el-option>
<el-option label="二类户" :value="17"> </el-option>
<!-- <el-option label="结算户" :value="97"> </el-option>
<el-option label="委托保障金户" :value="100"> </el-option> -->
</el-select>
</el-form-item>
<el-form-item label="支取方式"
prop="drawWay">
<el-select v-model.trim="form.drawWay"
placeholder="请选择"
ref="drawWay">
<el-option label="密码"
:value="18"> </el-option>
<el-form-item label="支取方式" prop="drawWay">
<el-select v-model.trim="form.drawWay" placeholder="请选择" ref="drawWay">
<el-option label="密码" :value="18"> </el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10"
:offset="1">
<el-form-item label="凭证类型"
prop="voucherType">
<el-select v-model.trim="form.voucherType"
placeholder="请选择"
ref="voucherType">
<el-option label="IC卡"
:value="15"> </el-option>
<el-option label="转账支票"
:value="115"> </el-option>
<el-option label="现金支票"
:value="116"> </el-option>
<el-option label="存单"
:value="123"> </el-option>
<el-option label="银行"
:value="127"> </el-option>
<el-col :span="10" :offset="1">
<el-form-item label="凭证类型" prop="voucherType">
<el-select v-model.trim="form.voucherType" placeholder="请选择" ref="voucherType">
<el-option label="IC卡" :value="15"> </el-option>
<el-option label="转账支票" :value="115"> </el-option>
<el-option label="现金支票" :value="116"> </el-option>
<el-option label="存单" :value="123"> </el-option>
<el-option label="银行" :value="127"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="凭证号码"
required>
<div v-if='!cardNumberJudge'
class="idCard"
@click="popUp('刷卡器')">
<el-form-item label="凭证号码" required>
<div v-if='!cardNumberJudge' class="idCard" @click="popUp('刷卡器')">
<p>请刷卡</p>
</div>
<div v-else>
<el-input ref="cardNumber"
:value="form.cardNumber"
disabled
<el-input ref="cardNumber" :value="form.cardNumber" disabled
@input="(val) => inputListen(val, form, 'cardNumber')"></el-input>
</div>
</el-form-item>
<el-form-item label="支取密码"
required>
<div v-if='!form.drawPassword'
class="idCard"
@click="popUps('密码器')">
<el-form-item label="支取密码" required>
<div v-if='!form.drawPassword' class="idCard" @click="popUps('密码器')">
<p>请输入密码</p>
</div>
<div v-else
@click="popUps('密码器')">
<el-input :value="form.drawPassword"
ref="drawPassword"
type="password"></el-input>
<div v-else @click="popUps('密码器')">
<el-input :value="form.drawPassword" ref="drawPassword" type="password"></el-input>
</div>
</el-form-item>
</el-col>
</el-form>
<el-button @click="openAccount"
type="primary"
class="addBtn"
circle
icon="el-icon-plus"></el-button>
<el-button @click="openAccount" type="primary" class="addBtn" circle icon="el-icon-plus"></el-button>
</el-row>
</div>
<!-- 二级证件,最多三张逻辑上一张二级为填完信息不可添加第三张 v-for="(item,index) in second" :key="index" -->
<div class="add"
v-if="formTwo">
<el-row :gutter="20"
style="margin: 0;z-index:9">
<el-form ref="form2"
:model="form"
label-width="120px">
<el-col :span="10"
:offset="2">
<div class="add" v-if="formTwo">
<el-row :gutter="20" style="margin: 0;z-index:9">
<el-form ref="form2" :model="form" label-width="120px">
<el-col :span="10" :offset="2">
<el-form-item label="账户性质">
<el-select v-model.trim="form.accountQualitysTwo"
placeholder="请选择">
<el-option label="个人结算户"
:value="14"> </el-option>
<el-option label="基本户"
:value="101"> </el-option>
<el-option label="一般户"
:value="102"> </el-option>
<el-option label="专用户"
:value="103"> </el-option>
<el-option label="临时户"
:value="104"> </el-option>
<el-select v-model.trim="form.accountQualitysTwo" placeholder="请选择">
<el-option label="个人结算户" :value="14"> </el-option>
<el-option label="基本户" :value="101"> </el-option>
<el-option label="一般户" :value="102"> </el-option>
<el-option label="专用户" :value="103"> </el-option>
<el-option label="临时户" :value="104"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="账户类型"
required>
<el-select v-model.trim="form.accountTypesTwo"
placeholder="请选择">
<el-option label="一类户"
:value="16"> </el-option>
<el-option label="二类户"
:value="17"> </el-option>
<el-form-item label="账户类型" required>
<el-select v-model.trim="form.accountTypesTwo" placeholder="请选择">
<el-option label="一类户" :value="16"> </el-option>
<el-option label="二类户" :value="17"> </el-option>
<!-- <el-option label="结算户" :value="97"> </el-option>
<el-option label="委托保障金户" :value="100"> </el-option> -->
</el-select>
</el-form-item>
<el-form-item label="支取方式"
required>
<el-select v-model.trim="form.drawWaysTwo"
placeholder="请选择">
<el-form-item label="支取方式" required>
<el-select v-model.trim="form.drawWaysTwo" placeholder="请选择">
<!-- <el-option v-for="item in drawWaySelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option> -->
<el-option label="密码"
:value="18"> </el-option>
<el-option label="密码" :value="18"> </el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10"
:offset="1">
<el-form-item label="凭证类型"
required>
<el-select v-model.trim="form.voucherTypesTwo"
placeholder="请选择">
<el-option label="IC卡"
:value="15"> </el-option>
<el-option label="转账支票"
:value="115"> </el-option>
<el-option label="现金支票"
:value="116"> </el-option>
<el-option label="存单"
:value="123"> </el-option>
<el-option label="银行"
:value="127"> </el-option>
<el-col :span="10" :offset="1">
<el-form-item label="凭证类型" required>
<el-select v-model.trim="form.voucherTypesTwo" placeholder="请选择">
<el-option label="IC卡" :value="15"> </el-option>
<el-option label="转账支票" :value="115"> </el-option>
<el-option label="现金支票" :value="116"> </el-option>
<el-option label="存单" :value="123"> </el-option>
<el-option label="银行" :value="127"> </el-option>
<!-- <el-option v-for="item in voucherTypeSelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option> -->
</el-select>
</el-form-item>
<el-form-item label="凭证号码"
required>
<div v-if='!cardNumberJudge2'
class="idCard"
@click="popUpTwo('刷卡器')">
<el-form-item label="凭证号码" required>
<div v-if='!cardNumberJudge2' class="idCard" @click="popUpTwo('刷卡器')">
<p>请刷卡</p>
</div>
<div v-else>
<el-input ref="cardNumber2"
:value="form.cardNumber2"
disabled
<el-input ref="cardNumber2" :value="form.cardNumber2" disabled
@input="(val) => inputListen(val, form, 'cardNumber2')"></el-input>
</div>
</el-form-item>
<el-form-item label="支取密码"
required>
<div v-if='!form.drawPassword2'
class="idCard"
@click="popUpsTwo('密码器')">
<el-form-item label="支取密码" required>
<div v-if='!form.drawPassword2' class="idCard" @click="popUpsTwo('密码器')">
<p>请输入密码</p>
</div>
<div v-else
@click="popUpsTwo('密码器')">
<el-input :value="form.drawPassword2"
ref="drawPassword2"
type="password"></el-input>
<div v-else @click="popUpsTwo('密码器')">
<el-input :value="form.drawPassword2" ref="drawPassword2" type="password"></el-input>
</div>
</el-form-item>
</el-col>
</el-form>
<el-button @click="deleteSecond()"
class="addBtn"
circle
icon="el-icon-close"></el-button>
<el-button @click="deleteSecond()" class="addBtn" circle icon="el-icon-close"></el-button>
</el-row>
</div>
<div class="add"
v-if="formThree">
<el-row :gutter="20"
style="margin: 0;z-index:9">
<el-form ref="form3"
:model="form"
label-width="120px">
<el-col :span="10"
:offset="2">
<div class="add" v-if="formThree">
<el-row :gutter="20" style="margin: 0;z-index:9">
<el-form ref="form3" :model="form" label-width="120px">
<el-col :span="10" :offset="2">
<el-form-item label="账户性质">
<el-select v-model.trim="form.accountQualitysThree"
placeholder="请选择">
<el-option label="个人结算户"
:value="14"> </el-option>
<el-option label="基本户"
:value="101"> </el-option>
<el-option label="一般户"
:value="102"> </el-option>
<el-option label="专用户"
:value="103"> </el-option>
<el-option label="临时户"
:value="104"> </el-option>
<el-select v-model.trim="form.accountQualitysThree" placeholder="请选择">
<el-option label="个人结算户" :value="14"> </el-option>
<el-option label="基本户" :value="101"> </el-option>
<el-option label="一般户" :value="102"> </el-option>
<el-option label="专用户" :value="103"> </el-option>
<el-option label="临时户" :value="104"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="账户类型"
required>
<el-select v-model.trim="form.accountTypesThree"
placeholder="请选择">
<el-option label="一类户"
:value="16"> </el-option>
<el-option label="二类户"
:value="17"> </el-option>
<el-form-item label="账户类型" required>
<el-select v-model.trim="form.accountTypesThree" placeholder="请选择">
<el-option label="一类户" :value="16"> </el-option>
<el-option label="二类户" :value="17"> </el-option>
<!-- <el-option label="结算户" :value="97"> </el-option>
<el-option label="委托保障金户" :value="100"> </el-option> -->
</el-select>
</el-form-item>
<el-form-item label="支取方式"
required>
<el-select v-model.trim="form.drawWaysThree"
placeholder="请选择">
<el-option label="密码"
:value="18"> </el-option>
<el-form-item label="支取方式" required>
<el-select v-model.trim="form.drawWaysThree" placeholder="请选择">
<el-option label="密码" :value="18"> </el-option>
<!-- <el-option v-for="item in drawWaySelectList" :label="item.options" :value="item.options" :key="item.itemId"> </el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col :span="10"
:offset="1">
<el-form-item label="凭证类型"
required>
<el-select v-model.trim="form.voucherTypesThree"
placeholder="请选择">
<el-option label="IC卡"
:value="15"> </el-option>
<el-option label="转账支票"
:value="115"> </el-option>
<el-option label="现金支票"
:value="116"> </el-option>
<el-option label="存单"
:value="123"> </el-option>
<el-option label="银行"
:value="127"> </el-option>
<el-col :span="10" :offset="1">
<el-form-item label="凭证类型" required>
<el-select v-model.trim="form.voucherTypesThree" placeholder="请选择">
<el-option label="IC卡" :value="15"> </el-option>
<el-option label="转账支票" :value="115"> </el-option>
<el-option label="现金支票" :value="116"> </el-option>
<el-option label="存单" :value="123"> </el-option>
<el-option label="银行" :value="127"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="凭证号码"
required>
<div v-if='!cardNumberJudge3'
class="idCard"
@click="popUpThree('刷卡器')">
<el-form-item label="凭证号码" required>
<div v-if='!cardNumberJudge3' class="idCard" @click="popUpThree('刷卡器')">
<p>请刷卡</p>
</div>
<div v-else>
<el-input ref="cardNumber3"
:value="form.cardNumber3"
disabled
<el-input ref="cardNumber3" :value="form.cardNumber3" disabled
@input="(val) => inputListen(val, form, 'cardNumber3')"></el-input>
</div>
</el-form-item>
<el-form-item label="支取密码"
required>
<div v-if='!form.drawPassword3'
class="idCard"
@click="popUpsThree('密码器')">
<el-form-item label="支取密码" required>
<div v-if='!form.drawPassword3' class="idCard" @click="popUpsThree('密码器')">
<p>请输入密码</p>
</div>
<div v-else
@click="popUpsThree('密码器')">
<el-input :value="form.drawPassword3"
ref="drawPassword3"
type="password"></el-input>
<div v-else @click="popUpsThree('密码器')">
<el-input :value="form.drawPassword3" ref="drawPassword3" type="password"></el-input>
</div>
</el-form-item>
</el-col>
</el-form>
<el-button @click="deleteSecond()"
class="addBtn"
circle
icon="el-icon-close"></el-button>
<el-button @click="deleteSecond()" class="addBtn" circle icon="el-icon-close"></el-button>
</el-row>
</div>
</div>
<el-button @click="formSubmit"
type="primary"
class="submitBtn"
v-throttle>提交</el-button>
<el-button @click="formSubmit" type="primary" class="submitBtn" v-throttle>提交</el-button>
</div>
<my-dialog :moduleName="moduleName"
v-if="visible"
:visible.sync="visible"
:showForm="form"
:formName="formName"
@submitIt="popSure"
:needAuth="false" />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="popSure" :needAuth="false" />
</div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> -->
@ -1094,6 +940,7 @@ export default {
.body {
margin-top: 50px;
overflow: auto;
.idCard {
border-radius: 5px;
background: #cfddff;
@ -1104,11 +951,14 @@ export default {
color: #6191ff;
cursor: pointer;
}
.add {
position: relative;
.el-col {
padding: 10px 0;
}
&::after {
content: '';
display: block;
@ -1119,6 +969,7 @@ export default {
width: 88%;
height: 200px;
}
.addBtn {
position: absolute;
left: 0;
@ -1128,6 +979,7 @@ export default {
}
}
}
// .submitBtn{
// position: relative;
// width: 300px;
@ -1146,19 +998,23 @@ export default {
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;

@ -11,15 +11,18 @@
<div v-else>
<el-input @blur="getDataBlur" ref="voucherNumber" disabled :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</div> -->
<el-input @blur="getDataBlur" ref="voucherNumber" :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
<el-input @blur="getDataBlur" ref="voucherNumber" :value="form.voucherNumber"
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</el-form-item>
<el-form-item label="币种" prop="currency">
<el-select v-model.trim="form.currency" placeholder="请选择" ref="currency">
<el-option v-for="item in getSelectList.currencySelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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="money">
<el-input :value="form.money" maxlength='15' @input="val => ismoney(val, form, 'money')" ref="money"></el-input>
<el-input :value="form.money" maxlength='15' @input="val => ismoney(val, form, 'money')"
ref="money"></el-input>
</el-form-item>
<el-form-item label="利率(%)" prop="interestRate">
<el-input v-model.trim="form.interestRate" disabled ref="interestRate"></el-input>
@ -37,11 +40,13 @@
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="客户姓名" required prop="customerName">
<el-input ref="customerName" disabled :value="form.customerName" @input="(val) => checkName(val, form, 'customerName')"></el-input>
<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="请选择" ref="goldLogo">
<el-option v-for="item in getSelectList.goldLogoSelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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="存期" prop="depositTerm">
@ -69,18 +74,21 @@
</div>
</el-form-item>
<el-form-item label="起息日" prop="valueDate">
<el-input ref="valueDate" :value="form.valueDate" @input="(val) => checkHanzi(val, form, 'valueDate')" ></el-input>
<el-input ref="valueDate" :value="form.valueDate"
@input="(val) => checkHanzi(val, form, 'valueDate')"></el-input>
</el-form-item>
</el-col>
<el-col :span="21" :offset="1">
<el-form-item label="摘要" prop="textarea">
<el-input type="textarea" :rows="3" placeholder="请输入内容" v-model.trim="form.abstract" ref="textarea"></el-input>
<el-input type="textarea" :rows="3" placeholder="请输入内容" v-model.trim="form.abstract"
ref="textarea"></el-input>
</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" @submitIt="submitForm2" :needAuth="false" />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2" :needAuth="false" />
</div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> -->
</template>
@ -453,5 +461,4 @@ export default{
// left: 50%;
// transform: translate(-50%,-20%);
// }
// }
</style>
// }</style>

@ -10,11 +10,13 @@
</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-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="请选择" ref="currency">
<el-option v-for="item in getSelectList.currencySelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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">
@ -41,11 +43,13 @@
</div>
</el-form-item>
<el-form-item label="客户姓名" prop="customerName">
<el-input ref="customerName" maxlength="20" disabled :value="form.customerName" @input="(val) => checkName(val, form, 'customerName')"></el-input>
<el-input ref="customerName" maxlength="20" 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="请选择" ref="goldLogo">
<el-option v-for="item in getSelectList.goldLogoSelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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>
@ -55,7 +59,8 @@
<div v-else>
<el-input @blur="getDataBlur" maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</div> -->
<el-input maxlength="18" ref="voucherNumber" :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
<el-input maxlength="18" ref="voucherNumber" :value="form.voucherNumber"
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</el-form-item>
<el-form-item label="支取密码" required>
<div v-if='!form.drawPassword' class="idCard" @click="popUp3('密码器')">
@ -73,7 +78,8 @@
</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" @submitIt="submitForm2" />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2" />
</div>
<!-- <need-before v-else :moduleName='needBefore' :unNeed="unNeed" /> -->
</template>
@ -116,17 +122,17 @@ export default{
clientNumber: '' //
},
formName: {
idNumber: '身份证', //
customerName: '客户姓名', //
currency: '币种', //
goldLogo: '钞汇标识', //
voucherType: '凭证类型', //
voucherNumber: '凭证号码', //
customerManage: '客户经理', //
idNumber: '身份证',
customerName: '客户姓名',
currency: '币种',
goldLogo: '钞汇标识',
voucherType: '凭证类型',
voucherNumber: '凭证号码',
customerManage: '客户经理',
drawWay: '支取方式',//
certificateType: '证件类型', //
drawPassword: '支付密码', //
clientNumber: '客户号' //
certificateType: '证件类型',
drawPassword: '支付密码',
clientNumber: '客户号'
},
rules: {
customerName: vercustomer,
@ -357,9 +363,9 @@ export default{
this.setNeedsModule(moduleName)
this.submited = 1
},
checkHanzi: checkHanzi,
checkName: checkName,
inputListen: inputListen
checkHanzi,
checkName,
inputListen
},
computed: {
...mapGetters({
@ -398,5 +404,4 @@ export default{
// left: 50%;
// transform: translate(-50%,-20%);
// }
// }
</style>
// }</style>

@ -10,11 +10,13 @@
</el-select>
</el-form-item>
<el-form-item label="客户号" prop="clientNumber">
<el-input ref="clientNumber" disabled :value="form.clientNumber" @input="(val) => checkHanzi(val, form, 'clientNumber')" ></el-input>
<el-input ref="clientNumber" disabled :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="请选择" ref="currency">
<el-option v-for="item in getSelectList.currencySelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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">
@ -48,11 +50,13 @@
</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-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="请选择" ref="goldLogo">
<el-option v-for="item in getSelectList.goldLogoSelectList" :label="item.options" :value="item.itemId" :key="item.itemId"> </el-option>
<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>
@ -60,13 +64,15 @@
<p>请刷卡</p>
</div>
<div v-else>
<el-input @blur="getDataBlur" maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
<el-input @blur="getDataBlur" maxlength="20" ref="voucherNumber" disabled :value="form.voucherNumber"
@input="(val) => inputListen(val, form, 'voucherNumber')"></el-input>
</div>
<!-- <el-input @blur="getDataBlur" maxlength="20" ref="voucherNumber" :value="form.voucherNumber" @input="(val) => inputListen(val, form, 'voucherNumber')"></el-input> -->
</el-form-item>
<el-form-item label="月存金额" prop="monthDeposit">
<!-- :value="form.monthDeposit" -->
<el-input :value="form.monthDeposit" maxlength="15" @input="val => ismoney(val, form, 'monthDeposit')" ref="monthDeposit" ></el-input>
<el-input :value="form.monthDeposit" maxlength="15" @input="val => ismoney(val, form, 'monthDeposit')"
ref="monthDeposit"></el-input>
</el-form-item>
<el-form-item label="续存标识" prop="extendDepositTarget">
<el-select v-model.trim="form.extendDepositTarget" placeholder="请选择" ref="extendDepositTarget">
@ -80,7 +86,8 @@
<el-input :value="form.customerManage" @input="val => checkHanzi(val, form, 'customerManage')" ref="customerManage" ></el-input>
</el-form-item> -->
</el-col>
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName" @submitIt="submitForm2" depositNumber='0816' />
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="submitForm2" depositNumber='0816' />
</el-form>
</el-row>
<el-button @click="submitForm" type="primary" class="submitBtn" v-throttle>提交</el-button>
@ -166,15 +173,15 @@ export default{
//
// identityCard: '', //
idNumber: '身份证',
customerName: '客户姓名', //
currency: '币种', //
goldLogo: '钞汇标识', //
voucherType: '凭证类型', //
monthDeposit: '月存金额', //
depositTerm: '存期', //
extendDepositTarget: '续存标识', //
voucherNumber: '凭证号码', //
drawPassword: '支付密码', //
customerName: '客户姓名',
currency: '币种',
goldLogo: '钞汇标识',
voucherType: '凭证类型',
monthDeposit: '月存金额',
depositTerm: '存期',
extendDepositTarget: '续存标识',
voucherNumber: '凭证号码',
drawPassword: '支付密码',
//
clientNumber: '客户号', //
certificateType: '证件类型', //
@ -432,5 +439,4 @@ export default{
}
}
</script>
<style lang='scss' scoped>
</style>
<style lang='scss' scoped></style>

@ -0,0 +1,715 @@
<!-- 代收电费 -->
<template>
<div class="wrap">
<div class="flex j-between a-center">
<MyTitle :titleArr="['个人贷款', '新增贷款申请']" />
<el-button size="small" @click="$router.back()">返回</el-button>
</div>
<el-row :gutter="20" style="margin: 0">
<el-form v-if="curStep === 1 || isDetail" ref="basicForm" :model="basicForm" label-width="120px"
:rules="basicRules" :disabled="isDetail">
<el-col :span="24">
<h6 class="l-title">基本信息</h6>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="证件类型" prop="idType">
<el-select v-model.trim="basicForm.idType" placeholder="请选择" disabled>
<el-option label="身份证" :value="83"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="客户姓名" required>
<el-input disabled v-model="basicForm.customerName"
@input="(val) => checkName(val, form, 'customerName')" />
</el-form-item>
<el-form-item label="出生日期" prop="birthDate" required>
<el-date-picker disabled v-model.trim="basicForm.birthDate" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="证件号码" required>
<div class="idCard" @click="popUp1('身份证扫描仪')" v-if='!idNumberJudge'>
<p>请刷身份证</p>
</div>
<div v-else>
<el-input v-model="basicForm.idNumber" disabled ref="idNumber" />
</div>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-select v-model.trim="basicForm.gender" disabled placeholder="请选择">
<el-option :key="1" label="男" :value="1">
</el-option>
<el-option :key="2" label="女" :value="2">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="联系电话" prop="phoneNumber">
<el-input v-model="basicForm.phoneNumber" @input="(val) => phoneListen(val, form, 'phoneNumber')"
maxlength="11" ref="phoneNumber" />
</el-form-item>
</el-col>
<el-col :span="24">
<div class="line"></div>
<h6 class="l-title">收入信息</h6>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="岗位">
<el-input v-model="basicForm.position" />
</el-form-item>
<el-form-item label="当前单位工作年限" label-width="150px">
<el-input v-model="basicForm.currentWorkYears" />
</el-form-item>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="薪酬">
<el-input v-model="basicForm.salary">
<template slot="append">/</template>
</el-input>
</el-form-item>
<el-form-item label="工龄">
<el-input v-model="basicForm.totalWorkYears" />
</el-form-item>
</el-col>
<el-col :span="24">
<div class="line"></div>
<h6 class="l-title">房产信息</h6>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="产权人">
<el-input v-model="basicForm.propertyOwner" />
</el-form-item>
<el-form-item label="共有情况">
<el-input v-model="basicForm.coOwnership" />
</el-form-item>
<el-form-item label="权利性质">
<el-input v-model="basicForm.propertyRightNature" />
</el-form-item>
<el-form-item label="使用期限">
<el-input v-model="basicForm.usagePeriod" />
</el-form-item>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="房产证号">
<el-input v-model="basicForm.propertyCertificateNo" />
</el-form-item>
<el-form-item label="坐落">
<el-input v-model="basicForm.location" />
</el-form-item>
<el-form-item label="面积">
<el-input v-model="basicForm.area" />
</el-form-item>
<el-form-item label="申请日期" prop="applicationDate">
<el-date-picker v-model="basicForm.applicationDate" type="date" placeholder="选择日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" ref="applicationDate">
</el-date-picker>
</el-form-item>
</el-col>
</el-form>
<el-form v-if="curStep !== 1 || isDetail" ref="form" :model="form" label-width="120px" :rules="rules"
:disabled="isDetail">
<el-col :span="24">
<div class="line"></div>
<h6 class="l-title">贷款合同</h6>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="贷款类型">
<el-input value="个人住房贷款" disabled />
</el-form-item>
<el-form-item label="合同金额" prop="contractAmount">
<el-input v-model="form.contractAmount" @change="interestCalc" />
</el-form-item>
<el-form-item label="起息日期" prop="interestStartDate">
<el-date-picker v-model="form.interestStartDate" type="date" placeholder="选择日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" :clearable="false" @change="maturityDateCalc"></el-date-picker>
</el-form-item>
<el-form-item label="计息方式">
<el-input value="按年浮动计息" disabled />
</el-form-item>
<el-form-item label="浮动比例" prop="interestRateFloat">
<el-input value="1%" disabled />
</el-form-item>
<el-form-item label="逾期利率" prop="overdueInterestRate">
<el-input value="30%" disabled />
</el-form-item>
<el-form-item label="还款方式" prop="repaymentMethod">
<el-select v-model="form.repaymentMethod" placeholder="请选择">
<el-option label="等额本金" :value="235"></el-option>
<el-option label="等额本息" :value="236"></el-option>
</el-select>
</el-form-item>
<el-form-item label="还款账号" prop="repaymentAccount">
<el-input v-model="form.repaymentAccount" />
</el-form-item>
</el-col>
<el-col :span="10" :offset="1">
<el-form-item label="合同编号" prop="contractNo">
<el-input v-model="form.contractNo" disabled />
</el-form-item>
<el-form-item label="贷款期限" prop="loanTerm">
<el-select v-model="form.loanTerm" placeholder="请选择" @change="maturityDateCalc">
<el-option v-for="(item, i) in loanTerms" :key="i" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="到期日期" prop="maturityDate">
<el-date-picker v-model="form.maturityDate" type="date" placeholder="选择日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" disabled></el-date-picker>
</el-form-item>
<el-form-item label="基准利率" prop="baseInterestRate">
<el-input value="4.30%" disabled />
</el-form-item>
<el-form-item label="执行利率" prop="executedInterestRate">
<el-input value="4.30%" disabled />
</el-form-item>
<el-form-item label="担保方式" prop="customerName">
<el-input value="抵押" disabled />
</el-form-item>
<el-form-item label="利息总额" prop="interestTotal">
<el-input v-model="form.interestTotal" disabled />
</el-form-item>
</el-col>
</el-form>
</el-row>
<my-dialog :moduleName="moduleName" v-if="visible" :visible.sync="visible" :showForm="form" :formName="formName"
@submitIt="saveContract" depositNumber='0816' />
<div class="text-center">
<template v-if="isDetail">
<el-button v-if="isExtension" @click="showExtension" type="primary" class="submitBtn" v-throttle>展期</el-button>
<el-button v-else-if="!basicForm.loanOrNot" @click="showLoan" type="primary" class="submitBtn"
v-throttle>放款</el-button>
<el-button @click="$router.back()" type="primary" class="submitBtn" v-throttle>关闭</el-button>
</template>
<el-button v-else @click="next" type="primary" class="submitBtn" v-throttle>{{ curStep === 1 ? '下一步' : '提交'
}}</el-button>
</div>
<el-dialog :visible.sync="loanVisible" z-index="6000" width="500px" append-to-body :show-close="false"
custom-class="dia">
<div class="data-dia23">
<div slot="title" class="dia-header">
<div class="data-title">放款</div>
</div>
<div style="padding: 30px 0;">
<el-date-picker v-model="disbursementDate" type="date" placeholder="请选择放款日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="loanVisible = false">取消</el-button>
<el-button type="primary" @click="loanSubmit">确定</el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="extensionVisible" width="500px" z-index="6000" append-to-body :show-close="false"
custom-class="dia">
<div class="data-dia23">
<div slot="title" class="dia-header">
<div class="data-title">请选择展期期限</div>
</div>
<div style="padding: 30px 0;">
<el-select v-model="extensionPeriod" placeholder="请选择" size="small" style="width: 100%;">
<el-option v-for="(item, i) in extensions" :key="i" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="extensionVisible = false">取消</el-button>
<el-button type="primary" @click="extensionSubmit">确定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { phoneListen, myValidate, checkHanzi, checkName, ismoney, autoPlay, autoPlay2, inputListen, messageIdCard, messageCard, messagePassword } from '@/utils/utilFunction.js';
import { mobPattern, namePattern, ratePattern, vercustomer } from '@/utils/verify.js'
import { addOperation, personalBasicSave, loanContractSave, personalBasicFind, grantALoan, operationExtension, calculateTheReturnInterestSum } from '@/api/http'
import Util from '@/libs/util'
const moduleName = 'personalLoans/detail'
import { mapMutations, mapGetters } from 'vuex'
import NeedBefore from '@/components/needBefore'
import MyDialog from '@/components/dialog'
import MyTitle from '@/components/myTitle'
export default {
name: '',
props: {},
components: {
NeedBefore,
MyTitle,
MyDialog
},
data () {
return {
moduleName,
isDetail: !!this.$route.query.show, //
isExtension: this.$route.query.show === '2', //
id: this.$route.query.id,
visible: false,
cardNumberJudge: false,
idNumberJudge: false,
basicForm: {
idType: 83,
idNumber: '',
customerName: '',
gender: '',
birthDate: '',
phoneNumber: '',
position: '',
salary: '',
currentWorkYears: '',
totalWorkYears: '',
propertyOwner: '',
propertyCertificateNo: '',
coOwnership: '',
location: '',
propertyRightNature: '',
area: '',
usagePeriod: '',
usagePeriodEnd: '',
applicationDate: Util.formatDate('yyyy-MM-dd', new Date())
},
basicFormName: {
idType: '证件类型',
idNumber: '证件号码',
customerName: '证件号码',
gender: '性别',
birthDate: '出生日期',
phoneNumber: '联系电话',
position: '岗位',
salary: '薪酬',
currentWorkYears: '当前单位工作年限',
totalWorkYears: '工龄',
propertyOwner: '产权人',
propertyCertificateNo: '房产证号',
coOwnership: '共有情况',
location: '坐落',
propertyRightNature: '权利性质',
area: '面积',
usagePeriod: '使用期限',
applicationDate: '申请日期'
},
basicRules: {
customerName: vercustomer,
phoneNumber: [
{
required: true,
message: '请输入联系电话',
trigger: 'blur'
},
],
applicationDate: [
{
required: true,
message: '请选择申请日期',
trigger: 'change'
}
],
},
loanTerms: [
{
pointId: 244,
id: 120,
name: '120个月'
},
{
pointId: 245,
id: 240,
name: '240个月'
},
{
pointId: 246,
id: 360,
name: '360个月'
},
],
form: {
contractNo: '',
contractAmount: '',
loanTerm: 120,
interestStartDate: '',
maturityDate: '',
propertyCertificateNo: '',
repaymentMethod: 235,
interestTotal: '',
repaymentAccount: '',
},
formName: {
contractNo: '合同编号',
contractAmount: '合同金额',
loanTerm: '贷款期限',
interestStartDate: '起息日期',
maturityDate: '到期日期',
repaymentMethod: '还款方式',
interestTotal: '利息总额',
repaymentAccount: '还款账号',
},
rules: {
contractAmount: [
{
required: true,
message: '请输入合同金额',
trigger: 'blur'
}
],
loanTerm: [
{
required: true,
message: '请选择贷款期限',
trigger: 'change'
}
],
interestStartDate: [
{
required: true,
message: '请选择起息日期',
trigger: 'change'
}
],
repaymentAccount: [
{
required: true,
message: '请输入还款账号',
trigger: 'blur'
}
],
},
submited: 0,
curStep: 1,
disbursementDate: '',
loanVisible: false,
extensionVisible: false,
extensionPeriod: 1,
extensions: [
{
id: 1,
name: '1个月',
pointId: 278,
},
{
id: 2,
name: '2个月',
pointId: 279,
},
{
id: 3,
name: '3个月',
pointId: 280,
},
{
id: 4,
name: '4个月',
pointId: 281,
},
{
id: 5,
name: '5个月',
pointId: 282,
},
{
id: 6,
name: '6个月',
pointId: 283,
},
{
id: 7,
name: '7个月',
pointId: 284,
},
{
id: 8,
name: '8个月',
pointId: 285,
},
{
id: 9,
name: '9个月',
pointId: 286,
},
{
id: 10,
name: '10个月',
pointId: 287,
},
],
}
},
mounted () {
this.getDetail()
},
methods: {
...mapMutations({
changeShowGoods: 'system/changeShowGoods',
setDataFlow: 'system/setDataFlow',
setNeedsModule: 'system/setNeedsModule',
setPopId: 'system/setPopId',
setTipsOperate: 'system/setTipsOperate',
setCreditIds: 'system/setCreditIds',
}),
//
async getDetail () {
if (this.id) {
//
const { data } = await personalBasicFind(this.id)
const form = data.data
if (form.idType) form.idType = +form.idType
if (form.gender) form.gender = +form.gender
this.idNumberJudge = true
this.basicForm = form
//
const contract = data.data.bankPersonalLoanContractInfo
if (contract) {
if (contract.loanTerm) contract.loanTerm = +contract.loanTerm
this.form = contract
}
} else if (sessionStorage.getItem('nomUsefulPhrasesOpenCard2')) {
//
sessionStorage.removeItem('nomUsefulPhrasesOpenCard2')
this.idNumberJudge = true
this.basicForm = {
idType: 83,
idNumber: '220602199202281229',
customerName: '丛小凤',
gender: 2,
birthDate: '1992-02-28',
phoneNumber: '15890317718',
position: '会计主管',
salary: '80',
currentWorkYears: '5年',
totalWorkYears: '12年',
propertyOwner: '丛小凤',
propertyCertificateNo: '不动产权第012000号',
coOwnership: '单独所有',
location: '前海新区深圳湾一号1612',
propertyRightNature: '出让/商品房',
area: '建筑面积: 189平方米',
usagePeriod: '70年,2018.3.15 至 2088.3.14 止',
usagePeriodEnd: '',
}
}
},
popUp1 (text) {
this.setTipsOperate('请刷身份证');
this.setPopId('1399')
sessionStorage.setItem('creditPath', this.$route.fullPath)
this.$router.push('/counter/list/')
},
//
maturityDateCalc () {
const { interestStartDate, loanTerm } = this.form
if (interestStartDate && loanTerm) {
const date = new Date(interestStartDate)
date.setMonth(date.getMonth() + loanTerm)
this.form.maturityDate = Util.formatDate('yyyy-MM-dd', date)
}
this.interestCalc()
},
//
async interestCalc () {
const { form } = this
if (form.contractAmount && form.maturityDate) {
const { data } = await calculateTheReturnInterestSum(form)
form.interestTotal = data.interestTotal || ''
}
},
//
async next () {
//
if (this.curStep < 2) {
const { basicForm } = this
if (!basicForm.idNumber) {
messageCard('请刷身份证')
return
}
this.$refs.basicForm.validate(myValidate(async () => {
try {
const { data } = await personalBasicSave({
...this.$store.getters['system/commonIds'],
...basicForm,
})
if (data.status === 200) {
//
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767'
const rule = [
{ answerId: 902, emptyOne: '', emptyTwo: '', operationIds: preId + ',902', type: '' },
{ answerId: 847, emptyOne: 125, emptyTwo: basicForm.phoneNumber, operationIds: preId + ',847', type: 3 },
{ answerId: 859, emptyOne: 125, emptyTwo: basicForm.applicationDate, operationIds: preId + ',859', type: 3 },
]
basicForm.position && rule.push({ answerId: 848, emptyOne: 125, emptyTwo: basicForm.position, operationIds: preId + ',848', type: 3 })
basicForm.salary && rule.push({ answerId: 849, emptyOne: 125, emptyTwo: basicForm.salary, operationIds: preId + ',849', type: 3 })
basicForm.currentWorkYears && rule.push({ answerId: 850, emptyOne: 125, emptyTwo: basicForm.currentWorkYears, operationIds: preId + ',850', type: 3 })
basicForm.totalWorkYears && rule.push({ answerId: 851, emptyOne: 125, emptyTwo: basicForm.totalWorkYears, operationIds: preId + ',851', type: 3 })
basicForm.propertyOwner && rule.push({ answerId: 852, emptyOne: 125, emptyTwo: basicForm.propertyOwner, operationIds: preId + ',852', type: 3 })
basicForm.propertyCertificateNo && rule.push({ answerId: 853, emptyOne: 125, emptyTwo: basicForm.propertyCertificateNo, operationIds: preId + ',853', type: 3 })
basicForm.coOwnership && rule.push({ answerId: 854, emptyOne: 125, emptyTwo: basicForm.coOwnership, operationIds: preId + ',854', type: 3 })
basicForm.location && rule.push({ answerId: 855, emptyOne: 125, emptyTwo: basicForm.location, operationIds: preId + ',855', type: 3 })
basicForm.propertyRightNature && rule.push({ answerId: 856, emptyOne: 125, emptyTwo: basicForm.propertyRightNature, operationIds: preId + ',856', type: 3 })
basicForm.area && rule.push({ answerId: 857, emptyOne: 125, emptyTwo: basicForm.area, operationIds: preId + ',857', type: 3 })
basicForm.usagePeriod && rule.push({ answerId: 858, emptyOne: 125, emptyTwo: basicForm.usagePeriod, operationIds: preId + ',858', type: 3 })
await addOperation({
parentId: preId,
lcJudgmentRuleReq: rule,
projectId: +sessionStorage.getItem('projectId'),
startTime: sessionStorage.getItem('startTime')
})
this.setCreditIds({
personalLoanId: data.personalLoanId,
applicationDate: data.applicationDate || this.form.applicationDate,
contractNo: data.contractNo || this.form.contractNo,
})
if (data.contractNo) this.form.contractNo = data.contractNo
this.curStep++
}
} catch { (e) => { } }
}, this.$refs))
} else {
//
if (!this.form.contractAmount) return this.$message.warning('请输入合同金额!')
this.$refs.form.validate(myValidate(() => {
this.saveContract()
}, this.$refs))
}
},
//
async saveContract () {
try {
const { form } = this
form.personalLoanId = this.creditIds.personalLoanId
form.contractNo = this.creditIds.contractNo
const { data } = await loanContractSave({
...this.$store.getters['system/commonIds'],
...form,
})
if (data.status === 200) {
//
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767'
const rule = [
{ answerId: 860, emptyOne: 125, emptyTwo: form.contractAmount, operationIds: preId + ',860', type: 3 },
{ answerId: 861, emptyOne: 141, emptyTwo: this.loanTerms.find(e => e.id === form.loanTerm).pointId, operationIds: preId + ',861', type: 1 },
{ answerId: 862, emptyOne: 125, emptyTwo: form.interestStartDate, operationIds: preId + ',862', type: 3 },
{ answerId: 863, emptyOne: 125, emptyTwo: form.repaymentMethod, operationIds: preId + ',863', type: 1 },
{ answerId: 864, emptyOne: 125, emptyTwo: form.repaymentAccount, operationIds: preId + ',864', type: 3 },
]
await addOperation({
parentId: preId,
lcJudgmentRuleReq: rule,
projectId: +sessionStorage.getItem('projectId'),
startTime: sessionStorage.getItem('startTime')
})
this.$router.push('/counter/list/manage/personalLoans')
} else {
this.$message.error(data.message)
}
} catch { (e) => { } }
},
//
showLoan () {
this.loanVisible = true
},
//
async loanSubmit () {
if (!this.disbursementDate) return this.$message.error('请选择放款日期!')
const { data } = await grantALoan({
id: this.form.contractId,
disbursementDate: this.disbursementDate,
})
this.$message[data.status === 200 ? 'success' : 'error'](data.message)
if (data.status === 200) {
//
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767'
await addOperation({
parentId: preId,
lcJudgmentRuleReq: [{ answerId: 865, emptyOne: 151, emptyTwo: this.disbursementDate, operationIds: preId + ',865', type: 3 }],
projectId: +sessionStorage.getItem('projectId'),
startTime: sessionStorage.getItem('startTime')
})
setTimeout(this.$router.push('/counter/list/manage/personalLoans'), 1500)
}
},
//
showExtension () {
this.extensionVisible = true
},
//
async extensionSubmit () {
if (!this.extensionPeriod) return this.$message.error('请选择展期期限!')
const { data } = await operationExtension({
id: this.form.contractId,
extensionPeriod: this.extensionPeriod,
})
this.$message[data.status === 200 ? 'success' : 'error'](data.message)
if (data.status === 200) {
//
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767'
await addOperation({
parentId: preId,
lcJudgmentRuleReq: [{ answerId: 866, emptyOne: 152, emptyTwo: this.extensions.find(e => e.id === this.extensionPeriod).pointId, operationIds: preId + ',866', type: 1 }],
projectId: +sessionStorage.getItem('projectId'),
startTime: sessionStorage.getItem('startTime')
})
setTimeout(this.$router.push('/counter/list/manage/personalLoans'), 1500)
}
},
phoneListen,
checkName,
},
computed: {
...mapGetters({
dataFlow: 'system/dataFlow',
needsModule: 'system/needsModule',
idCardNumber: 'system/idCardNumber',
inMyWork: 'system/inMyWork',
getSelectList: 'system/getSelectList',
}),
// id
creditIds: function () {
return this.$store.state.system.creditIds
},
}
}
</script>
<style lang='scss' scoped>
@import '@/styles/dialog.scss';
.wrap {
width: 100%;
height: calc(90vh - 27px);
padding: 20px;
overflow: auto;
.l-title {
margin-bottom: 15px;
font-size: 18px;
font-weight: 600;
}
.line {
margin: 20px 0;
border-bottom: 1px dashed #d7d7d7;
}
}
</style>

@ -0,0 +1,169 @@
<!-- 现金管理 -->
<template>
<div class="wrap">
<div class="nav">
<el-menu :default-active="active" class="el-menu-demo" mode="horizontal" @select="handleSelect">
<el-menu-item index="1">全部</el-menu-item>
<el-menu-item index="2">正常还款</el-menu-item>
<el-menu-item index="3">展期</el-menu-item>
</el-menu>
</div>
<MyTitle :titleArr="['个人贷款', text]" />
<list :index.sync="active" :key="active" />
</div>
</template>
<script>
import list from './list.vue'
import MyTitle from '@/components/myTitle'
export default {
name: 'index',
components: {
list,
MyTitle
},
data () {
return {
text: '全部',/* 顶部文字 */
textObj: {
'1': '全部',
'2': '正常还款',
'3': '展期',
},
form: {
},
visible: false,
options: [],
active: '1',
}
},
methods: {
handleSelect (val) {
this.text = this.textObj[val]
this.active = val
},
},
};
</script>
<style lang="scss" scoped>
.wrap {
width: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
padding: 24px 0 24px 24px;
.nav {
/deep/ .el-menu.el-menu--horizontal {
border: 0;
}
/deep/ .el-menu--horizontal>.el-menu-item.is-active {
border: 2px solid #568df2;
border-radius: 10px;
color: #000;
}
/deep/ .el-menu--horizontal>.el-menu-item {
border: 2px solid transparent;
border-radius: 10px;
margin-right: 10px;
height: 30px;
line-height: 28px;
}
}
.title {
height: 60px;
display: flex;
align-items: center;
font-size: 20px;
padding-left: 0px;
margin-top: 10px;
}
.body {
margin-top: 50px;
overflow-y: auto;
overflow-x: hidden;
.idCard {
border-radius: 5px;
background: #cfddff;
text-align: center;
height: 40px;
line-height: 40px;
font-size: 18px;
color: #6191ff;
}
.add {
position: relative;
&::after {
content: '';
display: block;
position: absolute;
right: 3%;
top: -4%;
border: 1px dashed #cfddff;
width: 88%;
height: 268px;
}
.addBtn {
position: absolute;
left: 0;
top: 50%;
transform: translate(50%, -50%);
font-size: 22px;
}
}
}
.submitBtn {
position: relative;
width: 300px;
font-size: 18px;
height: 45px;
margin-top: 50px;
border-radius: 10px;
bottom: 10px;
left: 50%;
transform: translate(-50%, -50%);
}
.popBody {
min-height: 200px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.popBtns {
display: flex;
justify-content: space-between;
align-items: center;
.btn {
width: 180px;
border-radius: 10px;
font-size: 18px;
}
.close {
background: #cfdeff;
color: #6191ff;
}
.sure {
background: #6191ff;
color: #fff;
}
}
}
</style>

@ -0,0 +1,323 @@
<template>
<div class="inner">
<div class="flex j-between m-b-20">
<div style="width: 300px;">
<el-input v-model="keyword" placeholder="请输入客户姓名" clearable />
</div>
<el-button type="primary"
@click="$router.push('/counter/list/manage/personalLoans-detail?show=&id=')">新建贷款申请</el-button>
</div>
<el-table :data="list" :header-cell-style="headerCellStyle" :row-class-name="tableRowClassName">
<el-table-column prop="customerName" label="客户姓名" align="center"></el-table-column>
<el-table-column prop="contractNo" label="合同编号" align="center">
</el-table-column>
<el-table-column prop="issueTeller" label="贷款类型" align="center">个人住房贷款</el-table-column>
<el-table-column prop="applicationDate" label="申请日期" align="center">
</el-table-column>
<el-table-column prop="approvalStatus" label="审批状态" align="center">
</el-table-column>
<el-table-column prop="contractAmount" label="贷款金额" align="center"></el-table-column>
<el-table-column prop="loanTerm" label="贷款期限" align="center">
</el-table-column>
<el-table-column prop="disbursementDate" label="放款日期" align="center">
</el-table-column>
<el-table-column prop="arrearsAmount" label="欠款金额" align="center">
</el-table-column>
<el-table-column prop="repaymentMethod" label="还款方式" align="center">
</el-table-column>
<el-table-column v-if="index !== '3'" prop="totalRepaymentAmount" key="1" label="累计还款金额" align="center">
</el-table-column>
<el-table-column v-if="index === '3'" prop="extensionPeriod" key="3" label="展期期限" align="center">
<template slot-scope="scope">{{ scope.row.extensionPeriod }}个月</template>
</el-table-column>
<el-table-column label="操作" align="center" width="250">
<template slot-scope="scope">
<!-- 没加合同的才能编辑 -->
<el-button @click="toDetail(scope.row, 1)" size="small" :disabled="scope.row.personalLoanId < 0">{{
scope.row.contractNo !== '——' ? '查看' : '编辑'
}}</el-button>
<template v-if="scope.row.personalLoanId > 0">
<el-button v-if="scope.row.disbursementDate !== '' && !scope.row.renewalOrNot"
@click="toDetail(scope.row, 2)" size="small">展期</el-button>
<el-button @click="repayment(scope.row)" size="small">还款计划</el-button>
</template>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="page"
@current-change="handleCurrentChange" :total="total"></el-pagination>
</div>
<el-dialog title="还款计划" :visible.sync="repaymentVisible" width="1000px" z-index="6000" :append-to-body="true">
<div class="flex j-between a-center m-b-20">
<el-form class="filter-form" label-width="90px" inline>
<el-form-item label="还款周期">
<el-date-picker placeholder="请选择还款周期" v-model="date" align="right" unlink-panels type="daterange"
size="small" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
clearable></el-date-picker>
</el-form-item>
<el-form-item label="还款状态">
<el-select v-model="form.status" placeholder="请选择" size="small" clearable @change="initRepayment">
<el-option value="待还款"></el-option>
<el-option value="已还款"></el-option>
<el-option value="逾期"></el-option>
</el-select>
</el-form-item>
</el-form>
<div>
<el-button @click="batchRepayment('已还款')" size="small" type="primary">批量还款</el-button>
<el-button @click="batchRepayment('逾期')" size="small" type="primary">批量逾期</el-button>
</div>
</div>
<el-table ref="repayments" :data="repayments" stripe header-align="center"
@selection-change="handleSelectionChangeRepayment" row-key="id">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"
:selectable="checkAble"></el-table-column>
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
<el-table-column prop="contractAmount" label="还款周期" align="center">
<template slot-scope="scope">
{{ scope.row.periodStart + '~' + scope.row.periodEnd }}
</template>
</el-table-column>
<el-table-column prop="amountDue" label="应还款" align="center"></el-table-column>
<el-table-column prop="status" label="还款状态" align="center">
<template slot-scope="scope">
<p :class="{ 'text-red': scope.row.status === '逾期' }">{{ scope.row.status }}</p>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150">
<template v-if="scope.row.status !== '已还款'" slot-scope="scope">
<el-button @click="handleRepayment(scope.row, '已还款')" size="small">还款</el-button>
<el-button @click="handleRepayment(scope.row, '逾期')" size="small">逾期</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="pageRepayment"
@current-change="handleCurrentChangePayment" :total="totalRepayment"></el-pagination>
</div>
</el-dialog>
</div>
</template>
<script>
import { tableRowClassName, headerCellStyle } from '@/assets/js/myConfig'
import MyDialog from '@/components/dialogTwo'
import NeedBefore from '@/components/needBefore'
import { batchProcessing, personalBasicList, repaymentPlan, addOperation } from '@/api/http';
const moduleName = 'personalLoans/list'
import { mapMutations, mapGetters } from 'vuex'
export default {
name: 'index',
props: ['index'],
components: {
MyDialog,
NeedBefore
},
data () {
return {
moduleName,
headerCellStyle: headerCellStyle,
searchTimer: null,
list: [],
page: 1,
pageSize: 10,
total: 0,
keyword: '',
visible: false,
unNeed: false,
isNeedBefore: '',
needBefore: '',
text: '柜员现金轧账',/* 顶部文字 */
visible: false,
submited: 0,
repaymentVisible: false,
repayments: [],
pageRepayment: 1,
pageSizeRepayment: 10,
totalRepayment: 0,
multipleSelection: [],
date: [],
form: {
periodEnd: '',
periodStart: '',
status: '',
},
curRow: {},
}
},
watch: {
keyword: function (val) {
clearTimeout(this.searchTimer);
this.searchTimer = setTimeout(() => {
this.initData()
}, 500)
},
date: function (val) {
if (val) {
this.form.periodStart = val[0]
this.form.periodEnd = val[1]
} else {
this.form.periodStart = ''
this.form.periodEnd = ''
}
this.initRepayment();
},
},
mounted () {
this.initData()
},
methods: {
...mapMutations({
setTipsOperate: 'system/setTipsOperate'
}),
async getData () {
const { data } = await personalBasicList({
...this.$store.getters['system/commonIds'],
pageNum: this.page,
pageSize: this.pageSize,
customerName: this.keyword,
renewalOrNot: this.$parent.active === '3' ? 1 : '',
normalRepayment: this.$parent.active === '2' ? 1 : '',
})
this.list = data.list.records
this.total = data.list.total
},
initData () {
this.page = 1
this.getData()
},
handleCurrentChange (val) {
this.page = val
this.getData()
},
toDetail (row, show) {
this.$router.push(`/counter/list/manage/personalLoans-detail?show=${show === 2 ? 2 : row.contractNo !== '——' ? 1 : ''}&id=${row.personalLoanId}`)
},
//
async repayment (row) {
this.curRow = row
this.repaymentVisible = true
this.getRepayment()
},
//
async getRepayment (row) {
const { data } = await repaymentPlan({
pageNum: this.pageRepayment,
pageSize: this.pageSizeRepayment,
...this.form,
personalLoanId: this.curRow.personalLoanId,
})
this.repayments = data.list.records
this.totalRepayment = data.list.total
},
initRepayment () {
this.pageRepayment = 1
this.getRepayment()
},
handleCurrentChangePayment (val) {
this.pageRepayment = val
this.getRepayment()
},
handleSelectionChangeRepayment (val) {
this.multipleSelection = val
},
//
checkAble (row) {
return row.status === '待还款'
},
// /
handleRepayment (row, status) {
const text = status === '已还款' ? '还款' : '逾期'
this.$confirm(`确定要${text}吗?`, "提示", {
type: "warning"
}).then(async () => {
await batchProcessing([{
id: row.id,
status
}])
const answerId = status === '已还款' ? 905 : 906
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767'
await addOperation({
parentId: preId,
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },],
projectId: +sessionStorage.getItem('projectId'),
startTime: sessionStorage.getItem('startTime')
})
this.$message.success(`${text}成功`)
this.getRepayment()
this.getData()
}).catch(() => { })
},
// /
batchRepayment (status) {
const list = this.multipleSelection
if (list.length) {
const text = status === '已还款' ? '还款' : '逾期'
this.$confirm(`确定要${text}吗?`, "提示", {
type: "warning"
}).then(async () => {
const ids = list.map(e => {
return {
id: e.id,
status
}
})
await batchProcessing(ids)
const answerId = status === '已还款' ? 903 : 904
const preId = '285,' + this.$store.state.system.businessSelect[this.$store.state.system.businessKey].id + ',766,767'
await addOperation({
parentId: preId,
lcJudgmentRuleReq: [{ answerId, emptyOne: '', emptyTwo: '', operationIds: preId + ',' + answerId, type: '' },],
projectId: +sessionStorage.getItem('projectId'),
startTime: sessionStorage.getItem('startTime')
})
this.$message.success(`${text}成功`)
this.$refs.repayments.clearSelection()
this.multipleSelection = []
this.getRepayment()
this.getData()
}).catch(() => { })
} else {
this.$message.error(`请选择数据!`)
}
},
tableRowClassName,
},
};
</script>
<style lang="scss" scoped>
@import '@/assets/css/tablebg.scss';
.inner {
width: 100%;
max-height: calc(100vh - 246px);
padding-right: 24px;
overflow: auto;
}
/deep/.el-table .warning-row {
background: oldlace;
}
/deep/.el-table .success-row {
background: #f0f9eb;
}
/deep/.filter-form {
.el-form-item {
margin-bottom: 0;
}
}
</style>

@ -1,42 +1,30 @@
<template>
<!-- 商业银行系统菜单文件 -->
<el-menu class="sidebar-el-menu"
:default-active="onRoutes"
@select="select"
router
background-color="#313540"
text-color="#fff"
active-text-color="#ffd04b"
unique-opened>
<el-menu class="sidebar-el-menu" :default-active="onRoutes" @select="select" router background-color="#313540"
text-color="#fff" active-text-color="#ffd04b" unique-opened>
<template v-for="(item, index) in menus">
<template v-if="item.children">
<el-submenu :index="item.index"
:key="item.index">
<el-submenu :index="item.index" :key="item.index">
<template slot="title">
<el-image style="width: 22px; height: 22px; margin-right: 10px;"
class="align-middle"
<el-image style="width: 22px; height: 22px; margin-right: 10px;" class="align-middle"
:src="item.logo"></el-image>
<span slot="title">{{ item.title }}</span>
</template>
<template v-for="(subItem, index) in item.children">
<el-submenu v-if="subItem.children"
:index="subItem.index"
:key="subItem.index">
<el-submenu v-if="subItem.children" :index="subItem.index" :key="subItem.index">
<template slot="title">{{ subItem.title }}</template>
<el-menu-item v-for="(threeItem,i) in subItem.children"
:key="i"
:index="threeItem.index">{{ threeItem.title }}</el-menu-item>
<el-menu-item v-for="(threeItem, i) in subItem.children" :key="i" :index="threeItem.index">{{
threeItem.title
}}</el-menu-item>
</el-submenu>
<el-menu-item v-else
:index="subItem.index"
:key="subItem.index">{{ subItem.title }}</el-menu-item>
<el-menu-item v-else :index="subItem.index" :key="subItem.index">{{ subItem.title }}</el-menu-item>
</template>
</el-submenu>
</template>
<template v-else>
<el-menu-item :index="item.index"
:key="item.index">
<i :class="item.icon"></i>
<el-menu-item :index="item.index" :key="item.index">
<el-image v-if="item.logo" style="width: 22px; height: 22px; margin: 0 10px 0 26px;" class="align-middle"
:src="item.logo"></el-image>
<span slot="title">{{ item.title }}</span>
</el-menu-item>
</template>
@ -47,20 +35,15 @@
<script>
import { mapState } from 'vuex'
// import bus from '@/libs/bus';
import Setting from '@/setting';
export default {
// props: {
// needIndex: {
// type: String,
// required: true
// }
// },
computed: {
...mapState('system', ['isCredit'])
},
data () {
return {
// onRoutes:'/counter/list/manage/consumerClient',
onRoutes: '',
menus: [
menus: [],
defaultMenus: [
{
icon: 'menu-icon icon-index',
index: '/index/list',
@ -216,41 +199,70 @@ export default {
}
]
},
{
icon: 'menu-icon icon-index',
index: '/counter/list/manage/agent',
title: '代理业务',
logo: require('@/assets/img/systemInput/代理业务.svg'),
},
{
icon: 'menu-icon icon-index',
index: '/counter/list/manage/onlineBank',
title: '网上银行',
logo: require('@/assets/img/systemInput/网上银行.svg'),
},
{
icon: 'menu-icon icon-index',
index: '/counter/list/manage/foreignExchange',
title: '外汇业务',
logo: require('@/assets/img/systemInput/外汇业务.svg'),
},
],
}
creditMenus: [
{
icon: 'menu-icon icon-index',
index: '/counter/list/manage/personalLoans',
title: '个人贷款',
logo: require('@/assets/img/systemInput/个人贷款.svg'),
},
watch: {
// '$route.path':function (val) {
// this.onRoutes = val
// },
needIndex (newVal) {
this.onRoutes = newVal
{
icon: 'menu-icon icon-index',
index: '/index/list1',
title: '公司贷款',
logo: require('@/assets/img/systemInput/公司贷款.svg'),
children: [
{
index: '/counter/list/manage/corporateLoans-application',
title: '贷款申请',
}, {
index: '/counter/list/manage/corporateLoans-loan',
title: '贷款放款',
}, {
index: '/counter/list/manage/corporateLoans-repayment',
title: '贷款还款',
}, {
index: '/counter/list/manage/corporateLoans-management',
title: '贷后管理',
},
]
},
]
}
},
created () {
const path = sessionStorage.getItem('computerPath')
this.menus = this.isCredit ? this.creditMenus : this.defaultMenus
let path = sessionStorage.getItem(this.isCredit ? 'creditPath' : 'computerPath')
if (path) {
this.onRoutes = path
} else {
this.onRoutes = this.$route.path
}
// this.onRoutes = this.$route.path
// this.onRoutes = this.needIndex;
// console.log(this.onRoutes)
// console.log(this.needIndex)
// this.onRoutes = this.$route.path
},
methods: {
select (path) {
this.onRoutes = path
}
},
beforeDestroy () {
sessionStorage.setItem('computerPath', this.onRoutes)
sessionStorage.getItem('submited') || this.$router.push('/counter/list/')
},
};
</script>
@ -319,17 +331,21 @@ export default {
.sidebar::-webkit-scrollbar {
width: 0;
}
.sidebar-el-menu:not(.el-menu--collapse) {
width: 100%;
border: 0;
border-bottom-left-radius: 20px;
}
.sidebar>ul {
height: 100%;
}
/deep/.el-menu {
border: 0;
}
// menu
/deep/ .el-submenu__title span {
font-size: 18px;
@ -338,7 +354,7 @@ export default {
/deep/.el-menu-item {
font-size: 18px !important;
}
// .myOver {
// overflow: hidden;
// }
</style>
// }</style>

@ -1,166 +1,113 @@
<template>
<!-- 实验报告 -->
<div class="wrap">
<div class="wrap" v-loading="loading">
<breadcrumb data="返回实验/实验报告"></breadcrumb>
<div class="content"
:class="{loading}"
id="pdfDom">
<div style="text-align: right"
v-if="!loading">
<el-button size="mini"
@click="editReport">
<div class="content">
<div style="text-align: right" v-if="!loading">
<el-button size="mini" @click="editReport">
{{ editing ? "保存" : "编辑" }}
</el-button>
<el-button type="primary"
size="mini"
@click="exportPage">导出报告</el-button>
<el-button type="primary" size="mini" @click="exportPage">导出报告</el-button>
</div>
<h6 class="r-title">标准实验报告</h6>
<div class="info">
<h6 class="l-title">
<img src="@/assets/img/report1.png"
alt="">
<img src="@/assets/img/report1.png" alt="">
基本信息
</h6>
<ul :class="['info-list', { edit: editing }]">
<li>
<label>学生姓名</label>
<el-input v-if="editing"
v-model="infoData.userName"
disabled></el-input>
<el-input v-if="editing" v-model="infoData.userName" disabled></el-input>
<span v-else>{{ infoData.userName }}</span>
</li>
<li>
<label>学生学号</label>
<el-input v-if="editing"
v-model="infoData.workNumber"
disabled></el-input>
<el-input v-if="editing" v-model="infoData.workNumber" disabled></el-input>
<span v-else>{{ infoData.workNumber }}</span>
</li>
<li>
<label>实验时间</label>
<el-input v-if="editing"
v-model="infoData.submitTime"
disabled></el-input>
<el-input v-if="editing" v-model="infoData.submitTime" disabled></el-input>
<span v-else>{{ infoData.submitTime }}</span>
</li>
<li>
<label>实验成绩</label>
<el-input v-if="editing"
v-model="infoData.score"
disabled></el-input>
<div v-else
class="score-wrap">
<el-input v-if="editing" v-model="infoData.score" disabled></el-input>
<div v-else class="score-wrap">
<em>{{ infoData.score }}</em>
<img src="@/assets/img/point.png"
alt="">
<img src="@/assets/img/point.png" alt="">
</div>
</li>
<li>
<label>学生班级</label>
<el-input v-if="editing"
v-model="infoData.className"></el-input>
<el-input v-if="editing" v-model="infoData.className"></el-input>
<span v-else>{{ infoData.className }}</span>
</li>
<li>
<label>指导老师</label>
<el-input v-if="editing"
v-model="infoData.instructor"></el-input>
<el-input v-if="editing" v-model="infoData.instructor"></el-input>
<span v-else>{{ infoData.instructor }}</span>
</li>
<li>
<label>实验学时</label>
<el-input v-if="editing"
v-model="infoData.period"></el-input>
<el-input v-if="editing" v-model="infoData.period"></el-input>
<span v-else>{{ infoData.period }}</span>
</li>
</ul>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report2.png"
alt="">
<img src="@/assets/img/report2.png" alt="">
实验项目名称
</h6>
<el-input v-if="editing"
v-model="infoData.projectName"
type="textarea"></el-input>
<div v-else
class="pre-wrap"
v-html="infoData.projectName"></div>
<el-input v-if="editing" v-model="infoData.projectName" type="textarea"></el-input>
<div v-else class="pre-wrap" v-html="infoData.projectName"></div>
</div>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report3.png"
alt="">
<img src="@/assets/img/report3.png" alt="">
实验目的
</h6>
<quill v-if="editing"
:border="true"
v-model="infoData.purpose"
:height="150" />
<div v-else
:class="['pre-wrap', {edit: editing}]"
v-html="infoData.purpose"></div>
<quill v-if="editing" :border="true" v-model="infoData.purpose" :height="150" />
<div v-else :class="['pre-wrap', { edit: editing }]" v-html="infoData.purpose"></div>
</div>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report4.png"
alt="">
<img src="@/assets/img/report4.png" alt="">
实验数据
</h6>
<el-table :data="expData"
class="table"
border
stripe
header-align="center">
<el-table-column type="index"
label="序号"
align="center"
width="60">
<el-table :data="expData" class="table" border stripe header-align="center">
<el-table-column type="index" label="序号" align="center" width="60">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="judgmentName"
label="判分点"
width="200"
align="center"></el-table-column>
<el-table-column prop="judgmentName"
label="考核点"
align="center"
width="150">
<el-table-column prop="judgmentName" label="判分点" width="200" align="center"></el-table-column>
<el-table-column prop="judgmentName" label="考核点" align="center" width="150">
<template slot-scope="scope">
<div v-for="(item, index) in scope.row.lcRuleRecords"
:key="index">
<div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span>
<span>{{ index + 1 }}. </span>{{ item.name }}
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="ruleAnswer"
label="参考答案"
width="280"
style='word-wrap: break-word'>
<el-table-column prop="ruleAnswer" label="参考答案" width="280">
<template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'>
<div v-for="(item, index) in scope.row.lcRuleRecords"
:key="index">
<div v-if="scope.row.lcRuleRecords" style="word-wrap: break-word">
<div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span>
<span>{{ index + 1 }}. </span>{{ item.ruleAnswer }}
</span>
</div>
</div>
<div v-else
v-html="scope.row.referenceAnswer"></div>
<div v-else v-html="scope.row.referenceAnswer"></div>
</template>
</el-table-column>
<el-table-column prop="userAnswer"
label="学生答案">
<el-table-column prop="userAnswer" label="学生答案" width="280">
<template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'>
<div v-for="(item, index) in scope.row.lcRuleRecords"
:key="index">
<div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span v-if='item.userAnswer'>
<span>{{ index + 1 }}. </span>{{ item.userAnswer }}
</span>
@ -171,29 +118,17 @@
</div>
</template>
</el-table-column>
<el-table-column prop="quesScore"
label="分值"
width="80"
align="center"></el-table-column>
<el-table-column prop="score"
label="得分"
width="80"
align="center"></el-table-column>
<el-table-column prop="quesScore" label="分值" width="80" align="center"></el-table-column>
<el-table-column prop="score" label="得分" width="80" align="center"></el-table-column>
</el-table>
</div>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report5.png"
alt="">
<img src="@/assets/img/report5.png" alt="">
实验总结与体会
</h6>
<quill v-show="editing"
:border="true"
v-model="infoData.summarize"
:height="150" />
<div v-show="!editing"
class="pre-wrap"
v-html="infoData.summarize"></div>
<quill v-show="editing" :border="true" v-model="infoData.summarize" :height="150" />
<div v-show="!editing" class="pre-wrap" v-html="infoData.summarize"></div>
</div>
</div>
</div>
@ -211,12 +146,12 @@ export default {
return {
reportId: this.$route.query.reportId,
title: "实验报告",
loading: false,
form: {},
infoData: {},
expData: [],
editing: false,
loadIns: null,
loading: false,
project: false,
userScores: []
};
@ -230,6 +165,7 @@ export default {
},
methods: {
getData () { //
this.loading = true
const { reportId } = this
reportDetail(reportId).then(({ data }) => {
const { report, userScores } = data
@ -251,18 +187,18 @@ export default {
summarize: form.summarize
}
const expData = report.data
this.userScores = userScores
// data使
if (!expData) {
this.userScores = userScores
this.handleList(userScores)
this.$post(this.api.editExperimentalData, {
reportId,
data: JSON.stringify(userScores)
}).then(res => { }).catch(err => { })
} else {
this.handleList(userScores)
this.handleList(JSON.parse(expData))
}
}).catch(res => { })
this.loading = false
}).catch(res => {
this.loading = false
})
},
//
handleList (list) {
@ -327,9 +263,11 @@ export default {
.m-b-20 {
margin-bottom: 20px;
}
.wrap {
padding: 12px 300px 20px;
}
code,
kbd,
samp {
@ -337,34 +275,41 @@ samp {
word-wrap: break-word;
white-space: pre-wrap;
}
/deep/ pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
white-space: pre-wrap;
/* css-3 */
white-space: -moz-pre-wrap;
/* Mozilla, since 1999 */
white-space: pre-wrap;
/* Opera 4-6 */
white-space: -o-pre-wrap;
/* Opera 7 */
word-wrap: break-word;
/* Internet Explorer 5.5+ */
word-break: break-all;
overflow: hidden;
font-size: 12px;
font-weight: 400;
font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'microsoft yahei', arial, STHeiTi, sans-serif;
}
.content {
padding: 16px 0;
background: #fff;
&.loading {
padding-top: 30px;
}
.r-title {
margin-bottom: 40px;
font-size: 24px;
text-align: center;
color: #333;
}
.info {
padding: 20px 16px;
border: 1px solid #e1e6f2;
}
.l-title {
display: flex;
align-items: center;
@ -373,43 +318,52 @@ samp {
font-size: 14px;
color: #333;
background-color: #f7f9fc;
img {
margin-right: 5px;
}
}
.info-list {
display: flex;
flex-wrap: wrap;
padding: 10px 0 0 20px;
li {
display: inline-flex;
width: 25%;
padding: 0 10px;
margin-bottom: 34px;
}
&.edit {
li {
align-items: center;
}
}
label {
font-size: 14px;
color: #333;
white-space: nowrap;
}
span {
min-width: 150px;
padding: 0 10px 3px;
border-bottom: 1px solid #e1e6f2;
}
/deep/.el-input {
width: 174px;
}
}
.score-wrap {
position: relative;
min-width: 150px;
border-bottom: 1px solid #e1e6f2;
em {
position: absolute;
top: -12px;
@ -419,18 +373,21 @@ samp {
font-weight: 600;
color: #0b1d30;
}
img {
position: absolute;
bottom: -15px;
left: 0;
}
}
/deep/.el-textarea .el-textarea__inner,
.pre-wrap {
min-height: 72px;
padding: 10px 16px;
font-size: 14px;
color: #333;
&.edit {
color: #abb3c6;
border: 1px solid #cacfdb;
@ -438,34 +395,42 @@ samp {
background-color: #f6f7f9;
}
}
/deep/ .table th {
background-color: #e1eaff !important;
.cell {
line-height: 35px;
color: #555555;
}
}
}
/deep/ .el-table {
width: 100%;
.el-table__header-wrapper table,
.el-table__body-wrapper table {
width: 100% !important;
}
.el-table__body,
.el-table__footer,
.el-table__header {
table-layout: auto;
}
}
.result-pic {
margin: 10px 0;
}
@media (max-width: 1650px) {
.wrap {
padding: 12px 200px 20px;
}
}
@media (max-width: 1430px) {
.wrap {
padding: 12px 100px 20px;

@ -175,6 +175,71 @@ export default {
component: () => import('@/pages/manage/list/dayEnd/branchDayEnd.vue'),
meta: { title: '日终管理网点日终扎帐' },
},
// 代理业务
{
name: `${pre}agent`,
path: `agent`,
component: () => import('@/pages/manage/list/agent/agent.vue'),
meta: { title: '代理业务' },
},
// 网上银行
{
name: `${pre}onlineBank`,
path: `onlineBank`,
component: () => import('@/pages/manage/list/onlineBank/openAccount.vue'),
meta: { title: '网上银行' },
},
// 外汇业务
{
name: `${pre}foreignExchange`,
path: `foreignExchange`,
component: () => import('@/pages/manage/list/foreignExchange/foreignExchange.vue'),
meta: { title: '外汇业务' },
},
// 个人贷款列表
{
name: `${pre}personalLoans`,
path: `personalLoans`,
component: () => import('@/pages/manage/list/personalLoans'),
meta: { title: '个人贷款' },
},
// 个人贷款详情
{
path: `personalLoans-detail`,
component: () => import('@/pages/manage/list/personalLoans/detail'),
meta: { title: '个人贷款' },
},
{
name: `${pre}corporateLoans`,
path: `corporateLoans-application`,
component: () => import('@/pages/manage/list/corporateLoans/application'),
meta: { title: '公司贷款贷款申请' },
},
{
path: `corporateLoans-loan`,
component: () => import('@/pages/manage/list/corporateLoans/loan'),
meta: { title: '公司贷款贷款放款' },
},
{
path: `corporateLoans-detail`,
component: () => import('@/pages/manage/list/corporateLoans/detail'),
meta: { title: '公司贷款贷款详情' },
},
{
path: `corporateLoans-repayment`,
component: () => import('@/pages/manage/list/corporateLoans/repayment'),
meta: { title: '公司贷款贷款放款' },
},
{
path: `corporateLoans-management`,
component: () => import('@/pages/manage/list/corporateLoans/management'),
meta: { title: '公司贷款贷后管理' },
},
{
path: `corporateLoans-apply`,
component: () => import('@/pages/manage/list/corporateLoans/apply'),
meta: { title: '公司贷款新建贷款申请' },
},
]
}

@ -20,21 +20,6 @@ const frameIn = [
lobbyManager
]
/**
* 在主框架之外显示
*/
// const frameOut = [
// // 登录
// {
// path: '/login',
// name: 'login',
// meta: {
// title: '登录'
// },
// component: () => import('@/pages/account/login')
// }
// ];
/**
* 错误页面

@ -16,7 +16,7 @@ const Setting = {
showProgressBar: true,
// 接口请求地址
// apiBaseURL: env === 'development' ? 'http://192.168.31.125:8888' : 'http://121.37.12.51:8000',
apiBaseURL: env === 'development' ? 'http://192.168.31.151:9000' : 'http://www.liuwanr.cn',
apiBaseURL: env === 'development' ? 'http://192.168.31.151:9000' : location.origin,
// 接口请求返回错误时,弹窗的持续时间,单位:秒
modalDuration: 3,
// 接口请求返回错误时,弹窗的类型,可选值为 Message 或 Notice
@ -35,6 +35,7 @@ const Setting = {
* sessionStorage里username的key
*/
usernameKey: 'bank_username',
isDev: process.env.NODE_ENV === 'development',
/**
* 系统id
*/

@ -1,7 +1,3 @@
/* 银行系统 */
/* 所有物品名字 这里能将东西查找出来并渲染上物品栏 */
const allGoods = {
469: { name: '预留印鉴卡(一)', src: require('@/assets/img/goods/预留印鉴卡.png'), id: 469 },
@ -90,7 +86,26 @@ const allGoods = {
701: { name: '现金支票回单', src: require('@/assets/img/goods/xjzp.png'), id: 701 },
596: { name: '银行承兑协议一联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 596 },
702: { name: '银行承兑协议二联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 702 },
597: {name:'银行承兑协议三联',src:require('@/assets/img/goods/银行承兑协议.png'),id:597}
597: { name: '银行承兑协议三联', src: require('@/assets/img/goods/银行承兑协议.png'), id: 597 },
770: { name: '资产负债表', src: require('@/assets/img/goods/zcfzb.jpg'), id: 770 },
771: { name: '损益表', src: require('@/assets/img/goods/syb.jpg'), id: 771 },
772: { name: '现金流量表', src: require('@/assets/img/goods/xjllb.jpg'), id: 772 },
804: { name: '法人身份证', src: require('@/assets/img/goods/idCard.png'), id: 804 },
805: { name: '抵押物房产证', src: require('@/assets/img/goods/khsqs.png'), id: 805 },
806: { name: '实际控制人婚姻情况证明(结/离婚证)', src: require('@/assets/img/goods/银行承兑协议.png'), id: 806 },
807: { name: '实际控制人配偶身份证复印件', src: require('@/assets/img/goods/khsqs.png'), id: 807 },
808: { name: '营业执照正本', src: require('@/assets/img/goods/ywsfpz.png'), id: 808 },
809: { name: '开户许可证(基本存款账户信息)', src: require('@/assets/img/goods/zcfzb.jpg'), id: 809 },
810: { name: '企业注册地址租赁合同或对应房产证', src: require('@/assets/img/goods/khsqs.png'), id: 810 },
811: { name: '公司章程', src: require('@/assets/img/goods/xjllb.jpg'), id: 811 },
812: { name: '公司股东证件复印件', src: require('@/assets/img/goods/syb.jpg'), id: 812 },
813: { name: '公章私章财务章', src: require('@/assets/img/goods/khsqs.png'), id: 813 },
814: { name: '公司近一年纳税证明', src: require('@/assets/img/goods/businessReportMissUser.png'), id: 814 },
815: { name: '公司近半年流水', src: require('@/assets/img/goods/khsqs.png'), id: 815 },
817: { name: '企业财务报表', src: require('@/assets/img/goods/businessSpecialApplication.png'), id: 817 },
818: { name: '贷款申请书', src: require('@/assets/img/goods/khsqs.png'), id: 818 },
819: { name: '征信授权书', src: require('@/assets/img/goods/zcfzb.jpg'), id: 819 },
// // 有图片的
// 407: {name:407,src:require('@/assets/img/goods/businessSpecialApplication.png'),id:407},
@ -164,7 +179,6 @@ const allDataFlow = {
capital, // 不知道是多少
withdrawType: 124, // 支取类别
withdrawWay: 125, // 支取方式
withdrawType: 124, // 支取类别
withdrawWay: 126, // 支取方式
depositTerm: 86,
monthDeposit: 100,
@ -187,7 +201,7 @@ const allDataFlow = {
isSettle: false,
// 票据号码
ticketNumber: '00242986',
'corporateClient': false,
corporateClient: false,
nowDepositNumber
}
@ -1348,7 +1362,156 @@ const myInitState = {
expireDate: '2022-12-29', // 到期日期
}
},
// 577, 银行承兑汇票签发
'业务三十三': {
id: 703,
name: '代理业务',
data: [13, 16],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
idNumber,
userName,
}
},
'业务三十四': {
id: 704,
name: '网上银行',
data: [13, 16],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
collectingCompany: '开卷教育有限公司',
transMoney: 200000,
assignDate: '2022-12-29',
ticketNumber: '00242930',
drawDate: '2022-06-30', // 出票日期
expireDate: '2022-12-29', // 到期日期
}
},
'业务三十五': {
id: 705,
name: '外汇业务',
data: [13, 16],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
'业务三十六': {
id: 844,
name: '个人贷款业务',
data: [13],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
'业务三十七': {
id: 893,
name: '公司贷款业务',
data: [770, 771, 772, 442, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 817, 818, 819],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
}
@ -1387,7 +1550,10 @@ export default {
idTypeList: [], // 身份证选项
accountManagementList: [],
outAccountWayList: [],
calculateWayList: []
calculateWayList: [],
fundingSourceList: [],
buyForeignPurposeList: [],
allCurrencyList: [],
},
// (要保存的业务数据):
@ -2545,10 +2711,164 @@ export default {
expireDate: '2022-12-29', // 到期日期
}
},
// 577, 银行承兑汇票签发
'业务三十三': {
id: 703,
name: '代理业务',
data: [13, 16],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
idNumber,
userName,
}
},
'业务三十四': {
id: 704,
name: '网上银行',
data: [13, 16],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
collectingCompany: '开卷教育有限公司',
transMoney: 200000,
assignDate: '2022-12-29',
ticketNumber: '00242930',
drawDate: '2022-06-30', // 出票日期
expireDate: '2022-12-29', // 到期日期
}
},
'业务三十五': {
id: 705,
name: '外汇业务',
data: [13, 16],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
'业务三十六': {
id: 844,
name: '个人贷款业务',
data: [13],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
'业务三十七': {
id: 893,
name: '公司贷款业务',
data: [770, 771, 772, 442, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 817, 818, 819],
needs: [],
isStamp: {
// '业务专用章': [ 411 ]
},
backPeople: [],
// backPeople: [ ],
cultureArr: [],
moneyBox: [], // 钱箱
needBackMoney: false, // 需要钱箱取钱
peopleSign: [], // 客户签字
cultureIn: [], // 传票栏
sealBox: [], // 印章盒
currencyDetector: [], // 验钞机
printer: [], // 打印机
resource: [], // 资料
importanceArr: [], // 重要空白凭证箱
commonArr: [], // 普通凭证箱
dataFlow: {
currency: 153,
goldLogo: 150,
voucherNumber,
}
},
},
// 初始化公共数据
allDataFlow: { ...allDataFlow },
isCredit: false,
creditIds: {},
creditImportIndex: 0,
creditImportIds: {},
},
mutations: {
// 设置tipDialog组件提示的信息。这个组件是根据UI设计的。
@ -2558,8 +2878,6 @@ export default {
// 页面开始的时候请求电脑录入的下拉框的数据 以供电脑中的下拉框使用
startPlay (state) {
// 开始时调用,获取下拉框的东西。
// 38
// accountManagementList
@ -2576,19 +2894,24 @@ export default {
76: 'isTranslate',
40: 'outAccountWayList',
39: 'calculateWayList',
122: 'fundingSourceList',
123: 'allCurrencyList',
124: 'buyForeignPurposeList',
}
for (const key in mapObj) {
const name = mapObj[key]
if (!state.selectList[name] || !state.selectList[name].length) {
getSubjectInfo({
subject_id: key
}).then((data) => {
const name = mapObj[key]
if(data.status == 200 && state.selectList[name].length===0){
if (!state.selectList[name]) state.selectList[name] = []
if (data.status == 200 && !state.selectList[name].length) {
state.selectList[name].push(...data.data.items);
}
}).catch((error) => { })
}
}
},
@ -2840,6 +3163,8 @@ export default {
stampSuccess = '454'
} else if (id === 411) {
judgeDelete = false
} else if (id === 469 || id === 470 || id === 471) {
stampSuccess = id
}
}
} else if (sealArr.length === 2) {
@ -2903,6 +3228,7 @@ export default {
}
const formList = JSON.parse(sessionStorage.getItem('stampList'))
const findIt = formList.findIndex(item => item.answerId === stampSuccess)
debugger
if (findIt === -1) {
formList.push({ "answerId": stampSuccess, "emptyOne": "", "emptyTwo": "", "operationIds": "285," + state.businessSelect[state.businessKey].id + ",287,8," + stampSuccess, "type": "" })
sessionStorage.setItem('stampList', JSON.stringify(formList))
@ -2921,7 +3247,7 @@ export default {
projectId: +projectId,
startTime: startTime,
}
debugger
addOperation(params).then((data) => {
// 给存款凭证盖收讫章 要特殊处理:盖完后去掉存款凭证,然后显示盖了章的存款凭条凭证联和存款凭条回单
if (sealArr[0] === '收讫章' && id === 17) {
@ -2998,6 +3324,30 @@ export default {
changeShowGoods (state, judge) {
state.showGoods = judge
},
// 信贷部的标识(综合柜台跟信贷部是同一个页面,通过该标识去区分是否信贷部)
setCredit (state, val) {
state.isCredit = val
},
// 缓存信用评估id
setCreditIds (state, val) {
state.creditIds = val
},
// 缓存公司贷款里导入报表的当前所点击的索引
setCreditImportIndex (state, val) {
state.creditImportIndex = val
},
// 缓存公司贷款导入报表的id
initCreditImportIds (state, val) {
state.creditImportIds = val
},
// 缓存公司贷款导入报表的id
setCreditImportIds (state, val) {
if (val) {
state.creditImportIds[state.creditImportIndex] = val
} else {
state.creditImportIds = {}
}
},
},
actions: {
},
@ -3021,6 +3371,13 @@ export default {
popId (state) {
return state.popId
},
// 获得当前的业务id和项目id
commonIds (state) {
return {
businessId: state.businessSelect[state.businessKey].id,
projectId: sessionStorage.getItem('projectId'),
}
},
// 获得当前业务的id,用来发送请求/获取缓存
businessId (state) {
return state.businessSelect[state.businessKey].id + ','
@ -3052,13 +3409,14 @@ export default {
// 调试容错采用if-else
const arr = []
if (state.businessKey !== '') {
for(const item of state.businessSelect[state.businessKey].data) {
let { data } = state.businessSelect[state.businessKey]
// if (!data.length) data = myInitState[state.businessKey].data // 物品栏为空则取默认的物品栏
console.log('当前物品栏:', state, myInitState[state.businessKey].data, data)
for (const item of data) {
if (state.businessKey == '业务七') {
if (item !== 23) {
arr.push(allGoods[item])
}
}else if(state.businessKey == '业务十一') {
arr.push(allGoods[item])
} else {
arr.push(allGoods[item])
}
@ -3114,8 +3472,6 @@ export default {
for (let item of state.businessSelect[state.businessKey].resource) {
arr.push(allGoods[item])
}
}else {
// return
}
return arr
},

@ -4,6 +4,8 @@ import util from '@/libs/util'
import { Message } from 'element-ui'
import { post, get, del, put } from '@/plugins/requests/index.js'
import api from '@/api'
import Cookie from 'js-cookie'
import router from '@/router'
/**
* 用户信息
@ -17,67 +19,33 @@ export default {
isManager: false
},
mutations: {
SET_INFO: (state, info) => {
if(info.avatar) state.avatar = info.avatar
state.schoolId = info.schoolId
state.userName = info.userName
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_MANAGER: (state, isManager) => {
state.isManager = isManager
},
},
actions: {
login({ state,commit }, userInfo) {
const { account, password, code, random } = userInfo
return new Promise((resolve, reject) => {
post(api.logins,{
account,
password,
code,
platform: Setting.platformId,
random,
}).then(res => {
setTimeout(() => {
post(api.saveRecord,{
type: 3,
}).then(res => {}).catch(res => {})
},3000)
if(res.status == 200){
util.local.set(Setting.tokenKey,res.data.token,1296000000)
util.successMsg('登录成功')
resolve()
}else{
util.errorMsg(res.message)
reject(res)
logout () {
const isAdmin = Cookie.get('manager')
let href = process.env.NODE_ENV === 'development' ?
`http://${location.hostname}:8082/#/` :
`${location.origin}${isAdmin ? '/admin' : ''}/#/`
if (location.origin === 'http://121.37.12.51') {
href = `http://121.37.12.51/${isAdmin ? 'admin' : 'student'}/#/`
}
}).catch(error => {
reject(error)
})
})
},
logout({ commit, state, dispatch }) {
return new Promise((resolve, reject) => {
util.local.remove(Setting.storeKey)
util.local.remove(Setting.tokenKey)
location.reload()
resolve()
})
},
setAvatar({ state,commit },avatar) {
commit('SET_AVATAR',avatar)
let data = {
userId: state.userId,
userAvatars: avatar
const { query } = router.app._route
let assessmentId = sessionStorage.getItem('assessmentId') || query.assessmentId
let competitionId = sessionStorage.getItem('competitionId') || query.competitionId
if (assessmentId != 'null' && assessmentId != null && assessmentId != '') {
href += `ass/list`
} else if (competitionId != 'null' && competitionId != null && competitionId != '') {
href += `match/details?id=${competitionId}`
} else {
const cid = sessionStorage.getItem('cid')
href += `station/preview?courseId=${cid}&curriculumName=银行项目&mallId=${router.currentRoute.query.mallId}`
}
post(api.userinfoUpdate,data).then(res => {}).catch(res => {})
sessionStorage.clear()
location.href = href
},
setInfo({ state,commit },info) {
commit('SET_INFO',info)
},
actions: {
setManager ({ state, commit }, isManager) {
commit('SET_MANAGER', isManager)
},

@ -290,3 +290,13 @@
}
}
}
.req {
margin-right: 10px;
font-size: 14px;
font-weight: 600;
color: #f00;
}
.el-loading-spinner .circular {
display: inline;
}

@ -0,0 +1,55 @@
/deep/.dia {
-webkit-box-shadow: 0;
box-shadow: 0 0 0 0 !important;
border: 0 !important;
border-radius: 1.5rem;
.el-dialog__header {
display: none;
}
.el-dialog__body {
padding-top: 0;
}
.dia-form {
.text {
text-align: left;
}
}
.popBtns {
display: flex;
justify-content: center;
align-items: center;
& > .btn {
width: 180px;
font-size: 18px;
}
}
}
.data-dia23 {
min-width: 40%;
background-color: white;
z-index: 9999;
.popBody {
// width: 100%;
min-height: 30vh;
padding-top: 50px;
padding-bottom: 20px;
display: flex;
align-items: center;
/deep/ .el-form {
height: 100%;
}
}
.dia-header {
height: 100%;
// position: relative;
.data-title {
width: 300px;
margin: 0 auto;
line-height: 72px;
text-align: center;
color: #fff;
font-size: 24px;
background: url(https://izhixinyun.com/images/dia-title.png) 0 0 / cover no-repeat;
}
}
}

@ -112,9 +112,11 @@ const ismoney = function(val, row, prop) {
if (val.length === 15) {
return
}
// debugger
// const reg = /([1-9]\d{0,9}|0)(\.\d{1,2})?$/ // 不用保留
const reg2 = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/; // 保留小数点后两位
if (reg2.test(Number(val)) || val === '') {
console.log(44)
row[prop] = val
}
}

@ -1,74 +0,0 @@
data() {
var validateEveryData = (rule, value, callback) => {
// console.log("callback", callback);
// console.log("校验某一项的规则对象", rule);
// console.log("用户输入的值", value);
// 对输入框类型的校验
if (value) {
if ((value + "").length > 0) {
// 用于回显时候的校验,因为输入的时候是字符串类型的数字,但是回显的时候可能就是数字
callback(); // cb函数告知校验结果,必须要加
return;
}
}
// 对下拉框类型的校验
if (
(rule.itemType == "selectOne") |
(rule.itemType == "selectTwo") |
(rule.itemType == "selectThree")
) {
if (value) {
if ((value + "").length > 0) {
// 注意枚举值是数字类型的,所以这里要转换成为字符串类型的
callback();
return;
}
}
}
// 根据不同的类型给予不同的校验提示
switch (rule.itemType) {
case "text":
callback(new Error(rule.labelName + "不能为空")); // 文本类型的规则简单,就是得填写
break;
case "number":
callback(new Error(rule.labelName + "请按规则填写")); // 数字类型的规则比较繁多
break;
case "textarea":
callback(new Error(rule.labelName + "不能为空")); // 文本域类型的规则也简单,就是得填写
break;
case "selectOne":
callback(new Error("请选择" + rule.labelName)); // 下拉框类型一 得填写
break;
case "selectTwo":
callback(new Error("请选择" + rule.labelName)); // 下拉框类型二 得填写
break;
case "selectThree":
callback(new Error("请选择" + rule.labelName)); // 下拉框类型三 多选数组得填写
break;
case "dateRange":
callback(new Error("请选择" + rule.labelName + "范围")); // 下拉框类型三 多选数组得填写
break;
default:
break;
}
};
return {
// 此对象用于存储各个下拉框的数组数据值,其实也可以挂在vue的原型上,不过个人认为写在data中好些
selectTwoOptionsObj: {},
// 用于下拉框加载时的效果
loadingSelect: false,
// 绑定的数据
form: {},
// 校验规则
validateEveryData: validateEveryData,
};
},
作者水冗水孚
链接https://juejin.cn/post/7060322827148197895
来源稀土掘金
著作权归作者所有商业转载请联系作者获得授权非商业转载请注明出处

264886
test2.js

File diff suppressed because it is too large Load Diff

@ -1,35 +1,5 @@
const Setting = require('./src/setting.env')
// 引入等比适配插件
const px2rem = require('postcss-px2rem')
module.exports = {
publicPath: './',
//配置跨域请求
devServer: {
open: true, //是否自动打开浏览器
https: false, //是否开启https
hotOnly: false,
proxy: { // 配置跨域
'/api': {
target: 'http://192.168.31.125:9000', //请求接口域名
ws: true,
secure: false,
changOrigin: true, //是否允许跨越
pathRewrite: {
'^/api': ''
}
}
},
before: app => { }
}
}
// 配置基本大小
const postcss = px2rem({
// 基准大小 baseSize,需要和rem.js中相同
remUnit: 16
})
// 使用等比适配插件
module.exports = {
lintOnSave: true,
css: {
@ -39,10 +9,11 @@ module.exports = {
},
}
},
publicPath: Setting.publicPath,
  outputDir: Setting.outputDir,
  assetsDir: Setting.assetsDir,
publicPath: Setting.publicPath,
outputDir: Setting.outputDir,
assetsDir: Setting.assetsDir,
devServer: {
port: 8093
}
},
productionSourceMap: false,
}
Loading…
Cancel
Save