|
|
@ -0,0 +1,581 @@
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<a-modal :title="formatSheet.isExistsDiff ? '格式单比对(有差异)' : '格式单比对(正常)'" @cancel="formatSheetVisible = false"
|
|
|
|
|
|
|
|
:visible="formatSheetVisible" class="formatSheetModal" width="90%">
|
|
|
|
|
|
|
|
<template slot="footer">
|
|
|
|
|
|
|
|
<a-button key="back" @click="formatSheetVisible = false"> 关闭 </a-button>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<a-spin :spinning="spinning">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<div style="margin:10px 0" v-if="formatSheet.manualFeedBackResult">
|
|
|
|
|
|
|
|
{{ formatSheet.manualFeedBackResult.operTime }}
|
|
|
|
|
|
|
|
【人工修正】 {{ formatSheet.manualFeedBackResult.operUser }},
|
|
|
|
|
|
|
|
【原因】{{ formatSheet.manualFeedBackResult.reason }},
|
|
|
|
|
|
|
|
【备注】 {{ formatSheet.manualFeedBackResult.operNote }}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
{{ formatSheet.compareTime }}
|
|
|
|
|
|
|
|
<span v-if="formatSheet.isExistsDiff">
|
|
|
|
|
|
|
|
比对异常 合计
|
|
|
|
|
|
|
|
<span class="TaskShippingOrderCompareSpan">{{ formatSheet.total }}</span>
|
|
|
|
|
|
|
|
条
|
|
|
|
|
|
|
|
<a v-if="formatSheet.lstDraftCompareRlt === 'DIFF'" href="javascript:;"
|
|
|
|
|
|
|
|
@click="openPersonal('DRAFT')">人工处理</a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
显示全部
|
|
|
|
|
|
|
|
<a-switch :checked="formatFlag" @change="formatFlag = !formatFlag" />
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div style="display: flex; align-items: flex-start" v-else>
|
|
|
|
|
|
|
|
<CheckCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(82, 196, 26); font-size: 50px; margin-top: 5px">
|
|
|
|
|
|
|
|
</CheckCircleFilled>
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-if="!formatFlag && formatSheet.total > 0" class="TaskShippingOrderCompareMainBox"
|
|
|
|
|
|
|
|
style="height: 600px">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMainHeader">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>提单号</p>
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
|
|
|
style="width: 100%; height: 1px; border-bottom: 1px dashed; margin: 5px 0">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>{{ formatSheet.mBlNo }}</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-for="(item, index) in formatSheet.showDetailList" :key="index"
|
|
|
|
|
|
|
|
style="display: flex; margin-top: 15px"
|
|
|
|
|
|
|
|
v-show="item.pCode != 'ContaList' && item.isDiff">
|
|
|
|
|
|
|
|
<p style="" v-if="item.msg">
|
|
|
|
|
|
|
|
<CloseCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(194, 5, 5); font-size: 18px; margin-right: 35px">
|
|
|
|
|
|
|
|
</CloseCircleFilled>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p v-if="item.isDiff" style="width: 90px; margin-right: 20px">{{
|
|
|
|
|
|
|
|
item.fieldName
|
|
|
|
|
|
|
|
}}:
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<div v-if="item.isDiff" style="width: 60%">
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(0, 153, 204)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">本地</span>
|
|
|
|
|
|
|
|
<div style="margin-bottom: 15px">{{ item.reqVal }}</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(100, 163, 90)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">格式单</span>
|
|
|
|
|
|
|
|
<div v-html="item.mergeHtml"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>箱信息</p>
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
|
|
|
style="width: 100%; height: 1px; border-bottom: 1px dashed; margin: 5px 0">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
<p style="" v-if="item.msg && item.isDiff && item.fieldName != '箱号'">
|
|
|
|
|
|
|
|
<CloseCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(194, 5, 5); font-size: 18px; margin-right: 35px">
|
|
|
|
|
|
|
|
</CloseCircleFilled>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p v-if="item.isDiff && item.fieldName != '箱号'"
|
|
|
|
|
|
|
|
style="width: 90px; margin-right: 20px">
|
|
|
|
|
|
|
|
{{ item.fieldName }}:
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<div v-if="item.isDiff && item.fieldName != '箱号'" style="width: 60%">
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(0, 153, 204)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">本地</span>
|
|
|
|
|
|
|
|
<div style="margin-bottom: 15px">{{ item.reqVal }}</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(100, 163, 90)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">格式单</span>
|
|
|
|
|
|
|
|
<div v-html="item.mergeHtml"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-if="!formatFlag && formatSheet.total == 0"></div>
|
|
|
|
|
|
|
|
<div v-if="formatFlag" class="TaskShippingOrderCompareMainBox" style="height: 600px">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMainHeader">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>提单号</p>
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
|
|
|
style="width: 100%; height: 1px; border-bottom: 1px dashed; margin: 5px 0">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>{{ formatSheet.mBlNo }}</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-for="(item, index) in formatSheet.showDetailList" :key="index"
|
|
|
|
|
|
|
|
style="display: flex; margin-top: 15px" v-show="item.pCode != 'ContaList'">
|
|
|
|
|
|
|
|
<p style="" v-if="item.msg">
|
|
|
|
|
|
|
|
<CloseCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(194, 5, 5); font-size: 18px; margin-right: 35px">
|
|
|
|
|
|
|
|
</CloseCircleFilled>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p style="" v-else>
|
|
|
|
|
|
|
|
<CheckCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(0, 153, 68); font-size: 18px; margin-right: 35px">
|
|
|
|
|
|
|
|
</CheckCircleFilled>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p style="width: 90px; margin-right: 20px">{{ item.fieldName }}:</p>
|
|
|
|
|
|
|
|
<div style="width: 60%">
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(0, 153, 204)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">本地</span>
|
|
|
|
|
|
|
|
<div style="margin-bottom: 15px">{{ item.reqVal }}</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(100, 163, 90)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">格式单</span>
|
|
|
|
|
|
|
|
<div v-if="item.isDiff" v-html="item.mergeHtml"></div>
|
|
|
|
|
|
|
|
<div v-else v-html="item.targetVal"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>箱信息</p>
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
|
|
|
style="width: 100%; height: 1px; border-bottom: 1px dashed; margin: 5px 0">
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-for="(item, index) in formatSheet.showDetailList" :key="index"
|
|
|
|
|
|
|
|
v-show="item.pCode == 'ContaList'"
|
|
|
|
|
|
|
|
:style="{ marginTop: (item.pCode == 'ContaList' ? '15x' : '0px') }"
|
|
|
|
|
|
|
|
style="display: flex; align-items: flex-start">
|
|
|
|
|
|
|
|
<div v-if="item.fieldName == '箱号'">箱号:{{ item.primaryKey }}</div>
|
|
|
|
|
|
|
|
<div style="display: flex; align-items: flex-start" v-else>
|
|
|
|
|
|
|
|
<p style="" v-if="item.msg">
|
|
|
|
|
|
|
|
<CloseCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(194, 5, 5); font-size: 18px; margin-right: 35px">
|
|
|
|
|
|
|
|
</CloseCircleFilled>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p style="" v-else>
|
|
|
|
|
|
|
|
<CheckCircleFilled
|
|
|
|
|
|
|
|
style="color: rgb(0, 153, 68); font-size: 18px; margin-right: 35px">
|
|
|
|
|
|
|
|
</CheckCircleFilled>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p style="width: 90px; margin-right: 20px; flex-shrink: 0">{{
|
|
|
|
|
|
|
|
item.fieldName
|
|
|
|
|
|
|
|
}}:
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<div style="width: 60%">
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(0, 153, 204)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">本地</span>
|
|
|
|
|
|
|
|
<div style="margin-bottom: 15px">{{ item.reqVal }}</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
|
|
<RightCircleOutlined
|
|
|
|
|
|
|
|
style="margin-top: 4px; margin-right: 5px; color: rgb(100, 163, 90)" />
|
|
|
|
|
|
|
|
<span
|
|
|
|
|
|
|
|
style="margin-right: 10px; font-weight: bold; width: 42px; flex-shrink: 0">格式单</span>
|
|
|
|
|
|
|
|
<div v-if="item.isDiff" v-html="item.mergeHtml"></div>
|
|
|
|
|
|
|
|
<div v-else v-html="item.targetVal"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<a-spin class="padUrl" style="width: 100%; min-height: 600px" :spinning="pdfLoading">
|
|
|
|
|
|
|
|
<iframe style="width: 100%; height: 100%" :src="pdfUrl" frameborder="0"></iframe>
|
|
|
|
|
|
|
|
</a-spin>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-spin>
|
|
|
|
|
|
|
|
</a-modal>
|
|
|
|
|
|
|
|
<a-modal :title="TaskShippingOrderCompareData.isExistsDiff ? '下货纸比对(有差异)' : '下货纸比对(正常)'"
|
|
|
|
|
|
|
|
@cancel="TaskShippingOrderCompareVisible = false" :visible="TaskShippingOrderCompareVisible"
|
|
|
|
|
|
|
|
class="formatSheetModal" width="40%">
|
|
|
|
|
|
|
|
<template slot="footer">
|
|
|
|
|
|
|
|
<a-button key="back" @click="TaskShippingOrderCompareVisible = false"> 关闭 </a-button>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<a-spin :spinning="spinning">
|
|
|
|
|
|
|
|
<div style="margin:10px 0;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;"
|
|
|
|
|
|
|
|
:title="TaskShippingOrderCompareData.manualFeedBackResult.operNote"
|
|
|
|
|
|
|
|
v-if="TaskShippingOrderCompareData.manualFeedBackResult">
|
|
|
|
|
|
|
|
{{ TaskShippingOrderCompareData.manualFeedBackResult.operTime }}
|
|
|
|
|
|
|
|
【人工修正】 {{ TaskShippingOrderCompareData.manualFeedBackResult.operUser }},
|
|
|
|
|
|
|
|
【原因】{{ TaskShippingOrderCompareData.manualFeedBackResult.reason }},
|
|
|
|
|
|
|
|
【备注】 {{ TaskShippingOrderCompareData.manualFeedBackResult.operNote }}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p class="TaskShippingOrderCompareP">
|
|
|
|
|
|
|
|
{{ TaskShippingOrderCompareData.compareTime }}
|
|
|
|
|
|
|
|
<span v-if="TaskShippingOrderCompareData.isExistsDiff">
|
|
|
|
|
|
|
|
比对异常 合计
|
|
|
|
|
|
|
|
<span class="TaskShippingOrderCompareSpan">{{ TaskShippingOrderCompareData.total }}</span>
|
|
|
|
|
|
|
|
条
|
|
|
|
|
|
|
|
<a v-if="TaskShippingOrderCompareData.lstShipOrderCompareRlt != 'NO_DIFF'" href="javascript:;"
|
|
|
|
|
|
|
|
@click="openPersonal('SHIPORDER')">人工处理</a>
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMainBox">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMainHeader">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>提单号:(本地数据)</p>
|
|
|
|
|
|
|
|
<p>--------------------------</p>
|
|
|
|
|
|
|
|
<p>{{ TaskShippingOrderCompareData.mBlNo }}</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div></div>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>提单号:(场站数据)</p>
|
|
|
|
|
|
|
|
<p>--------------------------</p>
|
|
|
|
|
|
|
|
<p>{{ TaskShippingOrderCompareData.mBlNo }}</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMainList"
|
|
|
|
|
|
|
|
v-for="(item, index) in TaskShippingOrderCompareData.showDetailList" :key="index"
|
|
|
|
|
|
|
|
v-show="item.pCode != 'ContaList'">
|
|
|
|
|
|
|
|
<p>{{ item.fieldName }}:</p>
|
|
|
|
|
|
|
|
<p>{{ item.reqVal }}</p>
|
|
|
|
|
|
|
|
<p v-if="item.msg">
|
|
|
|
|
|
|
|
<CloseOutlined :style="{ color: 'red' }" />
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p v-else>
|
|
|
|
|
|
|
|
<CheckOutlined :style="{ color: 'green' }" />
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>{{ item.fieldName }}:</p>
|
|
|
|
|
|
|
|
<p v-if="!item.isDiff">{{ item.targetVal }}</p>
|
|
|
|
|
|
|
|
<p v-else v-html="item.mergeHtml"></p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMain">
|
|
|
|
|
|
|
|
<div class="TaskShippingOrderCompareMainHeader Box">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>箱信息:(本地数据)</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div></div>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
<p>箱信息:(场站数据)</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div v-for="(item, index) in TaskShippingOrderCompareData.showDetailList" :key="index"
|
|
|
|
|
|
|
|
v-show="item.pCode == 'ContaList'" :class="item.fieldName == '箱号' ? 'TaskShippingOrderCompareMainList BoxNo' : 'TaskShippingOrderCompareMainList'
|
|
|
|
|
|
|
|
">
|
|
|
|
|
|
|
|
<p>{{ item.fieldName }}:</p>
|
|
|
|
|
|
|
|
<p>{{ item.reqVal }}</p>
|
|
|
|
|
|
|
|
<p v-if="item.msg">
|
|
|
|
|
|
|
|
<CloseOutlined :style="{ color: 'red' }" />
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p v-else>
|
|
|
|
|
|
|
|
<CheckOutlined :style="{ color: 'green' }" />
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>{{ item.fieldName }}:</p>
|
|
|
|
|
|
|
|
<p v-if="!item.isDiff">{{ item.targetVal }}</p>
|
|
|
|
|
|
|
|
<p v-else v-html="item.mergeHtml"></p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-spin>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</a-modal>
|
|
|
|
|
|
|
|
<a-modal :title="formatTitle" width="900px" :visible="personalFlag" :zIndex="1100" @ok="handleSubPer"
|
|
|
|
|
|
|
|
@cancel="personalFlag = false">
|
|
|
|
|
|
|
|
<div style="margin-top: 20px">修正说明</div>
|
|
|
|
|
|
|
|
<a-textarea v-model:value="personal.notes" :auto-size="{ minRows: 4, maxRows: 8 }" />
|
|
|
|
|
|
|
|
<div style="display: flex; align-items: center; margin-top: 20px">
|
|
|
|
|
|
|
|
原因
|
|
|
|
|
|
|
|
<div style="margin-left: 20px">
|
|
|
|
|
|
|
|
<a-checkbox v-model:checked="personal.isOCRError">识别有问题</a-checkbox>
|
|
|
|
|
|
|
|
<a-checkbox v-model:checked="personal.isEditError">订舱录入有问题</a-checkbox>
|
|
|
|
|
|
|
|
<a-checkbox v-model:checked="personal.isAgentError">代理录入有问题</a-checkbox>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-modal>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
|
|
|
import { ref, emit, watch, defineExpose } from 'vue'
|
|
|
|
|
|
|
|
import { GetDraftCompareResultInfo, GetShippingOrderCompareResult, DownloadFileByBC, SaveDraftComparellanual, ExcuteShippingOrderCompareBatch } from './api'
|
|
|
|
|
|
|
|
import { RightCircleOutlined, CheckCircleFilled, CloseCircleFilled, CloseOutlined, CheckOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
|
|
|
import { useMessage } from '../../hooks/web/useMessage'
|
|
|
|
|
|
|
|
const { createMessage } = useMessage()
|
|
|
|
|
|
|
|
const TaskShippingOrderCompareVisible = ref(false)
|
|
|
|
|
|
|
|
const TaskShippingOrderCompareData = ref({}) as any
|
|
|
|
|
|
|
|
const formatSheetVisible = ref(false)
|
|
|
|
|
|
|
|
const formatSheet = ref({}) as any
|
|
|
|
|
|
|
|
const formatPdf = ref('')
|
|
|
|
|
|
|
|
const pdfLoading = ref(false)
|
|
|
|
|
|
|
|
const formatFlag = ref(false)
|
|
|
|
|
|
|
|
const spinning = ref(false)
|
|
|
|
|
|
|
|
const formatTitle = ref('')
|
|
|
|
|
|
|
|
const personalFlag = ref(false)
|
|
|
|
|
|
|
|
const personal = ref({}) as any
|
|
|
|
|
|
|
|
const formatType = ref('')
|
|
|
|
|
|
|
|
function openPersonal(type) {
|
|
|
|
|
|
|
|
personalFlag.value = true
|
|
|
|
|
|
|
|
personal.value = {}
|
|
|
|
|
|
|
|
if (type === 'DRAFT') {
|
|
|
|
|
|
|
|
formatTitle.value = '格式单比对-人工处理'
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
formatTitle.value = '下货纸比对-人工处理'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
formatType.value = type
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function handleSubPer() {
|
|
|
|
|
|
|
|
const data = {
|
|
|
|
|
|
|
|
bookingId: formatSheet.value.origPKId || TaskShippingOrderCompareData.value.origPKId,
|
|
|
|
|
|
|
|
mblNo: formatSheet.value.mBlNo || TaskShippingOrderCompareData.value.mBlNo,
|
|
|
|
|
|
|
|
taskCompareId: formatSheet.value.taskCompareId || TaskShippingOrderCompareData.value.taskCompareId,
|
|
|
|
|
|
|
|
compareType: formatType.value,
|
|
|
|
|
|
|
|
compareTime: personal.value.compareTime,
|
|
|
|
|
|
|
|
isOCRError: personal.value.isOCRError ? 1 : 0,
|
|
|
|
|
|
|
|
isEditError: personal.value.isEditError ? 1 : 0,
|
|
|
|
|
|
|
|
isAgentError: personal.value.isAgentError ? 1 : 0,
|
|
|
|
|
|
|
|
notes: personal.value.notes
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
SaveDraftComparellanual(data).then(res => {
|
|
|
|
|
|
|
|
if (res.success) {
|
|
|
|
|
|
|
|
createMessage.success('操作成功')
|
|
|
|
|
|
|
|
formatSheetVisible.value = false
|
|
|
|
|
|
|
|
TaskShippingOrderCompareVisible.value = false
|
|
|
|
|
|
|
|
personal.valueFlag = false
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const pdfUrl = ref('')
|
|
|
|
|
|
|
|
function initLstDraft(row) {
|
|
|
|
|
|
|
|
spinning.value = true
|
|
|
|
|
|
|
|
pdfUrl.value = ''
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value = {}
|
|
|
|
|
|
|
|
GetDraftCompareResultInfo({ bookingid: row.id }).then((res) => {
|
|
|
|
|
|
|
|
if (!res.succ) {
|
|
|
|
|
|
|
|
spinning.value = false
|
|
|
|
|
|
|
|
createMessage.success(res.msg)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (res.extra) {
|
|
|
|
|
|
|
|
formatSheet.value = res.extra
|
|
|
|
|
|
|
|
formatSheet.value.lstDraftCompareRlt = row.lstDraftCompareRlt
|
|
|
|
|
|
|
|
formatSheet.value.total = res.total
|
|
|
|
|
|
|
|
formatSheetVisible.value = true
|
|
|
|
|
|
|
|
const arr = [] as any
|
|
|
|
|
|
|
|
formatSheet.value.showDetailList.forEach((item) => {
|
|
|
|
|
|
|
|
if (item.pCode === 'ContaList' && item.isDiff) {
|
|
|
|
|
|
|
|
arr.push(1)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
if (arr.length == 0) {
|
|
|
|
|
|
|
|
formatSheet.value.isShowCntall = false
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
formatSheet.value.isShowCntall = true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
createMessage.success(res.msg)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
spinning.value = false
|
|
|
|
|
|
|
|
if (res.extra3) {
|
|
|
|
|
|
|
|
pdfLoading.value = true
|
|
|
|
|
|
|
|
const data = {
|
|
|
|
|
|
|
|
taskId: res.extra3,
|
|
|
|
|
|
|
|
fileCategory: 'draft'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
DownloadFileByBC(data).then(res => {
|
|
|
|
|
|
|
|
if (res.type === 'application/json') {
|
|
|
|
|
|
|
|
const reader = new FileReader() as any
|
|
|
|
|
|
|
|
reader.readAsText(res, 'utf-8')
|
|
|
|
|
|
|
|
reader.onload = () => {
|
|
|
|
|
|
|
|
const _res = JSON.parse(reader.result)
|
|
|
|
|
|
|
|
createMessage.error(_res.message)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
var contentDisposition = res.headers['content-disposition']
|
|
|
|
|
|
|
|
var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
|
|
|
|
|
|
|
|
var result = patt.exec(contentDisposition) as any
|
|
|
|
|
|
|
|
console.log(patt, result, contentDisposition, res)
|
|
|
|
|
|
|
|
var filename = result[1]
|
|
|
|
|
|
|
|
var reg = /^["](.*)["]$/g
|
|
|
|
|
|
|
|
if (res.data.size > 150) {
|
|
|
|
|
|
|
|
pdfUrl.value = window.URL.createObjectURL(new Blob([res.data], { type: 'application/pdf;charset=utf-8' }))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pdfLoading.value = false
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function initTask(row) {
|
|
|
|
|
|
|
|
TaskShippingOrderCompareVisible.value = true
|
|
|
|
|
|
|
|
spinning.value = true
|
|
|
|
|
|
|
|
GetShippingOrderCompareResult({ bookingId: row.id }).then((res) => {
|
|
|
|
|
|
|
|
if (!res.succ) {
|
|
|
|
|
|
|
|
spinning.value = false
|
|
|
|
|
|
|
|
createMessage.error(res.msg)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (res.extra) {
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value = res.extra
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value.total = res.total
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value.lstShipOrderCompareRlt = row.lstShipOrderCompareRlt
|
|
|
|
|
|
|
|
spinning.value = false
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
createMessage.success(res.msg)
|
|
|
|
|
|
|
|
spinning.value = false
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const emit = defineEmits(['setLoad', 'handleSuccess'])
|
|
|
|
|
|
|
|
function reload(row) {
|
|
|
|
|
|
|
|
emit('setLoad')
|
|
|
|
|
|
|
|
ExcuteShippingOrderCompareBatch([row.id])
|
|
|
|
|
|
|
|
.then((res) => {
|
|
|
|
|
|
|
|
if (!res.succ) {
|
|
|
|
|
|
|
|
createMessage.success(res.msg)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (res.extra) {
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value = res.extra
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value.total = res.total
|
|
|
|
|
|
|
|
TaskShippingOrderCompareData.value.lstShipOrderCompareRlt = row.lstShipOrderCompareRlt
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
createMessage.success(res.msg)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
emit('handleSuccess')
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
defineExpose({ initLstDraft, initTask, reload })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareP {
|
|
|
|
|
|
|
|
border-bottom: 1px solid #000;
|
|
|
|
|
|
|
|
padding: 5px;
|
|
|
|
|
|
|
|
background: #0000000e;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareSpan {
|
|
|
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
|
|
|
color: red;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareMainBox {
|
|
|
|
|
|
|
|
height: 55vh;
|
|
|
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareMain {
|
|
|
|
|
|
|
|
p {
|
|
|
|
|
|
|
|
margin-bottom: 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareMainHeader {
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>div {
|
|
|
|
|
|
|
|
&:nth-child(1) {
|
|
|
|
|
|
|
|
flex: 3;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(2) {
|
|
|
|
|
|
|
|
width: 46px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(3) {
|
|
|
|
|
|
|
|
flex: 3;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>p {
|
|
|
|
|
|
|
|
&:first-child {
|
|
|
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&.Box {
|
|
|
|
|
|
|
|
border-top: 1px solid #000;
|
|
|
|
|
|
|
|
// border-bottom: 1px solid #000;
|
|
|
|
|
|
|
|
padding: 0.5rem 0 0 0;
|
|
|
|
|
|
|
|
margin-bottom: 0.5rem;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.TaskShippingOrderCompareMainList {
|
|
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
margin-bottom: 0.5rem;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>p {
|
|
|
|
|
|
|
|
flex: 2;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(1) {
|
|
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(3) {
|
|
|
|
|
|
|
|
flex: 0;
|
|
|
|
|
|
|
|
margin: 0 1rem;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(4) {
|
|
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&.BoxNo {
|
|
|
|
|
|
|
|
padding-top: 0.5rem;
|
|
|
|
|
|
|
|
border-top: 1px solid #000;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(1) {
|
|
|
|
|
|
|
|
padding-top: 0;
|
|
|
|
|
|
|
|
border: none;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|