ymy 1 year ago
parent
commit
d9ba408bb8

+ 18 - 0
src/api/delivery.ts

@@ -0,0 +1,18 @@
+import request from '@/benyun/utils/request'
+import store from '@/store/index'
+//查询加个
+export function queryPricePackage(params:any) {
+	return request({
+		url: '/omsShippingOrder/queryPricePackage',
+		method: 'GET',
+		params:params
+	})
+}
+//单条发货
+export function addmultiple(data?:any) {
+	return request({
+		url: '/omsShippingOrder/addmultiple',
+		method: 'POST',
+		data:data
+	})
+}

+ 94 - 4
src/views/oms/order/components/batchbyOneModal.vue

@@ -3,17 +3,18 @@
     title="订单发货(批量逐一发货)"
     :visible.sync="drawer"
     :direction="direction"
-    size="40%">
+    size="50%">
     <div class="content">
-      <div class="order-top">
+      <div class="order-top" v-if="data.length > 1">
         <el-pagination
           background
           :page-size="1"
           layout="prev, pager, next"
-          :total="10">
+          @current-change="currentChange"
+          :total="data.length">
         </el-pagination>
       </div>
-      <deliveryGoodsInfo />
+      <deliveryGoodsInfo @editState="editState" @editResult="editResult" ref="info" />
       <deliveryPrice />
     </div>
     <div class="space"></div>
@@ -38,17 +39,106 @@
 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 } from  '@/api/delivery'
 @Component({components:{DeliveryGoodsInfo,DeliveryPrice}})
 export default class DeliveryModal extends Vue {
   drawer=false;
   direction='rtl'
   checked=false;
+  data:Array<any>=[];
+  currentOrder=0;
+  load = false;
   setShow(v:boolean){
     this.drawer=v;
   }
+  editResult(v:any){
+    this.data[this.currentOrder] = v;
+    this.getPriceInfo();
+  }
+  currentChange(v:number){
+    this.currentOrder = v;
+    this.$nextTick(()=>{
+      (this.$refs.info as any).setValue(this.data[this.currentOrder]);
+    })
+    // this.getPriceInfo();
+  }
+  setValue(data:Array<any>){
+    if(data && data.length > 0){
+      for(const item of data){
+        const requestId =  new Date().getTime() + this.getUuid()
+        let obj:any={
+          requestId:requestId,
+          omsOrderIds:item.id,
+          tmsUnloadingProvince:item.receiverProvince,
+          tmsUnloadingProvinceNo:item.receiverProvinceCode,
+          tmsUnloadingCity:item.receiverCity,
+          tmsUnloadingCityNo:item.receiverCityCode,
+          tmsUnloadingRegion:item.receiverDistrict,
+          tmsUnloadingRegionNo:item.receiverDistrictCode,
+          tmsUnloadingStreet:item.receiverTown,
+          tmsUnloadingStreetNo:item.receiverTownCode,
+          tmsUnloadingAddress:item.receiverAddress,
+          tmsUnloadingConsignor:item.receiverName,
+          tmsUnloadingContacts:item.receiverMobile
+        };
+
+        obj.subItem=[];
+        if(item.items && item.items.length > 0){
+          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))
+            }
+            
+            obj.subItem.push({
+              requestId:requestId,
+              omsOrderId:item.id,
+              omsOrderItemId:i.id,
+              tmsGoodsModel:i.styleId,
+              tmsGoodsCode:i.skuId,
+              tmsQuantity:i.qty,
+              tmsGoodsTotalPrice:total,
+              name:i.name,
+              price:i.price,
+              weight:i.weight
+            })
+          }
+        }
+        this.data.push(obj)
+      }
+    }else{
+      this.data = []
+    }
+    this.$nextTick(()=>{
+      (this.$refs.info as any).setValue(this.data[this.currentOrder])
+    })
+  }
+  getUuid(){
+    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+  }
   btn(){
     
   }
+  getPriceInfo(){
+    let params:any={};
+    let data =  this.data[this.currentOrder];
+    if(!data) return;
+    params.startAddressCode = data.tmsShipmentStreetNo;
+    params.endAddressCode = data.tmsUnloadingStreetNo;
+    params.goodsInfo={}
+    params.weight = 500;
+    params.volume = 100;
+    params.mileage = 1000;
+    queryPricePackage(params).then((res:any) => {
+
+    }).catch((err:any)=>{
+
+    })
+  }
+  editState(v:boolean){
+    this.drawer = v
+  }
 }
 </script>
 <style lang="scss" scoped>

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

@@ -27,7 +27,7 @@
         </div>
         <i class="el-icon-arrow-down"></i>
       </div>
-      <deliveryGoodsInfo />
+      <deliveryGoodsInfo @editState="editState" @editResult="editResult" ref="info" />
       <deliveryPrice />
     </div>
     <div class="space"></div>
@@ -61,6 +61,12 @@ export default class DeliveryModal extends Vue {
   btn(){
     
   }
+  editResult(v:any){
+    
+  }
+  editState(v:boolean){
+    this.drawer = v
+  }
 }
 </script>
 

File diff suppressed because it is too large
+ 255 - 44
src/views/oms/order/components/deliveryGoodsInfo.vue


+ 1 - 0
src/views/oms/order/components/deliveryModal.vue

@@ -34,6 +34,7 @@ export default class DeliveryModal extends Vue {
   drawer=false;
   direction='rtl'
   checked=false;
+  value:any={}
   setShow(v:boolean){
     this.drawer=v;
   }

+ 23 - 2
src/views/oms/order/components/orderTable.vue

@@ -121,11 +121,11 @@
     <vxe-column field="remark" title="订单备注" width="120"></vxe-column>
     <vxe-column field="note" title="线下备注" width="120"></vxe-column>
     <vxe-column field="labels" title="标签" width="120"></vxe-column>
-    <vxe-column title="操作" width="90" fixed="right" align="center">
+    <vxe-column title="操作" width="120" fixed="right" align="center">
       <template #default="{ row }">
         <el-button type="text" size="mini" v-if="showMerge(row)" @click="mergeHandle(row)">合并</el-button>
         <el-button type="text" size="mini" v-if="showSplit(row)" @click="splitHandle(row)">拆分</el-button>
-        <el-button type="text" size="mini" v-if="row.status == 'WaitFConfirm'">发货</el-button>
+        <el-button type="text" size="mini" v-if="showSend(row)" @click="sendGoods(row)">发货</el-button>
       </template>
     </vxe-column>
   </vxe-table>
@@ -170,6 +170,24 @@ export default class OrderTable extends Vue {
     }
     return t;
   }
+  //是否显示发货
+  showSend(item:any){
+    // <span v-if="row.status == 'WaitPay'">待付款</span>
+    // <span v-if="row.status == 'Delivering'">发货中</span>
+    // <span v-if="row.status == 'Merged'">被合并</span>
+    // <span v-if="row.status == 'Question'" style="color:red">异常</span>
+    // <span v-if="row.status == 'Split'">被拆分</span>
+    // <span v-if="row.status == 'WaitOuterSent'">等供销商|外仓发货</span>
+    // <span v-if="row.status == 'WaitConfirm'">已付款待审核</span>
+    // <span v-if="row.status == 'WaitFConfirm'">已客审待财审</span>
+    // <span v-if="row.status == 'Sent'">已发货</span>
+    // <span v-if="row.status == 'Cancelled'">取消</span>
+    let noStatus = ['WaitPay','Delivering','Merged','Split','Question','Sent','Cancelled'];
+    if(item.isSubmitted == 1 && item.pays && item.pays.length > 0 && noStatus.indexOf(item.status) == -1){
+      return true
+    }
+    return false
+  }
   //合并按钮是否显示
   showMerge(item:any){
     let r = false;
@@ -209,6 +227,9 @@ export default class OrderTable extends Vue {
     let data = (this as any).$lodash.cloneDeep((this.$refs.table as any).getCheckboxRecords());
     return data;
   }
+  sendGoods(row:any){
+    this.$emit('sendGoods',row)
+  }
   mergeHandle(row:any){
     let v = (this as any).$lodash.cloneDeep(row);
     v.isMain = 1;

+ 1 - 1
src/views/oms/order/components/orderTool.vue

@@ -46,7 +46,7 @@
     <el-button type="text" @click="handle('producePurchase')" title="选取已提交数据">生成采购单</el-button>
     <el-button type="text" @click="handle('orderFile')">订单归档</el-button>
     <div class="split"></div>
-    <el-button type="text" @click="handle('sendGoods')">发货</el-button>
+    <el-button type="text" @click="handle('batchSendGoods')">批量发货</el-button>
   </div>
 </template>
 

+ 33 - 9
src/views/oms/order/index.vue

@@ -141,10 +141,10 @@
       <div class="tool">
         <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase" @cancelOrder="cancelOrder" 
         @reCancelOrder="reCancelOrder" @updateRmk="updateRmk" @changeQues="changeQues" @changeNormal="changeNormal" @updateSalesman="updateSalesman" 
-        @updateTag="updateTag" @addGift="addGift" @addProduct="addProduct" @updateFreight="updateFreight" @orderFile="orderFile" @sendGoods="sendGoods" />
+        @updateTag="updateTag" @addGift="addGift" @addProduct="addProduct" @updateFreight="updateFreight" @orderFile="orderFile" @batchSendGoods="batchSendGoods" />
       </div>
       <div class="table">
-        <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle" />
+        <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle" @sendGoods="sendGoods" />
         <div class="page">
           <el-pagination v-if="page.total > 0" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page.pageNo" :page-size="page.pageSize"
             :layout="'total, sizes, prev, pager, next, jumper'" :total="page.total"></el-pagination>
@@ -180,7 +180,7 @@
       <!-- 标签 -->
       <labels-modal ref="labelsModal" @onChange="onChangeLabel" />
       <!-- 发货 -->
-      <delivery-modal ref="deliveryModal" @sendHandle="sendHandle" />
+      <delivery-modal ref="deliveryModal" />
       <!-- 发货模式 -->
       <send-mode-modal ref="sendModeModal" @modeChange="modeChange" />
       <!-- 批量逐一发货 -->
@@ -499,11 +499,41 @@ export default class Order extends Vue {
     this.getProvince();
     this.getQuestionList();
   }
+  //批量发货
+  batchSendGoods(){
+    let data:Array<any>= (this.$refs.orderTable as any).getSelectData();
+    if(data.length == 0){
+      this.$message('请选择订单!');
+      return
+    }
+    let ids:string='';
+    let noStatus = ['WaitPay','Delivering','Merged','Split','Question','Sent','Cancelled'];
+    for(const item of data){
+      if(!(item.isSubmitted == 1 && item.pays && item.pays.length > 0 && noStatus.indexOf(item.status) == -1)){
+        ids = ids ? ids + ',' + item.id : item.id;
+      }
+    }
+    if(ids){
+      this.$message('订单“ ' + ids + ' ”不符合发货条件!');
+      return
+    }
+    // if(data.length == 1){
+
+    //   (this.$refs.deliveryModal as any).setShow(true);
+    // }else{
+      if(this.$refs.sendModeModal){
+        (this.$refs.sendModeModal as any).setShow(true);
+      }
+    // }
+    
+  }
   //发货模式
   modeChange(v:string){
+    let data:Array<any>= (this.$refs.orderTable as any).getSelectData();
     if(v == '0'){
       if(this.$refs.batchbyOneModal){
         (this.$refs.batchbyOneModal as any).setShow(true);
+        (this.$refs.batchbyOneModal as any).setValue(data);
       }
     }
     if(v == '1'){
@@ -512,12 +542,6 @@ export default class Order extends Vue {
       }
     }
   }
-  //确认发货
-  sendHandle(){
-    if(this.$refs.sendModeModal){
-      (this.$refs.sendModeModal as any).setShow(true);
-    }
-  }
   //发货
   sendGoods(){
     (this.$refs.deliveryModal as any).setShow(true);

Some files were not shown because too many files changed in this diff