zhangweicheng 7 years ago
parent
commit
2831f26003

+ 2 - 1
modules/glj/controllers/glj_controller.js

@@ -395,7 +395,8 @@ class GLJController extends BaseController {
             if (!copyResult) {
                 throw '复制数据失败';
             }
-
+           await ProjectModel.updateUnitFileToProject(projectId,{id:addResult.id,name:addResult.name});
+            responseData.data = addResult;
         } catch (error) {
             responseData.err = 1;
             responseData.msg = error;

+ 10 - 6
modules/glj/models/unit_price_model.js

@@ -12,6 +12,7 @@ import MixRatioModel from "./mix_ratio_model";
 import {default as UnitPriceSchema, collectionName as collectionName} from "./schemas/unit_price";
 import _ from "lodash";
 const scMathUtil = require('../../../public/scMathUtil').getUtil();
+let decimal_facade = require('../../main/facade/decimal_facade');
 
 class UnitPriceModel extends BaseModel {
 
@@ -262,7 +263,7 @@ class UnitPriceModel extends BaseModel {
         if(mixRatioList&&mixRatioList.length>0){
             for(let m of mixRatioList){
                 if(!connectKeyMap.hasOwnProperty(m.connect_key)){//为了去重复,组成物会与其它项目同步,所以有可能重复。
-                    rList.push(await this.updateParentUnitPrice(m,data.field));
+                    rList.push(await this.updateParentUnitPrice(m,data.field,data.project_id));
                     connectKeyMap[m.connect_key]=true;
                 }
             }
@@ -270,7 +271,10 @@ class UnitPriceModel extends BaseModel {
         return rList;
     }
 
-    async updateParentUnitPrice(mixRatio,fieid){
+    async updateParentUnitPrice(mixRatio,fieid,project_id){
+        let  decimalObject =await decimal_facade.getProjectDecimal(project_id);
+        let quantity_decimal = (decimalObject&&decimalObject.glj&&decimalObject.glj.quantity)?decimalObject.glj.quantity:3;
+        let price_decimal = (decimalObject&&decimalObject.glj&&decimalObject.glj.unitPrice)?decimalObject.glj.unitPrice:2;
         //查找该工料机所有组成物
         let indexList = ['code','name','specs','unit','type'];
         let mixRatioModel = new MixRatioModel();
@@ -292,11 +296,11 @@ class UnitPriceModel extends BaseModel {
         let priceMap = await this.findDataByCondition(condition, {_id: 0}, false, indexList);
         let sumPrice=0;
         for(let pk in priceMap){
-            let price = parseFloat(priceMap[pk][fieid]);
-            let consumption = parseFloat(mixRatioMap[pk].consumption);
-            sumPrice +=scMathUtil.roundTo(price*consumption,-6);
+            let price = scMathUtil.roundForObj(priceMap[pk][fieid],price_decimal);
+            let consumption = scMathUtil.roundForObj(mixRatioMap[pk].consumption,quantity_decimal);
+            sumPrice +=scMathUtil.roundForObj(price*consumption,price_decimal);
         }
-        sumPrice= scMathUtil.roundTo(sumPrice,-6);
+        sumPrice= scMathUtil.roundForObj(sumPrice,-price_decimal);
         if(sumPrice<=0){
             return null;
         }

+ 34 - 0
modules/main/controllers/project_controller.js

@@ -3,6 +3,8 @@
  */
 var Project = require('../models/project');
 let logger = require('../../../logs/log_helper').logger;
+let project_facade = require("../facade/project_facade");
+
 //统一回调函数
 var callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
@@ -33,5 +35,37 @@ module.exports = {
                 callback(req, res, err, message, null);
             }
         });
+    },
+    markUpdateProject:async function (req,res) {
+        let result={
+            error:0
+        }
+        try {
+            let data = req.body.data;
+            data = JSON.parse(data);
+            let resultData= await project_facade.markUpdateProject(data.updateInfo,data.type);
+            result.data=resultData;
+        }catch (err){
+            logger.err(err);
+            result.error=1;
+            result.message = err.message;
+        }
+        res.json(result);
+    },
+    removeProjectMark:async function(req,res){
+        let result={
+            error:0
+        }
+        try {
+            let data = req.body.data;
+            data = JSON.parse(data);
+            let resultData= await project_facade.removeProjectMark(data.projectID);
+            result.data=resultData;
+        }catch (err){
+            logger.err(err);
+            result.error=1;
+            result.message = err.message;
+        }
+        res.json(result);
     }
 };

+ 50 - 0
modules/main/facade/project_facade.js

@@ -0,0 +1,50 @@
+/**
+ * Created by zhang on 2018/1/26.
+ */
+let  projectsModel = require("../../pm/models/project_schema");
+
+module.exports = {
+    markUpdateProject:markUpdateProject,
+    removeProjectMark:removeProjectMark
+};
+
+//data = {feeRateID:111111,projectID:1245}; type = feeRate
+async function markUpdateProject(data,type) {
+    let tasks=[];
+    let query = {deleteInfo:null};
+    let result = null;
+    if(type=="feeRate"){//更改了费率
+        query['property.feeFile.id'] = data.feeRateID;
+    }
+    if(type=="unitFile"){//更改了单价文件
+        query['property.unitPriceFile.id'] = data.unitFileID;//unitPriceFile
+    }
+    let projects =await projectsModel.find(query);
+    for(let p of projects){
+        if(p.ID!=data.projectID){//当前项目不用更新
+            tasks.push(generateMarkTask(type,p.ID));
+        }
+    }
+    if(tasks.length>0){
+        result = await projectsModel.bulkWrite(tasks);
+    }
+    return result;
+}
+
+async function removeProjectMark(projectID) {
+    return await projectsModel.findOneAndUpdate({ID:projectID},{"$unset":{"changeMark":1}});
+}
+
+function generateMarkTask(value,projectID) {
+    let task = {
+        updateOne:{
+            filter:{
+                ID:projectID
+            },
+            update:{
+                changeMark:value
+            }
+        }
+    };
+    return task
+}

+ 3 - 0
modules/main/routes/project_route.js

@@ -9,6 +9,9 @@ module.exports = function (app) {
 
     projectRouter.post('/save', projectController.save);
     projectRouter.post('/getData', projectController.getData);
+    projectRouter.post('/markUpdateProject', projectController.markUpdateProject);
+    projectRouter.post('/removeProjectMark', projectController.removeProjectMark);
+
 
     app.use('/project',projectRouter);
 };

+ 5 - 1
modules/pm/models/project_model.js

@@ -122,6 +122,8 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     data.updateData.property.unitPriceFile.id = addResult.id;
                 }
                 if (data.updateData.projType === projectType.tender) {
+                    //单价文件
+                    data.updateData.property.unitPriceFile.id=parseInt(data.updateData.property.unitPriceFile.id);
                     //小数位数
                     data.updateData.property.decimal = defaultDecimal;
                     //清单工程量精度
@@ -695,7 +697,9 @@ ProjectsDAO.prototype.getSummaryFees = async function (ID) {
     };
 };
 
-
+ProjectsDAO.prototype.updateUnitFileToProject=async function(projectID,unitFile){
+    return await Projects.findOneAndUpdate({'ID':projectID},{'property.unitPriceFile':unitFile});
+}
 
 
 

+ 2 - 1
modules/pm/models/project_schema.js

@@ -29,7 +29,8 @@ let ProjectSchema = new Schema({
         estimateFee: String,
         safetyFee: String,
         chargeFee: String
-    }
+    },
+    "changeMark":String//更新标记  feeRate:费率文件发生了改变,unitFile 单件文件发生了改变
 });
 
 module.exports = mongoose.model(collectionName, ProjectSchema);

+ 38 - 6
public/web/socket/connection.js

@@ -2,25 +2,57 @@
  * Created by zhangweicheng on 2017/8/7.
  */
 socketObject={
+  roomInfo : null,
   connect:function () {
       // 连接socket服务器
       var hostName = window.location.hostname;
+      let me = this;
       socket = io('http://'+hostName+':3300');
       socket.on('connect', function () {
-
-          var roomID = projectObj.project.FeeRate.getActivateFeeRateFileID();
-          socket.emit('join', roomID);
+          me.roomInfo={
+              feeRate:me.getFeeRateRoomID(),
+              unitFile:me.getUnitFileRoomID()
+          }
+          socket.emit('join', {name:'feeRate',value:me.getFeeRateRoomID()});
+          socket.emit('join', {name:'unitFile',value:me.getUnitFileRoomID()});
           console.log('连接成功');
       });
 
       socket.on('feeRateChange', function(data) {
           //data = JSON.parse(data);
 
-          $("#message").html('费率文件已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载</a>');
+          $("#message").html('费率文件已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
           $("#notify").show();
           //alert('费率文件已经修改,请刷新页面');
           //window.location.reload();
-      })
-
+      });
+      socket.on('unitFileChange', function (data) {
+          data = JSON.parse(data);
+          /*console.log(data);
+          if (data.newValue === undefined) {
+              return false;
+          }*/
+          $("#message").html('市场单价已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
+          $("#notify").show();
+      });
+      socket.on('changeFileNotify', function (data) {//收到文件改变的消息
+          if(data.projectID==projectObj.project.ID()){//如果是同个项目,则给出提示,否则忽略
+                let preString ="";
+                if(data.name=='feeRate'){
+                    preString = "费率文件";
+                }
+                if(data.name=='unitFile'){
+                    preString = "单价文件";
+                }
+              $("#message").html(preString+'已被修改,<a href="javascript:void(0);" id="load-data" onclick="window.location.reload()">点击加载并重新进行造价计算</a>');
+              $("#notify").show();
+          }
+      });
+  },
+  getFeeRateRoomID:function (){
+      return  projectObj.project.FeeRate.getActivateFeeRateFileID();
+  },
+  getUnitFileRoomID:function () {
+      return projectObj.project.projectGLJ.datas.constData.roomId?projectObj.project.projectGLJ.datas.constData.roomId:roomId;
   }
 }

+ 12 - 7
socket.js

@@ -11,25 +11,30 @@ const socketIO = socket(3300);
 
 // socket.io相关操作
 socketIO.on('connection', function(socket) {
-    let roomId = '';
+    let roomInfo = {};
     console.log("new connection");
     // 加入房间
     socket.on('join', function(data) {
-        roomId = data;
-        socket.join(data);
+        roomInfo[data.name] = data.value;
+        socket.join(data.value);
     });
 
 
     // 数据更改通知
-    socket.on('dataNotify', function(data) {
-        socket.broadcast.to(roomId).emit('dataChange', data);
+    socket.on('unitFileChangeNotify', function(data) {
+        console.log(roomInfo);
+        socket.broadcast.to(roomInfo['unitFile']).emit('unitFileChange', data);
     });
     socket.on('feeRateChangeNotify', function(data) {
-        socket.broadcast.to(data).emit('feeRateChange', data);
+        socket.broadcast.to(roomInfo['feeRate']).emit('feeRateChange', data);
     });
-    socket.on('changeActivateFeeRate', function(data) {
+    socket.on('changeNewRoom', function(data) {
+        if(data.projectID){//如果有项目ID,则通知同一个项目在其它地方被打开的页面
+            socket.broadcast.to(data.oldRoom).emit('changeFileNotify', data);
+        }
         socket.leave(data.oldRoom);
         socket.join(data.newRoom);
+        roomInfo[data.name]=data.newRoom;
     });
 
 });

+ 4 - 2
web/building_saas/glj/js/common_spread.js

@@ -296,9 +296,11 @@ CommonSpreadJs.prototype.getActiveDataByField = function(field) {
     return result;
 };
 CommonSpreadJs.prototype.setProjectGLJDiffPrice = function (data) {
+    let projGLJ = projectObj.project.projectGLJ;
+    data.unit_price.market_price = projGLJ.getMarketPrice(data);
     if(gljOprObj.calcPriceDiff(data)==true){//是否记算价差
-        data.base_price = data.unit_price.base_price;
-        data.adjust_price = projectObj.project.projectGLJ.getAdjustPrice(data);
+        data.base_price = projGLJ.getBasePrice(data);
+        data.adjust_price = projGLJ.getAdjustPrice(data);
     }else {
         data.base_price = data.unit_price.market_price;
         data.adjust_price = data.unit_price.market_price;

+ 31 - 2
web/building_saas/glj/js/project_glj.js

@@ -124,6 +124,24 @@ $(document).ready(function () {
                     $("#save-as-tips").text(msg).show();
                     return false;
                 }
+                projectObj.project.projectGLJ.loadData(function () {
+                    let projectGLJ = projectObj.project.projectGLJ;
+                    projectGLJ.loadCacheData();
+                    unitPriceFileInit();
+                    projectObj.project.calcProgram.calcAllNodesAndSave();
+                    gljOprObj.refreshView();
+                    if(socketObject.roomInfo){
+                        let data ={
+                            projectID:projectObj.project.ID(),
+                            oldRoom:socketObject.roomInfo.unitFile,
+                            newRoom:socketObject.getUnitFileRoomID(),
+                            name:'unitFile'
+                        }
+                        socket.emit('changeNewRoom',data);
+                        socketObject.roomInfo.unitFile = socketObject.getUnitFileRoomID();
+                    }
+                    $.bootstrapLoading.end();
+                });
                 $("#file-save-as-dialog").modal("hide");
             }
         });
@@ -196,6 +214,17 @@ $(document).ready(function () {
                     projectGLJ.loadCacheData();
                     unitPriceFileInit();
                     gljOprObj.refreshView();
+                    projectObj.project.calcProgram.calcAllNodesAndSave();
+                    if(socketObject.roomInfo){
+                        let data ={
+                            projectID:projectObj.project.ID(),
+                            oldRoom:socketObject.roomInfo.unitFile,
+                            newRoom:socketObject.getUnitFileRoomID(),
+                            name:'unitFile'
+                        }
+                        socket.emit('changeNewRoom',data);
+                        socketObject.roomInfo.unitFile = socketObject.getUnitFileRoomID();
+                    }
                     $.bootstrapLoading.end();
                 });
             }
@@ -242,8 +271,8 @@ function init() {
                 data.constData.ownCompositionTypes : canNotChangeTypeId;
             GLJTypeConst = data.constData.GLJTypeConst !== undefined ? JSON.parse(data.constData.GLJTypeConst) : GLJTypeConst;
 
-            // 连接socket服务器
-            socketInit();
+            // 连接socket服务器  这里改成和费率的socket统一管理了,需要在主页面打开后就连接
+           // socketInit();
 
             unitPriceFileInit();
 

+ 19 - 3
web/building_saas/main/js/models/fee_rate.js

@@ -14,7 +14,6 @@ var FeeRate = {
         };
         FeeRate.prototype.loadData = function (datas) {
             this.datas = datas;
-            socketObject.connect();
         };
         FeeRate.prototype.backupDatas=function () {
           this.datasBackup = _.cloneDeep(this.datas);
@@ -193,9 +192,10 @@ var FeeRate = {
                 }
             }
             project.calcProgram.calcAllNodesAndSave(calcAllType.catBills);
+            project.markUpdateProject({projectID:project.ID(),feeRateID:this.getActivateFeeRateFileID()},"feeRate");
             socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());
         };
-        FeeRate.prototype.onFeeRateFileChange=function () {
+        FeeRate.prototype.onFeeRateFileChange=function () {//整个费率文件换了,原费率文件内容不变
             this.refreshCalProgramWhenFeeFileChange();
             this.refreshBillsWhenFeeFileChange();
             var node = project.mainTree.selected;
@@ -205,7 +205,22 @@ var FeeRate = {
                 }
             }
             project.calcProgram.calcAllNodesAndSave(calcAllType.catBills);
-            socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());
+            if(socketObject.roomInfo){
+                //判断费率文件ID是否改变了
+                if(socketObject.roomInfo.feeRate == this.getActivateFeeRateFileID()){//如果没变,则是重选了标准
+                    socket.emit('feeRateChangeNotify', socketObject.roomInfo.feeRate);
+                }else {
+                    let data ={
+                        projectID:project.ID(),
+                        oldRoom:socketObject.roomInfo.feeRate,
+                        newRoom:this.getActivateFeeRateFileID(),
+                        name:'feeRate'
+                    }
+                    socket.emit('changeNewRoom',data);
+                    socketObject.roomInfo.feeRate = this.getActivateFeeRateFileID();
+                }
+            }
+
         };
 
         FeeRate.prototype.refreshBillsWhenFeeFileChange=function(){
@@ -285,6 +300,7 @@ var FeeRate = {
                     me.datas.libName=data.libName;
                     me.datas.feeRateID=data.feeRateID;
                     me.datas.rates=data.rates;
+                    projectObj.project.markUpdateProject({projectID:projectObj.project.ID(),feeRateID:me.getActivateFeeRateFileID()},'feeRate');
                     me.onFeeRateFileChange();
                     callback();
                 }

+ 18 - 5
web/building_saas/main/js/models/project.js

@@ -307,17 +307,30 @@ var PROJECT = {
             }
             this.endUpdate();
         };
-
         project.prototype.registerModule = function(moduleName, obj){
             if (!tools.modules.hasOwnProperty(moduleName)){
                 tools.modules[moduleName] = obj;
             }
         };
+        project.prototype.markUpdateProject = function (data,type) {
+            CommonAjax.post("/project/markUpdateProject",{updateInfo:data,type:type});
+        };
 
-/*        project.prototype.setBillsCalcMode = function (calcMode) {
-            this.property.billsCalcMode = calcMode;
-            this.initCalcFields();
-        };*/
+        project.prototype.projectMarkChecking = function () {
+            let  changeMark = projectInfoObj.projectInfo.changeMark;
+            if(changeMark&&changeMark!=''){
+                $.bootstrapLoading.start();
+                this.Bills.getEngineeringCostNode(projectObj.mainController).changed = true;
+                this.calcProgram.calcAllNodesAndSave();
+                CommonAjax.post("/project/removeProjectMark",{projectID:this.ID()},function (data) {
+                    delete projectInfoObj.projectInfo.changeMark;
+                });
+            }
+        };
+        /*        project.prototype.setBillsCalcMode = function (calcMode) {
+                    this.property.billsCalcMode = calcMode;
+                    this.initCalcFields();
+                };*/
 
         /*project.prototype.initCalcFields = function () {
             // let settingConst = this.projSetting.settingConst;

+ 52 - 3
web/building_saas/main/js/models/project_glj.js

@@ -237,7 +237,7 @@ ProjectGLJ.prototype.updatePrice = function (recode, updateField, newval,from) {
     let pgljID = from=="rg"?recode.projectGLJID:recode.id;//和定额工料机统一接口,项目工料机ID取值不一样
     let glj = _.find(projectGljs, {'id': pgljID});
     if (glj) {
-        let data = {id: glj.unit_price.id, field: updateField, newval: newval};
+        let data = {id: glj.unit_price.id, field: updateField, newval: newval,project_id:glj.project_id};
         let callback = function (data) {
             if (updateField == 'base_price') {
                 glj.unit_price.base_price = newval;
@@ -254,6 +254,8 @@ ProjectGLJ.prototype.updatePrice = function (recode, updateField, newval,from) {
             gljs.push(glj);
             let nodes = me.getImpactRationNodes(gljs);//取到因为改变工料机价格而受影响的定额
             projectObj.project.calcProgram.calcRationsAndSave(nodes);//触发计算程序
+            socket.emit('unitFileChangeNotify', JSON.stringify(data));
+            projectObj.project.markUpdateProject({projectID:projectObj.project.ID(),'unitFileID':socketObject.getUnitFileRoomID()},"unitFile");
             $.bootstrapLoading.end();
         }
         $.bootstrapLoading.start();
@@ -370,7 +372,7 @@ ProjectGLJ.prototype.setAdjustPrice = function (glj) {
 ProjectGLJ.prototype.getAdjustPrice = function (glj) {
     GLJTypeConst = this.datas.constData.GLJTypeConst !== undefined ? JSON.parse(this.datas.constData.GLJTypeConst) : GLJTypeConst;
     let decimal = getDecimal("glj.unitPrice");
-    let quantity_decimal = getDecimal("glj.quantity")
+    let quantity_decimal = getDecimal("glj.quantity");
     if (glj.unit_price.type == GLJTypeConst.LABOUR || glj.unit_price.type == GLJTypeConst.MACHINE_LABOUR) {//人工、机上人工,调整价根据定额价*调整系数计算得出。
         let labour = projectObj.project.calcProgram.compiledLabourCoes[glj.adjCoe];
         //let labour=1;
@@ -394,12 +396,59 @@ ProjectGLJ.prototype.getAdjustPrice = function (glj) {
     } else {//对于其他普通材料等,无调整系数,调整价=定额价。
         return glj.unit_price.base_price
     }
+};
+
+ProjectGLJ.prototype.getBasePrice = function(glj){
+    let price_decimal = getDecimal("glj.unitPrice");
+    let quantity_decimal = getDecimal("glj.quantity");
+    if (notEditType.indexOf(glj.unit_price.type)>0&&glj.ratio_data.length>0) {//对于混凝土、配合比、砂浆、机械台班等有组成物的材料,价格需根据组成物计算得出。
+        let p =0;
+        for(let ratio of glj.ratio_data){
+            let tem =  _.find( projectObj.project.projectGLJ.datas.gljList,{
+                'code': ratio.code,
+                'name': ratio.name,
+                'specs':ratio.specs,
+                'type': ratio.type,
+                'unit': ratio.unit
+            });
+            if(tem){
+                p+=scMathUtil.roundForObj(tem.unit_price.base_price*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),price_decimal);
+            }
+        }
+        return scMathUtil.roundForObj(p,price_decimal);
+    }else {
+        return scMathUtil.roundForObj(glj.unit_price.base_price,price_decimal);
+    }
+};
+
+ProjectGLJ.prototype.getMarketPrice = function (glj) {
+    let price_decimal = getDecimal("glj.unitPrice");
+    let quantity_decimal = getDecimal("glj.quantity");
+    if (notEditType.indexOf(glj.unit_price.type)>0&&glj.ratio_data.length>0) {//对于混凝土、配合比、砂浆、机械台班等有组成物的材料,价格需根据组成物计算得出。
+        let p =0;
+        for(let ratio of glj.ratio_data){
+            let tem =  _.find( projectObj.project.projectGLJ.datas.gljList,{
+                'code': ratio.code,
+                'name': ratio.name,
+                'specs':ratio.specs,
+                'type': ratio.type,
+                'unit': ratio.unit
+            });
+            if(tem){
+                p+=scMathUtil.roundForObj(tem.unit_price.market_price*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),price_decimal);
+            }
+        }
+        return scMathUtil.roundForObj(p,price_decimal);
+    }else {
+        return scMathUtil.roundForObj(glj.unit_price.market_price,price_decimal);
+    }
 }
 
+
 ProjectGLJ.prototype.getShortNameByID = function (ID) {
     let gljTypeMap = this.datas.constData.gljTypeMap;
     return gljTypeMap["typeId" + ID].shortName;
-}
+};
 
 ProjectGLJ.prototype.calcQuantity  = function (){
     let project_gljs = this.datas.gljList;

+ 11 - 0
web/building_saas/main/js/models/quantity_detail.js

@@ -518,6 +518,17 @@ var quantity_detail = {
                 }
                 value = value / times;
             }
+            let EXPString=node.data.quantityEXP+"";
+            if(option==false&&node.sourceType === project.Ration.getSourceType()&&EXPString!='GCLMXHJ'&&EXPString.indexOf("QDL")==-1&&data.unit){//勾选不根据单位转换工程量,且定额是手输的,
+                let times = parseInt(data.unit);
+                if(!isNaN(times)){///如果定额单位可以做转换
+                    if(isNum(EXPString)){//如果表达式中只是数字
+                        node.data.quantityEXP = EXPString+" * "+times;
+                    }else {//如果表达式是一个计算式,则要加一个括号
+                        node.data.quantityEXP = "("+EXPString+") * "+times;
+                    }
+                }
+            }
             return value;
         };
         quantity_detail.prototype.reverseQuantity = function (value,node) {//根据单位反向运算出工程量

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

@@ -170,7 +170,7 @@ var Ration = {
                 var preIndex = br.indexOf(preRation), i;
                 updateData.push({updateType: 'ut_create', updateData: this.getTempRationData(this.getNewRationID(), billsID, preIndex < br.length - 1 ? br[preIndex + 1].serialNo : br[preIndex].serialNo + 1, rationType)});
                 for (i = preIndex + 1; i < br.length; i++) {
-                    updateData.push({updateType: 'ut_update', updateData: this.getTempRationData(br[i].ID, billsID, i < br.length - 1 ? br[i+1].serialNo : br[i].serialNo + 1, rationType)});
+                    updateData.push({updateType: 'ut_update', updateData: this.getTempRationData(br[i].ID, billsID, i < br.length - 1 ? br[i+1].serialNo : br[i].serialNo + 1, br[i].type)});
                 }
             } else {
                 updateData.push({updateType: 'ut_create', updateData: this.getTempRationData(this.getNewRationID(), billsID, br.length > 0 ? br[br.length - 1].serialNo + 1 : 1, rationType)});

+ 8 - 7
web/building_saas/main/js/views/glj_view.js

@@ -888,15 +888,16 @@ var gljOprObj = {
         return ration_gljs;
     },
     setGLJPrice:function (data,glj) {
-        glj = glj?glj:_.find(projectObj.project.projectGLJ.datas.gljList, {'id': data.projectGLJID});
+        let proGLJ =  projectObj.project.projectGLJ;
+        glj = glj?glj:_.find(proGLJ.datas.gljList, {'id': data.projectGLJID});
         if(this.calcPriceDiff(glj)==true) {//计取价差
-            data.basePrice = glj.unit_price.base_price;
-            data.marketPrice = glj.unit_price.market_price;
-            data.adjustPrice = projectObj.project.projectGLJ.getAdjustPrice(glj);
+            data.basePrice = proGLJ.getBasePrice(glj);
+            data.marketPrice = proGLJ.getMarketPrice(glj);
+            data.adjustPrice = proGLJ.getAdjustPrice(glj);
         }else {//不计价差
-            data.basePrice = glj.unit_price.market_price;
-            data.marketPrice = glj.unit_price.market_price;
-            data.adjustPrice = glj.unit_price.market_price;
+            data.basePrice = proGLJ.getMarketPrice(glj);
+            data.marketPrice = proGLJ.getMarketPrice(glj);
+            data.adjustPrice = proGLJ.getMarketPrice(glj);
         }
         return data;
 

+ 5 - 0
web/building_saas/main/js/views/main_tree_col.js

@@ -46,6 +46,11 @@ let MainTreeCol = {
             else {
                 return isDef(node.data.code) ? node.data.code : '';
             }
+        },
+        marketPrice:function (node) {
+            if((node.sourceType === projectObj.project.Ration.getSourceType()&&node.data.type!=rationType.ration)||node.sourceType==projectObj.project.ration_glj.getSourceType()){
+                return assistCalcer.uiGLJPrice(node.data.marketUnitFee);
+            }
         }
     },
     readOnly: {

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

@@ -491,8 +491,12 @@ var projectObj = {
                 that.loadMainSpreadContextMenu();
                 that.loadFocusLocation();
                 let endTime = +new Date();
+                socketObject.connect();//连接socket服务器
                 console.log("加载完成-----"+endTime);
                 console.log(`时间——${endTime - startTime}`);
+                that.project.projectMarkChecking();//是否需要重新进行造价计算
+                console.log(projectInfoObj.projectInfo);
+                //project.calcProgram.calcAllNodesAndSave()
             }
             else {