import { getCityCodeList, getAreaCodeList } from '@/api/product' import { MessageBox, Message } from 'element-ui' import { setStorage, getStorage, removeStorage } from "@/utils/storage"; export default { tabInfo(state, target, self) { const applyInfo = self.$store.state.product.applyInfo const { flowno } = applyInfo switch (state) { case '借款人信息': self.$router.replace({ path: `/${target}/borrower` }) break; case '共借人信息': self.$router.replace({ path: `/${target}/coBorrower` }) break; case '股东信息': self.$router.replace({ path: `/${target}/shareholderInfo` }) break; case '质押物信息': self.$router.replace({ path: `/${target}/pledgeInfo` }) break; case '授信额度信息': self.$router.replace({ path: `/${target}/creditLineInfo` }) break; case '费用项配置': self.$router.replace({ path: `/${target}/costItemConfig` }) break; case '额度信息': self.$router.replace({ path: `/CreditFlowPublic/quotaInformation` }) break; case '担保人信息': self.$router.replace({ path: `/${target}/guarantor` }) break; case '反担保人信息': self.$router.replace({ path: `/${target}/counterGuarantor` }) break; case '卖方信息': self.$router.replace({ path: `/${target}/seller` }) break; case '买方信息': self.$router.replace({ path: `/${target}/buyer` }) break; case '物业信息': self.$router.replace({ path: `/${target}/property` }) break; case '借款企业信息': self.$router.replace({ path: `/${target}/loanEnterprise` }) break; case '应收账款信息': self.$router.replace({ path: `/${target}/receivables` }) break; case '再保理信息': self.$router.replace({ path: `/${target}/reFactoring` }) break; case '准入项目信息': self.$router.replace({ path: `/${target}/commission` }) break; case '票据信息': self.$router.replace({ path: `/${target}/bill` }) break; case '核心企业信息': self.$router.replace({ path: `/coreEnterprise` }) break; case '贷款申请信息': self.$router.replace({ path: `/${target}/loan` }) break; case '基础合同信息': self.$router.replace({ path: `/${target}/baseContract` }) break; case '主/共借人征信信息': self.$router.replace({ path: `/${target}/credit` }) break; case '预收客户息费': self.$router.replace({ path: `/preChargeCustomerInterest` }) break; case '预收商户贴息': self.$router.replace({ path: `/preChargeMerchantDiscount` }) break; case '本金回款信息': self.$router.replace({ path: `/${target}/receivable` }) break; case '息费结算信息': self.$router.replace({ path: `/${target}/interestSettle` }) break; case '还款信息': self.$router.replace({ path: `/${target}/repayment` }) break; case '回款信息': self.$router.replace({ path: `/${target}/moneyBack` }) break; case '审批意见': flowno == 'ZBDEntInfoAlterFlow' ? self.$router.replace({ path: '/ZBDEntInfoAlterFlow/opinion' }) : self.$router.replace({ path: '/opinion' }) break; case '影像资料信息': self.$router.replace({ path: '/imageData' }) break; case '电子合同信息': self.$router.replace({ path: '/contract' }) break; case '风控审批信息': self.$router.replace({ path: '/riskApproval' }) break; case '历史审批意见': self.$router.replace({ path: '/historicalOpinions' }) break; case '历史贷款信息': self.$router.replace({ path: '/historicalLoan' }) break; case '流程流转记录': self.$router.replace({ path: '/flowRecord' }) break; case '车辆信息': self.$router.replace({ path: `/${target}/vehicleData` }) break; case '车辆详情': self.$router.replace({ path: `/${target}/vehicleDetail` }) break; case '贷款车辆信息': self.$router.replace({ path: `/${target}/loanVehicles` }) break; case '抵押物信息': self.$router.replace({ path: `/${target}/collateral` }) break; case '沃土信息': self.$router.replace({ path: `/${target}/owner` }) break; case '征信信息': self.$router.replace({ path: `/${target}/pyCredit` }) break; case '店铺订单信息': self.$router.replace({ path: `/${target}/storeOrderInfo` }) break; case '预审批信息': self.$router.replace({ path: `/${target}/preApprovalInfo` }) break; default: break; } }, eachRoute(path, that) { switch (path) { case "borrower": that.eachArr('借款人信息') break; case "coBorrower": that.eachArr('共借人信息') break; case "shareholderInfo": that.eachArr('股东信息') break; case "pledgeInfo": that.eachArr('质押物信息') break; case "creditLineInfo": that.eachArr('授信额度信息') break; case "costItemConfig": that.eachArr('费用项配置') break; case "quotaInformation": that.eachArr('额度信息') break; case "guarantor": that.eachArr('担保人信息') break; case "counterGuarantor": that.eachArr('反担保人信息') break; case "seller": that.eachArr('卖方信息') break; case "buyer": that.eachArr('买方信息') break; case "property": that.eachArr('物业信息') break; case "loanEnterprise": that.eachArr('借款企业信息') break; case "receivables": that.eachArr('应收账款信息') break; case "reFactoring": that.eachArr('再保理信息') break; case "commission": that.eachArr('准入项目信息') break; case "bill": that.eachArr('票据信息') break; case "coreEnterprise": that.eachArr('核心企业信息') break; case "loan": that.eachArr('贷款申请信息') break; case "baseContract": that.eachArr('基础合同信息') break; case "imageData": that.eachArr('影像资料信息') break; case "credit": that.eachArr('主/共借人征信信息') break; case "preChargeCustomerInterest": that.eachArr('预收客户息费') break; case "preChargeMerchantDiscount": that.eachArr('预收商户贴息') break; case "receivable": that.eachArr('本金回款信息') break; case "interestSettle": that.eachArr('息费结算信息') break; case "repayment": that.eachArr('还款信息') break; case "moneyBack": that.eachArr('回款信息') break; case "contract": that.eachArr('电子合同信息') break; case "opinion": that.eachArr('审批意见') break; case "riskApproval": that.eachArr('风控审批信息') break; case "historicalOpinions": that.eachArr('历史审批意见') break; case "historicalLoan": that.eachArr('历史贷款信息') break; case "flowRecord": that.eachArr('流程流转记录') break; case "vehicleData": that.eachArr('车辆信息') break; case 'vehicleDetail': that.eachArr('车辆详情') break; case 'loanVehicles': that.eachArr('贷款车辆信息') break; case 'collateral': that.eachArr('抵押物信息') break; case 'owner': that.eachArr('沃土信息') break; case 'pyCredit': that.eachArr('征信信息') break; case 'storeOrderInfo': that.eachArr('店铺订单信息') break case 'preApprovalInfo': that.eachArr('预审批信息') break default: break; } }, workerTabInfo(state, target, self) { console.log('common workerTabInfo', state, target, self) switch (state) { case '项目基本信息': self.$router.replace({ path: `/CreditFlowPublic/projectCompanyInformation` }) break; case '项目进度信息': self.$router.replace({ path: `/CreditFlowPublic/projectProgressInformation` }) break; case '项目产值信息': self.$router.replace({ path: `/CreditFlowPublic/projectOutputValueInformation` }) break; case '工人信息': self.$router.replace({ path: `/CreditFlowPublic/projectWorkerInfo` }) break; case '电子合同信息': self.$router.replace({ path: '/CreditFlowPublic/workerContract' }) break; case '认领流水': self.$router.replace({ path: '/CreditFlowPublic/projectClaimFlow' }) break; case '放款明细': self.$router.replace({ path: '/CreditFlowPublic/projectDisbursementDetail' }) break; case '影像资料信息': self.$router.replace({ path: '/CreditFlowPublic/imageData' }) break; case '审批意见': self.$router.replace({ path: '/CreditFlowPublic/opinion' }) break; case '历史审批意见': self.$router.replace({ path: '/CreditFlowPublic/historicalOpinions' }) break; case '历史贷款信息': self.$router.replace({ path: '/CreditFlowPublic/historicalLoan' }) break; case '流程流转记录': self.$router.replace({ path: '/CreditFlowPublic/flowRecord' }) break; default: break; } }, workerEachRoute(path, that) { console.log('common workerEachRoute', path, that) switch (path) { case "projectCompanyInformation": that.eachArr('项目基本信息') break; case "projectProgressInformation": that.eachArr('项目进度信息') break; case "projectOutputValueInformation": that.eachArr('项目产值信息') break; case "projectWorkerInfo": that.eachArr('工人信息') break; case "workerContract": that.eachArr('电子合同信息') break; case "projectClaimFlow": that.eachArr('认领流水') break; case "projectDisbursementDetail": that.eachArr('放款明细') break; case "imageData": that.eachArr('影像资料信息') break; case "opinion": that.eachArr('审批意见') break; case "historicalOpinions": that.eachArr('历史审批意见') break; case "historicalLoan": that.eachArr('历史贷款信息') break; case "flowRecord": that.eachArr('流程流转记录') break; default: break; } }, vLoanTabInfo(state, target, self) { switch (state) { case '主授信人信息': self.$router.replace({ path: `/CreditFlowPublic/mainCreditInfo` }) break; case '担保人信息': self.$router.replace({ path: `/CreditFlowPublic/mainCreditGuarantor` }) break; case '和解信息': self.$router.replace({ path: `/CreditFlowPublic/mainCreditReconcile` }) break; case '电子合同信息': self.$router.replace({ path: '/CreditFlowPublic/vLoanContract' }) break; case '主授信人还款计划': self.$router.replace({ path: '/CreditFlowPublic/mainCreditRepaymentPlan' }) break case '还款情况': self.$router.replace({ path: '/CreditFlowPublic/mainCreditRepaymentStatus' }) break case '履约情况': self.$router.replace({ path: '/CreditFlowPublic/mainCreditComplianceStatus' }) break case '借款人基本信息': self.$router.replace({ path: '/CreditFlowPublic/mainCreditCustomerBasicInfo' }) break; case '影像资料信息': self.$router.replace({ path: '/CreditFlowPublic/vLoanImageData' }) break; case '审批意见': self.$router.replace({ path: '/CreditFlowPublic/vLoanOpinion' }) break; case '历史审批意见': self.$router.replace({ path: '/CreditFlowPublic/vLoanHistoricalOpinions' }) break; case '流程流转记录': self.$router.replace({ path: '/CreditFlowPublic/vLoanFlowRecord' }) break; } }, vLoanEachRoute(path, that) { switch (path) { case "mainCreditInfo": that.eachArr('项目基本信息') break; case "mainCreditGuarantor": that.eachArr('担保人信息') break; case "mainCreditReconcile": that.eachArr('和解信息') break; case "vLoanContract": that.eachArr('电子合同信息') break; case 'mainCreditRepaymentPlan': that.eachArr('主授信人还款计划') break case 'mainCreditRepaymentStatus': that.eachArr('还款情况') break case 'mainCreditComplianceStatus': that.eachArr('履约情况') break case "mainCreditCustomerBasicInfo": that.eachArr('借款人基本信息') break; case "vLoanImageData": that.eachArr('影像资料信息') break; case "vLoanOpinion": that.eachArr('审批意见') break; case "vLoanHistoricalOpinions": that.eachArr('历史审批意见') break; case "vLoanFlowRecord": that.eachArr('流程流转记录') break; } }, // 点击下一步进行校验 validateForm(array) { let flag = true for (let i = 0; i < array.length; i++) { array[i].validate(valid => { if (!valid) { flag = false } }); if (!flag) { Message.warning('当前页面存在必填项未录入或数据录入错误,请检查!') return { flag: flag, index: i }; } } return { flag: flag } }, // 规则校验 validate(code) { // 中文名称校验 var reg = /^(\u3007|[\u3400-\u9FFF]|[\uE000-\uF8FF]|[\uD840-\uD87F][\uDC00-\uDFFD]|[\uD880-\uD8BF][\uDC00-\uDFFD])+(\u00B7(\u3007|[\u3400-\u9FFF]|[\uE000-\uF8FF]|[\uD840-\uD87F][\uDC00-\uDFFD]|[\uD880-\uD8BF][\uDC00-\uDFFD])+)*$/ // var reg = /^[\u4E00-\u9FA5\uf900-\ufa2d]{1,50}[\.]{0,1}[\u4E00-\u9FA5\uf900-\ufa2d]{1,50}$/ if (code == 'name') { return { pattern: reg, message: `格式不正确`, trigger: 'blur' } } // 手机号码校验 if (code == 'phone') { return { pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/, message: `格式不正确`, trigger: 'blur' } } // 身份证号码校验 if (code == 'identity') { return { pattern: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/, message: `格式不正确`, trigger: 'blur' } } // 电话格式 if (code == 'telephone') { return { pattern: /^[0-9]([-0-9]+)$/, message: `格式不正确`, trigger: 'blur' } } // 金额校验 if (code == 'amount') { return { pattern: /^(([1-9][0-9]{0,2}(,\d{3})*)|0)(\.\d{1,2})?$/, message: `格式不正确`, trigger: 'blur' } } // 纯数字校验 if (code == 'number') { return { pattern: /^\d+$/, message: `格式不正确`, trigger: 'blur' } } // 银行卡号校验 if (code == 'bankNo') { return { pattern: /^[0-9]{16,19}$/, message: `格式不正确`, trigger: 'blur' } } // 银行户名校验 if (code == 'bankName') { return { pattern: /^[\u4E00-\u9FA5]{1,100}$/, message: `格式不正确`, trigger: 'blur' } } // 邮箱校验 if (code == 'email') { return { pattern: /^[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/, message: `格式不正确`, trigger: 'blur' } } //小数,开头0-9不为负的小数 if (code == 'ratePattern') { return { pattern: /^(0|[1-9]\d*)(\.\d+)?$/, message: `格式不正确`, trigger: 'blur' } } }, // 自定义身份证校验 checkCertid(certtype, value, callback) { if (!(/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test(value)) && certtype == '01') { callback(new Error('证件号码格式不正确')); } else { if (value.length > 50 && certtype != '01') { callback(new Error('证件号码格式不正确')); } else { callback() } } }, // 根据市获取区枚举值 getcity(val, key, form, callback) { if (val) { getAreaCodeList({ codeNo: 'AreaCode', itmeNo: val }).then(res => { callback(res.result) switch (key) { case 'pledgeInfoCountyList': form.county = '' callback(res.result) break case 'permanentcountyList': form.permanentcounty = '' callback(res.result) break; case 'companycountyList': form.companycounty = '' callback(res.result) break; case 'familycountyList': form.familycounty = '' callback(res.result) break; case 'kosekicountyList': form.kosekicounty = '' callback(res.result) break; case 'housecountyList': form.housecounty = '' callback(res.result) break; case 'registerareList': form.registerare = '' callback(res.result) break; case 'corporatecountyList': form.corporatecounty = '' callback(res.result) break; case 'cpncountyList': form.cpnDist = '' callback(res.result) break; case 'countyList': form.county = '' callback(res.result) break; default: break; } }) } }, // 根据省获取市枚举值 getprovince(val, key, form, callback) { if (val) { getCityCodeList({ codeNo: 'AreaCode', itmeNo: val }).then(res => { switch (key) { case 'pledgeInfoList': form.city = '' form.county = '' callback(res.result) break; case 'permanentcityList': form.permanentcity = '' form.permanentcounty = '' callback(res.result) break; case 'companycityList': form.companycity = '' form.companycounty = '' callback(res.result) break; case 'familycityList': form.familycity = '' form.familycounty = '' callback(res.result) break; case 'kosekicityList': form.kosekicity = '' form.kosekicounty = '' callback(res.result) break; case 'housecityList': form.housecity = '' form.housecounty = '' callback(res.result) break; case 'registercityList': form.registercity = '' form.registerare = '' callback(res.result) break; case 'putoutbankcityList': form.putoutbankcity = '' callback(res.result) break; case 'corporatecityList': form.corporatecity = '' callback(res.result) break; case 'cpncityList': form.cpnCity = '' form.cpnDist = '' callback(res.result) break; case 'projectcityList': form.projectCity = '' callback(res.result) break; case 'signatoryCityList': form.signatoryCity = '' callback(res.result) break; case 'cityList': form.city = '' form.county = '' callback(res.result) break; default: break; } }) } }, // 获取区枚举值 qryAreaCodeList(code) { return new Promise(resolve => { getAreaCodeList({ codeNo: 'AreaCode', itmeNo: code }).then(res => { resolve(res.result) }) }) }, // 获取市枚举值 qryCityCodeList(code) { return new Promise(resolve => { getCityCodeList({ codeNo: 'AreaCode', itmeNo: code }).then(res => { resolve(res.result) }) }) }, // 比较表单数据是否发生变化 compareFormData(oldData, newData, next, exitObj = []) { for (let i = 0; i < newData.length; i++) { for (const key in newData[i]) { // exitObj 个别字段不需要校验 if (oldData[i].hasOwnProperty(key) && exitObj.indexOf(key) < 0) { const flag = typeof newData[i][key] === 'object' ? JSON.stringify(newData[i][key]) != JSON.stringify(oldData[i][key]) : newData[i][key] != oldData[i][key] if (flag) { // 页面有数据未保存 MessageBox.confirm("当前有数据未保存, 是否放弃保存?", "提示", { confirmButtonText: '是', cancelButtonText: '否', closeOnClickModal: false, center: true }) .then(() => { next(); }) .catch(() => { }); return false; } } } } return true }, // 保存标记字段 saveField(applyInfo, name, formData) { let object = {}; if (getStorage(`${applyInfo.serialNo}`)) { object = JSON.parse(getStorage(`${applyInfo.serialNo}`)) } object[name] = formData setStorage(`${applyInfo.serialNo}`, object) }, comfirm(title, content, callback) { MessageBox.confirm(content, title, { confirmButtonText: '是', cancelButtonText: '否', closeOnClickModal: false, cancelButtonClass: 'cancelButton', center: true }).then(() => { callback(); }).catch(() => { }); }, alert(title, content, func) { MessageBox.alert(content, title, { confirmButtonText: '确定', center: true, callback: action => { func() } }); }, objectValueAllEmpty(object) { var isEmpty = true; Object.keys(object).forEach(function (x) { if (object[x] != null && object[x] != "") { isEmpty = false; } }); return isEmpty; }, // 金额格式化 formatMoney(value) { if (value) { value = parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(2) + ""; if (value == "NaN") return; let l = value.split(".")[0].split("").reverse(); let r = value.split(".")[1]; let t = ""; for (let i = 0; i < l.length; i++) { t += l[i] + ((i + 1) % 3 === 0 && i + 1 !== l.length ? "," : ""); } return t.split("").reverse().join("") + "." + r; } }, /** * 多个数字相加 解决小数点精确问题,加法最多支持4个数字相加 减法最多2个 * @param {第一个数字} num1 * @param {第二个数字} num2 * @param {第三个数字} num3 * @param {第四个数字} num4 * @param {类型 加:add,减:sub,乘:multi,除:div} type * @returns 数字 */ fixNumAdd(num1, num2, num3, num4, type) { var baseNum, baseNum1, baseNum2, baseNum3, baseNum4; // 乘法 if (type == 'multi') { try { baseNum += num1.toString().split(".")[1].length; } catch (e) { } try { baseNum += num2.toString().split(".")[1].length; } catch (e) { } return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum); } try { baseNum1 = num1.toString().split(".")[1].length; } catch (e) { baseNum1 = 0; } try { baseNum2 = num2.toString().split(".")[1].length; } catch (e) { baseNum2 = 0; } try { baseNum3 = num3.toString().split(".")[1].length; } catch (e) { baseNum3 = 0; } try { baseNum4 = num4.toString().split(".")[1].length; } catch (e) { baseNum4 = 0; } if (type == 'sub') { var precision;// 精度 precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2; return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision); } baseNum = Math.pow(10, Math.max(baseNum1, baseNum2, baseNum3, baseNum4)); return (num1 * baseNum + num2 * baseNum + num3 * baseNum + num4 * baseNum) / baseNum; }, finxAdd(...nums) { const precision = Math.max(...nums.map(num => { const [, decimals = ''] = String(num).split('.'); return decimals.length; })); const factor = Math.pow(10, precision); const sum = nums.reduce((acc, num) => acc + num * factor, 0); return (sum / factor).toFixed(precision); } }