Parcourir la source

优化B2B发货程序

ymy il y a 1 an
Parent
commit
8ab09af847

+ 1 - 5
src/main.ts

@@ -149,8 +149,7 @@ function omsLogin() {
       MessageBox.alert(msg, '提示', {
         confirmButtonText: '确定',
         callback: () => {
-          const redirect = location.origin
-          location.href = `${process.env.VUE_APP_LOGIN_URL}?&redirect=${encodeURIComponent(redirect)}`
+          store.dispatch('LogOut').then(() => {})
         }
       });
       
@@ -177,6 +176,3 @@ function unitVue() {
 }
 
 omsLogin()
-
-
-

+ 5 - 5
src/router/index.ts

@@ -19,11 +19,11 @@ export const constantRoutes: Array<any> = [
   //   // which is lazy-loaded when the route is visited.
   //   component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
   // },
-  // {
-  //   path: '/login',
-  //   component: () => import('../views/login.vue'),
-  //   hidden: true
-  // },
+  {
+    path: '/login',
+    component: () => import('../views/login.vue'),
+    hidden: true
+  },
   // {
   //   path: '/register',
   //   component: () => import('@/views/register.vue'),

+ 1 - 0
src/views/audit/store/components/batchbyOneModal.vue

@@ -104,6 +104,7 @@ export default class BatchbyOneModal extends Vue {
     for(const item of data){
       obj.subItem.push({
         requestId:requestId,
+        barCode:item.barCode,
         omsOrderItemId: item.id,
         tmsGoodsModel:item.itemNumber,
         tmsGoodsCode:item.skuCode,

+ 1 - 1
src/views/audit/store/components/deliveryGoodsInfo.vue

@@ -97,7 +97,7 @@
           align="center"
           header-cell-class-name="header-cell"
           :data="value.subItem">
-          <vxe-column field="tmsGoodsCode" title="物料编码" width="130"></vxe-column>
+          <vxe-column field="barCode" title="商品条码" width="130"></vxe-column>
           <vxe-column field="name" title="物料名称" width="260"></vxe-column>
           <vxe-column field="weight" title="重量(g)"></vxe-column>
           <vxe-column field="price" title="单价"></vxe-column>

+ 97 - 48
src/views/oms/B2BOrder/components/batchbyOneModal.vue

@@ -7,6 +7,10 @@
     :direction="direction"
     size="50%">
     <div class="content">
+      <div class="err" v-if="failOrder.length > 0">
+        <span>发货失败订单:</span>
+        <span class="error-page" v-for="item of failOrder" @click="exchangeTag(item)" :key="item">【{{item + 1 }}】</span>
+      </div>
       <div class="order-top" v-if="data.length > 1">
         <el-pagination
           background
@@ -17,7 +21,7 @@
           :total="data.length">
         </el-pagination>
       </div>
-      <deliveryGoodsInfo :hideOrderCode="true" @editState="editState" @editResult="editResult" ref="info" />
+      <deliveryGoodsInfo @editState="editState" @editResult="editResult" ref="info" />
       <!-- <deliveryPrice :data="priceObj[data[currentOrder].omsOrderIds]" ref="price" v-if="data[currentOrder] && priceObj[data[currentOrder].omsOrderIds]" 
       @prichChange="prichChange" :currentValue="currentPrice[data[currentOrder].omsOrderIds]" /> -->
     </div>
@@ -54,9 +58,10 @@ export default class BatchbyOneModal extends Vue {
   direction='rtl'
   checked=false;
   data:Array<any>=[];
-  currentOrder=0;
-  isSuccess=false;
-  stopHandle=false;
+  currentOrder=0; //当前显示订单
+  isSuccess=false; //是否有成功订单
+  stopHandle=false; //是否停止操作
+  failOrder:Array<any>=[]; //
   load = false;
   priceObj:any={};
   currentPrice:any={};
@@ -68,12 +73,17 @@ export default class BatchbyOneModal extends Vue {
     this.stopHandle = false;
     this.currentOrder = 0;
     this.checked = false;
+    this.failOrder = [];
   }
   close(){
     if(this.isSuccess){
       this.$emit('handleSuccess');
     }
   }
+  exchangeTag(v:number){
+    this.currentOrder = v;
+    this.setInfo()
+  }
   editResult(v:any){
     this.data[this.currentOrder] = v;
     // this.getStoreCount(v);
@@ -124,11 +134,13 @@ export default class BatchbyOneModal extends Vue {
         if(item.items && item.items.length > 0){
           for(const i of item.items){
             let total:any = 0;
-            if(Number(i.qty) && Number(i.price)){
+            if(Number(i.qty) && Number(i.price) && i.isGift !== 1){
               total = multiply(Number(i.qty),Number(i.price))
             }
             
             obj.subItem.push({
+              isGift:i.isGift,
+              barCode:i.barCode,
               requestId:requestId,
               omsOrderId:item.id,
               omsOrderItemId:i.itemId,
@@ -138,7 +150,7 @@ export default class BatchbyOneModal extends Vue {
               tmsQuantity:i.qty,
               tmsGoodsTotalPrice:total,
               name:i.name,
-              price:i.price,
+              price: i.isGift === 1 ? 0 : i.price,
               weight:i.weight
             })
           }
@@ -294,66 +306,81 @@ export default class BatchbyOneModal extends Vue {
     //   params.priceId = this.currentPrice[item.omsOrderIds].id;
     // }
     params.omsOrderIds = [item.omsOrderIds];
-    params.tmsMaterials=[];
-    if(item.subItem){
-      for(const i of item.subItem){
-        params.tmsMaterials.push({
-          storeHouseId:item.storeHouseId,
-          materialSkuId:i.omsOrderItemId
-        })
-      }
-    }
+    // params.tmsMaterials=[];
+    // if(item.subItem){
+    //   for(const i of item.subItem){
+    //     params.tmsMaterials.push({
+    //       storeHouseId:item.storeHouseId,
+    //       materialSkuId:i.omsOrderItemId
+    //     })
+    //   }
+    // }
     delete params.subItem;
     this.load = true;
-    addmultiple(params).then((res:any) => {
-      this.load = false;
-      if(res.code == 200){
-        this.isSuccess = true;
-        this.$message({
-          message:'订单:'+item.omsOrderIds+'发货成功!',
-          type:'success'
-        })
-        for(let it of this.data){
-          if(it.omsOrderIds == item.omsOrderIds){
-            it.isSuccess=true;
-            break;
+    const resHandle = (s:string,msg?:string) => {
+      for(let it of this.data){
+        if(it.omsOrderIds == item.omsOrderIds){
+          it.state = s;
+          if(msg){
+            it.msg = msg;
           }
+          break;
         }
+      }
 
-        if(!isNext){
-          //寻找未发货的订单
-          this.noSentOrder();
-          //是否是最后一单
-          if(this.currentOrder >= this.data.length){
+      if(!isNext){
+        //寻找未发货的订单
+        this.noSentOrder();
+        //是否是最后一单
+        if(this.currentOrder >= this.data.length){
+          if(this.failOrder.length == 0){
             this.drawer = false;
           }else{
-            let _item:any = this.data[this.currentOrder];
-            this.sendGoods(_item);
-            // if(this.currentPrice[_item.omsOrderIds]){
-            //   this.sendGoods(_item);
-            // }
-            // else{
-            //   this.getPriceInfo(_item,this.sendGoods)
-            //   // this.getStoreCount(_item,this.getPriceInfo);
-            // }
+            (this.$refs.info as any).setValue(this.data[this.currentOrder-1]);
           }
+          
         }else{
-          if(this.currentOrder < this.data.length - 1) {
-            this.currentOrder ++;
-            this.setInfo();
-          }
+          let _item:any = this.data[this.currentOrder];
+          this.sendGoods(_item);
+          // if(this.currentPrice[_item.omsOrderIds]){
+          //   this.sendGoods(_item);
+          // }
+          // else{
+          //   this.getPriceInfo(_item,this.sendGoods)
+          //   // this.getStoreCount(_item,this.getPriceInfo);
+          // }
+        }
+      }else{
+        if(this.currentOrder < this.data.length - 1) {
+          this.currentOrder ++;
+          this.setInfo();
         }
-        this.$forceUpdate();
       }
-    }).catch(() => {
+      this.$forceUpdate();
+    }
+    addmultiple(params).then((res:any) => {
       this.load = false;
+      if(res.code == 200){
+        this.isSuccess = true;
+        this.$message({
+          message:'订单:'+item.omsOrderIds+'发货成功!',
+          type:'success'
+        })
+        resHandle('success')
+      }
+    }).catch((err:any) => {
+      this.load = false;
+      if(this.failOrder.indexOf(this.currentOrder) == -1){
+        this.failOrder.push(this.currentOrder);
+      }
+      resHandle('fail',err);
     })
   }
   //寻找未发货订单
   noSentOrder(){
     this.currentOrder = this.data.length;
     for(let i = 0; i < this.data.length; i++){
-      if(!this.data[i].isSuccess){
+      if(!this.data[i].state){
         this.currentOrder = i;
         break
       }
@@ -439,10 +466,32 @@ export default class BatchbyOneModal extends Vue {
   box-sizing: border-box;
   padding: 0 16px;
   background-color: #FFF;
+  .err{
+    font-size: 14px;
+    color: #F00;
+    padding-bottom: 8px;
+  }
+  .error-page{
+    cursor: pointer;
+  }
   .order-top{
     padding-bottom: 16px;
     display: flex;
     justify-content: center;
+    .item-page{
+      height: 28px;
+      width: 28px;
+      background-color: #F3F3F3;
+      color: #666;
+      font-size: 14px;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      border-radius: 5px;
+      margin: 0 4px;
+      cursor: pointer;
+      font-weight: 700;
+    }
   }
 }
 .deli-footer{

+ 3 - 1
src/views/oms/B2BOrder/components/carpoolModal.vue

@@ -8,7 +8,7 @@
     <div class="content">
       <div class="order-cont" v-if="data && data[0]">
         <div class="cont-left">
-          <div class="order-code">订单号:{{data[0].id}}</div>
+          <!-- <div class="order-code">订单号:{{data[0].id}}</div> -->
           <div class="order-other">
             <div class="receive-name">姓名:{{data[0].receiverName}}</div>
             <div class="address">目的地:<span>{{data[0].receiverProvince+'-'+data[0].receiverCity}}</span></div>
@@ -92,6 +92,8 @@ export default class CarpoolModal extends Vue {
           this.value.subItem.push({
             requestId:requestId,
             omsOrderId:item.id,
+            isGift:i.isGift,
+            barCode:i.barCode,
             omsOrderItemId:i.itemId,
             tmsGoodsModel:i.styleId,
             tmsGoodsCode:i.skuId,

+ 16 - 4
src/views/oms/B2BOrder/components/deliveryGoodsInfo.vue

@@ -7,7 +7,7 @@
       <div class="info-row" v-if="!hideOrderCode">
         <div class="info-col">
           <span class="label">单号:</span>
-          <span :title="value.tmsOrderNo">{{ value.tmsOrderNo }}</span>
+          <span :title="value.omsOrderIds">{{ value.omsOrderIds }}</span>
         </div>
       </div>
       <!-- <div class="info-row">
@@ -30,7 +30,8 @@
         </div>
         <div class="info-col col-width" v-if="!sendState">
           <span class="label">发货状态:</span>
-          <span>{{ value.isSuccess ? '发货中' : '' }}</span>
+          <span v-if="value.state == 'success'">发货中</span>
+          <span v-if="value.state == 'fail'" style="color: #F00;">发货失败</span>
         </div>
       </div>
       <div class="info-row">
@@ -43,6 +44,12 @@
           <span :title="value.tmsRemark">{{ value.tmsRemark }}</span>
         </div>
       </div>
+      <div class="info-row" v-if="value.msg">
+        <div class="info-col">
+          <span class="label">信息:</span>
+          <span :title="value.msg" style="color: #F00;">{{ value.msg }}</span>
+        </div>
+      </div>
     </div>
     <div class="g-box">
       <div class="info-row">
@@ -143,8 +150,13 @@
           align="center"
           header-cell-class-name="header-cell"
           :data="value.subItem">
-          <vxe-column field="tmsGoodsCode" title="物料编码" width="130"></vxe-column>
-          <vxe-column field="name" title="物料名称" width="260"></vxe-column>
+          <vxe-column field="barCode" title="商品条码" width="130"></vxe-column>
+          <vxe-column field="name" title="物料名称" width="260">
+            <template #default="{ row }">
+              {{ row.name }}
+              <el-tag type="success" v-if="row.isGift == 1" size="mini">赠品</el-tag>
+            </template>
+          </vxe-column>
           <vxe-column field="weight" title="重量(g)"></vxe-column>
           <vxe-column field="price" title="单价"></vxe-column>
           <vxe-column field="tmsQuantity" title="数量"></vxe-column>

+ 11 - 4
src/views/oms/B2COrder/components/expressDeliveryModal.vue

@@ -51,8 +51,13 @@
               align="center"
               header-cell-class-name="header-cell"
               :data="value.subItem">
-              <vxe-column field="tmsGoodsCode" title="物料编码" width="130"></vxe-column>
-              <vxe-column field="name" title="物料名称" width="260"></vxe-column>
+              <vxe-column field="barCode" title="商品条码" width="130"></vxe-column>
+              <vxe-column field="name" title="物料名称" width="260">
+                <template #default="{ row }">
+                  {{ row.name }}
+                  <el-tag type="success" v-if="row.isGift == 1" size="mini">赠品</el-tag>
+                </template>
+              </vxe-column>
               <vxe-column field="weight" title="重量"></vxe-column>
               <vxe-column field="price" title="单价"></vxe-column>
               <vxe-column field="tmsQuantity" title="数量"></vxe-column>
@@ -258,7 +263,7 @@ export default class ExpressDeliveryModal extends Vue {
       if(item.items){
         for(const i of item.items){
           let total:any = 0;
-          if(Number(i.qty) && Number(i.price)){
+          if(Number(i.qty) && Number(i.price) && i.isGift !== 1){
             total = multiply(Number(i.qty),Number(i.price))
           }
           if(Number(i.weight)){
@@ -270,10 +275,12 @@ export default class ExpressDeliveryModal extends Vue {
             omsOrderItemId:i.itemId,
             tmsGoodsModel:i.styleId,
             tmsGoodsCode:i.skuId,
+            isGift:i.isGift,
+            barCode:i.barCode,
             tmsQuantity:Number(i.qty)?Number(i.qty):0,
             tmsGoodsTotalPrice:total,
             name:i.name,
-            price:i.price,
+            price:i.isGift === 1 ? 0 : i.price,
             weight:i.weight
           })
         }