Bläddra i källkod

Merge branch '1.0.5_elecbug'

zhangweicheng 6 år sedan
förälder
incheckning
6895c21f60

+ 25 - 0
modules/all_models/system_setting.js

@@ -0,0 +1,25 @@
+/**
+ * Created by zhang on 2020/1/2.
+ */
+let mongoose = require("mongoose");
+
+let Schema = mongoose.Schema;
+let collectionName = 'system_setting';
+let modelSchema = {
+    // ID
+    ID: {
+        type: String,
+        index: true
+    },
+    // 设置内容
+    professional: {
+        project: Number,
+        ration:Number
+    },
+    // 关联用户id
+    normal: {
+        project: Number,
+        ration:Number
+    },
+};
+mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));

+ 11 - 22
modules/glj/controllers/glj_controller.js

@@ -230,6 +230,11 @@ class GLJController extends BaseController {
 
             let mixRatioModel = new MixRatioModel();
             let result = await mixRatioModel.deleteById(id);
+            if(request.body.unitPrice){
+                let unitPrice = JSON.parse(request.body.unitPrice);
+                let unitPriceModel = new UnitPriceModel();
+                await unitPriceModel.model.update(unitPrice.query,unitPrice.doc);
+            }
             if (!result) {
                 throw '删除失败';
             }
@@ -773,38 +778,22 @@ class GLJController extends BaseController {
         try {
             let data = req.body.data;
             data = JSON.parse(data);
-            let mixTasks = [],parent = null;
+            let mixTasks = [],unitPriceTask=[];
             for(let d of data){
                 if(d.type == 'mix_ratio'){
                     let task = {updateOne:{filter:d.query, update :d.doc}};
                     mixTasks.push(task);
-                }else if(d.type =='parent'){
-                    parent = d;
+                }else if(d.type == 'unitPrice'){
+                    let utask = {updateOne:{filter:d.query, update :d.doc}};
+                    unitPriceTask.push(utask);
                 }
             }
             if(mixTasks.length > 0){
                 let mixRatioModel = new MixRatioModel().model;
                 await mixRatioModel.bulkWrite(mixTasks);
             }
-            if(parent){
-                let indexList = ['code','name','specs','unit','type'];
-                let keyList = parent.connect_key.split("|-|");
-                let condition = {unit_price_file_id: parent.unit_price_file_id};
-                for(let i = 1;i<keyList.length;i++){
-                    if(keyList[i]!='null'){
-                        condition[indexList[i]]=keyList[i];
-                    }
-                }
-                let unitPriceUpdate = {
-                    base_price: parent.base_price,
-                    market_price: parent.market_price
-                };
-                let unitPriceModel = new UnitPriceModel();
-                let unitPriceResult = await unitPriceModel.updatePrice(condition, unitPriceUpdate);
-                if (!unitPriceResult) {
-                    throw '更新单价数据失败';
-                }
-            }
+            let unitPriceModel = new UnitPriceModel();
+            if(unitPriceTask.length > 0)await unitPriceModel.model.bulkWrite(unitPriceTask);
             result.data = "ok";
         }catch (err){
             logger.err(err);

+ 8 - 1
modules/glj/models/unit_price_model.js

@@ -275,7 +275,14 @@ class UnitPriceModel extends BaseModel {
         if(!unitPrice){
             throw "没有找到对应的单价";
         }
-        let rList= this.checkAndUpdateParent(unitPrice,data.field,data.project_id,newValueMap);
+        let rList=await this.checkAndUpdateParent(unitPrice,data.field,data.project_id,newValueMap);
+        if(data.ext){
+            let elecPrice = await this.db.findAndModify({id:data.ext.id,unit_price_file_id:data.ext.unit_price_file_id},data.ext.doc);
+            let nm = {};
+            nm[data.ext.id] = data.ext.doc;
+            let erList=await this.checkAndUpdateParent(elecPrice,"market_price",data.project_id,nm);
+            rList = rList.concat(erList);
+        }
         return rList;
     }
 

+ 16 - 3
public/web/gljUtil.js

@@ -243,9 +243,9 @@ let gljUtil = {
     getFlag:function (b) {
         return _.find(b.flags,{"fieldName":"fixed"});
     },
-    getGLJPrice:function (glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil) {
+    getGLJPrice:function (glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil,ext) {
         let result = {};
-        result.marketPrice = this.getMarketPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
+        result.marketPrice = this.getMarketPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil,null,ext);
         if(this.calcPriceDiff(glj,calcOptions)==true){//计取价差
             result.basePrice = this.getBasePrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
             result.adjustPrice = this.getAdjustPrice(glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
@@ -253,9 +253,10 @@ let gljUtil = {
             result.basePrice = result.marketPrice;
             result.adjustPrice = result.marketPrice;
         }
+
         return result;
     },
-    getMarketPrice:function (glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil,tenderCoe) {
+    getMarketPrice:function (glj,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil,tenderCoe,ext) {
         let price_decimal = decimalObj.glj.unitPrice;
         let price_hasM_decimal = decimalObj.glj.unitPriceHasMix?decimalObj.glj.unitPriceHasMix:decimalObj.glj.unitPrice;
         let quantity_decimal = decimalObj.glj.quantity;
@@ -273,6 +274,9 @@ let gljUtil = {
                 });
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
+                    if(ext && ext[tem.id] && this.isDef(ext[tem.id].marketPrice)){//在修改组成物的价格或消耗量时,影响了父工料机的价格,这时以父工料机的价格应当用组成物的新值来记算
+                        priceData.marketPrice = ext[tem.id].marketPrice;
+                    }
                     let temP = scMathUtil.roundForObj(priceData.marketPrice* priceCoe * scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
                     p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
@@ -497,6 +501,15 @@ let gljUtil = {
     getElecCode:function () {
         return '3005002';
     },
+    setProperty:function(Obj,updateData) {
+        for(let ukey in updateData){
+            if(_.isObject(updateData[ukey]) && _.isObject(Obj[ukey])){
+                setProperty(Obj[ukey],updateData[ukey]);
+            }else {
+                Obj[ukey] = updateData[ukey];
+            }
+        }
+    },
     fixedFlag : {
         // 分部分项工程
         SUB_ENGINERRING: 1,

+ 10 - 1
web/building_saas/main/js/models/composition.js

@@ -90,7 +90,7 @@ Composition.prototype.getCompositionByGLJ = function (glj) {
 Composition.prototype.deleteComposition = function (updateData,recode,pid,callback) {
     let me = this;
     $.bootstrapLoading.start();
-    CommonAjax.specialPost( '/glj/delete-ratio',{id: updateData.id},function (result){
+    CommonAjax.specialPost( '/glj/delete-ratio',{id: updateData.id,unitPrice:JSON.stringify(updateData.unitPrice)},function (result){
         me.updateConsumptionInCache(pid,recode,updateData,"delete");
         if(callback){
             callback();
@@ -117,9 +117,13 @@ Composition.prototype.updateConsumptionInCache = function (pid,recode,updateData
         projectObj.project.projectGLJ.quantityChangeMap[mglj.id] = mglj.quantity;
         let p_key = gljOprObj.getIndex(parentGlj,gljKeyArray);
         let m_list = projectObj.project.projectGLJ.datas.mixRatioMap[p_key];
+        let p_list = projectObj.project.projectGLJ.datas.mixRatioConnectData[con_key];
         if(operation == 'delete'){//如果是删除
             _.remove(parentGlj.ratio_data,{"id":updateData.id});
             _.remove(m_list,{"id":updateData.id});
+            _.remove(p_list,function (n) {
+                return n == p_key;
+            })
         }else {
             let subData = _.find(parentGlj.ratio_data,{"id":updateData.id});
             if(subData){
@@ -131,6 +135,11 @@ Composition.prototype.updateConsumptionInCache = function (pid,recode,updateData
                 m_ratioData.consumption = updateData.value;
             }
         }
+        if(updateData.unitPrice){
+            let elec  = projectObj.project.projectGLJ.getByID(updateData.unitPrice.projectGLJID);//得到电的数据
+            if(elec) gljUtil.updateProperty(elec.unit_price,updateData.unitPrice.doc);
+        }
+
         // 设置父级3个价格
         parentGlj.unit_price.market_price =  updateData.market_price;
        // parentGlj.unit_price.base_price =  updateData.base_price;

+ 50 - 21
web/building_saas/main/js/models/project_glj.js

@@ -392,6 +392,13 @@ ProjectGLJ.prototype.calcAllMaterial = function (unitPriecs) {//当材料发生
     let sumUpdateMap = {};
     if(!_.isEmpty(sumFreightUpdateMap))sumUpdateMap["freight"] = {update:sumFreightUpdateMap};
     if(!_.isEmpty(sumOriginalUpdateMap))sumUpdateMap["price"] = {update:sumOriginalUpdateMap};
+    let ext = {};
+    for(let u of unitPriecs){//计算受影响的综合电价
+        ext[u.projectGLJID] = {marketPrice:u.doc.market_price}; //priceMap[unitPrice.projectGLJID] = unitPrice.doc.market_price;
+    }
+    let elecu = electrovalenceObj.clacNewElecPrice(ext);
+    if(elecu) unitPriecs.push(elecu);
+
     return [unitPriecs,sumUpdateMap];
 
 
@@ -583,8 +590,6 @@ ProjectGLJ.prototype.m_updateUnitPrice = function (datas) {//批量更新
 
     //刷新定额工料机
     gljOprObj.refreshView();
-    //项目单价文件修改标记
-    projectObj.project.projectInfo.changeMark = 'unitFile';
     //socket推送更新信息
     projectGljObject.onUnitFileChange(true);
 
@@ -1041,23 +1046,37 @@ ProjectGLJ.prototype.updatePrice = function (recode, updateField, newval,from,cb
         }
         newval = scMathUtil.roundForObj(newval,this.getPriceDecimal(glj));
         let data = {id: glj.unit_price.id, field: updateField, newval: newval,project_id:glj.project_id,unit_price_file_id:glj.unit_price.unit_price_file_id};
-        let callback = function (data) {
+
+        if(updateField == 'market_price' && (this.datas.mixRatioConnectData[gljUtil.getIndex(glj)] || glj.name == "电网电")){//计算是否有受影响的综合电价
+            let uobj = {};
+            uobj[glj.id] = {marketPrice:newval};
+            let ext =electrovalenceObj.clacNewElecPrice(uobj);
+            if(ext) data.ext = ext;
+        }
+        let callback = function (result) {
             if (updateField == 'base_price') {
                 glj.unit_price.base_price = newval;
                 me.setAdjustPrice(glj);
             } else {
                 glj.unit_price.market_price = newval;
             }
+            let elec_glj = null;
+            if(data.ext){
+                 elec_glj = _.find(projectGljs, {'id': data.ext.projectGLJID});
+                if(elec_glj) elec_glj.unit_price.market_price = data.ext.doc.market_price;
+            }
             //更新回传的父节点项目工料机价格
-           let gljs = me.getProjectGLJs(data);
+           let gljs = me.getProjectGLJs(result);
           //  me.refreshRationGLJPrice(glj);//刷新定额工料机列表的记录
-            projectObj.project.projectGLJ.loadCacheData();//更新工料机汇总缓存和显示
+            projectGljObject.refreshDataSheet();//更新工料机汇总缓存和显示
+            //projectObj.project.projectGLJ.loadCacheData();
             gljOprObj.showRationGLJSheetData();
             me.refreshTreeNodePriceIfNeed(glj);//刷新造价书中主树上的定额工料机;
             gljs.push(glj);
+            if(elec_glj) gljs.push(elec_glj);
             let nodes = me.getImpactRationNodes(gljs);//取到因为改变工料机价格而受影响的定额
             projectObj.project.calcProgram.calcNodesAndSave(nodes);//触发计算程序
-            projectGljObject.onUnitFileChange(data);
+            projectGljObject.onUnitFileChange(result);
             if(cb){
                 cb(gljs);
             }
@@ -1182,25 +1201,23 @@ ProjectGLJ.prototype.batchUpdateConsumption = function (updateData,updateMap,cal
     let me = this;
     $.bootstrapLoading.start();
     CommonAjax.post("/glj/batchUpdateConsumption", updateData, function (result) {
-        let parent = updateData[updateData.length - 1];
-        let parentGlj = me.getByConKey(parent.connect_key);
+        let unitPriceMap = {}, mu=null, parentID   = null;
         for(let u of updateData){
             if(u.type == 'mix_ratio'){
-                let tem = updateMap[u.query.id];
-                tem.record.consumption = u.doc.consumption;//更新组成物表格的缓存
-                let subData = _.find(parentGlj.ratio_data,{"id":u.query.id});
-                if(subData){
-                    subData.consumption = u.doc.consumption;
-                }
-                let m_list = me.datas.mixRatioMap[parent.connect_key];
-                let m_ratioData = _.find(m_list,{"id":u.query.id});
-                if(m_ratioData){
-                    m_ratioData.consumption = u.doc.consumption;
+                mu = u;
+            }else if(u.type == 'unitPrice'){
+                unitPriceMap[u.projectGLJID] = u.doc;
+                if(u.isParent) parentID = u.projectGLJID;
+            }
+        }
+        if(!_.isEmpty(unitPriceMap)){
+            for(let g of me.datas.gljList) {
+                if(unitPriceMap[g.id]){
+                    gljUtil.setProperty(g.unit_price,unitPriceMap[g.id]);
                 }
+                if(parentID == g.id) updateMixRatio(g,mu,me);
             }
         }
-        parentGlj.unit_price.market_price =  parent.market_price;
-        parentGlj.unit_price.base_price =  parent.base_price;
         me.calcQuantity();
 
         if(callback){
@@ -1211,7 +1228,19 @@ ProjectGLJ.prototype.batchUpdateConsumption = function (updateData,updateMap,cal
         $.bootstrapLoading.end();
     })
 
-
+   function updateMixRatio(parent,u,me) {
+       let tem = updateMap[u.query.id];
+       tem.record.consumption = u.doc.consumption;//更新组成物表格的缓存
+       let subData = _.find(parent.ratio_data,{"id":u.query.id});
+       if(subData){
+           subData.consumption = u.doc.consumption;
+       }
+       let m_list = me.datas.mixRatioMap[gljUtil.getIndex(parent)];
+       let m_ratioData = _.find(m_list,{"id":u.query.id});
+       if(m_ratioData){
+           m_ratioData.consumption = u.doc.consumption;
+       }
+   }
 };
 
 ProjectGLJ.prototype.pGljUpdate= function (data,callback) {

+ 17 - 3
web/building_saas/main/js/views/electrovalence_view.js

@@ -64,7 +64,7 @@ let electrovalenceObj = {
         sel.row =  oldData?_.findIndex(this.datas,{'ID':oldData.ID}):sel.row ;
         this.sheet.setSelection(sel.row==-1?0:sel.row,sel.col,sel.rowCount,sel.colCount);
     },
-    getElectrovalenceDatas:function () {
+    getElectrovalenceDatas:function (ext) {
         let datas = [];
         let pgljMap = {};
         let com_electrovalence = projectObj.project.projectGLJ.datas.com_electrovalence;
@@ -75,7 +75,7 @@ let electrovalenceObj = {
             for (let g of com_electrovalence.gljList){
                 let t = this.createNewElectrovalenceData(g);
                 let tg = pgljMap[gljUtil.getIndex(g)];
-                if(tg) gljOprObj.setGLJPrice(t,tg);
+                if(tg) gljOprObj.setGLJPrice(t,tg,false,ext);
                 datas.push(t);
             }
         }
@@ -98,9 +98,10 @@ let electrovalenceObj = {
         return t;
     },
 
-    calcPertElectrovalenceMarketPrice:function (datas) {
+    calcPertElectrovalenceMarketPrice:function (datas,ext) {
         let total = 0;
         for(let d of datas){
+            if(ext && ext[d.projectGLJID] && gljUtil.isDef(ext[d.projectGLJID].marketPrice)) d.marketPrice = ext[d.projectGLJID].marketPrice;
             if(d.name == "电网电"){
                 d.electPrice = d.marketPrice;
             }else {
@@ -114,6 +115,19 @@ let electrovalenceObj = {
         }
         this.total = scMathUtil.roundForObj(total,getDecimal("glj.unitPrice"));
         $("#electrovalenceLabel").text(`综合电价:${this.total}`);
+        return this.total;
+    },
+    clacNewElecPrice:function (ext) {
+        for(let g of projectObj.project.projectGLJ.datas.gljList){
+            if(g.code == gljUtil.getElecCode() && g.name == "电" && g.unit == "kW·h"){//更新电价
+                let datas  = this.getElectrovalenceDatas(ext);
+                if(datas.length > 0){
+                    let marketPrice = this.calcPertElectrovalenceMarketPrice(datas,ext);
+                    if(marketPrice && g.unit_price.market_price != marketPrice+'') return {projectGLJID:g.id,id:g.unit_price.id,'unit_price_file_id':g.unit_price.unit_price_file_id,doc:{'market_price':marketPrice+''}}
+                }
+            }
+        }
+        return null;
     },
     getElectrovalenceOptions:function () {
         return _.map(this.options,"name")

+ 2 - 2
web/building_saas/main/js/views/glj_view.js

@@ -733,14 +733,14 @@ var gljOprObj = {
         }
         return ration_gljs;
     },
-    setGLJPrice:function (data,glj,isRadio = false) {//isRadio 标记是否算组成物的价格
+    setGLJPrice:function (data,glj,isRadio = false,ext) {//isRadio 标记是否算组成物的价格
         let proGLJ =  projectObj.project.projectGLJ;
         let calcOptions=projectObj.project.projectInfo.property.calcOptions;
         let decimalObj = projectObj.project.projectInfo.property.decimal;
         let labourCoeDatas =  projectObj.project.labourCoe.datas;
         glj = glj?glj:_.find(proGLJ.datas.gljList, {'id': data.projectGLJID});
         if(glj){
-            let result = gljUtil.getGLJPrice(glj,proGLJ.datas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil);
+            let result = gljUtil.getGLJPrice(glj,proGLJ.datas,calcOptions,labourCoeDatas,decimalObj,isRadio,_,scMathUtil,ext);
             data.marketPrice = result.marketPrice;
             data.basePrice =  result.basePrice;
             data.adjustPrice = result.adjustPrice;

+ 51 - 72
web/building_saas/main/js/views/project_glj_view.js

@@ -173,23 +173,31 @@ projectGljObject={
             });
         });
     },
-    showMixRatioData:function () {
-        let me = this,gljId = null,gljType = null;
+    getSelectedProjectGLJ:function () {
+        let me = this,data = null;
         let sheet = me.projectGljSpread.getActiveSheet();
-        let oldSel = me.mixRatioSheet.getSelections()[0];
         if(sheet.name() == 'projectGljSheet'){//projectGljSheet/materialSheet 工料机汇总和三材汇总表
             let sel = me.projectGljSheet.getSelections()[0];
             let srow = sel.row == -1||sel.row == ""?0:sel.row;
             if(me.projectGljSheetData.length>srow){
-                gljId = me.projectGljSheetData[srow].id;
-                gljType = me.projectGljSheetData[srow].type;
+                data = me.projectGljSheetData[srow];
             }
         }else if(sheet.name() == 'materialTreeSheet'){
             if(this.materialTree.selected){
-                gljId = this.materialTree.selected.data.id;
-                gljType = this.materialTree.selected.data.type;
+                data = this.materialTree.selected.data;
             }
         }
+        return data;
+    },
+
+    showMixRatioData:function () {
+        let me = this,gljId = null,gljType = null;
+        let oldSel = me.mixRatioSheet.getSelections()[0];
+        let projectGLJData = me.getSelectedProjectGLJ();
+        if(projectGLJData){
+            gljId = projectGLJData.id;
+            gljType = projectGLJData.type;
+        }
         if(compositionTypes.indexOf(gljType)==-1){//如果不是有组成物的类型,工料机id设置为空,组成物表设置为空
             gljId = null
         }
@@ -489,19 +497,28 @@ projectGljObject={
                 let basePrice = scMathUtil.roundForObj(sub.unit_price.base_price,getDecimal("process"));
                 let consumption =  updateMap[sub.mix_ratio_id]?updateMap[sub.mix_ratio_id].consumption:scMathUtil.roundForObj(sub.consumption,getDecimal("glj.quantity"));
                 parentMarketPrice = scMathUtil.roundForObj(marketPrice*consumption + parentMarketPrice,getDecimal("process"));
-                parentBasePrice = scMathUtil.roundForObj(basePrice*consumption + parentBasePrice,getDecimal("process"));
+               // parentBasePrice = scMathUtil.roundForObj(basePrice*consumption + parentBasePrice,getDecimal("process"));
             }
         }
-        parentBasePrice = scMathUtil.roundForObj(parentBasePrice,getDecimal("glj.unitPrice"));
+       // parentBasePrice = scMathUtil.roundForObj(parentBasePrice,getDecimal("glj.unitPrice"));
         parentMarketPrice = scMathUtil.roundForObj(parentMarketPrice,getDecimal("glj.unitPrice"));
-        updateData.push({type:'parent',connect_key:parentKey,base_price:parentBasePrice,market_price:parentMarketPrice,unit_price_file_id:unit_price_file_id});
+        let parentData = me.getSelectedProjectGLJ();
+        if(parentData){  //计算受影响的综合电价
+            let ext = {};
+            ext[parentData.id] = {marketPrice:parentMarketPrice};
+            let elecP = electrovalenceObj.clacNewElecPrice(ext);
+            if(elecP){
+                updateData.push({type:'unitPrice',projectGLJID:elecP.projectGLJID,query:{id:elecP.id},doc:elecP.doc});
+            }
+            updateData.push({type:'unitPrice',isParent:true,projectGLJID:parentData.id,query:{id:parentData.unit_price.id},doc:{market_price:parentMarketPrice}});//base_price:parentBasePrice,
+        }
+
+       // updateData.push({type:'parent',connect_key:parentKey,base_price:parentBasePrice,market_price:parentMarketPrice,unit_price_file_id:unit_price_file_id});
         projectGLJ.batchUpdateConsumption(updateData,updateMap,function () {
             //更新人材机汇总表
-            let parentSheet =  me.projectGljSpread.getActiveSheet();//三材汇总表和工料机汇总表
-            let prow = parentSheet.getActiveRowIndex();//取父机械或组成物的下标
-            let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data;
-            me.refreshParentData(prow,prowData.id);
-            me.onUnitFileChange(updateData);
+            me.refreshDataSheet();
+            me.onUnitFileChange(true);
+            gljOprObj.refreshView();
         });
 
     },
@@ -697,6 +714,7 @@ projectGljObject={
             delivery_address:glj.delivery_address,
             is_adjust_price:glj.is_adjust_price,
             ratio_data:glj.ratio_data,
+            unit_price:glj.unit_price,
             calcMaterial:glj.unit_price.calcMaterial,
             is_add:glj.unit_price.is_add,
             bgColour:'white',
@@ -776,67 +794,23 @@ projectGljObject={
             return false;
         }
         value = scMathUtil.roundToString(value,getDecimal("glj.quantity"));
-        let [parentMarketPrice, parentBasePrice] = me.getCompositionSumPrice('modify', row, value);
+        me.batchUpdateConsumption([{row:row,col:col,value}]);
+        //changeInfo.push({row:c.row,col:c.col,value:value});
+      /*  let [parentMarketPrice, parentBasePrice] = me.getCompositionSumPrice('modify', row, value);
         let updateData ={id: recode.mix_ratio_id, field: 'mix_ratio.' + dataCode, value: value, market_price: parentMarketPrice};//, base_price: parentBasePrice ---20190218 修改机械台班的组成物,仅重新计算机械预算价,定额价保持不变。
         let prow = parentSheet.getActiveRowIndex();//取父机械或组成物的下标
         let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data;
         composition.updateConsumption(updateData,recode,prowData.id,function (sid) {
-            /* if(parentSheet.name() == 'projectGljSheet'){ 之前是单行刷新,父工料机与组成物对应的工料机分开刷,发现这样比整个刷新慢所以先整个刷新,当以后数据量大的时候再测试
+            /!* if(parentSheet.name() == 'projectGljSheet'){ 之前是单行刷新,父工料机与组成物对应的工料机分开刷,发现这样比整个刷新慢所以先整个刷新,当以后数据量大的时候再测试
              me.refreshProjectGljRowByID(sid);
-             }*/
+             }*!/
             projectObj.project.projectGLJ.calcQuantity();
             me.refreshParentData(prow,prowData.id,sid);
             me.onUnitFileChange(recode);
-        });
+        });*/
     },
-    refreshParentData:function (row,pid,sid) {
-        let me = this;
-        let sheet = me.projectGljSpread.getActiveSheet();
-        let parantData = null;
-        if(sheet.name() == 'projectGljSheet'){
-            me.showProjectGljData();// me.refreshProjectGljRow(row)  这里原来是分开刷新的,现在整个统一刷新,先留着
-            //parantData = _.find();  //me.projectGljSheetData[row];
-        }else {
-            me.showMaterialTreeData();
-            //parantData = me.materialTree.items[row].data;
-        }
-        let pglj =  _.find(projectObj.project.projectGLJ.datas.gljList,{'id':pid});
-        parantData = pglj?me.getSheetDataByGLJ(pglj):null;
-        //projectObj.project.projectGLJ.datas.gljList
-
-        // 更新组成物缓存
-        projectObj.project.composition.loadData();
-        //先查找使用了父项目工料机的定额工料机
-        let updateNodes=[];
-        let ration_gljs = _.filter(projectObj.project.ration_glj.datas,{'projectGLJID':pid});
-        for(let rg of ration_gljs){
-            let node = projectObj.project.mainTree.getNodeByID(rg.rationID);
-            if(node){
-                updateNodes.push(node);
-            }
-        }
-        //或者是使用了父项目工料机的工料机类型的定额
-        let rations = _.filter(projectObj.project.Ration.datas,{'type':3,'projectGLJID':pid});
-        for(let r of rations){
-            let r_node = projectObj.project.mainTree.getNodeByID(r.ID);
-            if(r_node){
-                r_node.data.marketUnitFee = parantData?parantData.marketPrice:'';//parentMarketPrice;//这里用显示的价格
-                updateNodes.push(r_node);
-            }
-        }
-        if(sid){
-            let subRations = calcTools.getRationsByProjectGLJ(sid);
-            updateNodes = updateNodes.concat(subRations);
-        }
-        if(updateNodes.length>0){
-            projectObj.project.calcProgram.calcNodesAndSave(updateNodes,function () {
-                projectObj.mainController.refreshTreeNode(projectObj.project.mainTree.roots);
-                installationFeeObj.calcInstallationFee();//计算安装增加费
-            });
-        }
-        gljOprObj.refreshView();
-    },
-    onUnitFileChange:function (isInclude) { //include用来标计是否排除本身, true时,不排除本身
+    onUnitFileChange:function (isInclude,changeMark = 'unitFile') { //include用来标计是否排除本身, true时,不排除本身
+        if(isInclude == true) projectObj.project.projectInfo.changeMark = changeMark; //项目单价文件修改标记
         projectObj.project.markUpdateProject({projectID:projectObj.project.ID(),'unitFileID':socketObject.getUnitFileRoomID(),isInclude:isInclude},"unitFile",function(){
             //socket.emit('unitFileChangeNotify', JSON.stringify(data));
             socket.emit('unitFileChangeNotify', {projectID:projectObj.project.ID(),userID:userID,'unitFileID':socketObject.getUnitFileRoomID()});
@@ -846,15 +820,20 @@ projectGljObject={
         let me = this, deleteRecode = me.mixRatioData[row];
         let consumption = deleteRecode.consumption;
         let [parentMarketPrice, parentBasePrice] = me.getCompositionSumPrice('delete', row);
-        let parentSheet =  me.projectGljSpread.getActiveSheet();//三材汇总表和工料机汇总表
-        let prow= parentSheet.getActiveRowIndex();//取父机械或组成物的下标
-        let prowData = parentSheet.name() == 'projectGljSheet'?me.projectGljSheetData[prow]:me.materialTree.items[prow].data;
+        let prowData =  me.getSelectedProjectGLJ();
         let updateData = {id: deleteRecode.mix_ratio_id, field: 'mix_ratio.consumption' , value: 0, market_price: parentMarketPrice, base_price: parentBasePrice};
+        let ext = {};
+        ext[prowData.id] = {marketPrice:parentMarketPrice};
+        let elecP = electrovalenceObj.clacNewElecPrice(ext);
+        if(elecP){
+            updateData.unitPrice = {projectGLJID:elecP.projectGLJID,query:{id:elecP.id},doc:elecP.doc};
+        }
         projectObj.project.composition.deleteComposition(updateData,deleteRecode,prowData.id,function () {
             _.remove(me.mixRatioData,{"mix_ratio_id":deleteRecode.mix_ratio_id});
-            me.refreshParentData(prow,prowData.id);
+            //me.refreshParentData(prow,prowData.id);
+            me.refreshDataSheet();
             me.mixRatioSheet.deleteRows(row,1);
-            me.onUnitFileChange(deleteRecode);
+            me.onUnitFileChange(true);
         });
     },
     getCompositionSumPrice : function(scene, affectRow, newValue = 0) {