|
@@ -457,6 +457,28 @@ function filterData(sourceData, handleCfg, prjData) {
|
|
|
let compRst = true;
|
|
|
let curComparePrjData = null;
|
|
|
let startIdx = 0;
|
|
|
+ let private_ref_join = function(refKey, targetDataKey, targetPropertyKey) {
|
|
|
+ let rst = null, objDataArr = null;
|
|
|
+ curComparePrjData = getModuleDataByKey(prjData, targetDataKey);
|
|
|
+ try {
|
|
|
+ if (curComparePrjData !== null) {
|
|
|
+ if (targetDataKey === "projectGLJ") {
|
|
|
+ objDataArr = curComparePrjData.data.gljList;
|
|
|
+ } else {
|
|
|
+ objDataArr = curComparePrjData.data;
|
|
|
+ }
|
|
|
+ for (let dtl of objDataArr) {
|
|
|
+ if (item[refKey] === dtl[targetPropertyKey]) {
|
|
|
+ rst = dtl;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ curComparePrjData = null;
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
for (let cfg of filterCfg[JV.PROP_FILTER_KEYS]) {
|
|
|
if (cfg[JV.PROP_FILTER_COMPARE_VAL]) {
|
|
|
//比较key值
|
|
@@ -464,10 +486,21 @@ function filterData(sourceData, handleCfg, prjData) {
|
|
|
if (keys.length > 1) {
|
|
|
let lastObj = item;
|
|
|
for (let i = 0; i < keys.length - 1; i++) {
|
|
|
- lastObj = item[keys[i]];
|
|
|
- if (!(lastObj)) {
|
|
|
- compRst = false;
|
|
|
- break;
|
|
|
+ if (keys[i].indexOf("ref_join(") === 0) {
|
|
|
+ let params = keys[i].slice(9, keys[i].length - 1).split(",");
|
|
|
+ if (params.length === 3) {
|
|
|
+ lastObj = private_ref_join(params[0], params[1], params[2]);
|
|
|
+ }
|
|
|
+ if (!(lastObj)) {
|
|
|
+ compRst = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ lastObj = item[keys[i]];
|
|
|
+ if (!(lastObj)) {
|
|
|
+ compRst = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (lastObj) {
|