Jelajahi Sumber

套定额后实时计算。

Chenshilong 7 tahun lalu
induk
melakukan
78b6a5bce5

+ 12 - 2
web/building_saas/main/js/models/main_consts.js

@@ -36,10 +36,20 @@ const CP_Col_Width = {          // 多处计算程序界面的列宽统一设置
     totalFee: 90
 };
 
-treeNodeCalcType = {
+const treeNodeCalcType = {
     ctRationCalcProgram: 1,
     ctBillCalcProgram: 2,
     ctGatherRations: 3,
     ctGatherBills: 4,
     ctCalcBaseValue: 5
-};
+};
+
+const subSheetIndex = {
+    ssiRationGLJ: 0,
+    ssiRationCoe: 1,
+    ssiRationAssistant: 2,
+    ssiQuantityDetail: 3,
+    ssiCalcProgram: 4,
+    ssiMemo: 5,
+    ssiFeature: 6
+}

+ 9 - 1
web/building_saas/main/js/models/ration_glj.js

@@ -41,9 +41,11 @@ var ration_glj = {
         };
 
         ration_glj.prototype.getGljArrByRation = function (rationID) {
-            return this.datas.filter(function (data) {
+            let result =  this.datas.filter(function (data) {
                 return data.rationID === rationID;
             })
+            result = gljOprObj.combineWithProjectGlj(result);
+            return result;
         };
         ration_glj.prototype.getGatherGljArrByRations = function (rations) {
             let result = [];
@@ -109,6 +111,12 @@ var ration_glj = {
                 projectObj.project.ration_glj.datas = neRecodes;
             }
             gljOprObj.showRationGLJSheetData(true);
+            let node = project.mainTree.selected;
+            project.calcProgram.calculate(node);
+            project.calcProgram.saveNode(node);
+            if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
+                calcProgramObj.showData(node, false);
+            };
         };
         ration_glj.prototype.refreshAfterUpdate=function(data){
             var me = this;

+ 5 - 3
web/building_saas/main/js/views/calc_program_view.js

@@ -225,11 +225,13 @@ let calcProgramObj = {
         sheetCommonObj.initSheet(me.sheet, me.setting, 1);
     },
 
-    showData: function (treeNode) {
+    showData: function (treeNode, needCalc = true) {
         var me = this;
         me.treeNode = treeNode;
-        projectObj.project.calcProgram.calculate(treeNode);
-        projectObj.project.calcProgram.saveNode(treeNode);
+        if (needCalc){
+            projectObj.project.calcProgram.calculate(treeNode);
+            projectObj.project.calcProgram.saveNode(treeNode);
+        };
         me.datas = treeNode.data.calcTemplate.calcItems;
         sheetCommonObj.initSheet(me.sheet, me.setting, me.datas.length);
         sheetCommonObj.showData(me.sheet, me.setting, me.datas);

+ 15 - 4
web/building_saas/main/js/views/project_view.js

@@ -18,7 +18,7 @@ var projectObj = {
         gljOprObj.showDataIfRationSelect(node);
 
         // CSL.2017.07.25
-        if (SubActiveSheetNameIs('JSCX')) {
+        if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
             if (node.sourceType === project.Bills.getSourceType() || node.sourceType === project.Ration.getSourceType()) {
                 calcProgramObj.showData(node);
             } else {
@@ -247,9 +247,15 @@ var projectObj = {
     updateCode: function (node, value) {
         let project = projectObj.project;
         if (node.sourceType === project.Bills.getSourceType()) {
-            this.updateBillsCode(node, value);
+            this.updateBillsCode(node, value);   // 新清单不适合实时计算,下面套什么还不能确定,无数量计算也无意义
         } else if (node.sourceType === project.Ration.getSourceType()) {
-            this.updateRationCode(node, value);
+            this.updateRationCode(node, value);  // 新套定额适合实时计算
+            // 这里因异步问题暂时缺少工料机价格。该过程移到:ration_glj.js的refreshAfterSave方法中。
+            /*project.calcProgram.calculate(node);
+            project.calcProgram.saveNode(node);
+            if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
+                calcProgramObj.showData(node, false);
+            };*/
         }
     },
     updateCellValue: function (node, value, colSetting) {
@@ -258,12 +264,17 @@ var projectObj = {
             if (fieldName === 'code') {
                 projectObj.updateCode(node, value);
             } else if (fieldName === 'quantity' && project.quantity_detail.quantityEditChecking(value,node,fieldName)) {
+                if (value) {value = value.toDecimal(projectObj.project.Decimal.common.quantity);};
                 node.data.quantity = value;
                 project.calcProgram.calculate(node);
                 project.calcProgram.saveNode(node);
                 // projectObj.updateAndReCalculate(node, fieldName, value);
             } else if (fieldName === 'feesIndex.common.unitFee') {
-                projectObj.updateAndReCalculate(node, fieldName, value);
+                if (value) {value = value.toDecimal(projectObj.project.Decimal.common.unitFee);};
+                node.data.feesIndex.common.unitFee = value;
+                project.calcProgram.calculate(node);
+                project.calcProgram.saveNode(node);
+                // projectObj.updateAndReCalculate(node, fieldName, value);
             } else if(fieldName ==='feeRate'){
                 project.FeeRate.updateFeeRateFromBills(value,node,fieldName);
             }else {

+ 4 - 2
web/building_saas/main/js/views/sub_view.js

@@ -116,10 +116,12 @@ $("#linkTZJNR").click(function () {
     }
     gljOprObj.activeTab='#linkTZJNR';
 });
-function SubActiveSheetNameIs(sheetName){
-    let rst = subSpread.getActiveSheet().name() == sheetName;
+
+function activeSubSheetIs(idx){
+    let rst = subSpread.getActiveSheetIndex() == idx;
     return rst;
 }
+
 //弹出清单规则或定额库后导致subSpread和特征及内容spread显示出问题
 function refreshSubSpread(){
     if(pageCCOprObj.active){