// demodemo子表某字段求和公式 export default { execute:function(){ debugger console.log("进入到子表进行四则运算前端公式"); // if(arguments && arguments[0] && arguments[0].length > 1 && arguments[1]){ // let params = arguments[0], context = arguments[1], targetField = params[0] // if (targetField instanceof BillDataNode) { // let subTable = targetField.FieldTableCode // let tableObj = context.getTableType(subTable) // if (tableObj.type == "sub") { // let data = context.getSubData(tableObj.title) // if(data instanceof Array){ // let result = ''; // const iterator = data[data.length - 1] // // for (const iterator of data) { // // 初始化参数 // let lastIndex = 0, curIndex = 0, num1 = null, operator = null, num2 = null // // 获取参与运算的参数 // // 第一个参数为结果存放字段,故从第二个开始取 // curIndex = 1, lastIndex = curIndex + 2, num1 = params[curIndex] // while(curIndex < params.length - 1) { // // 取出运算符和第二个运算数 // while(curIndex < params.length - 1 && curIndex < lastIndex) { // curIndex++ // if (curIndex == lastIndex) { // num2 = params[curIndex] // } else { // operator = params[curIndex] // } // } // // 计算结果 // result = this.calculate(iterator, num1, operator, num2, result) // // 当运算符或者运算数2为空时结果为运算数1, 不再继续运算 // if (result == '') { // break // } // // 重置运算参数 // lastIndex = curIndex + 2 // num1 = null // operator = null // num2 = null // } // // iterator.setValue(targetField.FieldCode, result + '') // // } // return result; // // return 3254; // } // } // } // return 1000 // } }, /** * 获取运算结果 * @param {*} rowData * @param {*} num1 * @param {*} operator * @param {*} num2 * @param {*} tempResult */ calculate(rowData, num1, operator, num2, tempResult) { console.log('rowData.getValue(num1.FieldCode)', rowData.getValue(num1.FieldCode)) // let val1 = tempResult != '' ? tempResult : (num1 instanceof StaticDataNode ? Number(num1.StaticValue) : Number(rowData.getValue(num1.FieldCode))) // let val2 = num2 instanceof StaticDataNode ? Number(num2.StaticValue) : Number(rowData.getValue(num2.FieldCode)) // let symbol = operator.StaticValue // // 当运算符或者运算数2为空时结果为运算数1 // if ((!val1&&val1!=0) || !symbol || (!val2&&val2!=0)) { // return '' // } // let result = 0 // // 只有当参与运算的字段有值时运算,否则为0 // if ((val1||val1==0) && (val2||val2==0) && !isNaN(Number(val1 + '')) && !isNaN(Number(val2 + ''))) { // switch(symbol) { // case '+': // result = (Number(val1 + '') + Number(val2 + '')).toFixed(2) // break; // case '-': // result = (Number(val1 + '') - Number(val2 + '')).toFixed(2) // break; // case '*': // result = (Number(val1 + '') * Number(val2 + '')).toFixed(2) // break; // case '/': // result = val2==0?0:(Number(val1 + '') / Number(val2 + '')).toFixed(2) // break; // default: // result = '' // break; // } // } // return result return rowData.getValue(num1.FieldCode) }, getResultType:function(){ return FMR.ConstDataTypes.Float; } }