Преглед на файлове

综合单价、综合合价修改

zhangweicheng преди 6 години
родител
ревизия
2c4454e3f5

+ 9 - 3
web/building_saas/main/js/models/calc_program.js

@@ -168,6 +168,12 @@ let calcTools = {
 
         return flagsArr.includes(flag);
     },
+    isFBFX:function (treeNode) {
+        return projectObj.project.Bills.isFBFX(treeNode);
+    },
+    isTechMeasure:function(treeNode){
+       return projectObj.project.Bills.isTechMeasure(treeNode)
+    },
     getChildrenFormulaNodes: function (self, allFormulaNodesArr, parentNodes){       // 获取结点parentNodes下有公式的子结点
         let nodes = [];
         for (let pn of parentNodes){
@@ -1760,7 +1766,8 @@ class CalcProgram {
             };
 
             // 第1、2部分以外的叶子清单在没有公式的情况下可以手工修改综合单价并参与计算。
-            if(!calcTools.isInheritFrom(treeNode, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE])){
+            // 2017-09-27 需求改了,除了第 1 、 2.2部分以外,都可以手工修改综合单价、综合合价并参与计算
+            if(!calcTools.isFBFX(treeNode) && !calcTools.isTechMeasure(treeNode)){ // if(!calcTools.isInheritFrom(treeNode, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE]))
                 if (treeNode.data.feesIndex && treeNode.data.feesIndex.common){
                     let ftObj = {};
                     ftObj.fieldName = 'common';
@@ -1768,8 +1775,7 @@ class CalcProgram {
                     ftObj.totalFee = (ftObj.unitFee * nQ).toDecimal(decimalObj.bills.totalPrice);
                     calcTools.checkFeeField(treeNode, ftObj);
                 }
-            }
-            else{
+            } else{
                 if (treeNode.data.fees && treeNode.data.fees.length > 0){
                     treeNode.data.fees = null;
                     treeNode.data.feesIndex = null;

+ 12 - 2
web/building_saas/main/js/views/main_tree_col.js

@@ -100,7 +100,18 @@ let MainTreeCol = {
             return node.data.subType != 201 && node.data.subType != 4 && node.data.subType != 5
         },
         commonUnitFee: function (node) {
-            return !(calcTools.isLeafBill(node) && !calcTools.isBill_DXFY(node) && !calcTools.isCalcBaseBill(node) && !calcTools.isInheritFrom(node, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE]));
+            // 09-29 zhang
+            let Bills =projectObj.project.Bills;
+            // 当前属于分部分项、施工技术措施项目,综合单价只读。
+            if(Bills.isFBFX(node)||Bills.isTechMeasure(node)){
+                return true;
+            }
+            // 不属于分部分项、施工技术措施项目的部分,如果不是叶子清单,或有基数计算/定额/量价/人材机 只读
+            if(!calcTools.isLeafBill(node)||calcTools.isCalcBaseBill(node)||node.children.length > 0){
+                return true;
+            }
+            return false;
+            //return !(calcTools.isLeafBill(node) && !calcTools.isBill_DXFY(node) && !calcTools.isCalcBaseBill(node) && !calcTools.isInheritFrom(node, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE]));
         },
         //根据节点、父节点类型判断是否可用计算基数
         calcBaseType: function (node) {
@@ -239,7 +250,6 @@ let MainTreeCol = {
     },
     cellType: {
         unit: function () {
-            //let combo = new GC.Spread.Sheets.CellTypes.ComboBox();
             let dynamicCombo = sheetCommonObj.getDynamicCombo(true);
             dynamicCombo.itemHeight(10).items(['m', 'm2', 'm3', 'km', 't', 'kg', '台班', '工日', '昼夜', '元', '项', '处', '个', '件',
                 '根', '组', '系统', '台', '套', '株', '丛', '缸', '支', '只', '块', '座', '对', '份', '樘', '攒', '榀']).editable(true);

+ 21 - 10
web/building_saas/main/js/views/project_view.js

@@ -197,7 +197,7 @@ var projectObj = {
         return value;
     },
     checkSpreadEditingText: function (editingText, colSetting) {
-        if (colSetting.data.field === 'contain') {//colSetting.data.field === 'quantity'
+        if (colSetting.data.field === 'contain'||colSetting.data.field === 'feesIndex.common.unitFee'|| colSetting.data.field === 'feesIndex.common.totalFee') {//colSetting.data.field === 'quantity'
             return this.checkFormulaValidField(editingText, colSetting);
         }
         else if (colSetting.data.field === 'programID') {
@@ -448,15 +448,29 @@ var projectObj = {
             else if(fieldName ==='contain'){//编辑含量
                 project.Ration.updateContain(value,node);
             }
-            else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee' || fieldName === 'programID' ||
+            else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee'||fieldName === 'feesIndex.common.totalFee' || fieldName === 'programID' ||
                 fieldName === 'subType' || fieldName === 'calcBase' || fieldName === 'isSubcontract'){
                 if (fieldName === 'quantity') {
                     quantityEditObj.checkingAndUpdate(editingText,node);
                    // project.quantity_detail.editMainTreeNodeQuantity(value,node,fieldName,editingText);
                     return;
                 }
-                else if (fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee') {
-                    if (value) {value = parseFloat(value).toDecimal(decimalObj.decimal("unitPrice", node))};
+                else if (fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee'||fieldName === 'feesIndex.common.totalFee') {
+                    if(isNaN(value)){//说明输入的是无效的字符
+                        //value == null && editingText!=null && editingText!=""
+                        alert("当前输入的数据类型不正确,请重新输入。");
+                        projectObj.mainController.refreshTreeNode([node]);
+                        return
+                    }
+                    if (value) {
+                        if(fieldName === 'feesIndex.common.unitFee')  value = parseFloat(value).toDecimal(decimalObj.decimal("unitPrice", node));
+                        if(fieldName === 'feesIndex.common.totalFee' && node.data.quantity){//修改了综合合价后,反算综合单价,然后再由计算程序算个综合合价出来
+                           let t_quantity = scMathUtil.roundForObj(node.data.quantity,getDecimal("quantity",node));
+                            value = scMathUtil.roundForObj(value,getDecimal("unitPrice", node));
+                            let unitfee = scMathUtil.roundForObj(value/t_quantity,getDecimal("totalPrice", node));
+                            calcTools.setFieldValue(node, 'feesIndex.common.unitFee', unitfee);
+                        }
+                    }
                 }
                 else if (fieldName === 'calcBase') {
                     //zhong
@@ -490,8 +504,7 @@ var projectObj = {
                     node.data.quantity =scMathUtil.roundForObj(node.data.quantity,getDecimal("quantity",node));
                 }
                 project.calcProgram.calcAndSave(node);
-            }
-            else {
+            } else {
                 if (node.sourceType === project.Bills.getSourceType()) {
                     project.Bills.updateField(node.source, fieldName, value, false);
                 }
@@ -503,11 +516,9 @@ var projectObj = {
                 }
                 projectObj.mainController.refreshTreeNode([node]);
             }
-        }
-        else if(value==null && fieldName ==='feeRate'){
+        } else if(value==null && fieldName ==='feeRate'){
             project.FeeRate.cleanFeeRateID(node);
-        }
-        else {
+        } else {
             projectObj.mainController.refreshTreeNode([node], false);
         }
     },