Chenshilong 7 năm trước cách đây
mục cha
commit
f33aa3fa83

+ 137 - 1
web/building_saas/main/js/models/calc_program.js

@@ -5,6 +5,97 @@
  *  用到费率的规则必须有feeRateID属性,当有该属性时,会自动显示费率值。
  */
 
+let billDefaultTemplate = [
+    {
+        ID: 1,
+        serialNo: '一',
+        code: "A",
+        name: "定额直接费",
+        dispExpr: "A1+A2+A3",
+        statement: "人工费+材料费+机械费",
+        feeRate: null,
+        type: 'RationDirect',
+        memo: ''
+    },
+    {
+        ID: 2,
+        serialNo: '1',
+        code: "A1",
+        name: "人工费",
+        dispExpr: "H_J",
+        statement: "合计",
+        feeRate: 0,
+        type: 'labour',
+        memo: ''
+    },
+    {
+        ID: 3,
+        serialNo: '2',
+        code: "A2",
+        name: "材料费",
+        dispExpr: "H_J",
+        statement: "合计",
+        feeRate: 100,
+        type: 'material',
+        memo: ''
+    },
+    {
+        ID: 4,
+        serialNo: '3',
+        code: "A3",
+        name: "机械费",
+        dispExpr: "H_J",
+        statement: "合计",
+        feeRate: 0,
+        type: 'machine',
+        memo: ''
+    },
+    {
+        ID: 5,
+        serialNo: '二',
+        code: "A4",
+        name: "管理费",
+        dispExpr: "A",
+        statement: "定额直接费",
+        feeRate: 0,
+        type: 'management',
+        memo: ''
+    },
+    {
+        ID: 6,
+        serialNo: '三',
+        code: "B",
+        name: "利润",
+        dispExpr: "A",
+        statement: "定额直接费",
+        feeRate: 0,
+        type: 'profit',
+        memo: ''
+    },
+    {
+        ID: 7,
+        serialNo: '四',
+        code: "C",
+        name: "风险费用",
+        dispExpr: "",
+        statement: "",
+        feeRate: null,
+        type: 'risk',
+        memo: ''
+    },
+    {
+        ID: 8,
+        serialNo: '',
+        code: "",
+        name: "综合单价",
+        dispExpr: "A+B",
+        statement: "定额直接费+利润",
+        feeRate: NaN,
+        type: 'common',
+        memo: ''
+    }
+];
+
 class CalcProgram {
     constructor(project){
         this.project = project;
@@ -84,7 +175,6 @@ class CalcProgram {
         projectObj.mainController.refreshTreeNode([treeNode]);
     };
 
-
     initFees(treeNode){
         if (!treeNode.data.fees) {
             treeNode.data.fees = [];
@@ -170,4 +260,50 @@ class CalcProgram {
 
         return rst;
     };
+
+    getCalcDatas(treeNode){
+        let me = this;
+        let rst = [];
+        let isRation = treeNode.sourceType === me.project.Ration.getSourceType();
+        let isBill = treeNode.sourceType === me.project.Bills.getSourceType();
+        let isLeafBill = isBill && treeNode.source.children && treeNode.source.children.length === 0;
+        let isBillPriceCalc = me.project.projSetting.billsCalcMode === billsPrice;
+
+        if (isRation) {                 // 清单单价计算模式下的叶子清单:取自己的计算程序ID,找到自己的计算程序计算。
+            me.calculate(treeNode);
+            rst = treeNode.data.calcTemplate.calcItems;
+        }
+        else if (isLeafBill) {
+            let ct = '';
+            if (treeNode.children && treeNode.children.length > 0){
+                if (treeNode.children[0].sourceType == me.project.Ration.getSourceType()){
+                    ct = childrenType.ration;
+                }
+                else if (treeNode.children[0].sourceType == me.project.VolumePrice.getSourceType()){
+                    ct = childrenType.volumePrice;
+                };
+            }
+            else{
+                ct = childrenType.formula;
+            };
+
+            if (ct == childrenType.ration){
+                if (isBillPriceCalc){   // 清单单价计算模式下的叶子清单:取自己的计算程序ID,找到自己的计算程序计算。
+                    me.calculate(treeNode);
+                    rst = treeNode.data.calcTemplate.calcItems;
+                }else{                  // 前三种计算模式下的叶子清单:汇总定额的计算程序的费用类别
+                    rst = me.gatherFeeTypes(treeNode, CP_GatherType.rations);
+                };
+            }else if (ct == childrenType.volumePrice){
+                rst = [];
+            }else if (ct == childrenType.formula){
+                rst = [];
+            };
+        }
+        else if (isBill){    // 父清单:汇总子清单的费用类别
+            rst = me.gatherFeeTypes(treeNode, CP_GatherType.bills);
+        };
+
+        return rst;
+    }
 }

+ 7 - 0
web/building_saas/main/js/models/main_consts.js

@@ -38,4 +38,11 @@ const CP_Col_Width = {          // 多处计算程序界面的列宽统一设置
 const CP_GatherType = {
     rations: 'rations',
     bills: 'bills'
+};
+
+const childrenType = {
+    ration: 'ration',
+    bill: 'bill',
+    volumePrice: 'volumePrice',
+    formula: 'formula'
 };

+ 2 - 40
web/building_saas/main/js/views/calc_program_view.js

@@ -228,50 +228,12 @@ let calcProgramObj = {
     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.gatherFeeTypes(treeNode, CP_GatherType.rations);
-                };
-            }else if (childrenType == 'volumePrice'){
-                me.datas = [];
-            }else if (childrenType == 'formula'){
-                me.datas = [];
-            };
-        }
-        else if (isBill){    // 父清单:汇总子清单的费用类别
-            me.datas = projectObj.project.calcProgram.gatherFeeTypes(treeNode, CP_GatherType.bills);
-        };
-
+        me.datas = projectObj.project.calcProgram.getCalcDatas(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);
+        //  SheetDataHelper.loadSheetData(calcProgramSetting, me.sheet, baseCalcField);
     },
 
     clearData: function (){