1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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;
}