ymy 1 年間 前
コミット
94759980ad

+ 8 - 0
src/api/delivery.ts

@@ -55,4 +55,12 @@ export function getSingleData(data ?: any) {
 		method: 'GET',
 		params: data
 	})
+}
+//根据订单id查发货单
+export function queryOrderByOrderId(data?:any){
+	return request({
+		url: '/omsOrder/omsShippingOrder/queryOrderByOrderId',
+		method: 'GET',
+		params: data
+	})
 }

+ 2 - 1
src/views/oms/order/components/carpoolModal.vue

@@ -1,5 +1,6 @@
 <template>
   <el-drawer
+    v-loading="load"
     :title="'订单发货(共'+data.length+'单)'"
     :visible.sync="drawer"
     :direction="direction"
@@ -16,7 +17,7 @@
         </div>
         <!-- <i class="el-icon-arrow-right"></i> -->
       </div>
-      <deliveryGoodsInfo :hideOrderCode="true" @editState="editState" @editResult="editResult" ref="info" />
+      <deliveryGoodsInfo :hideOrderCode="true" :sendState="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>

+ 121 - 29
src/views/oms/order/components/deliveryDetail.vue

@@ -3,46 +3,70 @@
     append-to-body
     title="订单发货"
     :visible.sync="drawer"
+    @close="close"
     :direction="direction"
-    size="40%">
+    size="50%">
     <div class="content">
-      <deliveryGoodsInfo />
+      <deliveryGoodsInfo :hideOrderCode="true" :sendState="true" ref="info" :readOnly="true" />
       <div class="send-box">
         <div class="pri-title">
-          <div class="title-item">
+          <!-- <div class="title-item">
             预计送达和预计费用<span>明细></span>
-          </div>
+          </div> -->
           <div class="title-item">
-            实际送达和实际费用<span>明细></span>
+            实际送达和实际费用
           </div>
         </div>
+        
         <div class="send-type">
-          <div class="send-item onSend">
-            <div class="label-name">整车配送</div>
-            <div class="send-info">
-              <div class="s-time">7月23 12:23前</div>
-              <div class="send-price">¥16.00起</div>
+          <el-popover
+            v-for="(item,index) of priceData" :key="index"
+            placement="top-start"
+            width="200"
+            trigger="hover">
+            <div class="price-info">
+              <div class="price-title">预估费用明细:</div>
+              <div class="price-row freight">
+                <span class="p-label">运费:</span>
+                <span class="p-value">¥{{item.estimateFreight}}</span>
+              </div>
+              <div class="price-row">
+                <span class="p-label">单价:</span>
+                <span class="p-value">¥{{item.unitprice}}</span>
+              </div>
+              <div class="price-row">
+                <span class="p-label">重量:</span>
+                <span class="p-value">{{item.weight}}</span>
+              </div>
+              <div class="price-row">
+                <span class="p-label">体积:</span>
+                <span class="p-value">{{item.volume}}</span>
+              </div>
+              <div class="price-row">
+                <span class="p-label">单位:</span>
+                <span class="p-value">{{item.unit}}</span>
+              </div>
             </div>
-          </div>
-          <div class="send-item ont">
-            <div class="label-name">整车配送</div>
-            <div class="send-info">
-              <div class="s-time">7月25 12:23前</div>
-              <div class="send-price">¥26.00起</div>
+            <div slot="reference" class="send-item" :title="item.ruleName" :class="{'ont':value.priceId == item.id}" >
+              <div class="label-name">{{item.ruleName}}</div>
+              <div class="send-info">
+                <div class="s-time">{{item.endTime}}前</div>
+                <div class="send-price">¥{{item.estimateFreight}}</div>
+              </div>
             </div>
-          </div>
+          </el-popover>
         </div>
       </div>
       <div class="send-box">
         <div class="s-row">
-          <div class="s-col">WMS销售订单号:</div>
+          <div class="s-col">WMS销售订单号:{{ value.wmsSaleorderCode }}</div>
         </div>
         <div class="s-row">
-          <div class="s-col width50">WMS订单类型:</div>
-          <div class="s-col width50">WMS状态:</div>
+          <div class="s-col width50">WMS订单类型:{{ value.wmsSendType }}</div>
+          <div class="s-col width50">WMS状态:{{ getWmsState(value.wmsOrderStatus) }}</div>
         </div>
         <div class="s-row">
-          <div class="s-col">WMS取消订单的备注:</div>
+          <div class="s-col">WMS取消订单的备注:{{ value.wmsRemark }}</div>
         </div>
       </div>
     </div>
@@ -52,18 +76,83 @@
 <script lang="ts">
 import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 import DeliveryGoodsInfo from "./deliveryGoodsInfo.vue";
-import DeliveryPrice from "./deliveryPrice.vue";
-@Component({components:{DeliveryGoodsInfo,DeliveryPrice}})
+import { queryOrderByOrderId } from  '@/api/delivery'
+import { iteratee } from "lodash";
+@Component({components:{DeliveryGoodsInfo}})
 export default class DeliveryDetail extends Vue {
   drawer=false;
   direction='rtl'
-  checked=false;
+  load = false;
+  priceData:Array<any>=[];
+  value:any={};
+  wmsState='';
   setShow(v:boolean){
     this.drawer=v;
   }
+  close(){
+    this.value={}
+    this.priceData=[];
+  }
   btn(){
-    this.drawer = false;
-    this.$emit('sendHandle')
+    
+  }
+  getWmsState(s:any){
+    let n = '';
+    switch(s){
+      case 1:
+        n = '创建';
+        break;
+      case 2:
+        n = '确认';
+        break;
+      case 3:
+        n = '完成';
+        break;
+      case 4:
+        n = '取消';
+        break;
+    }
+    return n;
+  }
+  setData(v:any){
+    if(!v) {
+      this.$message('缺少订单id');
+      return
+    }
+    this.load = true;
+    queryOrderByOrderId({
+      omsOrderId:v
+    }).then((res:any) => {
+      this.value = res.data;
+      if(res.data.subItemList){
+        this.value.subItem=[];
+        for(const item of this.value.subItemList){
+          this.value.subItem.push({
+            tmsGoodsCode:item.tmsGoodsCode,
+            name:item.tmsGoodsName,
+            tmsGoodsTotalPrice:item.tmsGoodsTotalPrice,
+            price:item.tmsGoodsPrice,
+            weight:item.tmsWeight,
+            tmsQuantity:item.tmsQuantity
+          })
+        }
+      }
+      this.load = false;
+      if(res.data.pricePlan){
+        try{
+          this.priceData = JSON.parse(res.data.pricePlan);
+        }catch(e){
+          this.priceData = [];
+          console.error('价格列表数据转换错误!')
+        }
+        
+      }
+      if(this.$refs.info){
+        (this.$refs.info as any).setValue(this.value)
+      }
+    }).catch(() => {
+      this.load = false;
+    })
   }
 }
 </script>
@@ -77,6 +166,7 @@ export default class DeliveryDetail extends Vue {
     width: 100%;
     box-sizing: border-box;
     padding: 16px;
+    padding-bottom: 0;
     margin-bottom: 16px;
     background-color: rgba(255, 226, 160, 0.3);
     .pri-title{
@@ -97,14 +187,16 @@ export default class DeliveryDetail extends Vue {
       width: 100%;
       display: flex;
       align-items: center;
+      flex-wrap:wrap;
       .send-item{
-        width: 156px;
+        width: 165px;
         box-sizing: border-box;
         border:solid 3px #999;
         border-radius: 6px;
         overflow: hidden;
         margin-right: 32px;
-        cursor: pointer;
+        margin-bottom: 16px;
+        // cursor: pointer;
         .label-name{
           background-color: #999;
           color: #FFF;
@@ -154,7 +246,7 @@ export default class DeliveryDetail extends Vue {
       }
     }
     .s-row:last-child{
-      padding: 0;
+      padding: 16;
     }
   }
 }

+ 13 - 8
src/views/oms/order/components/deliveryGoodsInfo.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="info">
-    <div class="edit">
+    <div class="edit" v-if="!readOnly">
       <span @click="edit">编辑</span>
     </div>
     <div class="g-box">
@@ -17,30 +17,31 @@
         </div>
       </div> -->
       <div class="info-row">
-        <div class="info-col col-width">
+        <div class="info-col">
           <span class="label">业务员:</span>
           <span :title="value.tmsBusinessMan">{{ value.tmsBusinessMan }}</span>
         </div>
-        <div class="info-col col-width">
-          <span class="label">备注:</span>
-          <span :title="value.tmsRemark">{{ value.tmsRemark }}</span>
-        </div>
+        
       </div>
       <div class="info-row">
         <div class="info-col col-width">
           <span class="label">业务员手机:</span>
           <span :title="value.tmsBusinessPhone">{{ value.tmsBusinessPhone }}</span>
         </div>
-        <div class="info-col col-width" v-if="!hideOrderCode">
+        <div class="info-col col-width" v-if="!sendState">
           <span class="label">发货状态:</span>
           <span>{{ value.isSuccess ? '发货中' : '' }}</span>
         </div>
       </div>
       <div class="info-row">
-        <div class="info-col">
+        <div class="info-col col-width">
           <span class="label">运输方式:</span>
           <span :title="value.tmsTransportMethod">{{ value.tmsTransportMethod }}</span>
         </div>
+        <div class="info-col col-width">
+          <span class="label">备注:</span>
+          <span :title="value.tmsRemark">{{ value.tmsRemark }}</span>
+        </div>
       </div>
     </div>
     <div class="g-box">
@@ -170,6 +171,10 @@ import { add,multiply,subtract,divide } from '@/benyun/utils/accuracy'
 export default class DeliveryGoodsInfo extends Vue {
   @Prop()
   hideOrderCode?:Boolean
+  @Prop()
+  sendState?:Boolean
+  @Prop()
+  readOnly?:Boolean
 
   data:Array<any>=[];
   value:any={};

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

@@ -501,7 +501,10 @@ export default class Order extends Vue {
   }
   //发货详情
   sendGoodsDetail(row:any){
-
+    if(this.$refs.deliveryDetail){
+      (this.$refs.deliveryDetail as any).setShow(true);
+      (this.$refs.deliveryDetail as any).setData(row.id);
+    }
   }
   //批量发货
   batchSendGoods(){