Bladeren bron

bug fixed

zhangweicheng 7 jaren geleden
bovenliggende
commit
6c33686951

+ 22 - 1
modules/pm/facade/pm_facade.js

@@ -35,13 +35,22 @@ module.exports={
 async function copyProject(userID, compilationID,data) {
     let projectMap = data.projectMap;
     let originalID = projectMap['copy'].document.ID;
-    let originalProperty = _.cloneDeep(projectMap['copy'].document.property);
     let newProjectID = await getCounterID("projects");
     let newFeeName = null,newUnitName = null;
     let calcProgramFileID = uuidV1();//新的计算程序文件ID
     let labourCoeFileID = uuidV1();//新的人工调整系数文件ID
     let feeRateFileID = uuidV1();//新的费率文件ID
     let unitPriceFileID = await getCounterID("unit_price_file");//新的单价文件ID
+    let originalProject = await projectModel.findOne({'ID':originalID});//查找最新的那项目信息,前端缓存的数据有可能不是最新的
+    if(!originalProject){
+        throw new Error('没有找到对应的项目,复制失败!');
+    }
+    let property = originalProject.property;
+    if(projectMap['copy'].document.property){//更新项目属性信息
+        setProperty(property,projectMap['copy'].document.property);
+    }
+    let originalProperty = _.cloneDeep(property);
+    projectMap['copy'].document.property = property;
     logger.info("复制项目: 旧项目ID: "+originalID+ " ------- 新项目ID: "+newProjectID);
     //费率文件、单价文件重名检查
     let feeRate =  await feeRateFileModel.findOne({rootProjectID:originalProperty.rootProjectID,name:originalProperty.feeFile.name,deleteInfo:null});
@@ -427,3 +436,15 @@ async function insertMany(datas,model) {
     await model.insertMany(datas);
 
 }
+
+function setProperty(Obj,updateData) {
+    for(let ukey in updateData){
+        if(_.isObject(updateData[ukey]) && _.isObject(Obj[ukey])){
+            setProperty(Obj[ukey],updateData[ukey]);
+        }else {
+            Obj[ukey] = updateData[ukey];
+        }
+    }
+
+
+}

+ 6 - 3
public/web/gljUtil.js

@@ -198,7 +198,8 @@ let gljUtil = {
                 });
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
-                    p+=scMathUtil.roundForObj(priceData.marketPrice* priceCoe * scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    let temP = scMathUtil.roundForObj(priceData.marketPrice* priceCoe * scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
             return scMathUtil.roundForObj(p,price_decimal);
@@ -223,7 +224,8 @@ let gljUtil = {
                 });
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
-                    p+=scMathUtil.roundForObj(priceData.basePrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    let temP = scMathUtil.roundForObj(priceData.basePrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
             return scMathUtil.roundForObj(p,price_decimal);
@@ -253,7 +255,8 @@ let gljUtil = {
                 })
                 if(tem){
                     let priceData=this.getGLJPrice(tem,projectGLJDatas,calcOptions,labourCoeDatas,decimalObj,true,_,scMathUtil);
-                    p+=scMathUtil.roundForObj(priceData.adjustPrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    let temP = scMathUtil.roundForObj(priceData.adjustPrice*scMathUtil.roundForObj(ratio.consumption,quantity_decimal),process_decimal);
+                    p = scMathUtil.roundForObj(temP + p,process_decimal);
                 }
             }
             return scMathUtil.roundForObj(p,decimal);

+ 5 - 0
web/building_saas/main/js/controllers/block_controller.js

@@ -10,6 +10,11 @@ let BlockController = {
         if(selected.sourceType == ModuleNames.ration && selected.data.type == rationType.install){
             return true;
         }
+        if(projectObj.project.Bills.hasFlags(selected)){//所有固定清单项不能复制
+            return true;
+        }
+        //
+
         return false;
     },
     pasteBtnDisable:function (selected) {

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

@@ -134,11 +134,16 @@ var gljOprObj = {
     },
     detailSheetReadonly:function () {
         let selected = projectObj.project.mainTree.selected;
+        let Bills =  projectObj.project.Bills;
         if(selected) {
             //清单锁定时只读
             if(selected.sourceType == ModuleNames.bills && projectObj.project.isBillsLocked() && projectObj.project.withinBillsLocked(selected)){
                 return true;
             }
+            //大项费用、分部节点层次时,工程量明细只读。
+            if(indicativeInfoObj.isDXFY(selected) || indicativeInfoObj.isFB(selected)){
+                return true;
+            }
             //是主材或者是设备时只读
             if(selected.sourceType == ModuleNames.ration_glj){
                 return true;

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

@@ -81,6 +81,10 @@ let indicativeInfoObj = {
     isBills: function (node) {
         return node && node.sourceType === projectObj.project.Bills.getSourceType();
     },
+    //是分部节点
+    isFB:function (node) {
+        return this.isBills(node) && node.data.type === billType.FB;
+    },
     //是大项费用
     isDXFY: function (node) {
         return this.isBills(node) && node.data.type === billType.DXFY;

+ 12 - 1
web/building_saas/main/js/views/project_view.js

@@ -938,7 +938,15 @@ var projectObj = {
                     disabled: function () {
                         let selection = projectObj.mainSpread.getActiveSheet().getSelections()[0];
                         let firstNode = projectObj.project.mainTree.items[selection.row];//当多选的情况,用mainTree.selected判断不正确,要用第一个选中的节点
-                        return BlockController.copyBtnDisable(firstNode);
+                        for(let i = 0;i< selection.rowCount;i++){ //多选的时候判断所有与第一个节点同级的节点
+                            let temNode = projectObj.project.mainTree.items[selection.row + i];
+                            if(firstNode.getParentID() == temNode.getParentID()){
+                                if(BlockController.copyBtnDisable(temNode) == true){
+                                    return true;
+                                }
+                            }
+                        }
+                        return false;
                     },
                     callback: function () {
                         $.bootstrapLoading.start();
@@ -1624,6 +1632,9 @@ $('#poj-set').on('show.bs.modal', function () {
         setCalcFlag($('#billsPrice'), leafBillGetFeeType.billsPrice, ft);
         setCalcFlag($('#zangu_common'), zanguCalcType.common, zg);
         setCalcFlag($('#zangu_gatherMaterial'), zanguCalcType.gatherMaterial, zg);
+
+        let showAdjustPrice = projectObj.project.projSetting.glj_col?projectObj.project.projSetting.glj_col.showAdjustPrice:false;
+        showAdjustPrice === true ? $("#tab_poj-settings-6").show():$("#tab_poj-settings-6").hide();
         projDisplayView.init();
         calcOptions.init();
     }

+ 2 - 0
web/building_saas/pm/js/pm_newMain.js

@@ -250,6 +250,7 @@ const projTreeObj = {
                             alert(error);
                             return false;
                         }
+                        //更新选中项目缓存
                         $('#copy-to-dialog').modal('show');
                     }
                 },
@@ -1368,6 +1369,7 @@ $(document).ready(function() {
         let projectData = _.cloneDeep(originalNode.data);
         projectData['ParentID'] = parent.id();
         projectData['NextSiblingID'] = nextID;
+        projectData['property'] ={};
         projectData['property']['rootProjectID'] = parent.pid();
         projectData['shareInfo'] = [];
         let rename = projTreeObj.projectNameChecking(parent,originalNode,"复制");//重名检查