zhangweicheng 7 anni fa
parent
commit
9781d5d9a5

+ 1 - 1
modules/main/facade/quantity_detail_facade.js

@@ -351,7 +351,7 @@ async function summateResults (query,detailList,decimal) {
         decimal = await decimal_facade.getBillsQuantityDecimal(query.projectID,bill.unit);
        // quantity = getQuantityByUnit(quantity,bill.unit);
         quantity = scMathUtil.roundTo(quantity, -decimal);
-        doc = {quantity:quantity,isFromDetail:1};
+        doc = {quantity:quantity,isFromDetail:1,quantityEXP:'GCLMXHJ'};
         await bill_model.update({'ID':query.billID,'projectID':query.projectID,deleteInfo: null},doc);
     }
     return doc

+ 1 - 0
modules/main/models/bills.js

@@ -29,6 +29,7 @@ let billsSchema = new Schema({
     name: String,
     unit: String,
     quantity: String, // Decimal
+    quantityEXP:String,//工程量表达式
     feeRateID:Number,
     feeRate:String,
     isFromDetail:{type: Number,default:0},//1 true 0 false

+ 40 - 3
web/building_saas/glj/js/composition.js

@@ -12,8 +12,10 @@ $(document).ready(function() {
 
     // 切换tab触发refresh
     $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
+        if($(e.target).data('name')==undefined){
+            return;
+        }
         currentTag = $(e.target).data('name');
-
         // 获取工料机当前选中的行号
         let projectGLJId = 0;
         if (currentTag === "mix-ratio") {
@@ -68,6 +70,7 @@ function compositionSuccess(info) {
     let parentData = jsonData[row];
     let ratioData = _.find(parentData.ratio_data,{"id":info.id});
     let con_key = gljOprObj.getIndex(ratioData,gljKeyArray);
+    let updateNodes=[];
     for(let i=0;i< jsonData.length;i++){
         let tem_key = gljOprObj.getIndex(jsonData[i],gljKeyArray);
         if(con_key == tem_key){
@@ -76,11 +79,45 @@ function compositionSuccess(info) {
             projectGLJSheet.setCellByField('quantity', info.change, true,i);
         }
     }
-
+    //更新ratio 数据
+    ratioData[info.field]=info.newValue;
+    //更新组成物map里的数据
+    let p_key = gljOprObj.getIndex(parentData,gljKeyArray);
+    let m_list = projectObj.project.projectGLJ.datas.mixRatioMap[p_key];
+    let m_ratioData = _.find(m_list,{"id":info.id});
+    if(m_ratioData){
+        m_ratioData[info.field]=info.newValue;
+    }
     // 设置父级3个价格
+    parentData.unit_price.market_price =  info.parentMarketPrice;
+    parentData.unit_price.base_price =  info.parentBasePrice;
+    //更新表格
     projectGLJSheet.setCellByField('unit_price.market_price', info.parentMarketPrice, false);
-    projectGLJSheet.setCellByField('unit_price.base_price', info.parentBasePrice, false);
+    projectGLJSheet.setCellByField('base_price', info.parentBasePrice, false);
     projectGLJSheet.setCellByField('adjust_price', info.parentMarketPrice, false);
     // 更新组成物缓存
     projectObj.project.composition.loadData();
+    //选查找使用了父项目工料机的定额工料机
+    let ration_gljs = _.filter(projectObj.project.ration_glj.datas,{'projectGLJID':parentData.id});
+    let nodes = projectObj.project.mainTree.nodes;
+    let prefix = projectObj.project.mainTree.prefix;
+    for(let rg of ration_gljs){
+        let node = nodes[prefix+rg.rationID];
+        if(node){
+            updateNodes.push(node);
+        }
+    }
+    //或者是使用了父项目工料机的工料机类型的定额
+    let rations = _.filter(projectObj.project.Ration.datas,{'type':3,'projectGLJID':parentData.id});
+    for(let r of rations){
+        let r_node = nodes[prefix+r.ID];
+        if(r_node){
+            r_node.data.marketUnitFee=info.parentMarketPrice;
+            updateNodes.push(r_node);
+        }
+    }
+    if(updateNodes.length>0){
+        projectObj.project.calcProgram.calcRationsAndSave(updateNodes);
+    }
+    gljOprObj.refreshView();
 }

+ 1 - 0
web/building_saas/glj/js/composition_spread.js

@@ -229,6 +229,7 @@ CompositionSpread.prototype.updateConsumption = function(info, callback) {
                 alert('更改数据失败!');
             } else {
                 info.id = id;
+                info.field = field;
                 info.parentMarketPrice = parentMarketPrice;
                 info.parentBasePrice = parentBasePrice;
                 info.change = info.newValue - info.oldValue;

+ 7 - 0
web/building_saas/glj/js/project_glj.js

@@ -27,6 +27,10 @@ let otherFileData = {};
 let currentTag = '';
 let isChanging = false;
 let initPage = false;
+let projectGLJView={
+    currentTag:''
+}
+
 $(document).ready(function () {
     $('#tab_gongliaoji').on('show.bs.tab', function (e) {
         $(e.relatedTarget.hash).removeClass('active');
@@ -287,6 +291,9 @@ function spreadInit() {
 
     // 切换tab触发refresh
     $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
+        if($(e.target).data('name')==undefined){
+            return;
+        }
         currentTag = $(e.target).data('name');
         if (currentTag === 'ration') {
             projectGLJSheet.filterData('unit_price.type', []);

+ 3 - 0
web/building_saas/main/js/models/bills.js

@@ -520,6 +520,9 @@ var Bills = {
                     project.ration_glj.updataOrdelete(selected.source);
                 }
                 if(parent){
+                    if(parent.children.length==0&&parent.data.feesIndex&&parent.data.feesIndex.common){
+                        parent.data.feesIndex.common.unitFee = 0;
+                    }
                     projectObj.converseCalculateBills(parent);
                 }else { //删除的是大项费用要重新计算工程造价节点
                     project.Bills.calcEngineeringCostNode(controller);

+ 6 - 3
web/building_saas/main/js/models/quantity_detail.js

@@ -164,7 +164,7 @@ var quantity_detail = {
                 let newNode = nodes[0];
                 if(newNode.sourceType === project.Bills.getSourceType()){
                     console.log(newNode.data.quantity);
-                    this.updateBillQuantity(newNode.data.quantity,newNode);
+                    this.updateBillQuantity(newNode.data.quantity,newNode,newNode.data.quantityEXP);
                 }else {//更新定额所使用的值要用还没转换前的
                     this.updateRationQuantity(node.data.r_quantity,newNode,newNode.data.quantityEXP);//to do 加上工程量表达式和含量更新
                 }
@@ -534,7 +534,7 @@ var quantity_detail = {
         quantity_detail.prototype.editMainTreeNodeQuantity=function (value,node,fieldName) {
             var me = this;
             if(isNaN(value)){
-                alert("当前输入的数据类型不正确,请重新输入");
+                alert("当前输入的数据类型不正确,请重新输入");
                 projectObj.mainController.refreshTreeNode([node]);
             }else {
                 value=value?value:0;
@@ -553,9 +553,11 @@ var quantity_detail = {
                 },100);
             }
         };
-        quantity_detail.prototype.updateBillQuantity=function (value,node) {
+        quantity_detail.prototype.updateBillQuantity=function (value,node,quantityEXP) {
+            node.data.quantityEXP = quantityEXP?quantityEXP:value;
             value = scMathUtil.roundForObj(value,getDecimal("quantity",node));
             node.data.quantity = value+"";
+            console.log(value);
             let needUpdateChildren = [];//需更新的子定额
             let gljNodes=[];//当定额工程量改变时需刷新的子工料机
             if(node.children.length>0){//如果有子项则
@@ -584,6 +586,7 @@ var quantity_detail = {
                 }
             }
             if(needUpdateChildren.length>0){
+                node.changed = true;//本身发生了改变,需要存储。
                 project.calcProgram.calcRationsAndSave(needUpdateChildren);
             }else {
                 node.changed = true;

+ 1 - 0
web/building_saas/main/js/models/ration.js

@@ -349,6 +349,7 @@ var Ration = {
             if (optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan')) {
                 let billsNode = this.project.Bills.tree.findNode(ration[this.project.masterField.ration]);
                 let billsQuantity = billsNode.data.quantity ? billsNode.data.quantity : 0;
+                billsQuantity=scMathUtil.roundForObj(billsQuantity,quantity_decimal);
                 ration.contain = 1;
                 ration.quantityEXP="QDL";
                 if (optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToRationUnit')) {

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

@@ -143,7 +143,7 @@ var ration_glj = {
                             }
                         }
                         nextNodeID = nextNodeID ? nextNodeID : parentNode.tree.rootID();
-                        let newNode = projectObj.project.mainTree.insert(parentNode.getID(), nextNodeID);
+                        let newNode = projectObj.project.mainTree.insert(parentNode.getID(), nextNodeID,data.ID);
                         newNode.source = data;
                         newNode.sourceType = this.getSourceType();
                         newNode.data = data;

+ 9 - 3
web/building_saas/main/js/views/glj_view.js

@@ -758,9 +758,15 @@ var gljOprObj = {
         var ration_glj = projectObj.project.ration_glj;
         node = node ? node : projectObj.project.mainTree.selected;
         if (node.sourceType == ModuleNames.ration) {
-            let ration = node.data;
-            gljList = this.filterGljByRation(ration, ration_glj.datas);
-            this.showInSheet(gljList);
+            if(node.data.type==rationType.gljRation){
+                this.showMixRatio(node);
+            }else {
+                let ration = node.data;
+                gljList = this.filterGljByRation(ration, ration_glj.datas);
+                this.showInSheet(gljList);
+            }
+        }else if(node.sourceType == ModuleNames.ration_glj){
+            this.showMixRatio(node);
         }
     },
     showRationGLJSheetData: function (init) {

+ 46 - 37
web/building_saas/main/js/views/project_view.js

@@ -63,42 +63,10 @@ var projectObj = {
                 return false;
             }
         };
-        let canDelete = function (node,m_selection) {
-            if (node) {
-                if (node.sourceType === that.project.Bills.getSourceType()) {
-                    if(node.data.type == billType.DXFY&&node.data.isAdd!=1){
-                        return false;
-                    }
-                }
-                if(m_selection!=true&&node.sourceType === that.project.ration_glj.getSourceType()){//多选的时候不做这一项判断
-                    return false;
-                }
-                return true;
-            } else {
-                return false;
-            }
-        };
-        let canDelete_m = function (selection) {
-            for(let i =0;i<selection.rowCount;i++){
-                if(tree.items[selection.row+i]==undefined||tree.items[selection.row+i]==null){
-                    return false;
-                }
-                if(i==0&&tree.items[selection.row].sourceType === that.project.ration_glj.getSourceType()){
-                    return false
-                }
-                if(canDelete(tree.items[selection.row+i],true)==false){
-                    return false
-                }
-            }
-            return true
-        };
 
-        let selections = projectObj.mainSpread.getActiveSheet().getSelections();
-        if(selections[0].rowCount==1){//选中单行
-            setButtonValid(canDelete(selected), $('#delete'));
-        }else {
-            setButtonValid(canDelete_m(selections[0]), $('#delete'));
-        }
+
+
+        setButtonValid(ifCanDelete(), $('#delete'));
         setButtonValid(canUpLevel(selected), $('#upLevel'));
         setButtonValid(canDownLevel(selected), $('#downLevel'));
         setButtonValid(selected && (selected.depth() > 0) && selected.canUpMove(), $('#upMove'));
@@ -705,8 +673,7 @@ var projectObj = {
                     name: '删除',
                     icon: 'fa-remove',
                     disabled: function () {
-                        var selected = project.mainTree.selected;
-                        return !selected;
+                        return !ifCanDelete();
                     },
                     callback: function () {
                         $("#delete_row").modal({show:true});//弹出删除提示框;
@@ -1148,4 +1115,46 @@ function isSingleSelect() {//是否选中造价书中的单行
         return true;
     }
     return false;
+}
+
+function ifCanDelete() {
+    let selections = projectObj.mainSpread.getActiveSheet().getSelections();
+    let tree = projectObj.project.mainTree;
+    let selected = projectObj.project.mainTree.selected;
+    if(selections[0].rowCount==1){//选中单行
+        return canDelete(selected);
+    }else {
+       return canDelete_m(selections[0]);
+    }
+
+    function canDelete(node,m_selection) {
+        if (node) {
+            if (node.sourceType === projectObj.project.Bills.getSourceType()) {
+                if(node.data.type == billType.DXFY&&node.data.isAdd!=1){
+                    return false;
+                }
+            }
+            if(m_selection!=true&&node.sourceType === projectObj.project.ration_glj.getSourceType()){//多选的时候不做这一项判断
+                return false;
+            }
+            return true;
+        } else {
+            return false;
+        }
+    };
+
+    function canDelete_m(selection) {
+        for(let i =0;i<selection.rowCount;i++){
+            if(tree.items[selection.row+i]==undefined||tree.items[selection.row+i]==null){
+                return false;
+            }
+            if(i==0&&tree.items[selection.row].sourceType === projectObj.project.ration_glj.getSourceType()){
+                return false
+            }
+            if(canDelete(tree.items[selection.row+i],true)==false){
+                return false
+            }
+        }
+        return true
+    };
 }