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);
|
}
|
}
|