Kaynağa Gözat

订单发货

ymy 1 yıl önce
ebeveyn
işleme
cab9f8ddd0

+ 26 - 2
src/api/delivery.ts

@@ -1,6 +1,6 @@
 import request from '@/benyun/utils/request'
 import store from '@/store/index'
-//查询加个
+//查询价格
 export function queryPricePackage(data:any) {
 	return request({
 		url: '/omsOrder/omsShippingOrder/getMultiplePrice',
@@ -9,10 +9,34 @@ export function queryPricePackage(data:any) {
 	})
 }
 //单条发货
-export function addmultiple(data?:any) {
+export function addmultiple(data:any) {
 	return request({
 		url: '/omsOrder/omsShippingOrder/addmultiple',
 		method: 'POST',
 		data:data
 	})
+}
+//整车价格
+export function getMultipleToOnePrice(data:any) {
+	return request({
+		url: '/omsOrder/omsShippingOrder/getMultipleToOnePrice',
+		method: 'POST',
+		data:data
+	})
+}
+//整车发货
+export function addMultipleToOne(data:any) {
+	return request({
+		url: '/omsOrder/omsShippingOrder/addMultipleToOne',
+		method: 'POST',
+		data:data
+	})
+}
+//查库存
+export function getInventoryByStoreHouseIdAndSkuids(data:any) {
+	return request({
+		url: '/supply/supplyInventory/getInventoryByStoreHouseIdAndSkuids',
+		method: 'POST',
+		data:data
+	})
 }

+ 115 - 23
src/views/oms/order/components/batchbyOneModal.vue

@@ -1,7 +1,7 @@
 <template>
   <el-drawer
     v-loading="load"
-    title="订单发货(批量逐一发货)"
+    :title="data.length <= 1 ? '订单发货' : '订单发货(批量逐一发货)'"
     :visible.sync="drawer"
     :direction="direction"
     size="50%">
@@ -16,22 +16,23 @@
         </el-pagination>
       </div>
       <deliveryGoodsInfo @editState="editState" @editResult="editResult" ref="info" />
-      <deliveryPrice :data="priceObj[data[currentOrder].omsOrderIds]" v-if="data[currentOrder] && priceObj[data[currentOrder].omsOrderIds]" @prichChange="prichChange" />
+      <deliveryPrice :data="priceObj[data[currentOrder].omsOrderIds]" ref="price" v-if="data[currentOrder] && priceObj[data[currentOrder].omsOrderIds]" 
+      @prichChange="prichChange" :currentValue="currentPrice[data[currentOrder].omsOrderIds]" />
     </div>
     <div class="space"></div>
     <div class="deli-footer">
       <div class="d-left">
         <div class="estimate-total">
-          订单小计<span class="total">¥16.00</span> <span class="detail">明细></span>
+          订单小计<span class="total">¥{{data[currentOrder] && currentPrice[data[currentOrder].omsOrderIds]?currentPrice[data[currentOrder].omsOrderIds].estimateFreight:'0.00'}}</span> <span class="detail">明细></span>
         </div>
-        <div class="estimate-total">
+        <!-- <div class="estimate-total">
           预计总价<span class="total">¥48.00</span>
-        </div>
+        </div> -->
         <div class="agreement">
           <el-checkbox v-model="checked">已读并同意《XXX电子运单协议》</el-checkbox>
         </div>
       </div>
-      <div class="send-btn" @click="btn">确认,下一单</div>
+      <div class="send-btn" @click="btn" :class="{'stopBtn':stopHandle}">确认</div>
     </div>
   </el-drawer>
 </template>
@@ -41,7 +42,7 @@ import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 import DeliveryGoodsInfo from "./deliveryGoodsInfo.vue";
 import DeliveryPrice from "./deliveryPrice.vue";
 import { add,multiply,subtract,divide } from '@/benyun/utils/accuracy'
-import { queryPricePackage,addmultiple } from  '@/api/delivery'
+import { queryPricePackage,addmultiple,getInventoryByStoreHouseIdAndSkuids } from  '@/api/delivery'
 import Format from '@/benyun/utils/dateFormat'
 
 @Component({components:{DeliveryGoodsInfo,DeliveryPrice}})
@@ -51,6 +52,7 @@ export default class BatchbyOneModal extends Vue {
   checked=false;
   data:Array<any>=[];
   currentOrder=0;
+  stopHandle=false;
   load = false;
   priceObj:any={};
   currentPrice:any={};
@@ -59,19 +61,25 @@ export default class BatchbyOneModal extends Vue {
   }
   editResult(v:any){
     this.data[this.currentOrder] = v;
+    this.getStoreCount(v);
     this.getPriceInfo(v);
   }
   prichChange(index:number){
     this.currentPrice[this.data[this.currentOrder].omsOrderIds] = this.priceObj[this.data[this.currentOrder].omsOrderIds][index];
+    this.$forceUpdate();
   }
   currentChange(v:number){
     this.currentOrder = v-1;
+    this.$forceUpdate();
     this.$nextTick(()=>{
       (this.$refs.info as any).setValue(this.data[this.currentOrder]);
     })
   }
   setValue(data:Array<any>){
     this.data = [];
+    this.stopHandle = false;
+    this.currentOrder = 0;
+    this.checked = false;
     if(data && data.length > 0){
       for(const item of data){
         const requestId =  new Date().getTime() + this.getUuid()
@@ -102,7 +110,8 @@ export default class BatchbyOneModal extends Vue {
             obj.subItem.push({
               requestId:requestId,
               omsOrderId:item.id,
-              omsOrderItemId:i.id,
+              omsOrderItemId:i.itemId,
+              // omsOrderItemSkuId:i.itemId,
               tmsGoodsModel:i.styleId,
               tmsGoodsCode:i.skuId,
               tmsQuantity:i.qty,
@@ -126,15 +135,27 @@ export default class BatchbyOneModal extends Vue {
     return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
   }
   btn(){
+    if(this.stopHandle){
+      return
+    }
+    if(!this.checked){
+      this.$message('请阅读并同意运单协议!')
+      return
+    }
     if(!this.data[0].orderType || !this.data[0].tmsShipmentConsignor){
       this.$message("请编辑订单信息");
       return
     }
+    if(!this.currentPrice[this.data[this.currentOrder].omsOrderIds]){
+      this.$message("请选择价格!");
+      return
+    }
     if(this.data.length > 1){
+      this.currentOrder = 0;
       let ids='';
       for(const item of this.data){
         if(!item.orderType || !item.tmsShipmentConsignor){
-          ids = ids ? ids + ',' + item.omsOrderIds : item.omsOrderIds
+          ids = ids ? ids + ',' + item.omsOrderIds : String(item.omsOrderIds)
         }
       }
       if(ids){
@@ -144,19 +165,62 @@ export default class BatchbyOneModal extends Vue {
           type: 'warning'
         }).then(() => {
           this.setOnEditOrderInfo(ids);
-          for(const item of this.data){
-            this.sendGoods(item);
-          }
+          this.sendGoods(this.data[0]);
+          // let i = 0;
+          // for(const item of this.data){
+          //   if(i == 0){
+          //     this.sendGoods(item);
+          //   }else{
+          //     this.getStoreCount(item,this.getPriceInfo);
+          //   }
+          //   i++;
+          // }
         }).catch(() => {});
       }else{
-        for(const item of this.data){
-          this.sendGoods(item);
-        }
+        this.sendGoods(this.data[0]);
+        // for(const item of this.data){
+        //   this.sendGoods(item);
+        // }
       }
     }else{
       this.sendGoods(this.data[0]);
     }
   }
+  //查库存
+  getStoreCount(item:any,callback?:Function){
+    let params:any={};
+    params.storeHouseId = item.storeHouse;
+    params.skuIds=[]
+    if(item.subItem){
+      for(const i of item.subItem){
+        params.skuIds.push(i.omsOrderItemId)
+      }
+    }
+    this.load = true;
+    getInventoryByStoreHouseIdAndSkuids(params).then((res:any) => {
+      this.load = false;
+      let m='';
+      for(const i of item.subItem){
+        for(const d of res.data){
+          if(i.omsOrderItemId == d.skuid && d.inventory <=0){
+            m = m ? m + ',' + i.name : i.name;          
+          }
+        }
+      }
+      if(m){
+        this.$message({
+          message:'商品“'+m+'”库存不足!',
+          type:'error'
+        })
+        this.stopHandle = true;
+        return
+      }
+      if(callback) callback(item,this.sendGoods)
+    }).catch(()=>{
+      this.load = false;
+    })
+  }
+  //发货
   sendGoods(item:any){
     let params:any=(this as any).$lodash.cloneDeep(item);
     if(this.priceObj[item.omsOrderIds]){
@@ -168,10 +232,24 @@ export default class BatchbyOneModal extends Vue {
       params.priceId = this.currentPrice[item.omsOrderIds].id;
     }
     params.omsOrderIds = [item.omsOrderIds];
+    this.load = true;
     addmultiple(params).then((res:any) => {
-
-    }).catch((err:any) => {
-
+      this.load = false;
+      if(res.code == 200){
+        this.currentOrder ++;
+        if(this.currentOrder < this.data.length){
+          let item:any = this.data[this.currentOrder];
+          if(this.currentPrice[item.omsOrderIds]){
+            this.sendGoods(item);
+          }else{
+            this.getStoreCount(item,this.getPriceInfo);
+          }
+        }
+        this.$forceUpdate();
+      }
+    }).catch(() => {
+     
+      this.load = false;
     })
   }
   setOnEditOrderInfo(ids:string){
@@ -179,6 +257,9 @@ export default class BatchbyOneModal extends Vue {
     for(const item of this.data){
       if(ids.indexOf(item.omsOrderIds) > -1){
         item.orderType = _value.orderType;
+        item.storeHouse = _value.storeHouse;
+        item.tmsArrivalDate = _value.tmsArrivalDate;
+        item.tmsDeliveryDate =_value.tmsDeliveryDate;
         item.tmsTransportMethod = _value.tmsTransportMethod;
         item.tmsBusinessMan = _value.tmsBusinessMan;
         item.tmsBusinessPhone = _value.tmsBusinessPhone;
@@ -207,6 +288,7 @@ export default class BatchbyOneModal extends Vue {
       }
     }
   }
+  //获取价格
   getPriceInfo(data:any,callback?:Function){
     let params:any={};
     params.startAddressCode = data.tmsShipmentCityNo + '000';
@@ -214,18 +296,25 @@ export default class BatchbyOneModal extends Vue {
     params.omsIds=[this.data[0].omsOrderIds];
     this.load = true;
     queryPricePackage(params).then((res:any) => {
-      if(this.currentPrice && this.currentPrice[data.omsOrderIds]){
-        delete this.currentPrice[data.omsOrderIds]
-      }
+      // if(this.currentPrice && this.currentPrice[data.omsOrderIds]){
+      //   delete this.currentPrice[data.omsOrderIds]
+      // }
       
       this.load=false;
+      let current=null;
       for(let item of res.data[0].data){
         let d = new Date().getTime() + item.duration*60*60*1000;
-        item.endTime=Format(new Date(d),'MM月dd日 HH:mm')
+        item.endTime=Format(new Date(d),'MM月dd日 HH:mm');
+        if(!current) current = item;
+        if(Number(current.estimateFreight) > Number(item.estimateFreight)){
+          current = item
+        }
       }
       this.priceObj[data.omsOrderIds] = res.data[0].data;
+      this.currentPrice[data.omsOrderIds] = current;
+      this.$forceUpdate();
       if(callback){
-        callback()
+        callback(data)
       }
     }).catch((err:any)=>{
       this.load = false;
@@ -289,6 +378,9 @@ export default class BatchbyOneModal extends Vue {
     box-shadow: 0px 2px 6px 0px rgba(93, 167, 249, 100);
     cursor: pointer;
   }
+  .stopBtn{
+    opacity: 0.7;
+  }
 }
 .space{
   height: 80px;

+ 158 - 32
src/views/oms/order/components/carpoolModal.vue

@@ -1,40 +1,29 @@
 <template>
   <el-drawer
-    title="订单发货(共3单)"
+    :title="'订单发货(共'+data.length+'单)'"
     :visible.sync="drawer"
     :direction="direction"
-    size="40%">
+    size="50%">
     <div class="content">
-      <div class="order-cont">
+      <div class="order-cont" v-for="(item,index) of data" :key="index">
         <div class="cont-left">
-          <div class="order-code">订单编号:02233221000</div>
+          <div class="order-code">订单号:{{item.id}}</div>
           <div class="order-other">
-            <div class="receive-name">姓名:王小二</div>
-            <div class="address">目的地:<span>上海</span></div>
-            <div class="time">预计送达:8月6日 12:00前</div>
+            <div class="receive-name">姓名:{{item.receiverName}}</div>
+            <div class="address">目的地:<span>{{item.receiverProvince+'-'+item.receiverCity}}</span></div>
+            <!-- <div class="time">预计送达:8月6日 12:00前</div> -->
           </div>
         </div>
-        <i class="el-icon-arrow-right"></i>
+        <!-- <i class="el-icon-arrow-right"></i> -->
       </div>
-      <div class="order-cont onAct">
-        <div class="cont-left">
-          <div class="order-code">订单编号:02233221000</div>
-          <div class="order-other">
-            <div class="receive-name">姓名:王小二</div>
-            <div class="address">目的地:<span>上海</span></div>
-            <div class="time">预计送达:8月6日 12:00前</div>
-          </div>
-        </div>
-        <i class="el-icon-arrow-down"></i>
-      </div>
-      <deliveryGoodsInfo @editState="editState" @editResult="editResult" ref="info" />
-      <deliveryPrice />
+      <deliveryGoodsInfo :hideOrderCode="true" @editState="editState" @editResult="editResult" ref="info" />
+      <deliveryPrice v-if="priceData && priceData.length > 0" :data="priceData" :currentValue="currentPrice" @prichChange="prichChange" />
     </div>
     <div class="space"></div>
     <div class="deli-footer">
       <div class="d-left">
         <div class="estimate-total">
-          预计总价<span class="total">¥16.00</span> <span class="detail">明细></span>
+          预计总价<span class="total">¥{{currentPrice.estimateFreight?currentPrice.estimateFreight:'0.00'}}</span> <span class="detail">明细></span>
         </div>
         <div class="agreement">
           <el-checkbox v-model="checked">已读并同意《XXX电子运单协议》</el-checkbox>
@@ -49,20 +38,156 @@
 import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 import DeliveryGoodsInfo from "./deliveryGoodsInfo.vue";
 import DeliveryPrice from "./deliveryPrice.vue";
+import { add,multiply,subtract,divide } from '@/benyun/utils/accuracy'
+import { getMultipleToOnePrice,addMultipleToOne,getInventoryByStoreHouseIdAndSkuids } from  '@/api/delivery'
+import Format from '@/benyun/utils/dateFormat'
 @Component({components:{DeliveryGoodsInfo,DeliveryPrice}})
-export default class DeliveryModal extends Vue {
+export default class carpoolModal extends Vue {
   drawer=false;
   direction='rtl'
   checked=false;
-  onAct='1'
+  stopHandle=false;
+  load=false;
+  onAct='1';
+  data:Array<any>=[];
+  priceData:Array<any>=[]
+  currentPrice:any={}
+  value:any={};
   setShow(v:boolean){
     this.drawer=v;
   }
+  setValue(data:Array<any>){
+    this.data =data;
+    this.value={};
+    this.value.subItem=[];
+    this.checked = false;
+    const requestId =  new Date().getTime() + this.getUuid();
+    this.value.requestId = requestId;
+    for(let item of data){     
+      if(item.items){
+        for(const i of item.items){
+          let total:any = 0;
+          if(Number(i.qty) && Number(i.price)){
+            total = multiply(Number(i.qty),Number(i.price))
+          }
+          this.value.subItem.push({
+            requestId:requestId,
+            omsOrderId:item.id,
+            omsOrderItemId:i.itemId,
+            tmsGoodsModel:i.styleId,
+            tmsGoodsCode:i.skuId,
+            // omsOrderItemSkuId:i.itemId,
+            tmsQuantity:i.qty,
+            tmsGoodsTotalPrice:total,
+            name:i.name,
+            price:i.price,
+            weight:i.weight
+          })
+        }
+      }
+    }
+    this.$nextTick(()=>{
+      (this.$refs.info as any).setValue(this.value)
+    })
+  }
+  getUuid(){
+    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+  }
+  prichChange(index:number){
+    this.currentPrice = this.priceData[index];
+    this.$forceUpdate();
+  }
+  getPriceInfo(data:any){
+    let params:any={};
+    params.startAddressCode = data.tmsShipmentCityNo + '000';
+    params.endAddressCode = data.tmsUnloadingCityNo + '000';
+    params.omsIds=[];
+    for(const item of this.data){
+      params.omsIds.push(item.id);
+    }
+    this.load = true;
+    getMultipleToOnePrice(params).then((res:any) => {
+      this.load=false;
+      let current=null;
+      for(let item of res.data[0].data){
+        let d = new Date().getTime() + item.duration*60*60*1000;
+        item.endTime=Format(new Date(d),'MM月dd日 HH:mm');
+        if(!current) current = item;
+        if(Number(current.estimateFreight) > Number(item.estimateFreight)){
+          current = item
+        }
+      }
+      this.priceData = res.data[0].data;
+      this.currentPrice = current;
+    }).catch((err:any)=>{
+      this.load = false;
+    })
+  }
   btn(){
-    
+    if(this.stopHandle){
+      return
+    }
+    if(!this.checked){
+      this.$message('请阅读并同意运单协议!')
+      return
+    }
+    let params:any=(this as any).$lodash.cloneDeep(this.value);
+    if(this.priceData){
+      try{
+        params.pricePlan = JSON.stringify(this.priceData)
+      }catch(e){}
+    }
+    if(this.currentPrice){
+      params.priceId = this.currentPrice.id;
+    }
+    params.omsOrderIds=[]
+    for(const item of this.data){
+      params.omsOrderIds.push(item.id);
+    }
+    this.load = true;
+    addMultipleToOne(params).then((res:any) => {
+      this.load = false;
+    }).catch(()=>{  
+      this.load = false;
+    })
+  }
+  //查库存
+  getStoreCount(item:any,callback?:Function){
+    let params:any={};
+    params.storeHouseId = item.storeHouse;
+    params.skuIds=[]
+    if(item.subItem){
+      for(const i of item.subItem){
+        params.skuIds.push(i.omsOrderItemId)
+      }
+    }
+    this.load = true;
+    getInventoryByStoreHouseIdAndSkuids(params).then((res:any) => {
+      this.load = false;
+      let m='';
+      for(const i of item.subItem){
+        for(const d of res.data){
+          if(i.omsOrderItemId == d.skuid && d.inventory <=0){
+            m = m ? m + ',' + i.name : i.name;          
+          }
+        }
+      }
+      if(m){
+        this.$message({
+          message:'商品“'+m+'”库存不足!',
+          type:'error'
+        })
+        this.stopHandle = true;
+        return
+      }
+    }).catch(()=>{
+      this.load = false;
+    })
   }
   editResult(v:any){
-    
+    this.value = v;
+    this.getPriceInfo(v);
+    this.getStoreCount(v);
   }
   editState(v:boolean){
     this.drawer = v
@@ -89,7 +214,8 @@ export default class DeliveryModal extends Vue {
     margin-bottom: 16px;
     cursor: pointer;
     .cont-left{
-      width: calc(100% - 40px);
+      // width: calc(100% - 40px);
+      width: 100%;
       .order-code{
         width: 100%;
         font-size: 14px;
@@ -100,17 +226,17 @@ export default class DeliveryModal extends Vue {
         display: flex;
         font-size: 14px;
         .receive-name{
-          width: 120px;
+          width: 150px;
         }
         .address{
-          width: 150px;
+          width: calc(100% - 150px);
           span{
             color: #F00;
           }
         }
-        .time{
-          width: calc(100% - 120px - 150px);
-        }
+        // .time{
+        //   width: calc(100% - 120px - 150px);
+        // }
       }
     }
   }

+ 58 - 14
src/views/oms/order/components/deliveryGoodsInfo.vue

@@ -4,7 +4,7 @@
       <span @click="edit">编辑</span>
     </div>
     <div class="g-box">
-      <div class="info-row">
+      <div class="info-row" v-if="!hideOrderCode">
         <div class="info-col">
           <span class="label">内部订单号:</span>
           <span :title="value.omsOrderIds">{{ value.omsOrderIds }}</span>
@@ -110,16 +110,16 @@
           <span :title="value.tmsUnloadingContacts">{{ value.tmsUnloadingContacts }}</span>
         </div>
       </div>
-      <!-- <div class="info-row">
+      <div class="info-row">
         <div class="info-col col-width">
-          <span class="label">期望提货时间:</span>
-          <span class="time">2023-07-29 12:00</span>
+          <span class="label">期望送达时间:</span>
+          <span class="time">{{value.tmsArrivalDate}}</span>
         </div>
         <div class="info-col col-width">
-          <span class="label">期望送达时间:</span>
-          <span class="time">2023-08-01 18:00</span>
+          <span class="label">期望提货时间:</span>
+          <span class="time">{{value.tmsDeliveryDate}}</span>
         </div>
-      </div> -->
+      </div>
     </div>
     <div class="g-box">
       <div class="goods-top">
@@ -129,10 +129,6 @@
             <span class="name-label">重量合计:</span>
             <span class="total-num">{{totalWeight}}kg</span>
           </div>
-          <!-- <div class="g-total">
-            <span class="name-label">体积合计:</span>
-            <span class="total-num">2.00m³</span>
-          </div> -->
         </div>
       </div>
       <div class="table">
@@ -143,8 +139,8 @@
           header-cell-class-name="header-cell"
           height="200"
           :data="value.subItem">
-          <vxe-column field="tmsGoodsCode" title="物料编码"></vxe-column>
-          <vxe-column field="name" title="物料名称" show-overflow></vxe-column>
+          <vxe-column field="tmsGoodsCode" title="物料编码" width="130"></vxe-column>
+          <vxe-column field="name" title="物料名称" width="260"></vxe-column>
           <vxe-column field="weight" title="重量"></vxe-column>
           <vxe-column field="price" title="单价"></vxe-column>
           <vxe-column field="tmsQuantity" title="数量"></vxe-column>
@@ -169,6 +165,9 @@ import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 import { add,multiply,subtract,divide } from '@/benyun/utils/accuracy'
 @Component
 export default class DeliveryGoodsInfo extends Vue {
+  @Prop()
+  hideOrderCode?:Boolean
+
   data:Array<any>=[];
   value:any={};
   showModal=false;
@@ -176,6 +175,7 @@ export default class DeliveryGoodsInfo extends Vue {
   config:any={
     attr:{
       size:'small',
+      labelWidth:'120px',
       rules:{
         orderType:[{
           required: true, message: '请选择订单类型!', trigger: 'change'
@@ -212,6 +212,15 @@ export default class DeliveryGoodsInfo extends Vue {
         tmsUnloadingAddress:[{
           required: true, message: '收货地址不能为空!', trigger: 'blur'
         }],
+        storeHouse:[{
+          required: true, message: '请选择仓库!', trigger: 'change'
+        }],
+        tmsArrivalDate:[{
+          required: true, message: '期望送达时间不能为空!', trigger: 'blur'
+        }],
+        tmsDeliveryDate:[{
+          required: true, message: '期望提货时间不能为空!', trigger: 'blur'
+        }]
       }
     },
     columns:[
@@ -363,6 +372,39 @@ export default class DeliveryGoodsInfo extends Vue {
             clearable:true
           }
         }
+      }],
+      [{
+        label:'期望送达时间',
+        prop:'tmsArrivalDate',
+        component:'byDatePicker',
+        compConfig:{
+          attr:{
+            clearable:true,
+            type:'datetime'
+          }
+        }
+      },{
+        label:'期望提货时间',
+        prop:'tmsDeliveryDate',
+        component:'byDatePicker',
+        compConfig:{
+          attr:{
+            clearable:true,
+            type:'datetime'
+          }
+        }
+      }],
+      [{
+        label:'仓库',
+        span:12,
+        prop:'storeHouse',
+        component:'warehouse',
+        compConfig:{
+          attr:{
+            placeholder:'请选择仓库',
+            clearable:true
+          }
+        }
       }]
     ]
   }
@@ -380,10 +422,12 @@ export default class DeliveryGoodsInfo extends Vue {
   }
   setValue(v:any){
     this.value = v ? v : {};
+    this.totalWeight = 0;
     if(this.value.subItem && this.value.subItem.length > 0){
       for(const item of this.value.subItem){
         if(Number(item.weight)){
-          this.totalWeight = add(this.totalWeight,Number(item.weight));
+          let totalWeight = multiply(Number(item.weight),Number(item.tmsQuantity))
+          this.totalWeight = add(this.totalWeight,totalWeight);
         }
       }
     }

+ 11 - 3
src/views/oms/order/components/deliveryPrice.vue

@@ -9,7 +9,7 @@
           <div class="send-price">¥16.00起</div>
         </div>
       </div> -->
-      <div class="send-item" v-for="(item,index) of data" :key="index" :title="item.ruleName" :class="{'onSend':onIndex == index}" @click="priceHandle(index)" >
+      <div class="send-item" v-for="(item,index) of data" :key="index" :title="item.ruleName" :class="{'onSend':currentValue.id == item.id}" @click="priceHandle(index)" >
         <div class="label-name">{{item.ruleName}}</div>
         <div class="send-info">
           <div class="s-time">{{item.endTime}}前</div>
@@ -24,12 +24,20 @@ import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 @Component({components:{}})
 export default class DeliveryPrice extends Vue {
   @Prop()
-  data?:Array<any>=[]
+  data?:Array<any>;
+
+  @Prop()
+  currentValue?:any;
+
   onIndex:any=null;
+  mounted(){
+   
+  }
   priceHandle(index:number){
-    this.onIndex = index;
+    // this.onIndex = item.id;
     this.$emit('prichChange',index)
   }
+
 }
 </script>
 <style lang="scss" scoped>

+ 4 - 1
src/views/oms/order/components/sendModeModal.vue

@@ -31,6 +31,7 @@ export default class SendModeModal extends Vue {
   value=false;
   mode='';
   setShow(v:boolean){
+    this.mode = '';
     this.value = v;
   }
   modeHandle(v:string){
@@ -38,7 +39,9 @@ export default class SendModeModal extends Vue {
     this.value = false;
     this.$emit('modeChange',v)
   }
-  show(){}
+  show(){
+    
+  }
   hide(){}
 }
 </script>

+ 1 - 0
src/views/oms/order/index.vue

@@ -539,6 +539,7 @@ export default class Order extends Vue {
     if(v == '1'){
       if(this.$refs.carpoolModal){
         (this.$refs.carpoolModal as any).setShow(true);
+        (this.$refs.carpoolModal as any).setValue(data);
       }
     }
   }