Browse Source

feat: 设备购置删除子项后父项重新计算

zhangweicheng 4 năm trước cách đây
mục cha
commit
efcc08c6f7

+ 3 - 1
modules/equipment_purchase/facade/equipment_purchase_facade.js

@@ -98,7 +98,9 @@ async function updateEquipments (projectID,updateData,total){
     for(let data of updateData){
         if(data.type === 'insert' ){
             tasks.push({updateOne:{ filter:{projectID},update:{'$push':{equipments:{ $each: data.documents }}}}})
-        }else {
+        }else if(data.type === 'delete' ){
+            tasks.push({updateOne:{ filter:{projectID},update:{'$pull':{equipments:{ ID: data.ID }}}}})
+        } else {
             let task = {updateOne : {
                 filter:{projectID,'equipments.ID':data.ID},
                 update:{$set:getPreUpdate('equipments.$',data.doc)}

+ 10 - 2
web/building_saas/main/js/views/equipment_purchase_view.js

@@ -190,6 +190,7 @@ let equipmentPurchaseObj  = {
         let me = this;
         let temIDMap = {};
         let temParentMap = {};
+        let deleteMap = {};
         for(let d of  updateData){
             if(d.doc){
                 temIDMap[d.ID] = d;
@@ -197,6 +198,7 @@ let equipmentPurchaseObj  = {
                     temParentMap[d.doc.ParentID]?temParentMap[d.doc.ParentID].push(d):temParentMap[d.doc.ParentID]=[d];
                 } 
             } 
+            if(d.type === 'delete')deleteMap[d.ID] = true
         }
         for(let d of this.data){
             let children = this.parentMap[d.ID];
@@ -217,6 +219,7 @@ let equipmentPurchaseObj  = {
                 if(children&&children.length > 0){
                     for(let c of children){
                         let newChild =  temIDMap[c.ID]; 
+                        if(deleteMap[c.ID]) continue;//如果是删除操作,不用计算
                         if(newChild && newChild.doc){
                           if(newChild.doc.ParentID && newChild.doc.ParentID!=ID) continue;//升级操作时,子节点可能已经不是它的子节点了
                         } 
@@ -333,6 +336,7 @@ let equipmentPurchaseObj  = {
         let dataMap = {};
         let temParentMap = {};
         let total = 0;
+        let deleteMap = {};
         for(let d of  updateData){
             if(d.doc){
                 dataMap[d.ID] = d;
@@ -340,11 +344,13 @@ let equipmentPurchaseObj  = {
                     temParentMap[d.doc.ParentID]?temParentMap[d.doc.ParentID].push(d):temParentMap[d.doc.ParentID]=[d];
                 } 
             } 
+            if(d.type === 'delete')deleteMap[d.ID] = true
         }
 
         for(let d of  this.data){
             //累加所有底层节点就行
             if(!this.parentMap[d.ID] && !temParentMap[d.ID] ){
+                if(deleteMap[d.ID]) continue;
                 let totalPrice = d.totalPrice?scMathUtil.roundForObj(d.totalPrice,getDecimal('glj.unitPrice')):0;
                 let data = dataMap[d.ID];
                 if(data && gljUtil.isDef(data.doc.totalPrice))totalPrice = data.doc.totalPrice;
@@ -373,7 +379,9 @@ let equipmentPurchaseObj  = {
             for(let data of updateData){
                 if(data.type === 'insert'){
                     this.sourceData.equipments.push(...data.documents);  
-                }else{
+                }else if (data.type === 'delete'){
+                   _.remove( this.sourceData.equipments,{ID:data.ID});
+                } else{
                     let equipment = _.find(this.sourceData.equipments,{ID:data.ID});
                     if(equipment){
                         Object.assign(equipment,data.doc);
@@ -471,7 +479,7 @@ let equipmentPurchaseObj  = {
                 },
                 callback: function (key, opt) {
                   let row = me.rightClickTarget.row;
-                  me.deleteEquipment(me.data[row].ID);
+                  me.updateEquipments([{ID:me.data[row].ID,type:'delete'}]);
                   //me.preApplyInfoPrice(row);
                 }
               }