import Api from '~/service/Api'; export function wrapCallback(rules){ for(let key in rules){ let itemRules = rules[key] for(let item of itemRules){ if(!item){ continue } if(item.validator){ let oldvalidator = item.validator item.validator = (rule,value,callback)=>{ let count = 0 let res = oldvalidator(rule,value,(e)=>{ count++; callback(e) }) if(!(res && res.then) && !count){ //补偿callback callback() console.log(key + '有规则没有执行callback') } return res } } } } } export function mergeRules(ruleA,ruleB){ let rules = {} Object.assign(rules,ruleA) for(let key in ruleB){ if(rules[key]){ rules[key] = [...rules[key],...ruleB[key]] }else{ rules[key] = [...ruleB[key]] } } return rules } /** * 加载后台规则 * @param {当前需要绑定的this} _this * @param {交易码} trnName */ export async function loadRules(_this,trnName){ let rtnmsg = await Api.post("/report/bopnew/public/visitTransScript/"+trnName) if (rtnmsg.respCode === SUCCESS) { let ruleStr = rtnmsg.data ruleStr = ruleStr + "\nreturn checkRule;" console.log(ruleStr) let func = new Function('', ruleStr) let rules = func().call(_this) console.log(rules) return rules } return {} } export function filterRule(rules,okPath) { //有可能有些校验要排除,对应bd的mtabut的check按钮的事件处理 let arr = [] if(this.model.mtabut.basflg){ arr.push("recgrp.bas.") } if(this.model.mtabut.vrfflg){ arr.push("recgrp.vrf.") } if(this.model.mtabut.dclflg){ arr.push("recgrp.dcl.") } if(okPath && typeof okPath == 'string'){ arr.push(okPath) }else if(okPath && Array.isArray( okPath )){ arr = [...arr,...okPath] } let newRules = {} arr.forEach(path=>{ for(let key in rules){ if(key.startsWith(path)){ newRules[key] = rules[key] } } }) //过滤没勾选的情况的校验 return newRules } export function checkAmt(tamt,lamt,typ){ let flg=false; if(typ=='A'){ if(Number(this.model.recgrp.bas.fcyamt)==0 && Number(lamt)==0 && Number(this.model.recgrp.bas.othamt)==0){ flg=true; } } if(typ=='B'){ if((Number(this.model.recgrp.bas.fcyamt) + Number(this.model.recgrp.bas.othamt) + Number(lamt))>tamt){ flg=true; } } if(typ=='C'){ if((Number(this.model.recgrp.bas.fcyamt) + Number(this.model.recgrp.bas.othamt) + Number(lamt))!=tamt){ flg=true; } } return flg; } export function startsWithValue(fld , splstr) { var s=splstr.split("-"); for(var i in s){ if (s[i] && fld.startsWith(s[i])){ return true; } } return false; } export function startsWithValueUpper(fld , splstr) { return startsWithValue(fld.toUpperCase(),splstr); } export function indexGt(fld,str){ if(str && str.indexOf(fld)>0){ return true; } return false; }