// 判断子表某个字段值相同则提示不然保存前端公式 export default { execute: function () { // console.log("进入: 判断子表某个字段值是否相同前端公式"); // 表名 // 有一个则直接执行判断;三个则判断是否属于要判断的情况 ,属于则判断,否则false if (arguments[0][0] && arguments[0][1] && arguments[0][2]) { let subTable = arguments[0][0].FieldTableCode // 字段名 let subFieldCode = arguments[0][0].FieldCode // 主表 let targetField = arguments[0][1] let masterTable = arguments[0][1].FieldTableCode // 字段 let masterFieldCode = arguments[0][1].FieldCode // bill let context = arguments[1] // 字段值 let fieldValue = null if (targetField instanceof BillDataNode) { let masterObj = context.getTableType(masterTable) if (masterObj.type == 'master') { let masterData = context.getMasterData(masterObj.name) fieldValue = masterData.getValue(masterFieldCode).code } } let str = arguments[0][2].StaticValue let strNum = str.split(",") // 要判断是否重复的字段所在的表的所有字段 let tableObj = context.getTableType(subTable) let dataFun = context.getSubData(tableObj.title) let flag = 1 // 判断是否有相等字段 let num = 0 // 判断是否属于要判断的 // 一条以上数据进行判断 if (dataFun.length > 1) { for (let i = 0; i < strNum.length; i++) { if (fieldValue == strNum[i]) { for (let j = 0; j < dataFun.length; j++) { let _data1 = dataFun[j].getData() for (let k = j + 1; k < dataFun.length; k++) { let _data2 = dataFun[k].getData() if (_data1[subFieldCode].value === _data2[subFieldCode].value) { flag = 0 return false; } } } num = num + 1 } } } else if (dataFun.length <= 1) { return true } // 不用判断 if (num == 0) { return true } else{ if (flag == 1) { return true } } } else { let subTable = arguments[0][0].FieldTableCode // 字段名 let subFieldCode = arguments[0][0].FieldCode // bill let context = arguments[1] // 表所有字段 let tableObj = context.getTableType(subTable) let dataFun = context.getSubData(tableObj.title) let flag = 1 if (dataFun.length > 1) { for (let i = 0; i < dataFun.length; i++) { let _data1 = dataFun[i].getData() for (let j = i + 1; j < dataFun.length; j++) { let _data2 = dataFun[j].getData() if (_data1[subFieldCode].value === _data2[subFieldCode].value) { flag = 0 return false; } } } } else if (dataFun.length <= 1) { return true } if (flag === 1) { return true; } } }, getResultType:function(){ return FMR.ConstDataTypes.Bool; } }