
// 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;
    }
}