Browse Source

bug fixed

zhangweicheng 7 years ago
parent
commit
54ab5880ce

+ 4 - 4
web/building_saas/glj/js/project_glj.js

@@ -35,9 +35,9 @@ $(document).ready(function () {
         init();
     });
 
-    slideResize($("#glj-main"), function () {
+ /*   slideResize($("#glj-main"), function () {
         projectGLJSpread.sheetObj.spread.refresh();
-    });
+    });*/
 
     // 单价文件切换弹框
     $('#change-dj').on('shown.bs.modal', function () {
@@ -267,9 +267,9 @@ function spreadInit() {
         }
     });*/
 
-    loadSize("glj-main", function () {
+  /*  loadSize("glj-main", function () {
         projectGLJSpread.sheetObj.spread.refresh();
-    });
+    });*/
 }
 
 /**

+ 16 - 4
web/building_saas/main/js/models/installation_fee.js

@@ -57,28 +57,40 @@ var installation_fee = {
             let installationFee = this.getInstallationFeeByLibID(libID);
             return _.find(installationFee.feeRule,{'ID':feeRuleID});
         };
-        installation_fee.prototype.updateFeeItem = function(doc,libID,feeItemID,callback){
+        installation_fee.prototype.updateFeeItem = function(doc,libID,feeItemID,cleanPosition,callback){
             let me = this,ration_install=projectObj.project.ration_installation;
             let feeItem = me.getFeeItemByID(libID,feeItemID);
             let temFeeItem = _.cloneDeep(feeItem);//暂时不更新缓存
             let updateData = [];
+            let cleanRules = [];
             let rationInstallations = [];
             for(let d_key in doc){
                 temFeeItem[d_key] = doc[d_key]
             }
             updateData.push(me.getFeeItemUpdateData(libID,feeItemID,doc));
-            if(temFeeItem.isCal == 1){//勾选记取的时候要同步更新对应的定额安装费
-                let sections = me.getInstallSectionsByfeeItemID(libID,feeItemID);
-                for (let s of sections){
+            let sections = me.getInstallSectionsByfeeItemID(libID,feeItemID);
+            for (let s of sections){
+                if(temFeeItem.isCal == 1){//勾选记取的时候要同步更新对应的定额安装费
                     me.getRIUpdateDataBySectionUpdate(s.ID,s.feeRuleId,rationInstallations);//生成受影响的定额安装增加费并加入到数组中
+                }else {//取消打勾时清空对应的定额安装费的规则项
+                    me.getRIUpdateDataBySectionUpdate(s.ID,"",rationInstallations);//生成受影响的定额安装增加费并加入到数组中
                 }
             }
+            if(cleanPosition==true){//如果要清除记取位置
+                let [dataArray,impacRules] = installationFeeObj.getFeeRuleUpdateDataByFeeItem(feeItem,{code: "",ID:''});
+                updateData = updateData.concat(dataArray);
+                cleanRules = impacRules;
+            }
             $.bootstrapLoading.start();
             me.submitInstallationUpdate(updateData,rationInstallations,function (data) {
                 //更新缓存
                 for(let d_key in doc){
                     feeItem[d_key] = doc[d_key]
                 }
+                for(let ir of cleanRules){//清除记取位置
+                    ir.position = "";
+                    ir.billID  = "";
+                }
                 if(callback){
                     callback();
                 }

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

@@ -403,11 +403,12 @@ var Ration = {
                        //添加新的记录
                        project.ration_glj.addDatasToList(recode.ration_gljs);
                        project.ration_coe.addDatasToList(recode.ration_coes);
+                       project.ration_installation.addDatasToList(recode.ration_installs);
                        //to do 添加增加安装费
                    }
                 }
                 project.projectGLJ.loadData(function () {
-                    gljOprObj.refreshView();
+                    gljOprObj.showDataIfRationSelect(projectObj.project.mainTree.selected,'11111');
                     project.calcProgram.calcRationsAndSave(refershNodes);
                     projectObj.mainController.refreshTreeNode(refershNodes, true);
                     $.bootstrapLoading.end();

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

@@ -274,6 +274,14 @@ var gljOprObj = {
         sheet.bind(GC.Spread.Sheets.Events.CellClick, me.onCellClick);
         sheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, me.onCellDoubleClick);
         sheet.bind(GC.Spread.Sheets.Events.ClipboardChanged, me.onClipboardChanged);
+        sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
+            if (args.row>=me.sheetData.length){
+                args.cancel = true;
+            }
+            if (me.sheetData[args.row].isMixRatio) {
+                args.cancel = true;
+            }
+        });
         gljContextMenu.loadGLJSpreadContextMenu();
     },
     initCoeSheet: function (sheet) {
@@ -745,8 +753,11 @@ var gljOprObj = {
         return rowstr;
 
     },
-    showDataIfRationSelect: function (node) {
+    showDataIfRationSelect: function (node,selectedNodeId) {
         var isShow = false;
+        if(selectedNodeId){
+            this.selectedNodeId = selectedNodeId;
+        }
         if (node) {
             if (this.selectedNodeId && this.selectedNodeId == node.getID()) {
                 return;

+ 33 - 7
web/building_saas/main/js/views/installation_fee_view.js

@@ -599,8 +599,13 @@ let installationFeeObj={
         me.rationInstallSheet.repaint();
     },
     onFeeRuleDoubleClick:function (e,info) {
+        let from = $("#more_from").val();
         if(info.row!=undefined||info!=null){
-            installationFeeObj.updateFeeRuleToSection(info.row);
+            if(from =='feeDetail'){
+                installationFeeObj.updateFeeRuleToSection(info.row);
+            }else if(from == 'rationInstallation'){//在定额安装增加费那里点击更多
+                installationFeeObj.updateFeeRuleToRInstall(info.row);
+            }
         }else {
             return;
         }
@@ -778,7 +783,10 @@ let installationFeeObj={
             }
             if(updateMap){//如果有需要更新的属性
                 if(modifyRule.base&&installSectionBase.indexOf(modifyRule.base)>0){
-                    let sum = modifyRule.labour+modifyRule.material+modifyRule.machine;//三项的和要等于100
+                    let temLabour = modifyRule.labour?modifyRule.labour:0;
+                    let temMaterial = modifyRule.material?modifyRule.material:0;
+                    let temMachine = modifyRule.machine?modifyRule.machine:0;
+                    let sum = temLabour+temMaterial+temMachine;//三项的和要等于100
                     if(sum!=100){
                        alert("人工、材料、机械的和应等于100,请重新输入。");
                        return;
@@ -787,7 +795,14 @@ 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) {
+                        if(isChange){
+                            projectObj.project.calcProgram.calcAllNodesAndSave();
+                        }
+                    });
                 });
+            }else {
+                $("#modify_feeRule").modal('hide');
             }
         }
     },
@@ -937,10 +952,19 @@ let installationFeeObj={
         let me = installationFeeObj;
         let feeItem = this.feeItemData[info.row];
         let header = this.feeItemSetting.header[info.col];
-        let doc={};
+        let doc={},cleanPosition = false;
         doc[header.dataCode] = info.newValue;
-        projectObj.project.installation_fee.updateFeeItem(doc,feeItem.libID,feeItem.ID,function () {
+        if(header.dataCode=='feeType'&&info.newValue == '子目费用'){
+            doc.position = '';
+            doc.billID = '';
+            cleanPosition = true;
+        }
+        projectObj.project.installation_fee.updateFeeItem(doc,feeItem.libID,feeItem.ID,cleanPosition,function () {
             me.feeItemSheet.getCell(info.row, info.col).value(info.newValue);
+            if(cleanPosition==true){
+                me.feeItemSheet.getCell(info.row, info.col+1).value("");
+                me.showFeeDetailData(feeItem.libID,feeItem.ID);
+            }
         });
     },
     onRationInstallValueChange:function (e,info) {
@@ -1114,7 +1138,10 @@ let installationFeeObj={
         if(this.feeDetailData&&this.feeDetailData.length>0&&this.feeDetailData[os.row]){
             let detail = this.feeDetailData[os.row];
             if(detail.base&&installSectionBase.indexOf(detail.base)>0){
-                let sum = detail.labour+detail.material+detail.machine;//三项的和要等于100
+                let temLabour = detail.labour?detail.labour:0;
+                let temMaterial = detail.material?detail.material:0;
+                let temMachine = detail.machine?detail.machine:0;
+                let sum = temLabour+temMaterial+temMachine;//三项的和要等于100
                 if(sum!=100){
                     setTimeout(function () {//这里须用延时执行的办法,不然的弹窗确认窗口会和spreadjs 的事件有冲突
                         alert("人工、材料、机械的和应等于100,请重新输入。");
@@ -1218,9 +1245,8 @@ let installationFeeObj={
         install_fee.calcInstallationFee(function (isChange) {
             if(isChange){
                 projectObj.project.calcProgram.calcAllNodesAndSave();
-                installationFeeObj.showRationInstallationData(projectObj.project.mainTree.selected);
             }
-            console.log("cal end");
+            installationFeeObj.showRationInstallationData(projectObj.project.mainTree.selected);
         });
     },
     initSettingRadio:function () {