BopTools.js 3 KB
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;
}