|
|
|
@ -208,6 +208,22 @@
|
|
|
|
|
<template #ygtETD="{ row }">
|
|
|
|
|
<div class="etd" v-if="row.ygtETD">{{ row.ygtETD.substring(0, 10) }}</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template #fangdan="{ row }">
|
|
|
|
|
<a-spin :spinning="row.serviceLoad">
|
|
|
|
|
<div style="font-size:16px;cursor: pointer;">
|
|
|
|
|
<a-icon
|
|
|
|
|
title="已放单"
|
|
|
|
|
type="plus-circle"
|
|
|
|
|
style="margin-right:15px;color:rgb(38 129 58);"
|
|
|
|
|
@click="handleSaveService(row)" />
|
|
|
|
|
<a-icon
|
|
|
|
|
title="取消已放单"
|
|
|
|
|
type="minus-circle"
|
|
|
|
|
style="color:rgb(255, 32, 2);"
|
|
|
|
|
@click="handleCancelService(row)" />
|
|
|
|
|
</div>
|
|
|
|
|
</a-spin>
|
|
|
|
|
</template>
|
|
|
|
|
<template #atd="{ row, rowIndex }">
|
|
|
|
|
<a-spin :spinning="row.atdLoading">
|
|
|
|
|
<a-icon
|
|
|
|
@ -254,9 +270,14 @@
|
|
|
|
|
:key="bindex">
|
|
|
|
|
<a-popover placement="topLeft" v-if="btn.staTime">
|
|
|
|
|
<div slot="content">{{ btn.staTime }}</div>
|
|
|
|
|
<span @click="handleGetWebDataYZ(row,btn.staCode)" :class="{ active: btn.isChecked }">{{ enmuBookingBtn(btn.staCode) }}</span>
|
|
|
|
|
<span @click="handleGetWebDataYZ(row, btn.staCode)" :class="{ active: btn.isChecked }">{{
|
|
|
|
|
enmuBookingBtn(btn.staCode) }}</span>
|
|
|
|
|
</a-popover>
|
|
|
|
|
<span style="cursor: pointer;" @click="handleGetWebDataYZ(row,btn.staCode)" :class="{ active: btn.isChecked }" v-else>{{ enmuBookingBtn(btn.staCode) }}</span>
|
|
|
|
|
<span
|
|
|
|
|
style="cursor: pointer;"
|
|
|
|
|
@click="handleGetWebDataYZ(row, btn.staCode)"
|
|
|
|
|
:class="{ active: btn.isChecked }"
|
|
|
|
|
v-else>{{ enmuBookingBtn(btn.staCode) }}</span>
|
|
|
|
|
<i
|
|
|
|
|
class="iconfont icon-xiaoyoujiantou"
|
|
|
|
|
:class="{ hide: bindex === row.bookstatus.length - 1 }"></i>
|
|
|
|
@ -274,8 +295,8 @@
|
|
|
|
|
<div slot="content">
|
|
|
|
|
<div>
|
|
|
|
|
<span class="txfcSpan" style="width: 120px;">箱号</span>
|
|
|
|
|
<span @click="handleGetWebData(row,'YARD')" class="txfcSpan">提箱</span>
|
|
|
|
|
<span @click="handleGetWebData(row,'YARD')" class="txfcSpan">返场</span>
|
|
|
|
|
<span @click="handleGetWebData(row, 'YARD')" class="txfcSpan">提箱</span>
|
|
|
|
|
<span @click="handleGetWebData(row, 'YARD')" class="txfcSpan">返场</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-for="(item, index) in row.statuslogs1" :key="index">
|
|
|
|
|
<span class="txfcSpan" style="width: 120px;">{{ item.cntrno }}</span>
|
|
|
|
@ -283,8 +304,10 @@
|
|
|
|
|
<span class="txfcSpan">{{ item.fcopTime }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div @click="handleGetWebData(row,'YARD')" :class="{ active: row.statuslogs1[0].txopTime }">提箱</div>
|
|
|
|
|
<div @click="handleGetWebData(row,'YARD')" :class="{ active: row.statuslogs1[0].fcopTime }">返场</div>
|
|
|
|
|
<div @click="handleGetWebData(row, 'YARD')" :class="{ active: row.statuslogs1[0].txopTime }">提箱
|
|
|
|
|
</div>
|
|
|
|
|
<div @click="handleGetWebData(row, 'YARD')" :class="{ active: row.statuslogs1[0].fcopTime }">返场
|
|
|
|
|
</div>
|
|
|
|
|
</a-popover>
|
|
|
|
|
</a-spin>
|
|
|
|
|
</div>
|
|
|
|
@ -306,7 +329,8 @@
|
|
|
|
|
<template slot="content">
|
|
|
|
|
<p>
|
|
|
|
|
比对方式:
|
|
|
|
|
<span>{{ row.lstShipOrderCompareMode ? row.lstShipOrderCompareMode == 'MANUAL' ? '手动': '自动' : '' }}</span>
|
|
|
|
|
<span>{{ row.lstShipOrderCompareMode ? row.lstShipOrderCompareMode == 'MANUAL' ? '手动' : '自动' : ''
|
|
|
|
|
}}</span>
|
|
|
|
|
<span>-{{ row.lstShipOrderCompareRltName }}</span>
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
@ -361,7 +385,12 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a-popover>
|
|
|
|
|
<a-icon v-if="row.lstDraftCompareRlt" title="查看比对结果" class="TablelstShipOrderCompareRltRedo" @click="handleFormatContrast(row)" type="diff" />
|
|
|
|
|
<a-icon
|
|
|
|
|
v-if="row.lstDraftCompareRlt"
|
|
|
|
|
title="查看比对结果"
|
|
|
|
|
class="TablelstShipOrderCompareRltRedo"
|
|
|
|
|
@click="handleFormatContrast(row)"
|
|
|
|
|
type="diff" />
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template #goodsStatusList="{ row }">
|
|
|
|
@ -608,8 +637,11 @@
|
|
|
|
|
</template>
|
|
|
|
|
<div style="display: flex;">
|
|
|
|
|
<div style="width:55%">
|
|
|
|
|
<div >
|
|
|
|
|
<div v-if="formatSheet.total>0" style="display: flex;justify-content: space-between;" class="TaskShippingOrderCompareP">
|
|
|
|
|
<div>
|
|
|
|
|
<div
|
|
|
|
|
v-if="formatSheet.total > 0"
|
|
|
|
|
style="display: flex;justify-content: space-between;"
|
|
|
|
|
class="TaskShippingOrderCompareP">
|
|
|
|
|
<div>
|
|
|
|
|
{{ formatSheet.compareTime }}
|
|
|
|
|
<span v-if="formatSheet.isExistsDiff">
|
|
|
|
@ -619,19 +651,27 @@
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div>显示全部
|
|
|
|
|
<a-switch :checked="formatFlag" @change="formatFlag=!formatFlag" /></div>
|
|
|
|
|
<a-switch :checked="formatFlag" @change="formatFlag = !formatFlag" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div style="display: flex;align-items: flex-start;" v-else >
|
|
|
|
|
<a-icon style="color: rgb(82,196,26);font-size: 50px;margin-top: 5px;" type="check-circle" theme="filled" />
|
|
|
|
|
<div style="display: flex;align-items: flex-start;" v-else>
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(82,196,26);font-size: 50px;margin-top: 5px;"
|
|
|
|
|
type="check-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
<div style="margin-left: 20px;">
|
|
|
|
|
<div style="font-weight: bold;font-size: 22px;">格式单比对(正常)</div>
|
|
|
|
|
<div style="font-weight: bold;">提单号:{{ formatSheet.mBlNo }}</div>
|
|
|
|
|
<div style="font-weight: bold;">{{ formatSheet.compareTime }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div style="margin:5px 0px 0px 40px">显示全部
|
|
|
|
|
<a-switch :checked="formatFlag" @change="formatFlag=!formatFlag" /></div>
|
|
|
|
|
<a-switch :checked="formatFlag" @change="formatFlag = !formatFlag" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="!formatFlag && formatSheet.total>0" class="TaskShippingOrderCompareMainBox" style="height: 600px;">
|
|
|
|
|
<div
|
|
|
|
|
v-if="!formatFlag && formatSheet.total > 0"
|
|
|
|
|
class="TaskShippingOrderCompareMainBox"
|
|
|
|
|
style="height: 600px;">
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
<div class="TaskShippingOrderCompareMainHeader">
|
|
|
|
|
<div>
|
|
|
|
@ -646,7 +686,10 @@
|
|
|
|
|
style="display: flex;margin-top: 15px;"
|
|
|
|
|
v-show="item.pCode != 'ContaList' && item.isDiff">
|
|
|
|
|
<p style="padding-top: 4px;" v-if="item.msg">
|
|
|
|
|
<a-icon style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;" type="close-circle" theme="filled" />
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;"
|
|
|
|
|
type="close-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
</p>
|
|
|
|
|
<p v-if="item.isDiff" style="width: 90px;margin-right: 20px;">{{ item.fieldName }}:</p>
|
|
|
|
|
<div v-if="item.isDiff" style="width:60%">
|
|
|
|
@ -673,12 +716,14 @@
|
|
|
|
|
<div
|
|
|
|
|
v-for="(item, index) in formatSheet.showDetailList"
|
|
|
|
|
:key="index"
|
|
|
|
|
v-show="(item.pCode == 'ContaList' && item.isDiff) || item.fieldName=='箱号'"
|
|
|
|
|
style="display: flex;margin-top: 15px;align-items: flex-start;"
|
|
|
|
|
>
|
|
|
|
|
<div v-if="item.fieldName=='箱号' && formatSheet.isShowCntall">箱号:{{ item.primaryKey }}</div>
|
|
|
|
|
v-show="(item.pCode == 'ContaList' && item.isDiff) || item.fieldName == '箱号'"
|
|
|
|
|
style="display: flex;margin-top: 15px;align-items: flex-start;">
|
|
|
|
|
<div v-if="item.fieldName == '箱号' && formatSheet.isShowCntall">箱号:{{ item.primaryKey }}</div>
|
|
|
|
|
<p style="padding-top: 4px;" v-if="item.msg && item.isDiff">
|
|
|
|
|
<a-icon style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;" type="close-circle" theme="filled" />
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;"
|
|
|
|
|
type="close-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
</p>
|
|
|
|
|
<p v-if="item.isDiff" style="width: 90px;margin-right: 20px;">{{ item.fieldName }}:</p>
|
|
|
|
|
<div v-if="item.isDiff" style="width:60%">
|
|
|
|
@ -696,7 +741,7 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="!formatFlag && formatSheet.total==0"></div>
|
|
|
|
|
<div v-if="!formatFlag && formatSheet.total == 0"></div>
|
|
|
|
|
<div v-if="formatFlag" class="TaskShippingOrderCompareMainBox" style="height: 600px;">
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
<div class="TaskShippingOrderCompareMainHeader">
|
|
|
|
@ -712,10 +757,16 @@
|
|
|
|
|
style="display: flex;margin-top: 15px;"
|
|
|
|
|
v-show="item.pCode != 'ContaList'">
|
|
|
|
|
<p style="padding-top: 4px;" v-if="item.msg">
|
|
|
|
|
<a-icon style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;" type="close-circle" theme="filled" />
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;"
|
|
|
|
|
type="close-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
</p>
|
|
|
|
|
<p style="padding-top: 4px;" v-else>
|
|
|
|
|
<a-icon style="color: rgb(0,153,68);font-size: 18px;margin-right: 35px;" type="check-circle" theme="filled" />
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(0,153,68);font-size: 18px;margin-right: 35px;"
|
|
|
|
|
type="check-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
</p>
|
|
|
|
|
<p style="width: 90px;margin-right: 20px;">{{ item.fieldName }}:</p>
|
|
|
|
|
<div style="width:60%">
|
|
|
|
@ -745,15 +796,20 @@
|
|
|
|
|
v-for="(item, index) in formatSheet.showDetailList"
|
|
|
|
|
:key="index"
|
|
|
|
|
v-show="item.pCode == 'ContaList'"
|
|
|
|
|
style="display: flex;margin-top: 15px;align-items: flex-start;"
|
|
|
|
|
>
|
|
|
|
|
<div v-if="item.fieldName=='箱号'">箱号:{{ item.primaryKey }}</div>
|
|
|
|
|
style="display: flex;margin-top: 15px;align-items: flex-start;">
|
|
|
|
|
<div v-if="item.fieldName == '箱号'">箱号:{{ item.primaryKey }}</div>
|
|
|
|
|
<div style="display: flex;align-items: flex-start;" v-else>
|
|
|
|
|
<p style="padding-top: 4px;" v-if="item.msg">
|
|
|
|
|
<a-icon style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;" type="close-circle" theme="filled" />
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(194,5,5);font-size: 18px;margin-right: 35px;"
|
|
|
|
|
type="close-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
</p>
|
|
|
|
|
<p style="padding-top: 4px;" v-else>
|
|
|
|
|
<a-icon style="color: rgb(0,153,68);font-size: 18px;margin-right: 35px;" type="check-circle" theme="filled" />
|
|
|
|
|
<a-icon
|
|
|
|
|
style="color: rgb(0,153,68);font-size: 18px;margin-right: 35px;"
|
|
|
|
|
type="check-circle"
|
|
|
|
|
theme="filled" />
|
|
|
|
|
</p>
|
|
|
|
|
<p style="width: 90px;margin-right: 20px;flex-shrink:0">{{ item.fieldName }}:</p>
|
|
|
|
|
<div style="width:60%">
|
|
|
|
@ -1149,7 +1205,9 @@ import {
|
|
|
|
|
GetDraftCompareResultInfo,
|
|
|
|
|
BookingOrderDownload,
|
|
|
|
|
GetShippingOrderCompareResult,
|
|
|
|
|
GetWebData
|
|
|
|
|
GetWebData,
|
|
|
|
|
CancelServiceStatusByList,
|
|
|
|
|
SaveServiceStatusByList
|
|
|
|
|
} from '@/api/modular/main/BookingLedger'
|
|
|
|
|
|
|
|
|
|
import initData from './modules/initData'
|
|
|
|
@ -1421,12 +1479,12 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
if (item.bsstatusname) {
|
|
|
|
|
if (this.statusDIct) {
|
|
|
|
|
this.statusDIct.forEach(ite => {
|
|
|
|
|
if (ite.name == item.bsstatusname) {
|
|
|
|
|
item.bsstatusnameColor = ite.remark
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
this.statusDIct.forEach(ite => {
|
|
|
|
|
if (ite.name == item.bsstatusname) {
|
|
|
|
|
item.bsstatusnameColor = ite.remark
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
item.bookstatus = bookstatus
|
|
|
|
|
item.refshYzitemLoad = false
|
|
|
|
@ -1442,9 +1500,10 @@ export default {
|
|
|
|
|
item.rowCustno = false
|
|
|
|
|
item.rowDzMark = false
|
|
|
|
|
item.atdLoading = false
|
|
|
|
|
item.serviceLoad = false
|
|
|
|
|
if (!item.shenQingXiangShi) {
|
|
|
|
|
item.shenQingXiangShi = ''
|
|
|
|
|
}
|
|
|
|
|
item.shenQingXiangShi = ''
|
|
|
|
|
}
|
|
|
|
|
let hasGoods = 0
|
|
|
|
|
item.goodsStatusList.map((gitem, gindex) => {
|
|
|
|
|
if (gitem.finishTime || gitem.remark) {
|
|
|
|
@ -1513,6 +1572,46 @@ export default {
|
|
|
|
|
handleImportBcMore() {
|
|
|
|
|
this.$refs.importBcMore.open()
|
|
|
|
|
},
|
|
|
|
|
handleSaveService(row) {
|
|
|
|
|
const data = {
|
|
|
|
|
bookingId: row.id,
|
|
|
|
|
statusCodes: [{ 'statusCode': 'YFD' }]
|
|
|
|
|
}
|
|
|
|
|
row.serviceLoad = true
|
|
|
|
|
SaveServiceStatusByList(data).then(res => {
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
this.$message.success(res.data.msg)
|
|
|
|
|
PageDataByBooking({ id: row.id }).then(ress => {
|
|
|
|
|
const itme = ress.data.items[0]
|
|
|
|
|
row.bsstatusname = itme.bsstatusname
|
|
|
|
|
row.serviceLoad = false
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
|
row.serviceLoad = false
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
handleCancelService(row) {
|
|
|
|
|
const data = {
|
|
|
|
|
bookingId: row.id,
|
|
|
|
|
statusCodes: [{ 'statusCode': 'YFD' }]
|
|
|
|
|
}
|
|
|
|
|
row.serviceLoad = true
|
|
|
|
|
CancelServiceStatusByList(data).then(res => {
|
|
|
|
|
if (res.code === 200) {
|
|
|
|
|
this.$message.success(res.data.msg)
|
|
|
|
|
PageDataByBooking({ id: row.id }).then(ress => {
|
|
|
|
|
const itme = ress.data.items[0]
|
|
|
|
|
row.bsstatusname = itme.bsstatusname
|
|
|
|
|
row.serviceLoad = false
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
|
row.serviceLoad = false
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
onresize() {
|
|
|
|
|
window.onresize = () => {
|
|
|
|
|
this.screenWidth = document.body.clientWidth
|
|
|
|
@ -1984,24 +2083,24 @@ export default {
|
|
|
|
|
this.spinning = true
|
|
|
|
|
GetShippingOrderCompareResult({ bookingId: row.id }).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
if (!res.data.succ) {
|
|
|
|
|
if (!res.data.succ) {
|
|
|
|
|
this.spinning = false
|
|
|
|
|
this.$message.success(res.data.msg)
|
|
|
|
|
} else {
|
|
|
|
|
if (res.data.extra) {
|
|
|
|
|
this.TaskShippingOrderCompareData = res.data.extra
|
|
|
|
|
this.TaskShippingOrderCompareData.total = res.data.total
|
|
|
|
|
this.TaskShippingOrderCompareVisible = true
|
|
|
|
|
this.spinning = false
|
|
|
|
|
this.$message.success(res.data.msg)
|
|
|
|
|
} else {
|
|
|
|
|
if (res.data.extra) {
|
|
|
|
|
this.TaskShippingOrderCompareData = res.data.extra
|
|
|
|
|
this.TaskShippingOrderCompareData.total = res.data.total
|
|
|
|
|
this.TaskShippingOrderCompareVisible = true
|
|
|
|
|
this.spinning = false
|
|
|
|
|
} else {
|
|
|
|
|
this.$message.success(res.data.msg)
|
|
|
|
|
this.spinning = false
|
|
|
|
|
}
|
|
|
|
|
this.$message.success(res.data.msg)
|
|
|
|
|
this.spinning = false
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.spinning = false
|
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.spinning = false
|
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
customSortMethod() { },
|
|
|
|
@ -2456,18 +2555,19 @@ export default {
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (item.bsstatusname) {
|
|
|
|
|
if (this.statusDIct) {
|
|
|
|
|
this.statusDIct.forEach(ite => {
|
|
|
|
|
if (ite.name == item.bsstatusname) {
|
|
|
|
|
item.bsstatusnameColor = ite.remark
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (this.statusDIct) {
|
|
|
|
|
this.statusDIct.forEach(ite => {
|
|
|
|
|
if (ite.name == item.bsstatusname) {
|
|
|
|
|
item.bsstatusnameColor = ite.remark
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
item.bookstatus = bookstatus
|
|
|
|
|
item.refshYzitemLoad = false
|
|
|
|
|
item.webDataLoad = false
|
|
|
|
|
item.atdLoading = false
|
|
|
|
|
item.serviceLoad = false
|
|
|
|
|
item.rowDzMark = false
|
|
|
|
|
item.rowCzMark = false
|
|
|
|
|
item.rowCustno = false
|
|
|
|
@ -3945,9 +4045,11 @@ export default {
|
|
|
|
|
font-size: 100px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/deep/ .padUrl .ant-spin-container{
|
|
|
|
|
|
|
|
|
|
/deep/ .padUrl .ant-spin-container {
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/deep/ .content-table .vxe-body--column .vxe-cell div {
|
|
|
|
|
color: #000;
|
|
|
|
|
}
|
|
|
|
@ -3969,6 +4071,7 @@ export default {
|
|
|
|
|
border-bottom: 1px solid #000;
|
|
|
|
|
padding: 5px;
|
|
|
|
|
background: #0000000e;
|
|
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareSpan {
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
color: red;
|
|
|
|
|