|
@@ -1,5 +1,6 @@
|
|
|
<template>
|
|
|
<el-drawer
|
|
|
+ v-loading="load"
|
|
|
title="订单发货(批量逐一发货)"
|
|
|
:visible.sync="drawer"
|
|
|
:direction="direction"
|
|
@@ -15,7 +16,7 @@
|
|
|
</el-pagination>
|
|
|
</div>
|
|
|
<deliveryGoodsInfo @editState="editState" @editResult="editResult" ref="info" />
|
|
|
- <deliveryPrice />
|
|
|
+ <deliveryPrice :data="priceObj[data[currentOrder].omsOrderIds]" v-if="data[currentOrder] && priceObj[data[currentOrder].omsOrderIds]" @prichChange="prichChange" />
|
|
|
</div>
|
|
|
<div class="space"></div>
|
|
|
<div class="deli-footer">
|
|
@@ -40,30 +41,37 @@ 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'
|
|
|
+import { queryPricePackage,addmultiple } from '@/api/delivery'
|
|
|
+import Format from '@/benyun/utils/dateFormat'
|
|
|
+
|
|
|
@Component({components:{DeliveryGoodsInfo,DeliveryPrice}})
|
|
|
-export default class DeliveryModal extends Vue {
|
|
|
+export default class BatchbyOneModal extends Vue {
|
|
|
drawer=false;
|
|
|
direction='rtl'
|
|
|
checked=false;
|
|
|
data:Array<any>=[];
|
|
|
currentOrder=0;
|
|
|
load = false;
|
|
|
+ priceObj:any={};
|
|
|
+ currentPrice:any={};
|
|
|
setShow(v:boolean){
|
|
|
this.drawer=v;
|
|
|
}
|
|
|
editResult(v:any){
|
|
|
this.data[this.currentOrder] = v;
|
|
|
- this.getPriceInfo();
|
|
|
+ this.getPriceInfo(v);
|
|
|
+ }
|
|
|
+ prichChange(index:number){
|
|
|
+ this.currentPrice[this.data[this.currentOrder].omsOrderIds] = this.priceObj[this.data[this.currentOrder].omsOrderIds][index];
|
|
|
}
|
|
|
currentChange(v:number){
|
|
|
- this.currentOrder = v;
|
|
|
+ this.currentOrder = v-1;
|
|
|
this.$nextTick(()=>{
|
|
|
(this.$refs.info as any).setValue(this.data[this.currentOrder]);
|
|
|
})
|
|
|
- // this.getPriceInfo();
|
|
|
}
|
|
|
setValue(data:Array<any>){
|
|
|
+ this.data = [];
|
|
|
if(data && data.length > 0){
|
|
|
for(const item of data){
|
|
|
const requestId = new Date().getTime() + this.getUuid()
|
|
@@ -118,22 +126,109 @@ export default class DeliveryModal extends Vue {
|
|
|
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
|
|
}
|
|
|
btn(){
|
|
|
-
|
|
|
+ if(!this.data[0].orderType || !this.data[0].tmsShipmentConsignor){
|
|
|
+ this.$message("请编辑订单信息");
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(this.data.length > 1){
|
|
|
+ let ids='';
|
|
|
+ for(const item of this.data){
|
|
|
+ if(!item.orderType || !item.tmsShipmentConsignor){
|
|
|
+ ids = ids ? ids + ',' + item.omsOrderIds : item.omsOrderIds
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(ids){
|
|
|
+ this.$confirm('订单'+ids + '未编辑,是否以第一条订单为基准', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ this.setOnEditOrderInfo(ids);
|
|
|
+ for(const item of this.data){
|
|
|
+ this.sendGoods(item);
|
|
|
+ }
|
|
|
+ }).catch(() => {});
|
|
|
+ }else{
|
|
|
+ for(const item of this.data){
|
|
|
+ this.sendGoods(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ this.sendGoods(this.data[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sendGoods(item:any){
|
|
|
+ let params:any=(this as any).$lodash.cloneDeep(item);
|
|
|
+ if(this.priceObj[item.omsOrderIds]){
|
|
|
+ try{
|
|
|
+ params.pricePlan = JSON.stringify(this.priceObj[item.omsOrderIds])
|
|
|
+ }catch(e){}
|
|
|
+ }
|
|
|
+ if(this.currentPrice[item.omsOrderIds]){
|
|
|
+ params.priceId = this.currentPrice[item.omsOrderIds].id;
|
|
|
+ }
|
|
|
+ params.omsOrderIds = [item.omsOrderIds];
|
|
|
+ addmultiple(params).then((res:any) => {
|
|
|
+
|
|
|
+ }).catch((err:any) => {
|
|
|
+
|
|
|
+ })
|
|
|
+ }
|
|
|
+ setOnEditOrderInfo(ids:string){
|
|
|
+ let _value = this.data[0]
|
|
|
+ for(const item of this.data){
|
|
|
+ if(ids.indexOf(item.omsOrderIds) > -1){
|
|
|
+ item.orderType = _value.orderType;
|
|
|
+ item.tmsTransportMethod = _value.tmsTransportMethod;
|
|
|
+ item.tmsBusinessMan = _value.tmsBusinessMan;
|
|
|
+ item.tmsBusinessPhone = _value.tmsBusinessPhone;
|
|
|
+ item.tmsShipmentConsignor = _value.tmsShipmentConsignor;
|
|
|
+ item.tmsShipmentContacts = _value.tmsShipmentContacts;
|
|
|
+ item.tmsShipmentProvince = _value.tmsShipmentProvince;
|
|
|
+ item.tmsShipmentProvinceNo = _value.tmsShipmentProvinceNo;
|
|
|
+ item.tmsShipmentCity = _value.tmsShipmentCity;
|
|
|
+ item.tmsShipmentCityNo = _value.tmsShipmentCityNo;
|
|
|
+ item.tmsShipmentRegion = _value.tmsShipmentRegion;
|
|
|
+ item.tmsShipmentRegionNo = _value.tmsShipmentRegionNo;
|
|
|
+ item.tmsShipmentStreetNo = _value.tmsShipmentStreetNo;
|
|
|
+ item.tmsShipmentStreet = _value.tmsShipmentStreet;
|
|
|
+ item.tmsShipmentAddress = _value.tmsShipmentAddress;
|
|
|
+ item.tmsUnloadingConsignor = _value.tmsUnloadingConsignor;
|
|
|
+ item.tmsUnloadingContacts = _value.tmsUnloadingContacts;
|
|
|
+ item.tmsUnloadingProvince = _value.tmsUnloadingProvince;
|
|
|
+ item.tmsUnloadingProvinceNo = _value.tmsUnloadingProvinceNo;
|
|
|
+ item.tmsUnloadingCity = _value.tmsUnloadingCity;
|
|
|
+ item.tmsUnloadingCityNo = _value.tmsUnloadingCityNo;
|
|
|
+ item.tmsUnloadingRegion = _value.tmsUnloadingRegion;
|
|
|
+ item.tmsUnloadingRegionNo = _value.tmsUnloadingRegionNo;
|
|
|
+ item.tmsUnloadingStreetNo = _value.tmsUnloadingStreetNo;
|
|
|
+ item.tmsUnloadingStreet = _value.tmsUnloadingStreet;
|
|
|
+ item.tmsUnloadingAddress = _value.tmsUnloadingAddress;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- getPriceInfo(){
|
|
|
+ getPriceInfo(data:any,callback?:Function){
|
|
|
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;
|
|
|
+ params.startAddressCode = data.tmsShipmentCityNo + '000';
|
|
|
+ params.endAddressCode = data.tmsUnloadingCityNo + '000';
|
|
|
+ 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]
|
|
|
+ }
|
|
|
+
|
|
|
+ this.load=false;
|
|
|
+ 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')
|
|
|
+ }
|
|
|
+ this.priceObj[data.omsOrderIds] = res.data[0].data;
|
|
|
+ if(callback){
|
|
|
+ callback()
|
|
|
+ }
|
|
|
}).catch((err:any)=>{
|
|
|
-
|
|
|
+ this.load = false;
|
|
|
})
|
|
|
}
|
|
|
editState(v:boolean){
|