/** * Created by Mai on 2017/7/28. * Modified by CSL on 2017/08/21. * 整合清单、定额的计算程序,代码合并、类合并、剔除多余单元。 */ let calcProgramSetting ={ "emptyRows":0, "headRows":1, "headRowHeight":[ 35 ], "cols":[ { "width":75, "readOnly": true, "head":{ "titleNames":["序号"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"serialNo", "vAlign":1, "hAlign":1, "font":"Arial" } }, { "width":75, "readOnly": false, "head":{ "titleNames":["费用代号"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"code", "vAlign":1, "hAlign":0, "font":"Arial" } }, { "width":200, "readOnly":false, "head":{ "titleNames":["名称"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"name", "vAlign":1, "hAlign":0, "font":"Arial" } }, { "width":280, "readOnly":false, "head":{ "titleNames":["计算基数"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"dispExpr", "vAlign":1, "hAlign":0, "font":"Arial" } }, { "width":220, "readOnly":false, "head":{ "titleNames":["基数说明"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"statement", "vAlign":1, "hAlign":0, "font":"Arial" } }, { "width":80, "readOnly": false, "head":{ "titleNames":["费率"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"feeRate", "vAlign":1, "hAlign":2, "font":"Arial" } }, { "width": 100, "readOnly":true, "head":{ "titleNames":["单价"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"unitFee", "vAlign":1, "hAlign":2, "font":"Arial" } }, { "width":100, "readOnly":true, "head":{ "titleNames":["合价"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"totalFee", "vAlign":1, "hAlign":2, "font":"Arial" } }, { "width":80, "readOnly": true, "head":{ "titleNames":["费用类别"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"type", "vAlign":1, "hAlign":0, "font":"Arial" } }, { "width":120, "readOnly":false, "head":{ "titleNames":["备注"], "spanCols":[1], "spanRows":[1], "vAlign":[1], "hAlign":[1], "font":["Arial"] }, "data":{ "field":"memo", "vAlign":1, "hAlign":0, "font":"Arial" } } ] }; let calcProgramObj = { sheet: null, treeNode: null, setting: { header: [ {headerName: "费用代号", headerWidth: CP_Col_Width.code, dataCode: "code", dataType: "String", hAlign: "left"}, {headerName: "费用名称", headerWidth: CP_Col_Width.name, dataCode: "name", dataType: "String"}, {headerName: "计算基数", headerWidth: CP_Col_Width.dispExprUser, dataCode: "dispExprUser", dataType: "String"}, {headerName: "费率", headerWidth: CP_Col_Width.feeRate, dataCode: "feeRate", dataType: "Number"}, // precision: 3 {headerName: "单价", headerWidth: CP_Col_Width.unitFee, dataCode: "unitFee", dataType: "Number"}, // execRst {headerName: "合价", headerWidth: CP_Col_Width.totalFee, dataCode: "totalFee", dataType: "Number"}, {headerName:"费用类别", headerWidth:CP_Col_Width.displayFieldName, dataCode:"displayFieldName", dataType: "String", hAlign: "center"}, {headerName: "基数说明", headerWidth: CP_Col_Width.statement, dataCode: "statement", dataType: "String"}, {headerName: "备注", headerWidth: CP_Col_Width.memo, dataCode: "memo", dataType: "String"} ], view: { comboBox: [], lockColumns: [0,1,2,3,4,5,6,7,8], colHeaderHeight: CP_Col_Width.colHeader, rowHeaderWidth: CP_Col_Width.rowHeader } }, initSheet: function (sheet) { var me = this; me.sheet = sheet; sheetCommonObj.initSheet(me.sheet, me.setting, 1); }, showData: function (treeNode) { var me = this; me.treeNode = treeNode; let isRation = treeNode.sourceType === projectObj.project.Ration.getSourceType(); let isBill = treeNode.sourceType === projectObj.project.Bills.getSourceType(); let isLeafBill = isBill && treeNode.source.children && treeNode.source.children.length === 0; let isBillPriceCalc = projectObj.project.projSetting.billsCalcMode === billsPrice; if (isRation) { // 清单单价计算模式下的叶子清单:取自己的计算程序ID,找到自己的计算程序计算。 projectObj.project.calcProgram.calculate(treeNode); me.datas = me.treeNode.data.calcTemplate.calcItems; } else if (isLeafBill) { let childrenType = ''; if (treeNode.children && treeNode.children.length > 0){ if (treeNode.children[0].sourceType == projectObj.project.Ration.getSourceType()){ childrenType = 'ration'; } else if (treeNode.children[0].sourceType == projectObj.project.VolumePrice.getSourceType()){ childrenType = 'volumePrice'; }; }else{ childrenType = 'formula'; }; if (childrenType == 'ration'){ if (isBillPriceCalc){ // 清单单价计算模式下的叶子清单:取自己的计算程序ID,找到自己的计算程序计算。 projectObj.project.calcProgram.calculate(treeNode); me.datas = me.treeNode.data.calcTemplate.calcItems; }else{ // 前三种计算模式下的叶子清单:汇总定额的计算程序的费用类别 me.datas = projectObj.project.calcProgram.gatherRationFeeTypes(treeNode); }; }else if (childrenType == 'volumePrice'){ me.datas = []; }else if (childrenType == 'formula'){ me.datas = []; }; } else if (isBill){ // 父清单:汇总子清单的费用类别 me.datas = projectObj.project.calcProgram.gatherBillFeeTypes(treeNode); }; sheetCommonObj.initSheet(me.sheet, me.setting, me.datas.length); sheetCommonObj.showData(me.sheet, me.setting, me.datas); // SheetDataHelper.loadSheetHeader(calcProgramSetting, me.sheet); // SheetDataHelper.loadSheetData(calcProgramSetting, me.sheet, baseCalcField); }, clearData: function (){ var me = this; me.treeNode = null; sheetCommonObj.cleanSheet(me.sheet, me.setting, -1); } };