Browse Source

工程专业结构修改

zhangweicheng 6 years atrás
parent
commit
bbca687962

+ 7 - 5
modules/all_models/engineering_lib.js

@@ -59,12 +59,14 @@ let modelSchema = {
     valuationID:{type:String,index: true},
     //工程专业名称
     name:String,
+    //费用标准
+    feeName:String,
     //前端是否显示
-    visible:{
-        type: Boolean,
-        default: false
-    },
-    engineering:Number
+    visible:{type: Boolean, default: false},
+    //取费专业
+    engineering:Number,
+    //是否计算安装增加费
+    isInstall:{type: Boolean, default: false}
 };
 mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
 

+ 17 - 6
modules/main/facade/ration_facade.js

@@ -364,17 +364,21 @@ async function  updateRation(std,firstLibID,rationID,billsItemID,projectID,calQu
     else if(std.rationRepId === firstLibID && ration.from === 'cpt') {
         ration.prefix = '补';
     }
-    ration.programID = std.feeType;
+    if(std.feeType == undefined || std.feeType == null || std.feeType ==''){//定额取费专业为空的情况下,取项目属性中的定额取费专业ID
+        ration.programID = await getProgramForProject(projectID);
+    }else {
+        ration.programID = std.feeType;
+    }
     ration.rationAssList = createRationAss(std);//生成辅助定额
     if(calQuantity){
        await CalculateQuantity(ration,billsItemID,projectID);
     }
 
- let unsetObject = {
-     "marketUnitFee":1,
-     'marketTotalFee':1,
-     "maskName":1
- }
+     let unsetObject = {
+         "marketUnitFee":1,
+         'marketTotalFee':1,
+         "maskName":1
+     }
     let newRation = await ration_model.model.findOneAndUpdate({ID:rationID,projectID:projectID},{"$set":ration,"$unset":unsetObject},{new: true});//;
     return newRation;
 }
@@ -409,6 +413,7 @@ async function setEmptyRation(projectID,rationID){
     ration.quantityCoe = {};
     ration.rationQuantityCoe="";
     ration.tenderQuantity = "";
+    ration.programID = null;
     let newRation = await ration_model.model.findOneAndUpdate({ID:rationID,projectID:projectID},{"$set":ration},{new: true});//;
     return {ration:newRation,ration_gljs:[],ration_coes:[],ration_installs:[]};
 }
@@ -439,6 +444,12 @@ async function CalculateQuantity (ration,billsItemID,projectID) {
     ration.contain =  scMathUtil.roundForObj(ration.quantity/billsQuantity,6);
 };
 
+
+async function getProgramForProject(projectID){
+    let project = await projectModel.findOne({ID:projectID});
+    return project.property.engineering;
+}
+
 function FilterNumberFromUnit (unit) {
     let reg = new RegExp('^[0-9]+');
     if (reg.test(unit)) {

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

@@ -175,7 +175,7 @@ ProjectsDAO.prototype.updateUserProjects = async function (userId, compilationId
                     //计算选项
                     data.updateData.property.calcOptions = calcOptions;
                     //安装增加费
-                    if(parseInt(data.updateData.property.engineering)==4){
+                    if(data.updateData.property.isInstall == true || data.updateData.property.isInstall=='true'){//判断是否安装工程
                         await installationFacade.copyInstallationFeeFromLib(data.updateData.ID,data.updateData.property.engineering_id);
                     }
                     //锁定清单

+ 1 - 1
public/scHintBox.html

@@ -170,7 +170,7 @@
     };
 
     $('#hintBox_form').on('hide.bs.modal', function() {
-        $.bootstrapLoading.end();
+        if($.bootstrapLoading) $.bootstrapLoading.end();
         return;
     });
 </script>

+ 1 - 1
web/building_saas/main/js/controllers/block_controller.js

@@ -244,7 +244,7 @@ let BlockController = {
                 let billsQuantity = scMathUtil.roundForObj(parent.data.quantity,getDecimal("quantity",parent));
                 this.calcRationQuantityAndContain(billsQuantity,d);
                 //如果粘贴位置不属于分部分项工程,或者不是安装工程,则把安装增加费内容置空
-                if(!Bills.isFBFX(parent)|| projectInfoObj.projectInfo.property.engineering!=engineeringType.BUILD_IN){
+                if(!Bills.isFBFX(parent)|| !project.isInstall()){
                     d.ration_installations = [];
                 }
             }

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

@@ -1773,12 +1773,12 @@ class CalcProgram {
                     } ;
                 };
             };
-
-            if (treeNode.data.programID == undefined) treeNode.data.programID = projectInfoObj.projectInfo.property.engineering;
+            // 2018-08-27   zhang  插入空定额的时候,取费专业也为空
+           // if (treeNode.data.programID == undefined) treeNode.data.programID = projectInfoObj.projectInfo.property.engineering;
             let template = me.compiledTemplates[treeNode.data.programID];
             treeNode.data.calcTemplate = template;
 
-            if (treeNode && template.hasCompiled) {
+            if (treeNode && template && template.hasCompiled) {//2018-08-27 空行的时候,取费专业为空,template也为空,加入template非空判断
                 let $CE = executeObj;
                 $CE.treeNode = treeNode;
                 $CE.template = template;

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

@@ -235,7 +235,7 @@ var installation_fee = {
             let FBMap = {};//保存分部下对应的补项
             let usedBXMap = {};//有使用到的补项
             let startTime =  +new Date();
-            if(engineering!=engineeringType.BUILD_IN){//如果不是安装工程,则不用计算
+            if(!projectObj.project.isInstall()){//如果不是安装工程,则不用计算
                 if(callback) callback(false);
                 return;
             }

+ 3 - 3
web/building_saas/main/js/models/main_consts.js

@@ -295,8 +295,8 @@ const cpFeeTypes = [
     // {type: 'fee9', name: '费用9'}
 
 ];
-
-const engineeringType = {
+//8-27 zhang 这个已经不能用来判断工程类型了
+/*const engineeringType = {
     // 建筑工程
     ARCHITECTURE: 1,
     // 装饰工程
@@ -325,7 +325,7 @@ const engineeringType = {
     BUILDING_REPAIR: 13,
     // 安装修缮工程
     BUILD_IN_REPAIR: 14
-};
+};*/
 const blockType ={
     RATION:1,//定额
     FB:2,//分部

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

@@ -400,6 +400,11 @@ var PROJECT = {
                 }
             })
         };
+        //判断项目是否安装工程
+        project.prototype.isInstall = function () {
+            return projectInfoObj.projectInfo.property.isInstall?true:false;//如果是undefinded 就也返回false
+        };
+
         /*        project.prototype.setBillsCalcMode = function (calcMode) {
                     this.property.billsCalcMode = calcMode;
                     this.initCalcFields();

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

@@ -114,11 +114,11 @@ var Ration = {
             newData['type'] = rType;
             if (rType == rationType.volumePrice){
                 newData['subType'] = gljType.GENERAL_MATERIAL;   // 默认的量价类型为材料
-                newData['programID'] = projectInfoObj.projectInfo.property.engineering;
+                //newData['programID'] = projectInfoObj.projectInfo.property.engineering;
             };
-            if(rType == rationType.install){//是安装增加费生成的定额
+           /* if(rType == rationType.install){//是安装增加费生成的定额
                 newData['programID'] = projectInfoObj.projectInfo.property.engineering;
-            }
+            }*/
             return newData;
         };
 
@@ -395,7 +395,7 @@ var Ration = {
             }
             for(let r of recodes){
                 let needInstall = false;
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     needInstall = project.Bills.isFBFX(r.node);
                 }
                 r.value===null||r.value===undefined?"":r.value = r.value.replace(/[\s\r\n]/g, "");//去掉空格回车换行等字符
@@ -470,7 +470,7 @@ var Ration = {
             };
             if(billItemID){
                 let calQuantity = optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     let billsNode = project.mainTree.getNodeByID(billItemID);
                     needInstall = project.Bills.isFBFX(billsNode);//在分部分项插入的定额才需要定额安装增加费
                 }
@@ -588,7 +588,7 @@ var Ration = {
                         brUpdate.push({projectID:newData.projectID,ID:br[i].ID,serialNo:br[i].serialNo});
                     }
                 }
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     let billsNode = project.mainTree.getNodeByID(billItemID);
                     needInstall = project.Bills.isFBFX(billsNode);//在分部分项插入的定额才需要定额安装增加费
                 }
@@ -667,7 +667,7 @@ var Ration = {
                         brUpdate.push({projectID:newData.projectID,ID:br[i].ID,serialNo:br[i].serialNo});
                     }
                 }
-                if(engineering==engineeringType.BUILD_IN) {//如果是安装工程,要看需不需要生成安装增加费
+                if(projectObj.project.isInstall()) {//如果是安装工程,要看需不需要生成安装增加费
                     let billsNode = project.mainTree.getNodeByID(billItemID);
                 }
                 $.bootstrapLoading.start();

+ 2 - 6
web/building_saas/main/js/views/installation_fee_view.js

@@ -225,11 +225,7 @@ let installationFeeObj={
         $("#calc_installation_fee").modal({show:true});
     },
     engineeringTypeChecking:function () {
-        let property = projectInfoObj.projectInfo.property;
-        let engineering = property.engineering;
-        if(engineering==engineeringType.BUILD_IN){//如果是安装工程,则显示
-            $('#AZZJF_div').show();
-        }
+        if(projectObj.project.isInstall()) $('#AZZJF_div').show();//如果是安装工程,则显示
     },
     initInstallationFeeSpread:function(){
         //初始化费用项表格
@@ -1248,7 +1244,7 @@ let installationFeeObj={
         let installSetting = projectInfoObj.projectInfo.property.installSetting;
         let install_fee = projectObj.project.installation_fee;
         let autoCreate = false;
-        if(engineering!=engineeringType.BUILD_IN){//如果不是安装工程,则不用计算
+        if(!projectObj.project.isInstall()){//如果不是安装工程,则不用计算
             return;
         }
         //可执行检查

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

@@ -1277,8 +1277,7 @@ var projectObj = {
                         installationFeeObj.showCalcInstallSettingDiv();
                     },
                     visible: function(key, opt){
-                        let engineering = projectInfoObj.projectInfo.property.engineering;
-                        return engineering==engineeringType.BUILD_IN;
+                        return projectObj.project.isInstall();
                     }
                 },
                 "delete": {