This commit is contained in:
linfso 2025-01-03 09:13:15 +08:00
parent 0d180a5484
commit a901c2634c
3 changed files with 259 additions and 29 deletions

View File

@ -94,6 +94,9 @@
<el-table-column :label="$t('发货地址')" align="center" prop="sendAddress" min-width="80" :show-overflow-tooltip="true"/> <el-table-column :label="$t('发货地址')" align="center" prop="sendAddress" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('月结客户')" align="center" prop="custNo" min-width="80" :show-overflow-tooltip="true"/> <el-table-column :label="$t('月结客户')" align="center" prop="custNo" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('仓库名称')" align="center" prop="intoWarehouseName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('预约发货时间')" align="center" prop="pickStartDate" min-width="170" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('货物名称')" align="center" prop="goodsInfo" min-width="80" :show-overflow-tooltip="true"/> <el-table-column :label="$t('货物名称')" align="center" prop="goodsInfo" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('包装类型')" align="center" prop="packType" min-width="80" /> <el-table-column :label="$t('包装类型')" align="center" prop="packType" min-width="80" />
@ -102,7 +105,7 @@
<el-table-column :label="$t('体积')" align="center" prop="totalVolume" min-width="80" /> <el-table-column :label="$t('体积')" align="center" prop="totalVolume" min-width="80" />
<el-table-column :label="$t('派件方式')" align="center" prop="dispatchMethod" min-width="80" /> <el-table-column :label="$t('派件方式')" align="center" prop="dispatchMethod" min-width="80" />
<el-table-column :label="$t('支付类型')" align="center" prop="paymentType" min-width="80" :show-overflow-tooltip="true" /> <el-table-column :label="$t('支付类型')" align="center" prop="paymentType" min-width="80" :show-overflow-tooltip="true" />
<el-table-column :label="$t('备注')" align="center" prop="remark" min-width="80" :show-overflow-tooltip="true"/> <el-table-column :label="$t('备注')" align="center" prop="orderRemark" min-width="80" :show-overflow-tooltip="true"/>
</XdTable> </XdTable>
@ -496,7 +499,7 @@ export default {
feeRemark:element['费用备注'], feeRemark:element['费用备注'],
payee: element['销售联系人'], payee: element['销售联系人'],
salesmen: element['销售联系人'], salesmen: element['销售联系人'],
intoWarehouseName: element['收货仓库名称'], intoWarehouseName: element['仓库名称'],
// operateEmployeeCode: element['取件员/操作员'], // operateEmployeeCode: element['取件员/操作员'],
orderRemark: element['下单备注'], orderRemark: element['下单备注'],
// blMessage: element['寄件/签收短信'], // blMessage: element['寄件/签收短信'],

View File

@ -192,11 +192,13 @@
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;"> <el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<el-col :span="12"> <el-col :span="12">
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;"> <el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<el-col :span="24"> <el-col :span="16">
<el-form-item label="选择线路" prop="transLine"> <el-form-item label="选择线路" prop="transLine">
<TransLinePicker v-model="form.transLine" :fromCountry="form.sender.country" :countryCode="form.reciever.country" isInitiated="true" @onChange="onTransLineChange"></TransLinePicker> <TransLinePicker v-model="form.transLine" :fromCountry="form.sender.country" :countryCode="form.reciever.country" isInitiated="true" @onChange="onTransLineChange"></TransLinePicker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" >
</el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="$t('取件方式')" prop="pickupMethod"> <el-form-item :label="$t('取件方式')" prop="pickupMethod">
<el-radio-group v-model="form.pickupMethod"> <el-radio-group v-model="form.pickupMethod">
@ -210,14 +212,17 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.pickupMethod==2"> <el-col :span="12" v-if="form.pickupMethod==2">
<el-form-item :label="$t('上门时间')" prop="pickTimeRange"> <el-form-item :label="$t('上门时间')" prop="pickTimeRange">
<TimePicker v-model="form.pickTimeRange" @onChange="onPickTimeRange" ></TimePicker> <TimePicker v-model="form.pickTimeRange" @onChange="onPickTimeRange" ></TimePicker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="form.pickupMethod==2">
</el-col>
<el-col :span="24" v-if="form.pickupMethod==1 || form.pickupMethod==3"> <el-col :span="16" v-if="form.pickupMethod==1 || form.pickupMethod==3">
<el-form-item :label="$t('选择仓库')" prop="intoWarehouseCode"> <el-form-item :label="$t('选择仓库')" prop="intoWarehouseCode">
<WarehouseSimplePicker v-model="form.intoWarehouseCode" @onChange="onSelectWarehouse"></WarehouseSimplePicker> <WarehouseSimplePicker v-model="form.intoWarehouseCode" @onChange="onSelectWarehouse"></WarehouseSimplePicker>
<div v-if="form.intoWarehouseCode" style="font-size: 12px;background: rgb(250, 250, 250);border: 1px solid rgb(240, 240, 240);padding: 10px;"> <div v-if="form.intoWarehouseCode" style="font-size: 12px;background: rgb(250, 250, 250);border: 1px solid rgb(240, 240, 240);padding: 10px;">
@ -229,7 +234,9 @@
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.pickupMethod==1 || form.pickupMethod==3"> <el-col :span="8" v-if="form.pickupMethod==1 || form.pickupMethod==3">
</el-col>
<el-col :span="12" v-if="form.pickupMethod==1 || form.pickupMethod==3">
<el-form-item :label="$t('发货时间')" prop="pickStartDate"> <el-form-item :label="$t('发货时间')" prop="pickStartDate">
<el-date-picker <el-date-picker
style="width: 100%;" style="width: 100%;"
@ -243,6 +250,9 @@
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="form.pickupMethod==1 || form.pickupMethod==3">
</el-col>
<el-col :span="12" v-if="form.pickupMethod==2"> <el-col :span="12" v-if="form.pickupMethod==2">
<el-form-item :label="$t('快递员')" prop="takePieceEmployeeCode"> <el-form-item :label="$t('快递员')" prop="takePieceEmployeeCode">
@ -256,11 +266,14 @@
@click="handlePrivSalesmen" @click="handlePrivSalesmen"
> {{ $t('去绑定快递员') }}</el-button> > {{ $t('去绑定快递员') }}</el-button>
</el-col> </el-col>
<el-col :span="24" v-if="form.pickupMethod==1 || form.pickupMethod==3"> <el-col :span="12" v-if="form.pickupMethod==1 || form.pickupMethod==3">
<el-form-item :label="$t('业务员')" prop="salesmen"> <el-form-item :label="$t('业务员')" prop="salesmen">
<SalemanPicker :placeholder="$t('业务员')" v-model="form.salesmen" ></SalemanPicker> <SalemanPicker :placeholder="$t('业务员')" v-model="form.salesmen" ></SalemanPicker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="form.pickupMethod==1 || form.pickupMethod==3">
</el-col>
<el-col :span="12" > <el-col :span="12" >
@ -346,19 +359,99 @@
<el-input v-model="form.goodsInfo" type="textarea" placeholder="" /> <el-input v-model="form.goodsInfo" type="textarea" placeholder="" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('总件数')" prop="parcelQty" > <el-form-item :label="$t('总件数')" prop="parcelQty" >
<el-input v-model="form.parcelQty" style="text-align: right;" placeholder="" /> <el-input v-model="form.parcelQty" style="text-align: right;" @blur="handleCargoQtyChangeDebounce" @keyup.enter.native="handleCargoQtyChangeDebounce" placeholder="" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
</el-col>
<el-col :span="12">
<el-form-item :label="$t('总重量')" prop="billWeight" > <el-form-item :label="$t('总重量')" prop="billWeight" >
<el-input v-model="form.billWeight" style="text-align: right;min-width: 80px" placeholder="" @blur="preCalcFee" @keyup.enter.native="preCalcFee" > <el-input v-model="form.billWeight" style="text-align: right;min-width: 80px" placeholder="" @blur="preCalcFee" @keyup.enter.native="preCalcFee" >
<span slot="suffix">(kg)</span> <span slot="suffix">(kg)</span>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8">
</el-col>
<el-col :span="24">
<el-form-item label="" prop="goodsType" label-width="0px">
<el-table
class="cargoList"
:cell-style="{
'padding': '0px!important',
'padding-left': '0px!important',
'padding-right': '0px!important',
'font-size':'11px'
}"
:header-cell-style="{
'font-size':'11px'
}"
border
stripe
:data="form.cargoList"
size="small"
style="width: 100%"
max-height="300px"
>
<el-table-column :label="$t('序号')" align="center" width="60">
<template slot-scope="scope">
<span > {{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column prop="length" :label="$t('长(cm)')" align="center" width="60">
<template slot-scope="scope">
<!-- @input="(val)=>handleCalcVolumeDebounce(scope.row)" -->
<el-input-number v-model="scope.row.length" @blur="(val)=>handleCalcVolumeDebounce(scope.row)" :ref="'input_'+scope.$index+'_1'" @keyup.enter.native="focusNextInput('input_'+scope.$index+'_2')" size="mini" placeholder="" :min="0" :controls="false" :precision="0"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="width" :label="$t('宽(cm)')" align="center" width="60">
<template slot-scope="scope">
<!-- @input="(val)=>handleCalcVolumeDebounce(scope.row)" -->
<el-input-number v-model="scope.row.width" @blur="(val)=>handleCalcVolumeDebounce(scope.row)" :ref="'input_'+scope.$index+'_2'" @keyup.enter.native="focusNextInput('input_'+scope.$index+'_3')" size="mini" placeholder="" :min="0" :controls="false" :precision="0"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="height" :label="$t('高(cm)')" align="center" width="60">
<template slot-scope="scope">
<!-- @input="(val)=>handleCalcVolumeDebounce(scope.row)" -->
<el-input-number v-model="scope.row.height" @blur="(val)=>handleCalcVolumeDebounce(scope.row)" :ref="'input_'+scope.$index+'_3'" @keyup.enter.native="focusNextInput('input_'+scope.$index+'_4')" size="mini" placeholder="" :min="0" :controls="false" :precision="0"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="cargoQty" :label="$t('件数')" align="center" width="60">
<template slot-scope="scope">
<!-- -->
<el-input-number v-model="scope.row.cargoQty" @blur="(val)=>handleCargoQtyChangeDebounce(scope.row)" :ref="'input_'+scope.$index+'_4'" @keyup.enter.native="(val)=>{ handleCargoQtyChangeDebounce(scope.row); focusNextInput('input_'+(scope.$index+1)+'_1')}" size="mini" placeholder="" :min="0" :controls="false" :precision="0"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="volume" :label="$t('体积(m³)')" align="center" width="80">
<template slot-scope="scope">
<span > {{scope.row.volume}}</span>
<!-- <el-input-number v-model="scope.row.volume" size="mini" placeholder="" disabled :min="0" :controls="false" :precision="5"></el-input-number> -->
</template>
</el-table-column>
<!-- @input="(val)=>handleCalcQty(val,scope.row)" -->
<!-- <el-table-column prop="goodsName" label="描述" align="center" width="60">
<template slot-scope="scope">
<el-input v-model="scope.row.goodsName" size="mini" placeholder=""></el-input>
</template>
</el-table-column> -->
<el-table-column :label="$t('操作')" align="left" min-width="50">
<template slot-scope="scope">
<span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>deleteGoodsItem(scope.row,scope.$index)">&#xe7ae;</span>
<span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>copyGoodsItem(scope.row,scope.$index)">&#xe620;</span>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('总体积')" prop="totalVolume" > <el-form-item :label="$t('总体积')" prop="totalVolume" >
@ -435,14 +528,14 @@
</div> </div>
</el-collapse-item> </el-collapse-item>
<!-- v-if="needDeclare==1" --> <!-- v-if="needDeclare==1" -->
<el-collapse-item title="" name="3" > <el-collapse-item title="" name="3" v-if="this.transType==1">
<template slot="title"> <template slot="title">
<div class="form-group-title"> <div class="form-group-title">
<span class="title" v-if="this.transType==1">{{ $t('快递货物申报信息') }}</span> <span class="title" v-if="this.transType==1">{{ $t('快递货物申报信息') }}</span>
<span class="title" v-else-if="this.transType==2">{{ $t('空运货物申报信息') }}</span> <!-- <span class="title" v-else-if="this.transType==2">{{ $t('空运货物申报信息') }}</span> -->
<span class="title" v-else-if="this.transType==3">{{ $t('陆运货物申报信息') }}</span> <!-- <span class="title" v-else-if="this.transType==3">{{ $t('陆运货物申报信息') }}</span> -->
<span class="title" v-else-if="this.transType==4">{{ $t('海运货物申报信息') }}</span> <!-- <span class="title" v-else-if="this.transType==4">{{ $t('海运货物申报信息') }}</span> -->
<span class="title" v-else>{{ $t('货物申报信息') }}</span> <!-- <span class="title" v-else>{{ $t('货物申报信息') }}</span> -->
</div> </div>
</template> </template>
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;"> <el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
@ -456,7 +549,7 @@
size="mini" size="mini"
type="primary" type="primary"
class="iconfont icon-add" class="iconfont icon-add"
@click="handleAddGoods" @click="handleAddDeclareGoods"
>{{ $t('添加申报货物') }} >{{ $t('添加申报货物') }}
</el-button> </el-button>
<!-- <GoodsTablePicker style="cursor:hand;font-weight:700;border:1px dotted #e2d8d8;padding: 2px 5px;font-size: 12px;" v-model="form.goodsType" @onChange="onGoodsChange" placeholder=""></GoodsTablePicker> --> <!-- <GoodsTablePicker style="cursor:hand;font-weight:700;border:1px dotted #e2d8d8;padding: 2px 5px;font-size: 12px;" v-model="form.goodsType" @onChange="onGoodsChange" placeholder=""></GoodsTablePicker> -->
@ -483,7 +576,7 @@
}" }"
border border
stripe stripe
:data="form.cargoList" :data="form.declareGoodsList"
size="small" size="small"
style="width: 100%" style="width: 100%"
max-height="300px" max-height="300px"
@ -502,7 +595,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="cargoQty" :label="$t('数量')" align="center" width="100"> <el-table-column prop="cargoQty" :label="$t('数量')" align="center" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.cargoQty" size="mini" placeholder=""> <el-input v-model="scope.row.cargoQty" style="text-align: center;" size="mini" placeholder="">
</el-input> </el-input>
</template> </template>
@ -574,32 +667,32 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="length" :label="$t('长(cm)')" align="center" width="80"> <!-- <el-table-column prop="length" :label="$t('长(cm)')" align="center" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.length" size="mini" placeholder=""></el-input> <el-input v-model="scope.row.length" size="mini" placeholder=""></el-input>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column prop="width" :label="$t('宽(cm)')" align="center" width="80"> <!-- <el-table-column prop="width" :label="$t('宽(cm)')" align="center" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.width" size="mini" placeholder=""></el-input> <el-input v-model="scope.row.width" size="mini" placeholder=""></el-input>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column prop="height" :label="$t('高(cm)')" align="center" width="80"> <!-- <el-table-column prop="height" :label="$t('高(cm)')" align="center" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.height" size="mini" placeholder=""></el-input> <el-input v-model="scope.row.height" size="mini" placeholder=""></el-input>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column :label="$t('操作')" align="left" min-width="100"> <el-table-column :label="$t('操作')" align="left" min-width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="icon iconfont" <span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;" style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>deleteGoodsItem(scope.row,scope.$index)">&#xe7ae;</span> @click="()=>deleteDeclareGoodsItem(scope.row,scope.$index)">&#xe7ae;</span>
<span class="icon iconfont" <span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;" style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>copyGoodsItem(scope.row,scope.$index)">&#xe620;</span> @click="()=>copyDeclareGoodsItem(scope.row,scope.$index)">&#xe620;</span>
</template> </template>
</el-table-column> </el-table-column>
@ -615,7 +708,7 @@
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="" name="4" > <el-collapse-item title="" name="4" v-if="this.transType!=1">
<template slot="title"> <template slot="title">
<div class="form-group-title"><span class="title">{{ $t('上传单证文件') }}</span> <div class="form-group-title"><span class="title">{{ $t('上传单证文件') }}</span>
</div> </div>
@ -1313,6 +1406,10 @@ methods: {
cargoList: [], cargoList: [],
attachmentList: [], attachmentList: [],
printTypeCheckList:[], printTypeCheckList:[],
declareGoodsList: [],
declareAttachmentList: [],
billCode: null, billCode: null,
orderDate: null, orderDate: null,
openId: null, openId: null,
@ -1527,6 +1624,40 @@ methods: {
this.form.goodsInfo = selNameStr; this.form.goodsInfo = selNameStr;
}, },
handleAddDeclareGoods(){
if(!this.form.declareGoodsList){
this.form.declareGoodsList=[];
}
let declareGoods={
"goodsCode": "",
"goodsName": "",
"cargoQty": 1,
"unit": "件",
"brand": "无",
}
this.form.declareGoodsList.push(declareGoods);
},
deleteDeclareGoodsItem(row,index){
this.$confirm('确定删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.form.declareGoodsList.splice(index,1)
}).catch(() => {
})
},
copyDeclareGoodsItem(row,index){
let newItem = Object.assign({},row);
newItem.cargoQty=1;
this.form.declareGoodsList.splice(index+1, 0, newItem);
},
handleAddGoods(){ handleAddGoods(){
if(!this.form.cargoList){ if(!this.form.cargoList){
this.form.cargoList=[]; this.form.cargoList=[];
@ -1571,9 +1702,105 @@ methods: {
debounce(250, this.handleCargoQtyChange(row)) debounce(250, this.handleCargoQtyChange(row))
}, },
handleCargoQtyChange(row){ handleCargoQtyChange(row){
this.handleInitGenGoods();
this.handleCalcVolume(row); this.handleCalcVolume(row);
}, },
handleInitGenGoods(){
if(this.form.parcelQty>0){
let currentParcelQty = 0;
if(!this.form.cargoList){
this.form.cargoList=[];
}
this.form.cargoList.forEach(item=>{
currentParcelQty = currentParcelQty+parseInt(item.cargoQty);
});
// 新件数大于
if(this.form.parcelQty>currentParcelQty){
let len=this.form.parcelQty-currentParcelQty;
if(this.form.parcelQty>10){
let cargo={
"goodsCode": "",
"goodsName": "",
"cargoQty": len,
"length": 0,
"width": 0,
"height": 0,
"volume": 0,
}
this.form.cargoList.push(cargo);
}
else{
for(let i=0;i<len;i++){
let cargo={
"goodsCode": "",
"goodsName": "",
"cargoQty": 1,
"length": 0,
"width": 0,
"height": 0,
"volume": 0,
}
this.form.cargoList.push(cargo);
}
}
}
else{
let newList=[];
let incQty=0;
let zeroItem={
"goodsCode": "",
"goodsName": "",
"cargoQty": 1,
"length": 0,
"width": 0,
"height": 0,
"volume": 0,
};
for(let i=0;i<this.form.cargoList.length;i++){
let item=this.form.cargoList[i];
// 忽略未填写体积的数据
if(item.length==0&&item.width==0&&item.height==0){
continue;
}
if((incQty+parseInt(item.cargoQty))<this.form.parcelQty){
incQty = incQty+parseInt(item.cargoQty);
newList.push(item)
}else{
item.cargoQty=this.form.parcelQty-incQty;
newList.push(item)
incQty = incQty+parseInt(item.cargoQty);
break;
}
}
// 补足数量
let bzLen=this.form.parcelQty-incQty;
if(bzLen>0){
if(newList.length>=10 || this.form.parcelQty>=10){
let newItem=Object.assign({},zeroItem);
newItem.cargoQty=bzLen;
newList.push(newItem);
}else{
for(let i=0;i<bzLen;i++){
let newItem=Object.assign({},zeroItem);
newList.push(newItem);
}
}
}
this.form.cargoList=newList;
}
}else{
this.form.cargoList=[];
}
},
deleteGoodsItem(row,index){ deleteGoodsItem(row,index){
this.$confirm('确定删除?', '提示', { this.$confirm('确定删除?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',