Forráskód Böngészése

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

zhongzewei 7 éve
szülő
commit
e67ca50151

+ 2 - 2
modules/main/facade/project_facade.js

@@ -142,8 +142,8 @@ async function updateNodes(datas){
             updateOne:{
                 filter:{
                     //projectID: node.data.projectID, 现在复制项目也重新生成一个新的ID了,所以ID是唯一的
-                    ID: node.data.ID,
-                    deleteInfo: null
+                    ID: node.data.ID
+                    //deleteInfo: null
                 },
                 update :node.data
             }

+ 1 - 1
public/scHintBox.html

@@ -4,7 +4,7 @@
     自定义对话框包括:
         1、只有一个按钮的信息提示框。
         2、有两个按钮的操作确认询问框。
-        3、有三个按钮的操作确认询问框。
+        3、有三个按钮的多分支选择询问框。
         4、输入文本值对话框。
 ----------------------------------------------------------------------------------------------------------------------->
 

+ 25 - 4
web/building_saas/main/js/models/calc_program.js

@@ -1035,10 +1035,12 @@ class CalcProgram {
         // me.templates.push(defaultBillTemplate);
         // 先编译公用的基础数据
         me.compilePublics();
+        me.compileTemplateMaps();
         for (let t of me.templates){
             me.compileTemplate(t);
         };
 
+
         // 存储费率临时数据,报表用。
         if (me.saveForReports.length > 0){
             let saveDatas = {};
@@ -1072,13 +1074,32 @@ class CalcProgram {
             me.compiledCalcBases[cb.dispName] = cb;         // 中文预编译,可靠性有待验证
         }*/
     };
+    compileTemplateMaps(){
+        let me = this;
+
+        function clearObj(obj){
+            for (let key in obj) {
+                delete obj[key];
+            }
+        };
 
+        clearObj(me.compiledTemplates);
+        clearObj(me.compiledTemplateMaps);
+        me.compiledTemplateNames.splice(0, me.compiledTemplateNames.length);
+
+        for (let t of me.templates){
+            me.compiledTemplates[t.ID] = t;
+            me.compiledTemplateMaps[t.ID] = t.name;
+            me.compiledTemplateMaps[t.name] = t.ID;
+            me.compiledTemplateNames.push(t.name);
+        };
+    };
     compileTemplate(template){
         let me = this;
-        me.compiledTemplates[template.ID] = template;
-        me.compiledTemplateMaps[template.ID] = template.name;
-        me.compiledTemplateMaps[template.name] = template.ID;
-        me.compiledTemplateNames.push(template.name);
+        // me.compiledTemplates[template.ID] = template;
+        // me.compiledTemplateMaps[template.ID] = template.name;
+        // me.compiledTemplateMaps[template.name] = template.ID;
+        // me.compiledTemplateNames.push(template.name);
         template.hasCompiled = false;
         template.errs = [];
 

+ 10 - 2
web/building_saas/main/js/models/installation_fee.js

@@ -297,6 +297,7 @@ var installation_fee = {
                 CommonAjax.post("/project/calcInstallationFee",updateData,function (data) {
                     //提交后台成功后所做的操作,删除要先删除定额,再删除清单,添加要先添加清单再添加定额
                     project.ration_glj.addDatasToList(data.add);//添加插入的定额
+                    let calRations = [];
                     for(let ur of data.update){
                         let glj = project.ration_glj.getDataByID(ur.ID);
                         glj.quantity = ur.quantity;
@@ -306,15 +307,19 @@ var installation_fee = {
                     //对树节点的操作并删除、添加清单、删除添加定额、删除对应的定额工料机缓存
                     TREE_SHEET_HELPER.massOperationSheet(projectObj.mainController.sheet, function () {
                         deleteOldNodes(deleteRationNodes,deleteBillsNodes);
-                        addNewNodes(updateData);
+                        calRations =  addNewNodes(updateData);
                     });
+                    for(let u of updateData.ration.update){
+                        let unode =   projectObj.project.mainTree.findNode(u.ID);
+                         unode?calRations.push(unode):'';
+                    }
                     setTreeSelection(selectedNode);
                     let endTime =  +new Date();
                     console.log(`计算安装增加费时间——${endTime - startTime}`);
                     projectObj.project.projectGLJ.loadData(function () {
                         cbTools.refreshFormulaNodes();
                         if(callback){
-                            callback(true);
+                            callback(true,calRations);
                         }
                         $.bootstrapLoading.end();
                     });
@@ -326,6 +331,7 @@ var installation_fee = {
                 let controller = projectObj.mainController;
                 let Bill = project.Bills;
                 let newAddNode = [];
+                let newRationNodes = [];
                 for(let nb of updateData.bills.add){
                     let newSource = Bill.tree.insertByData(nb, nb.ParentID, -1, true);
                     let newNode = project.mainTree.insert(nb.ParentID, -1, newSource.data.ID);
@@ -345,9 +351,11 @@ var installation_fee = {
                     controller.sheet.addRows(newNode.serialNo(), 1);
                     controller.sheet.showRow(newNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
                     newAddNode.push(newNode);
+                    newRationNodes.push(newNode);
                     project.Ration.datas.push(nr);
                 }
                 TREE_SHEET_HELPER.refreshTreeNodeData(controller.setting, controller.sheet, newAddNode, false);
+                return newRationNodes;
             }
 
             function deleteOldNodes(deleteRationNodes,deleteBillsNodes) {

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

@@ -755,7 +755,7 @@ ProjectGLJ.prototype.getQuantityPerGLJ = function (ration_glj_list,rations,ratio
         if(ra.type == rationType.gljRation&&ra.projectGLJID===pglj.id){
             let r_quantity = scMathUtil.roundForObj(ra.quantity,q_decimal);
             r_quantity = r_quantity?r_quantity:0;
-            quantitySum== scMathUtil.roundForObj(quantitySum+r_quantity,q_decimal);
+            quantitySum = scMathUtil.roundForObj(quantitySum+r_quantity,q_decimal);
             if(_.includes(billIDs,ra.billsItemID)){//计算分部分项
                 sum = scMathUtil.roundForObj(sum+r_quantity,q_decimal);
             }

+ 8 - 9
web/building_saas/main/js/models/quantity_detail.js

@@ -612,22 +612,22 @@ var quantity_detail = {
                 });*/
                 project.calcProgram.calcRationsAndSave(needUpdateChildren, function () {
                     if(project.Bills.isFBFX(node)) { //判断是否属于分部分项工程 ,是的话才需要做计取安装费计算
-                        project.installation_fee.calcInstallationFee(function (isChange) {
+                        project.installation_fee.calcInstallationFee(function (isChange,rations) {
                             if(isChange){
-                                project.calcProgram.calcAllNodesAndSave(calcAllType.catAll,function () {
-                                    project.projectGLJ.loadData();
+                                project.calcProgram.calcRationsAndSave(rations,function () {
+                                    project.projectGLJ.calcQuantity();
                                 });
                             }
                         });
                     }else {
-                        project.projectGLJ.loadData();
+                        project.projectGLJ.calcQuantity();
                     }
                 });
 
             }else {
                 node.changed = true;
                 project.calcProgram.calcAndSave(node, function () {
-                    project.projectGLJ.loadData();
+                    project.projectGLJ.calcQuantity();
                 });
             }
             if(gljNodes.length>0){
@@ -648,14 +648,13 @@ var quantity_detail = {
             }
             node.changed = true;
             project.calcProgram.calcAndSave(node, function () {
+                project.projectGLJ.calcQuantity();
                 if(project.Bills.isFBFX(node)) { //判断是否属于分部分项工程 ,是的话才需要做计取安装费计算
-                    project.installation_fee.calcInstallationFee(function (isChange) {
+                    project.installation_fee.calcInstallationFee(function (isChange,rations) {
                         if(isChange){
-                            project.calcProgram.calcAllNodesAndSave();
+                            project.calcProgram.calcRationsAndSave(rations);
                         }
                     });
-                }else {
-                    project.projectGLJ.loadData();
                 }
             });
             projectObj.mainController.refreshTreeNode(node.children);//刷新子工料机总消耗量

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

@@ -412,7 +412,7 @@ var Ration = {
                    }
                 }
                 project.projectGLJ.loadData(function () {
-                    gljOprObj.showDataIfRationSelect(projectObj.project.mainTree.selected,'11111');
+                    gljOprObj.showDataIfRationSelect(projectObj.project.mainTree.selected);
                     project.calcProgram.calcRationsAndSave(refershNodes);
                     projectObj.mainController.refreshTreeNode(refershNodes, true);
                     $.bootstrapLoading.end();
@@ -487,12 +487,13 @@ var Ration = {
                         project.ration_glj.addToMainTree(data.ration_gljs);
                         projectObj.mainController.refreshTreeNode([newNode], false);
                         if(project.Bills.isFBFX(newNode)) { //判断是否属于分部分项工程 ,是的话才需要做计取安装费计算
-                            let changeNodes = project.calcProgram.calculate(newNode);//先计算不保存,如果计算安装增加费后不用自动计算,则单独调用保存的方法
-                            project.installation_fee.calcInstallationFee(function (isChange) {
+                           // let changeNodes = project.calcProgram.calculate(newNode);//先计算不保存,如果计算安装增加费后不用自动计算,则单独调用保存的方法
+                            project.installation_fee.calcInstallationFee(function (isChange,rations) {
                                 if(isChange){
-                                   project.calcProgram.calcAllNodesAndSave();
+                                    rations.push(newNode);
+                                    project.calcProgram.calcRationsAndSave(rations);
                                 }else {
-                                    project.calcProgram.saveNodes(changeNodes);
+                                    project.calcProgram.calcRationsAndSave([newNode]);
                                 }
                             });
                         }else {
@@ -580,7 +581,7 @@ var Ration = {
           //  node.data.quantity = projectObj.project.quantity_detail.autoTransformQuantity(node.data.quantity,node);//按单位做转换
             node.changed = true;
             project.calcProgram.calcAndSave(node, function () {
-                project.projectGLJ.loadData();
+                project.projectGLJ.calcQuantity();
             });
             projectObj.mainController.refreshTreeNode(node.children);//刷新子工料机树节点总消耗量
         };

+ 3 - 2
web/building_saas/main/js/views/calc_program_manage.js

@@ -174,6 +174,7 @@ let calcProgramManage = {
                             if (rst){
                                 let ts = projectObj.project.calcProgram.templates;
                                 ts.push(newTemplate);
+                                projectObj.project.calcProgram.compileTemplateMaps();
                                 projectObj.project.calcProgram.compileTemplate(newTemplate);
                                 calcProgramManage.buildSheet();
                                 calcProgramManage.mainSpread.getActiveSheet().setSelection(ts.length - 1, 0, 1, 1);
@@ -221,7 +222,7 @@ let calcProgramManage = {
                         };
                         calcProgramManage.updateTemplate(data, function (rst) {
                             if (rst){
-                                projectObj.project.calcProgram.compileTemplate(template);
+                                projectObj.project.calcProgram.compileTemplateMaps();
                                 sheetCommonObj.showData(calcProgramManage.mainSpread.getSheet(0), calcProgramManage.mainSetting, calcProgramManage.datas);
                             }
                         });
@@ -253,7 +254,7 @@ let calcProgramManage = {
                             if (rst){
                                 let idx = calcProgramManage.mainSpread.getActiveSheet().getActiveRowIndex();
                                 projectObj.project.calcProgram.templates.splice(idx, 1);
-                                projectObj.project.calcProgram.compileAllTemps();
+                                projectObj.project.calcProgram.compileTemplateMaps();
                                 calcProgramManage.buildSheet();
                                 calcProgramManage.mainSpread.getActiveSheet().setSelection(idx - 1, 0, 1, 1);
                                 calcProgramManage.refreshDetailSheet();

+ 10 - 8
web/building_saas/main/js/views/installation_fee_view.js

@@ -795,9 +795,9 @@ let installationFeeObj={
                 $("#modify_feeRule").modal('hide');
                 installation_fee.updateFeeRule(updateMap,modifyRule.libID,modifyRule.ID,function () {
                     me.refreshRationInstallationRow(me.rationInstallSheet.getSelections()[0].row);
-                    installation_fee.calcInstallationFee(function (isChange) {
+                    installation_fee.calcInstallationFee(function (isChange,rations) {
                         if(isChange){
-                            projectObj.project.calcProgram.calcAllNodesAndSave();
+                            projectObj.project.calcProgram.calcRationsAndSave(rations);
                         }
                     });
                 });
@@ -833,8 +833,10 @@ let installationFeeObj={
         }
         installation_fee.updateFeeRule({position:recode.code,billID:recode.ID},rationInstall.libID,rationInstall.ruleId,function (){
             me.refreshRationInstallationRow(riselection.row);
-            installation_fee.calcInstallationFee(function () {
-                projectObj.project.calcProgram.calcAllNodesAndSave();
+            installation_fee.calcInstallationFee(function (isChange,rations) {
+                if(isChange){
+                    projectObj.project.calcProgram.calcRationsAndSave(rations);
+                }
             });
         });
     },
@@ -1241,9 +1243,9 @@ let installationFeeObj={
             }
         }
         $('#calc_installation_fee').modal('hide');
-        install_fee.calcInstallationFee(function (isChange) {
+        install_fee.calcInstallationFee(function (isChange,rations) {
             if(isChange){
-                projectObj.project.calcProgram.calcAllNodesAndSave();
+                projectObj.project.calcProgram.calcRationsAndSave(rations);
             }
             installationFeeObj.showRationInstallationData(projectObj.project.mainTree.selected);
         });
@@ -1292,9 +1294,9 @@ let installationFeeObj={
         let IDList = _.map(riList,'ID');
         ration_installation.applyRuleByIDs(selectRecord.projectID,IDList,selectRecord.ruleId,function () {
             //计算安装增加费
-            projectObj.project.installation_fee.calcInstallationFee(function (isChange) {
+            projectObj.project.installation_fee.calcInstallationFee(function (isChange,rations) {
                 if(isChange){
-                    projectObj.project.calcProgram.calcAllNodesAndSave();
+                    projectObj.project.calcProgram.calcRationsAndSave(rations);
                 }
             });
         })