Commit c5a4f36f authored by 邓春圆's avatar 邓春圆

Merge remote-tracking branch 'origin/dev' into dev

parents f1657038 55aee6cb
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
{{$l(row, 'destTitle')}} {{$l(row, 'destTitle')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('渠道')" prop="startTitleZh" v-if="type == 'air'"> <el-table-column :label="$t('渠道')" prop="startTitleZh" v-if="[3,4].indexOf(+item.value) > -1">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{$l(row.channel, 'name')}} {{$l(row.channel, 'name')}}
</template> </template>
...@@ -328,6 +328,8 @@ export default { ...@@ -328,6 +328,8 @@ export default {
}, },
// 运输方式筛选 // 运输方式筛选
transportFilter(item){ transportFilter(item){
// 未指定类型则全部可用
if(!this.type) return true
return (this.type == 'sea' ? ['1','2'] : ['3', '4']).indexOf(item.value) > -1 return (this.type == 'sea' ? ['1','2'] : ['3', '4']).indexOf(item.value) > -1
}, },
} }
......
...@@ -216,6 +216,7 @@ export const DICT_TYPE = { ...@@ -216,6 +216,7 @@ export const DICT_TYPE = {
BOX_SHIPPING_PRICE_UNIT: 'shipping_price_unit', // 金额单位 BOX_SHIPPING_PRICE_UNIT: 'shipping_price_unit', // 金额单位
BOX_SHIPPING_TICKET_EXCEPTION: 'shipping_ticket_exception', // 票异常 BOX_SHIPPING_TICKET_EXCEPTION: 'shipping_ticket_exception', // 票异常
BOX_SHIPPING_PROCESS: 'shipping_process', // 海运出货流程 BOX_SHIPPING_PROCESS: 'shipping_process', // 海运出货流程
BOX_AIR_SHIPMENT_PROCESS: 'air_shipment_process', // 空运出货
BOX_SEA_AIR: 'shipping_process_sea_air', // 海空联运流程流程 BOX_SEA_AIR: 'shipping_process_sea_air', // 海空联运流程流程
BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型 BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型
BOX_SHIPPING_NOTICE_TYPE: 'shipping_notice_type', // 出货通知类型 BOX_SHIPPING_NOTICE_TYPE: 'shipping_notice_type', // 出货通知类型
......
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
<el-form-item :label="$t('柜号')" prop="cubNo"> <el-form-item :label="$t('柜号')" prop="cubNo">
<el-input v-model="queryParams.cubNo" :placeholder="$t('请输入柜号')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.cubNo" :placeholder="$t('请输入柜号')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('出货渠道')" prop="shippingChannelId">
<el-select v-model="queryParams.shippingChannelId" :placeholder="$t('请选择出货渠道')">
<el-option v-for="item in channelList" :label="$l(item, 'name')" :value="item.channelId" :key="item.channelId"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('始发地')" prop="startWarehouseId"> <el-form-item :label="$t('始发地')" prop="startWarehouseId">
<el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')"> <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')">
...@@ -78,12 +83,12 @@ ...@@ -78,12 +83,12 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('方数(预装/已装)')" align="center" prop=""> <el-table-column :label="$t('方数(分拣/已装)')" align="center" prop="">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{row.boxStatistics.volume}}/{{row.boxStatistics.loadVolume}} {{row.boxStatistics.volume}}/{{row.boxStatistics.loadVolume}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('重量(预装/已装)')" align="center" prop="weight"> <el-table-column :label="$t('重量(分拣/已装)')" align="center" prop="weight">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{row.boxStatistics.weight}}/{{row.boxStatistics.loadWeight}} {{row.boxStatistics.weight}}/{{row.boxStatistics.loadWeight}}
</template> </template>
...@@ -113,12 +118,12 @@ ...@@ -113,12 +118,12 @@
<el-dropdown trigger="click" @command="(command) => handleCommand(scope.row, command)" style="marginRight:10px;"> <el-dropdown trigger="click" @command="(command) => handleCommand(scope.row, command)" style="marginRight:10px;">
<el-button type="primary"> {{ $t('操作') }}<i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-button type="primary"> {{ $t('操作') }}<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit" :disabled="scope.row.prStatus>21">{{$t('编辑')}}</el-dropdown-item> <el-dropdown-item command="edit" v-has-permi="['shipment:air:edit']" :disabled="scope.row.prStatus>21">{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item command="air">{{$t('操作')}}-{{$t('空运')}}</el-dropdown-item> <el-dropdown-item command="air" v-has-permi="['shipment:air:action']">{{$t('操作')}}-{{$t('空运')}}</el-dropdown-item>
<el-dropdown-item command="error">{{$t('异常登记')}}</el-dropdown-item> <el-dropdown-item command="error" v-has-permi="['shipment:air:exception']">{{$t('异常登记')}}</el-dropdown-item>
<el-dropdown-item command="cost">{{$t('费用登记')}}</el-dropdown-item> <el-dropdown-item command="cost" v-has-permi="['shipment:air:fee']">{{$t('费用登记')}}</el-dropdown-item>
<el-dropdown-item command="batchMarkup">{{$t('批量加价')}}</el-dropdown-item> <el-dropdown-item command="batchMarkup" v-has-permi="['shipment:air:batchMarkup']">{{$t('批量加价')}}</el-dropdown-item>
<el-dropdown-item :disabled="scope.row.prStatus<25" command="editLadingBill">{{$t('编辑提货单')}}</el-dropdown-item> <el-dropdown-item :disabled="scope.row.prStatus<25" command="editLadingBill" v-has-permi="['shipment:air:editLadingBill']">{{$t('编辑提货单')}}</el-dropdown-item>
<!-- <el-dropdown-item command="delete">{{$t('删除')}}</el-dropdown-item>--> <!-- <el-dropdown-item command="delete">{{$t('删除')}}</el-dropdown-item>-->
</el-dropdown-menu> </el-dropdown-menu>
...@@ -128,13 +133,13 @@ ...@@ -128,13 +133,13 @@
{{$t('下载')}}<i class="el-icon-arrow-down el-icon--right"></i> {{$t('下载')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="downloadPreloadGoodsList" v-hasPermi="['shipment:box:download:downloadPreloadGoodsList']">{{$t('预装单')}}</el-dropdown-item> <el-dropdown-item command="downloadPreloadGoodsList" v-hasPermi="['shipment:air:download:downloadPreloadGoodsList']">{{$t('预装单')}}</el-dropdown-item>
<!--el-dropdown-item command="downloadLoadGoodsList" v-hasPermi="['shipment:box:download:downloadLoadGoodsList']">{{$t('已装单')}}</el-dropdown-item--> <!--el-dropdown-item command="downloadLoadGoodsList" v-hasPermi="['shipment:air:download:downloadLoadGoodsList']">{{$t('已装单')}}</el-dropdown-item-->
<el-dropdown-item command="downloadReceivableList" v-hasPermi="['shipment:box:download:downloadReceivableList']">{{$t('应收汇总表')}}</el-dropdown-item> <el-dropdown-item command="downloadReceivableList" v-hasPermi="['shipment:air:download:downloadReceivableList']">{{$t('应收汇总表')}}</el-dropdown-item>
<el-dropdown-item command="downloadAgentListFiles" v-hasPermi="['shipment:box:download:downloadAgentListFiles']">agent list</el-dropdown-item> <el-dropdown-item command="downloadAgentListFiles" v-hasPermi="['shipment:air:download:downloadAgentListFiles']">agent list</el-dropdown-item>
<el-dropdown-item command="downloadSoncapFiles" v-hasPermi="['shipment:box:download:downloadSoncapFiles']">soncap</el-dropdown-item> <el-dropdown-item command="downloadSoncapFiles" v-hasPermi="['shipment:air:download:downloadSoncapFiles']">soncap</el-dropdown-item>
<el-dropdown-item command="zipDownload" v-hasPermi="['shipment:box:download:zipDownload']">{{$t('提货单')}}</el-dropdown-item> <el-dropdown-item command="zipDownload" v-hasPermi="['shipment:air:download:zipDownload']">{{$t('提货单')}}</el-dropdown-item>
<el-dropdown-item command="downloadLadingCopy" v-hasPermi="['shipment:box:download:downloadLadingCopy']">{{$t('提单Copy')}}</el-dropdown-item> <el-dropdown-item command="downloadLadingCopy" v-hasPermi="['shipment:air:download:downloadLadingCopy']">{{$t('提单Copy')}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
...@@ -152,7 +157,7 @@ ...@@ -152,7 +157,7 @@
<costForm v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" /> <costForm v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" />
</template> </template>
<template v-if="dialogCfg.dialogType === 'error'"> <template v-if="dialogCfg.dialogType === 'error'">
<regError v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :allUsers="allUsers" /> <regError v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :allUsers="allUsers" flag="air" />
</template> </template>
<template v-if="dialogCfg.dialogType === 'editLadingBill'"> <template v-if="dialogCfg.dialogType === 'editLadingBill'">
<ladingBill v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :getCabinetName="getCabinetName" type="air" /> <ladingBill v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :getCabinetName="getCabinetName" type="air" />
...@@ -170,7 +175,8 @@ ...@@ -170,7 +175,8 @@
<el-table-column :label="$t('自编号')" align="center" prop="selfNo" /> <el-table-column :label="$t('自编号')" align="center" prop="selfNo" />
<el-table-column :label="$t('类型')" align="center"> <el-table-column :label="$t('类型')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_NOTICE_TYPE" :value="String(scope.row.noticeType)" /> {{scope.row.noticeText}}
<!--<dict-tag :type="DICT_TYPE.BOX_SHIPPING_NOTICE_TYPE" :value="String(scope.row.noticeType)" />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('预计时间')" align="center"> <el-table-column :label="$t('预计时间')" align="center">
...@@ -215,6 +221,7 @@ import { ...@@ -215,6 +221,7 @@ import {
} from "./shippingAir/utils"; } from "./shippingAir/utils";
import {getCabinetPage} from "@/api/ecw/cabinet"; import {getCabinetPage} from "@/api/ecw/cabinet";
import LadingBill from "@/views/ecw/box/ladingBill/index.vue"; import LadingBill from "@/views/ecw/box/ladingBill/index.vue";
import {listUser} from "@/api/system/user";
export default { export default {
name: 'indexAir', name: 'indexAir',
...@@ -306,6 +313,7 @@ export default { ...@@ -306,6 +313,7 @@ export default {
this.$t("部分完成"), this.$t("部分完成"),
this.$t("已完成"), this.$t("已完成"),
], ],
allUsers: []
} }
}, },
computed: { computed: {
...@@ -351,6 +359,12 @@ export default { ...@@ -351,6 +359,12 @@ export default {
this.getList() this.getList()
this.getChannelList() this.getChannelList()
this.queryNotice() this.queryNotice()
// 用户
listUser({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allUsers = data.list ?? [];
});
}, },
methods: { methods: {
formatDate, formatDate,
...@@ -552,13 +566,14 @@ export default { ...@@ -552,13 +566,14 @@ export default {
break; break;
case "handle": case "handle":
const { noticeType } = row; const { noticeType } = row;
if ([1, 2, 3, 4, 8].includes(noticeType)) { if ([1, 2, 3, 4, 8, 14].includes(noticeType)) {
this.$router.push("/boxAir/shippingAir/" + row.id); this.$router.push("/boxAir/shippingAir/" + row.id);
} }
if ([5, 6, 7].includes(noticeType)) { // 10 是起飞异常,参考海运的起运异常6处理
if ([5, 6, 7, 10].includes(noticeType)) {
this.$router.push("/boxAir/query/" + row.id); this.$router.push("/boxAir/query/" + row.id);
} }
if([9].includes(noticeType)){ if([9, 12, 13].includes(noticeType)){
await dealCustomsSplitNotify(row.notifyId) await dealCustomsSplitNotify(row.notifyId)
} }
this.closeDialog(); this.closeDialog();
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
<div class="shippingSea-dialog"> <div class="shippingSea-dialog">
<el-form ref="errorForm" :model="errorObj" label-width="140px"> <el-form ref="errorForm" :model="errorObj" label-width="140px">
<el-form-item :label="$t('操作步骤')"> <el-form-item :label="$t('操作步骤')">
<el-select v-if="flag=='sea'" v-model="errorObj.opStep" :placeholder="$t('请选择操作步骤')"> <el-select v-model="errorObj.opStep" :placeholder="$t('请选择操作步骤')">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_PROCESS)" :key="type.value" :label="$l(type, 'label')" :value="type.value"></el-option> <el-option v-for="type in this.getDictDatas(DICT_TYPE[this.process])" :key="type.value" :label="$l(type, 'label')" :value="type.value"></el-option>
</el-select> </el-select>
<el-select v-if="flag=='seaAir'" v-model="errorObj.opStep" :placeholder="$t('请选择操作步骤')"> <!--<el-select v-if="flag=='seaAir'" v-model="errorObj.opStep" :placeholder="$t('请选择操作步骤')">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SEA_AIR)" :key="type.value" :label="$l(type, 'label')" :value="type.value"></el-option> <el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SEA_AIR)" :key="type.value" :label="$l(type, 'label')" :value="type.value"></el-option>
</el-select> </el-select>-->
</el-form-item> </el-form-item>
<el-form-item :label="$t('票异常')"> <el-form-item :label="$t('票异常')">
<el-select v-model="errorObj.billAbnId" :placeholder="$t('请选择票异常')"> <el-select v-model="errorObj.billAbnId" :placeholder="$t('请选择票异常')">
...@@ -75,10 +75,21 @@ export default { ...@@ -75,10 +75,21 @@ export default {
label: this.$t(""), label: this.$t(""),
}, },
], ],
flag: "sea",
delayDay: 0, delayDay: 0,
}; };
}, },
computed:{
flag(){
return this.$attrs.flag || 'sea'
},
process(){
return {
'air': 'BOX_AIR_SHIPMENT_PROCESS',
'sea': 'BOX_SHIPPING_PROCESS',
'seaAir': 'BOX_SEA_AIR'
}[this.flag]
}
},
created() { created() {
const { currNode } = this.$attrs; const { currNode } = this.$attrs;
this.errorObj = { opStep: currNode?.dataKey ?? undefined }; this.errorObj = { opStep: currNode?.dataKey ?? undefined };
......
...@@ -102,6 +102,11 @@ export default { ...@@ -102,6 +102,11 @@ export default {
"airArrivalInfo.actTime"(val) { "airArrivalInfo.actTime"(val) {
this.compareDate(this.airArrivalInfo.estTime, val); this.compareDate(this.airArrivalInfo.estTime, val);
}, },
// 确认到港时间
"arrivalObj.apConfirmTime"(val) {
this.compareDate(this.getExpectedTime(), val);
},
}, },
methods: { methods: {
regCloseDialog(type) { regCloseDialog(type) {
...@@ -110,7 +115,7 @@ export default { ...@@ -110,7 +115,7 @@ export default {
this.$emit("getBoxInfo"); this.$emit("getBoxInfo");
} }
}, },
// 获取预计到港时间 // 获取实际二程起飞时间
getHeadTravelTime() { getHeadTravelTime() {
const { shippingInfo } = this.$attrs.shipmentObj; const { shippingInfo } = this.$attrs.shipmentObj;
if (shippingInfo) { if (shippingInfo) {
...@@ -120,6 +125,16 @@ export default { ...@@ -120,6 +125,16 @@ export default {
} }
return null; return null;
}, },
// 获取预计到港时间
getExpectedTime() {
const { shippingInfo } = this.$attrs.shipmentObj;
if (shippingInfo) {
return dayjs(shippingInfo.dtEstArrivalTime).format(
"YYYY-MM-DD HH:mm:ss"
);
}
return null;
},
// 时间比较 // 时间比较
compareDate(expectedTime, apConfirmTime) { compareDate(expectedTime, apConfirmTime) {
this.showMsg = false; this.showMsg = false;
......
<template> <template>
<div> <div>
<el-select <el-select filterable :value="value === 0 ? undefined : value" @change="change" v-bind="$attrs" clearable>
filterable <el-option v-for="supplier in getSuppliers" :key="supplier.id" :label="$t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo" :value="supplier.id" style="width: 600px">
:value="value === 0 ? undefined : value" <el-tooltip class="item" effect="dark" placement="top">
@change="change" <div slot="content">
v-bind="$attrs" <span>{{ $t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo }}</span>
clearable </div>
> <div class="iclass">{{ $t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo }}</div>
<el-option </el-tooltip>
v-for="supplier in getSuppliers" </el-option>
:key="supplier.id" </el-select>
:label="$t('公司名称:')+$l(supplier, 'company')+$t(',地址:')+supplier.externalBackVO.receiveAddress+$t(',邮箱:')+supplier.externalBackVO.receiveEmail+$t(',品名:')+supplier.externalBackVO.goodName+$t(',From M No:')+supplier.externalBackVO
.fromNo+$t(',BA No:')+supplier.externalBackVO
.baNo"
:value="supplier.id"
></el-option>
</el-select>
</div> </div>
</template> </template>
...@@ -68,3 +62,10 @@ export default { ...@@ -68,3 +62,10 @@ export default {
}, },
}; };
</script> </script>
<style scoped>
.iclass {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
" "
>{{ $t('新建合包箱号') }}</el-button >{{ $t('新建合包箱号') }}</el-button
> >
<el-button class="ml-10" @click="pack">{{$t('补单')}}</el-button>
</el-row> </el-row>
<el-row style="margin-top: 5px"> <el-row style="margin-top: 5px">
<el-table border :data="pagList" max-height="600px"> <el-table border :data="pagList" max-height="600px">
...@@ -42,7 +43,7 @@ ...@@ -42,7 +43,7 @@
<template slot-scope="scope"> {{ scope.row.pkgLength }}*{{ scope.row.pkgWidth }}*{{ scope.row.pkgHight }} </template> <template slot-scope="scope"> {{ scope.row.pkgLength }}*{{ scope.row.pkgWidth }}*{{ scope.row.pkgHight }} </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('订单数')" align="center" prop="orderCount" /> <el-table-column :label="$t('订单数')" align="center" prop="orderCount" />
<el-table-column :label="$t('箱数')" align="center" prop="sumCount" /> <el-table-column :label="$t('箱数')" align="center" prop="sumNum" />
<el-table-column :label="$t('入仓体积')" align="center" prop="sumVolume" /> <el-table-column :label="$t('入仓体积')" align="center" prop="sumVolume" />
<el-table-column :label="$t('入仓重量')" align="center" prop="sumWeight" /> <el-table-column :label="$t('入仓重量')" align="center" prop="sumWeight" />
<el-table-column :label="$t('入仓数量(个)')" align="center" prop="sumQuantity" /> <el-table-column :label="$t('入仓数量(个)')" align="center" prop="sumQuantity" />
...@@ -103,10 +104,12 @@ ...@@ -103,10 +104,12 @@
</el-dialog> </el-dialog>
<!-- 装箱 --> <!-- 装箱 -->
<el-dialog :title="pkgPageTitle" :visible.sync="pkgPagedialogVisible" :fullscreen="true" :modal-append-to-body="false" append-to-body @close="pkgPageType=0"> <el-dialog :title="pkgPageTitle" :visible.sync="pkgPagedialogVisible" :fullscreen="true" :modal-append-to-body="false" append-to-body @close="pkgPageType=0">
<el-radio-group v-model="pkgPageType"> <div class="flex">
<el-radio-button :label="1">{{ $t('未装箱列表') }}</el-radio-button> <el-radio-group v-model="pkgPageType">
<el-radio-button :label="2">{{ $t('已装箱列表') }}</el-radio-button> <el-radio-button :label="1">{{ $t('未装箱列表') }}</el-radio-button>
</el-radio-group> <el-radio-button :label="2">{{ $t('已装箱列表') }}</el-radio-button>
</el-radio-group>
</div>
<un-pkg-page v-if="pkgPageType == 1" :pkgData="pkgData" :shipmentObj="shipmentObj" /> <un-pkg-page v-if="pkgPageType == 1" :pkgData="pkgData" :shipmentObj="shipmentObj" />
<pkg-page v-if="pkgPageType == 2" :pkgData="pkgData" :shipmentObj="shipmentObj" @closeDialog="closeDialog" /> <pkg-page v-if="pkgPageType == 2" :pkgData="pkgData" :shipmentObj="shipmentObj" @closeDialog="closeDialog" />
</el-dialog> </el-dialog>
...@@ -121,6 +124,14 @@ ...@@ -121,6 +124,14 @@
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
<supplement-order
v-if="showPackDialog"
:shipmentObj="shipmentObj"
:warehouseList="$attrs.warehouseList"
@close="showPackDialog=false"
@supplementFinish="onSupplementFinish"
></supplement-order>
</div> </div>
</template> </template>
...@@ -130,8 +141,10 @@ import { formatDate, serviceMsg } from '../../utils' ...@@ -130,8 +141,10 @@ import { formatDate, serviceMsg } from '../../utils'
import unPkgPage from './unPkgPage.vue' import unPkgPage from './unPkgPage.vue'
import PkgPage from './pkgPage.vue' import PkgPage from './pkgPage.vue'
import printTag from './printTag.vue' import printTag from './printTag.vue'
import SupplementOrder from "./supplementOrder.vue";
export default { export default {
components: { components: {
SupplementOrder,
unPkgPage, unPkgPage,
PkgPage, PkgPage,
printTag printTag
...@@ -171,7 +184,9 @@ export default { ...@@ -171,7 +184,9 @@ export default {
pkgPagedialogVisible: false, pkgPagedialogVisible: false,
pkgData: {}, pkgData: {},
printdialogVisible: false, printdialogVisible: false,
tagData: {} tagData: {},
// 是否显示补单弹层
showPackDialog: false
} }
}, },
created() { created() {
...@@ -261,6 +276,14 @@ export default { ...@@ -261,6 +276,14 @@ export default {
this.$emit("closeDialog", "submit"); this.$emit("closeDialog", "submit");
}); });
}); });
},
// 补单
pack(){
this.showPackDialog=true
},
// 提交补单
onSupplementFinish(){
this.showPackDialog = false
} }
} }
} }
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
]"> ]">
<el-input v-model="sealBoxForm.sumNum" style="width: 180px"> <el-input v-model="sealBoxForm.sumNum" style="width: 180px">
<template slot="append"> <template slot="append">
{{ $t('') }} {{ $t('') }}
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div> <div>
<el-form ref="subMaterialForm" :model="subMaterialObj" label-width="140px"> <el-form ref="subMaterialForm" :model="subMaterialObj" label-width="140px">
<el-form-item :label="$t('代理商AGENT')"> <el-form-item :label="$t('代理商AGENT')">
<supplierSelect v-model="subMaterialObj.agentId" :areaType="1" :placeholder="$t('请选择供应商')" :allSupplier="this.$attrs.allSupplier" disabled /> <supplierSelect v-model="subMaterialObj.agentId" :areaType="1" :placeholder="$t('请选择供应商')" :allSupplier="this.$attrs.allSupplier" :disabled="agentFlag" @change="getSup" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('提单号M/BL NO.')" class="two-element"> <el-form-item :label="$t('提单号M/BL NO.')" class="two-element">
<el-input v-model="subMaterialObj.blMblNo" :placeholder="$t('请输入提单号')"></el-input> <el-input v-model="subMaterialObj.blMblNo" :placeholder="$t('请输入提单号')"></el-input>
...@@ -106,6 +106,7 @@ export default { ...@@ -106,6 +106,7 @@ export default {
units: [], units: [],
// 柜型 // 柜型
cabinetType: "/", cabinetType: "/",
agentFlag: true
}; };
}, },
created() { created() {
...@@ -145,8 +146,9 @@ export default { ...@@ -145,8 +146,9 @@ export default {
this.$set(this.subMaterialObj,'kgs',this.shipmentObj.customsInfo?.dcGoodsWgt||undefined) this.$set(this.subMaterialObj,'kgs',this.shipmentObj.customsInfo?.dcGoodsWgt||undefined)
this.$set(this.subMaterialObj,'containerSealNo',(this.shipmentObj.trailerInfo?.tlContainerNo||'')+'/'+(this.shipmentObj.trailerInfo?.tlStripSeal||'/')) this.$set(this.subMaterialObj,'containerSealNo',(this.shipmentObj.trailerInfo?.tlContainerNo||'')+'/'+(this.shipmentObj.trailerInfo?.tlStripSeal||'/'))
this.subMaterialObj.containerSealNo = this.subMaterialObj.containerSealNo.replace('//','') this.subMaterialObj.containerSealNo = this.subMaterialObj.containerSealNo.replace('//','')
this.getSup(this.subMaterialObj.agentId) if(this.subMaterialObj.agentId) this.getSup(this.subMaterialObj.agentId)
} }
if(!this.subMaterialObj.agentId) this.agentFlag = false
}, },
methods: { methods: {
getSup(id) { getSup(id) {
......
...@@ -259,10 +259,6 @@ export default { ...@@ -259,10 +259,6 @@ export default {
if (start.includes(val[keyName])) { if (start.includes(val[keyName])) {
node.currStatus = "start"; node.currStatus = "start";
if (type === "mergePkg"){
++nodeIndex;
continue;
}
} }
if (start.includes(val[keyName]) && val[voName]) { if (start.includes(val[keyName]) && val[voName]) {
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<seaProcess :seaBaseData="seaBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :allLading="allLading" :warehouseList="warehouseList" @getBoxInfo="getBoxInfo" /> <seaProcess :seaBaseData="seaBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :allLading="allLading" :warehouseList="warehouseList" @getBoxInfo="getBoxInfo" />
<!-- 海运步骤图 --> <!-- 海运步骤图 -->
<seaStepDetail v-if="seaBaseData.length>0" :seaBaseData="seaBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" /> <seaStepDetail v-if="flag" :seaBaseData="seaBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" />
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
...@@ -47,6 +47,7 @@ import { getLadingShipperPage } from "@/api/ecw/ladingShipper"; ...@@ -47,6 +47,7 @@ import { getLadingShipperPage } from "@/api/ecw/ladingShipper";
// 这里引入的数据切换语言后要刷新才生效,优化办法是label同时配备labelEn字段,然后再页面上用$l函数调用 // 这里引入的数据切换语言后要刷新才生效,优化办法是label同时配备labelEn字段,然后再页面上用$l函数调用
import { airBaseData } from "./utils"; import { airBaseData } from "./utils";
import { airOneData } from "./utils";
/** /**
* 海运操作主页面 * 海运操作主页面
*/ */
...@@ -62,6 +63,7 @@ export default { ...@@ -62,6 +63,7 @@ export default {
data() { data() {
return { return {
airBaseData, airBaseData,
airOneData,
shipmentObj: {}, shipmentObj: {},
warehouseList: [], warehouseList: [],
// 供应商 // 供应商
...@@ -76,6 +78,7 @@ export default { ...@@ -76,6 +78,7 @@ export default {
seaBaseData: [], seaBaseData: [],
// 状态 // 状态
statusLabel: "", statusLabel: "",
flag: false
}; };
}, },
created() { created() {
...@@ -122,22 +125,9 @@ export default { ...@@ -122,22 +125,9 @@ export default {
this.shipmentObj = data ?? {}; this.shipmentObj = data ?? {};
this.seaBaseData = this.airBaseData() this.seaBaseData = this.airBaseData()
if(this.shipmentObj.destinationClearance==3&&this.shipmentObj.deliveryType==2){ if(this.shipmentObj.destinationClearance==3&&this.shipmentObj.deliveryType==2){
this.seaBaseData = this.seaBaseData.filter(item=>{ this.seaBaseData = this.airOneData()
var flag = true
item.forEach(element => {
if(element.type == 'agent'){
flag = false
}
if(element.type == 'unloading'){
flag = false
}
if(element.type == 'cusClearance'){
flag = false
}
});
return flag
})
} }
this.flag = true
}); });
}, },
}, },
......
...@@ -87,7 +87,7 @@ function airBaseData() { ...@@ -87,7 +87,7 @@ function airBaseData() {
/** /**
* 合包状态:161待合包 162已合包 * 合包状态:161待合包 162已合包
*/ */
voName: "trailerInfo", voName: "boxMergePkgBackVO",
keyName: "mergePkgStatus", keyName: "mergePkgStatus",
status: { status: {
start: [161], start: [161],
...@@ -326,6 +326,251 @@ function airBaseData() { ...@@ -326,6 +326,251 @@ function airBaseData() {
]; ];
} }
/**
* 客户+单票流程
*
* @return {*}
*/
function airOneData() {
return [
[
{
title: i18n.$t("订舱"),
imgSrc: {
start: require("@/assets/images/shipping/dc-start.png"),
end: require("@/assets/images/shipping/dc-end.png"),
},
type: "booking", // 类型
dataKey: "1", // 字典数据键值
/**
* 订舱状态:11、未订舱;12、已订舱
*/
voName: "bookAirInfo", // 订舱对象vo
keyName: "bkStatus",
status: {
start: [11],
wait: [],
end: [12],
},
},
],
[
{
title: i18n.$t("分拣"),
imgSrc: {
start: require("@/assets/images/shipping/yz-start.png"),
wait: require("@/assets/images/shipping/yz-wait.png"),
end: require("@/assets/images/shipping/yz-end.png"),
},
type: "preinstall",
dataKey: "2", // 字典数据键值
/**
* 预装状态:21、未预装;22、预装中;23、预装审核中;24、预装审核失败;25、预装审核成功
*/
voName: "preInstallInfo",
keyName: "prStatus",
status: {
start: [21],
wait: [22, 23, 24],
end: [25],
},
}
],
[
{
title: i18n.$t("理货"),
imgSrc: {
start: require("@/assets/images/shipping/lh-start.png"),
wait: require("@/assets/images/shipping/lh-wait.png"),
end: require("@/assets/images/shipping/lh-end.png"),
},
type: "tally",
dataKey: "16", // 字典数据键值
/**
* 理货状态:2111、未理货;2112、已理货
*/
voName: "tallyInfo",
keyName: "tyStatus",
status: {
start: [2111],
wait: [],
end: [2112],
},
},
{
title: i18n.$t("合包"),
imgSrc: {
start: require("@/assets/images/shipping/qg-start.png"),
wait: require("@/assets/images/shipping/qg-wait.png"),
end: require("@/assets/images/shipping/qg-end.png"),
},
type: "mergePkg",
dataKey: "3", // 字典数据键值
/**
* 合包状态:161待合包 162已合包
*/
voName: "boxMergePkgBackVO",
keyName: "mergePkgStatus",
status: {
start: [161],
wait: [],
end: [162],
},
},
],
[
{
title: i18n.$t("出货"),
imgSrc: {
start: require("@/assets/images/shipping/zg-start.png"),
wait: require("@/assets/images/shipping/zg-wait.png"),
end: require("@/assets/images/shipping/zg-end.png"),
},
type: "shipment",
dataKey: "4", // 字典数据键值
/**
* 出货状态:171、待出货 172、出货审核中 173、审核失败 174、审核成功 = 175、已出货
*/
voName: "boxAirShipmentBackVO",
keyName: "airShipmentStatus",
status: {
start: [171],
wait: [172,173],
end: [175],
},
},
{
title: i18n.$t("出仓"),
imgSrc: {
start: require("@/assets/images/shipping/zg-start.png"),
wait: require("@/assets/images/shipping/zg-wait.png"),
end: require("@/assets/images/shipping/zg-end.png"),
},
type: "checkout",
dataKey: "5", // 字典数据键值
/**
* 出仓状态:221、未出仓 222、已出仓
*/
voName: "boxAirCheckoutBackVO",
keyName: "checkoutStatus",
status: {
start: [221],
wait: [],
end: [222],
},
},
],
[
{
title: i18n.$t("报关"),
imgSrc: {
start: require("@/assets/images/shipping/bg-start.png"),
wait: require("@/assets/images/shipping/bg-wait.png"),
end: require("@/assets/images/shipping/bg-end.png"),
},
type: "cusDeclaration",
dataKey: "5", // 字典数据键值
/**
*报关状态:51、未报关;52、报关中;53、已报关
*/
voName: "customsInfo",
keyName: "dcStatus",
status: {
start: [51],
wait: [52],
end: [53],
},
},
{
title: i18n.$t("提单补料"),
imgSrc: {
start: require("@/assets/images/shipping/tdcl-start.png"),
wait: require("@/assets/images/shipping/tdcl-wait.png"),
end: require("@/assets/images/shipping/tdcl-end.png"),
},
type: "subMaterial",
dataKey: "7", // 字典数据键值
/**
* 提单补料状态:71、未提单补料;72、已提单补料
*/
voName: "ladingBillInfo",
keyName: "blStatus",
status: {
start: [71],
wait: [],
end: [72],
},
},
],
[
{
title: i18n.$t("起飞"),
imgSrc: {
start: require("@/assets/images/shipping/ecqf-start.png"),
wait: require("@/assets/images/shipping/ecqf-wait.png"),
end: require("@/assets/images/shipping/ecqf-end.png"),
},
type: "twoWayTakeoff",
dataKey: "9", // 字典数据键值
/**
* 起飞状态:231、未起飞;232、已起飞
*/
voName: "boxAirFlyInfo",
keyName: "flyStatus",
status: {
start: [231],
wait: [],
end: [232],
},
},
],
[
{
type: "clrDocument",
imgSrc: {
start: require("@/assets/images/shipping/qg-start.png"),
wait: require("@/assets/images/shipping/qg-wait.png"),
end: require("@/assets/images/shipping/qg-end.png"),
},
title: i18n.$t("清关文件"),
dataKey: "11", // 字典数据键值
/**
* 清关文件状态:111、未清关文件;112、已清关文件
*/
voName: "clearanceDocInfo",
keyName: "cdStatus",
status: {
start: [111],
wait: [],
end: [112],
},
},
],
[
{
title: i18n.$t("结算"),
imgSrc: {
start: require("@/assets/images/shipping/js-start.png"),
wait: require("@/assets/images/shipping/js-wait.png"),
end: require("@/assets/images/shipping/js-end.png"),
},
type: "settlement",
dataKey: "15", // 字典数据键值
/**
* 结算状态:191、未结算;192、结算中;193、已结算
*/
voName: "settlementInfo",
keyName: "slStatus",
status: {
start: [191],
wait: [192],
end: [193],
},
},
],
];
}
/** /**
* 详情显示列 * 详情显示列
* *
...@@ -934,6 +1179,7 @@ export { ...@@ -934,6 +1179,7 @@ export {
getColmnMapping, getColmnMapping,
getSeaStatus, getSeaStatus,
airBaseData, airBaseData,
airOneData,
constantDict, constantDict,
formatStringNumber, formatStringNumber,
formatDateStr, formatDateStr,
......
...@@ -69,8 +69,8 @@ ...@@ -69,8 +69,8 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('结束时间')" align="center" prop="endTime" width="180"> <el-table-column :label="$t('结束时间')" align="center" prop="endTime" width="180">
<template slot-scope="{row}"> <template slot-scope="{row}">
<div :style="{red: row.overdueStatus == 0 ? 'red' : null}">{{ parseTime(row.endTime, '{y}-{m}-{d}') }}</div> <div :style="{color: !row.overdueStatus ? 'red' : null}">{{ parseTime(row.endTime, '{y}-{m}-{d}') }}</div>
<div v-if="row.overdueStatus == 0" style="color: red">{{ $t('已过期') }}</div> <div v-if="!row.overdueStatus" style="color: red">{{ $t('已过期') }}</div>
</template> </template>
</el-table-column> </el-table-column>
<!-- <!--
......
...@@ -177,10 +177,9 @@ ...@@ -177,10 +177,9 @@
{{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}} {{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('特殊要求')"> <el-descriptions-item :label="$t('特殊要求')">
<template v-for="packageType in order.packageType.split(',')"> <template v-if="order.packageType">
<dict-tag class="mr-10" v-if="packageType" :key="packageType" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" :value="packageType" /> <dict-tag v-for="packageType in order.packageType.split(',').filter(item => !!item)" class="mr-10" :key="packageType" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" :value="packageType" />
</template> </template>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('特殊要求备注')"> <el-descriptions-item :label="$t('特殊要求备注')">
{{order.packageRemarks}} {{order.packageRemarks}}
...@@ -277,7 +276,7 @@ ...@@ -277,7 +276,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('订单动态')" name="second"> <el-tab-pane :label="$t('订单动态')" name="second">
<el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true"> <el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true">
<el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="activity.timestamp"> <el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="parseTime(activity.businessTime)">
{{ $l(activity, 'title') }} {{ $l(activity, 'title') }}
<div>{{$l(activity, 'remarks')}}</div> <div>{{$l(activity, 'remarks')}}</div>
</el-timeline-item> </el-timeline-item>
...@@ -505,9 +504,11 @@ import FeeDetail from "@/views/ecw/order/components/FeeDetail.vue"; ...@@ -505,9 +504,11 @@ import FeeDetail from "@/views/ecw/order/components/FeeDetail.vue";
import PackHistory from './components/PackHistory'; import PackHistory from './components/PackHistory';
import PackHistoryDetail from './components/PackHistoryDetail'; import PackHistoryDetail from './components/PackHistoryDetail';
import {getSupplier, getSupplierPage} from '@/api/ecw/supplier' import {getSupplier, getSupplierPage} from '@/api/ecw/supplier'
import {formatTime} from "@/utils";
export default { export default {
name: "detail", name: "detail",
components: { components: {
DeclarationDocuments,
ImageDisplay, ImageDisplay,
OperateLogDetail, OperateLogDetail,
PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect,PackHistory,PackHistoryDetail, PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect,PackHistory,PackHistoryDetail,
...@@ -629,6 +630,8 @@ export default { ...@@ -629,6 +630,8 @@ export default {
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
}, },
methods: { methods: {
parseTime,
formatTime,
checkPermi, // 检查权限 checkPermi, // 检查权限
// 获取储位名称 // 获取储位名称
getLocationName(locationArr){ getLocationName(locationArr){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment