|
|
|
@ -88,60 +88,106 @@
|
|
|
|
|
</span>
|
|
|
|
|
<span v-else> <i class="iconfont icon-lock-openkaisuo"></i> </span>
|
|
|
|
|
</template>
|
|
|
|
|
<!-- 格式单比对 -->
|
|
|
|
|
<template v-if="column.dataIndex == 'lstDraftCompareRlt'">
|
|
|
|
|
<div class="goods-status">
|
|
|
|
|
<a-popover>
|
|
|
|
|
<template slot="content">
|
|
|
|
|
<p>
|
|
|
|
|
比对时间: <span>{{ record.lstDraftCompareDate }}</span>
|
|
|
|
|
</p>
|
|
|
|
|
</template>
|
|
|
|
|
<div>
|
|
|
|
|
<div v-if="record.lstDraftCompareRlt == 'DIFF'">
|
|
|
|
|
<i class="icon-shibai iconfont compareIcon" style="color: red;"></i>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-else-if="record.lstDraftCompareRlt == 'NO DIFF'">
|
|
|
|
|
<i class="icon-chenggong iconfont compareIcon" style="color: green;"></i>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a-popover>
|
|
|
|
|
<i v-if="record.lstDraftCompareRlt" title="查看比对结果" style="margin-left: 10px" @click="handleFormatContrast(record)"
|
|
|
|
|
class="icon-shiyongwendang iconfont compareIcon"></i>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<!-- 下货纸比对 -->
|
|
|
|
|
<template v-if="column.dataIndex == 'lstShipOrderCompareRlt'">
|
|
|
|
|
<div class="goods-status">
|
|
|
|
|
<a-popover>
|
|
|
|
|
<template slot="content">
|
|
|
|
|
<p>
|
|
|
|
|
比对方式:
|
|
|
|
|
<span>{{
|
|
|
|
|
record.lstShipOrderCompareMode
|
|
|
|
|
? record.lstShipOrderCompareMode == 'MANUAL'
|
|
|
|
|
? '手动'
|
|
|
|
|
: '自动'
|
|
|
|
|
: ''
|
|
|
|
|
}}</span>
|
|
|
|
|
<span>-{{ record.lstShipOrderCompareRltName }}</span>
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
比对时间: <span>{{ record.lstShipOrderCompareDate }}</span>
|
|
|
|
|
</p>
|
|
|
|
|
</template>
|
|
|
|
|
<div style="cursor: pointer" @click="handleOpenResult(record)">
|
|
|
|
|
<div v-if="record.lstShipOrderCompareRlt == 'DIFF'">
|
|
|
|
|
<CloseCircleFilled :style="{ color: 'red' }" />
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="record.lstShipOrderCompareRlt == 'NO_DIFF'">
|
|
|
|
|
<CheckCircleFilled :style="{ color: '#54bc25' }" />
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="record.lstShipOrderCompareRlt == 'BEFORE_EQUAL'">
|
|
|
|
|
<CheckCircleFilled :style="{ color: 'rgb(187,37,155)' }" />
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="record.lstShipOrderCompareRlt == 'BEFORE_DIFF'">
|
|
|
|
|
<CloseCircleFilled :style="{ color: 'red' }" />
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="record.lstShipOrderCompareRlt == 'NO_DIFF_U'">
|
|
|
|
|
<CheckCircleFilled :style="{ color: '#54bc25' }" />
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="record.lstShipOrderCompareRlt == 'DIFF_U'">
|
|
|
|
|
<CloseCircleFilled :style="{ color: 'red' }" />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a-popover>
|
|
|
|
|
<RedoOutlined style="margin-left: 10px" @click="excuteShippingOrderCompareBatch(record)"/>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="column.key === 'action'">
|
|
|
|
|
<TableAction
|
|
|
|
|
:actions="[
|
|
|
|
|
{
|
|
|
|
|
icon: 'ant-design:copy-outlined',
|
|
|
|
|
tooltip: '复制',
|
|
|
|
|
onClick: () => {
|
|
|
|
|
copyBooking(record)
|
|
|
|
|
},
|
|
|
|
|
<TableAction :actions="[
|
|
|
|
|
{
|
|
|
|
|
icon: 'ant-design:copy-outlined',
|
|
|
|
|
tooltip: '复制',
|
|
|
|
|
onClick: () => {
|
|
|
|
|
copyBooking(record)
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
icon: 'clarity:note-edit-line',
|
|
|
|
|
tooltip: '编辑',
|
|
|
|
|
onClick: () => {
|
|
|
|
|
handledbclick(record)
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
icon: 'clarity:note-edit-line',
|
|
|
|
|
tooltip: '编辑',
|
|
|
|
|
onClick: () => {
|
|
|
|
|
handledbclick(record)
|
|
|
|
|
},
|
|
|
|
|
]"
|
|
|
|
|
/>
|
|
|
|
|
},
|
|
|
|
|
]" />
|
|
|
|
|
</template>
|
|
|
|
|
</template>
|
|
|
|
|
</BasicTable>
|
|
|
|
|
<!-- 合计 -->
|
|
|
|
|
<div class="static-box">
|
|
|
|
|
<h5 v-if="calcData.length" style="position: absolute; bottom: 68px; left: 22px">合计</h5>
|
|
|
|
|
<a-table
|
|
|
|
|
class="ds-table"
|
|
|
|
|
:columns="calcColumns"
|
|
|
|
|
:data-source="calcData"
|
|
|
|
|
:pagination="false"
|
|
|
|
|
></a-table>
|
|
|
|
|
<a-table class="ds-table" :columns="calcColumns" :data-source="calcData" :pagination="false"></a-table>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 多提单号查询 -->
|
|
|
|
|
<a-modal
|
|
|
|
|
class="ds-modal-small"
|
|
|
|
|
title="多提单号查询"
|
|
|
|
|
:maskClosable="false"
|
|
|
|
|
:width="400"
|
|
|
|
|
:visible="moreNumVisible"
|
|
|
|
|
@ok="moreNumSubmit"
|
|
|
|
|
@cancel="moreNumCancel"
|
|
|
|
|
>
|
|
|
|
|
<a-modal class="ds-modal-small" title="多提单号查询" :maskClosable="false" :width="400" :visible="moreNumVisible"
|
|
|
|
|
@ok="moreNumSubmit" @cancel="moreNumCancel">
|
|
|
|
|
<div>
|
|
|
|
|
<a-textarea v-model:value="moreNumVal" style="height: 200px" />
|
|
|
|
|
</div>
|
|
|
|
|
</a-modal>
|
|
|
|
|
<a-modal
|
|
|
|
|
:title="
|
|
|
|
|
TaskShippingOrderCompareData.isExistsDiff ? '下货纸比对(有差异)' : '下货纸比对(正常)'
|
|
|
|
|
"
|
|
|
|
|
@cancel="TaskShippingOrderCompareHandleCancel"
|
|
|
|
|
:visible="TaskShippingOrderCompareVisible"
|
|
|
|
|
width="40%"
|
|
|
|
|
>
|
|
|
|
|
<a-modal :title="TaskShippingOrderCompareData.isExistsDiff ? '下货纸比对(有差异)' : '下货纸比对(正常)'
|
|
|
|
|
" @cancel="TaskShippingOrderCompareHandleCancel" :visible="TaskShippingOrderCompareVisible" width="40%">
|
|
|
|
|
<template #footer>
|
|
|
|
|
<a-button key="back" @click="TaskShippingOrderCompareHandleCancel"> 关闭 </a-button>
|
|
|
|
|
</template>
|
|
|
|
@ -168,12 +214,9 @@
|
|
|
|
|
<p>{{ TaskShippingOrderCompareData.mBlNo }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div
|
|
|
|
|
class="TaskShippingOrderCompareMainList"
|
|
|
|
|
v-for="(item, index) in TaskShippingOrderCompareData.showDetailList"
|
|
|
|
|
:key="index"
|
|
|
|
|
v-show="item.pCode != 'ContaList'"
|
|
|
|
|
>
|
|
|
|
|
<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>{{ item.fieldName }}:</p>
|
|
|
|
@ -191,16 +234,11 @@
|
|
|
|
|
<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'
|
|
|
|
|
"
|
|
|
|
|
>
|
|
|
|
|
<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>{{ item.fieldName }}:</p>
|
|
|
|
@ -210,351 +248,384 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a-modal>
|
|
|
|
|
<lstDraftCompareRlt @setLoad="setLoadCompare" @handleSuccess="compareSuccess" ref="lstDraftCompareRltRef"></lstDraftCompareRlt>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script lang="ts" setup name="海运出口">
|
|
|
|
|
import TableActionBar from './components/tableActionBar.vue'
|
|
|
|
|
import tableActionBarRight from './components/tableActionBarRight.vue'
|
|
|
|
|
import { onMounted, ref } from 'vue'
|
|
|
|
|
import { BasicTable, useTable, TableAction } from '/@/components/Table'
|
|
|
|
|
import { PageDataByBooking, SeaExportCopy } from './api/BookingLedger.js'
|
|
|
|
|
import { getColumnsByClient } from '/@/views/baseinfo/formcopy/api'
|
|
|
|
|
import { useModal } from '/@/components/Modal'
|
|
|
|
|
import { columns, searchFormSchema, FeeStatus } from './columns'
|
|
|
|
|
import { useGo } from '/@/hooks/web/usePage'
|
|
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
|
|
|
import { formatTableData } from '/@/hooks/web/common'
|
|
|
|
|
import { Field } from '/@/components/Render/interface'
|
|
|
|
|
import { useOptionsStore } from '/@/store/modules/options'
|
|
|
|
|
const optionsStore = useOptionsStore()
|
|
|
|
|
import { usePermissionStore } from '/@/store/modules/permission'
|
|
|
|
|
import { useI18n } from '/@/hooks/web/useI18n'
|
|
|
|
|
const { t } = useI18n()
|
|
|
|
|
import initData from './modules/initData.js'
|
|
|
|
|
import { useRouter } from 'vue-router'
|
|
|
|
|
import { useAppStore } from '/@/store/modules/app'
|
|
|
|
|
// 引入处理入参方法
|
|
|
|
|
import { formatParams } from '/@/hooks/web/common'
|
|
|
|
|
const appStore = useAppStore()
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
const { createMessage } = useMessage()
|
|
|
|
|
const go = useGo()
|
|
|
|
|
// 合计列
|
|
|
|
|
const calcColumns = [
|
|
|
|
|
{
|
|
|
|
|
title: '主票数',
|
|
|
|
|
dataIndex: 'mainCount',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '分票数',
|
|
|
|
|
dataIndex: 'partCount',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '退仓数',
|
|
|
|
|
dataIndex: 'returnCount',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '箱TEU',
|
|
|
|
|
dataIndex: 'teu',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '件数',
|
|
|
|
|
dataIndex: 'pkgs',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '毛重',
|
|
|
|
|
dataIndex: 'kgs',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20GP',
|
|
|
|
|
dataIndex: 'cntr1',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40GP',
|
|
|
|
|
dataIndex: 'cntr2',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40HC',
|
|
|
|
|
dataIndex: 'cntr3',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20OT',
|
|
|
|
|
dataIndex: 'cntr4',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40OT',
|
|
|
|
|
dataIndex: 'cntr5',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20FR',
|
|
|
|
|
dataIndex: 'cntr6',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40FR',
|
|
|
|
|
dataIndex: 'cntr7',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20RF',
|
|
|
|
|
dataIndex: 'cntr8',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40RF',
|
|
|
|
|
dataIndex: 'cntr9',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40HQ',
|
|
|
|
|
dataIndex: 'cntr10',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '其他箱型',
|
|
|
|
|
dataIndex: 'otherCntr',
|
|
|
|
|
width: 120,
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
// 合计数据
|
|
|
|
|
const calcData = ref([])
|
|
|
|
|
// 批量编辑 弹窗
|
|
|
|
|
const [registerModal, { openModal }] = useModal()
|
|
|
|
|
const [registerTable, { reload, getForm, getPaginationRef, getSelectRows }] = useTable({
|
|
|
|
|
title: '',
|
|
|
|
|
api: async (p) => {
|
|
|
|
|
const res: API.DataResult = await PageDataByBooking(p)
|
|
|
|
|
calcData.value = [res.data?.dataTotal]
|
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
res.data?.list.forEach((item) => {
|
|
|
|
|
item.stlDate = formatTableData(item.stlDate)
|
|
|
|
|
item.etd = formatTableData(item.etd)
|
|
|
|
|
item.closingDate = formatTableData(item.closingDate)
|
|
|
|
|
item.eta = formatTableData(item.eta)
|
|
|
|
|
item.issueDate = formatTableData(item.issueDate)
|
|
|
|
|
item.customDate = formatTableData(item.customDate)
|
|
|
|
|
item.inspectionDate = formatTableData(item.inspectionDate)
|
|
|
|
|
})
|
|
|
|
|
if (res?.data?.list) {
|
|
|
|
|
const ids = res.data.list.map((item) => {
|
|
|
|
|
return item.id
|
|
|
|
|
})
|
|
|
|
|
appStore.setIds(ids, 'hyck')
|
|
|
|
|
}
|
|
|
|
|
resolve({ data: [...res.data.list], total: res.data.totalCount })
|
|
|
|
|
// 预加载详情需要使用的下拉数据
|
|
|
|
|
optionsStore.getOptionsByCode('GetVesselSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientStlModeSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientSourceSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetVoynoSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientLanesSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetSaleList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetDeptList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetCustomerServiceList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetVouchingClerkList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientPortSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetIssueTypeSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientFrtSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetServiceSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetPackageSelectList')
|
|
|
|
|
import { CheckCircleFilled,CloseCircleFilled,RedoOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
import TableActionBar from './components/tableActionBar.vue'
|
|
|
|
|
import tableActionBarRight from './components/tableActionBarRight.vue'
|
|
|
|
|
import { onMounted, ref } from 'vue'
|
|
|
|
|
import { BasicTable, useTable, TableAction } from '/@/components/Table'
|
|
|
|
|
import { PageDataByBooking, SeaExportCopy } from './api/BookingLedger.js'
|
|
|
|
|
import { getColumnsByClient } from '/@/views/baseinfo/formcopy/api'
|
|
|
|
|
import { useModal } from '/@/components/Modal'
|
|
|
|
|
import { columns, searchFormSchema, FeeStatus } from './columns'
|
|
|
|
|
import { useGo } from '/@/hooks/web/usePage'
|
|
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
|
|
|
import { formatTableData } from '/@/hooks/web/common'
|
|
|
|
|
import { Field } from '/@/components/Render/interface'
|
|
|
|
|
import { useOptionsStore } from '/@/store/modules/options'
|
|
|
|
|
import lstDraftCompareRlt from '../../../components/lstDraftCompareRlt/index.vue'
|
|
|
|
|
const optionsStore = useOptionsStore()
|
|
|
|
|
import { usePermissionStore } from '/@/store/modules/permission'
|
|
|
|
|
import { useI18n } from '/@/hooks/web/useI18n'
|
|
|
|
|
const { t } = useI18n()
|
|
|
|
|
import initData from './modules/initData.js'
|
|
|
|
|
import { useRouter } from 'vue-router'
|
|
|
|
|
import { useAppStore } from '/@/store/modules/app'
|
|
|
|
|
// 引入处理入参方法
|
|
|
|
|
import { formatParams } from '/@/hooks/web/common'
|
|
|
|
|
const appStore = useAppStore()
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
const { createMessage } = useMessage()
|
|
|
|
|
const go = useGo()
|
|
|
|
|
// 合计列
|
|
|
|
|
const calcColumns = [
|
|
|
|
|
{
|
|
|
|
|
title: '主票数',
|
|
|
|
|
dataIndex: 'mainCount',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '分票数',
|
|
|
|
|
dataIndex: 'partCount',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '退仓数',
|
|
|
|
|
dataIndex: 'returnCount',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '箱TEU',
|
|
|
|
|
dataIndex: 'teu',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '件数',
|
|
|
|
|
dataIndex: 'pkgs',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '毛重',
|
|
|
|
|
dataIndex: 'kgs',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20GP',
|
|
|
|
|
dataIndex: 'cntr1',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40GP',
|
|
|
|
|
dataIndex: 'cntr2',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40HC',
|
|
|
|
|
dataIndex: 'cntr3',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20OT',
|
|
|
|
|
dataIndex: 'cntr4',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40OT',
|
|
|
|
|
dataIndex: 'cntr5',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20FR',
|
|
|
|
|
dataIndex: 'cntr6',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40FR',
|
|
|
|
|
dataIndex: 'cntr7',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '20RF',
|
|
|
|
|
dataIndex: 'cntr8',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40RF',
|
|
|
|
|
dataIndex: 'cntr9',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '40HQ',
|
|
|
|
|
dataIndex: 'cntr10',
|
|
|
|
|
width: 110,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '其他箱型',
|
|
|
|
|
dataIndex: 'otherCntr',
|
|
|
|
|
width: 120,
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
// 合计数据
|
|
|
|
|
const calcData = ref([])
|
|
|
|
|
// 批量编辑 弹窗
|
|
|
|
|
const [registerModal, { openModal }] = useModal()
|
|
|
|
|
const [registerTable, { reload, getForm, setLoading, getSelectRows }] = useTable({
|
|
|
|
|
title: '',
|
|
|
|
|
api: async (p) => {
|
|
|
|
|
const res: API.DataResult = await PageDataByBooking(p)
|
|
|
|
|
calcData.value = [res.data?.dataTotal]
|
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
res.data?.list.forEach((item) => {
|
|
|
|
|
item.stlDate = formatTableData(item.stlDate)
|
|
|
|
|
item.etd = formatTableData(item.etd)
|
|
|
|
|
item.closingDate = formatTableData(item.closingDate)
|
|
|
|
|
item.eta = formatTableData(item.eta)
|
|
|
|
|
item.issueDate = formatTableData(item.issueDate)
|
|
|
|
|
item.customDate = formatTableData(item.customDate)
|
|
|
|
|
item.inspectionDate = formatTableData(item.inspectionDate)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 请求前的参数格式化
|
|
|
|
|
beforeFetch: (p) => {
|
|
|
|
|
return formatParams(p)
|
|
|
|
|
},
|
|
|
|
|
// if (moreNumVal.value) {
|
|
|
|
|
// let ManyQueryData: any = { ConditionalList: [] }
|
|
|
|
|
// moreNumVal.value
|
|
|
|
|
// .replace(/\n|\r/g, ',')
|
|
|
|
|
// .split(',')
|
|
|
|
|
// .forEach((item) => {
|
|
|
|
|
// ManyQueryData.ConditionalList.push({
|
|
|
|
|
// Key: 0,
|
|
|
|
|
// Value: { FieldName: 'mblno', FieldValue: item, ConditionalType: 1 },
|
|
|
|
|
// })
|
|
|
|
|
// })
|
|
|
|
|
if (res?.data?.list) {
|
|
|
|
|
const ids = res.data.list.map((item) => {
|
|
|
|
|
return item.id
|
|
|
|
|
})
|
|
|
|
|
appStore.setIds(ids, 'hyck')
|
|
|
|
|
}
|
|
|
|
|
resolve({ data: [...res.data.list], total: res.data.totalCount })
|
|
|
|
|
// 预加载详情需要使用的下拉数据
|
|
|
|
|
optionsStore.getOptionsByCode('GetVesselSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientStlModeSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientSourceSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetVoynoSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientLanesSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetSaleList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetDeptList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetCustomerServiceList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetVouchingClerkList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientPortSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetIssueTypeSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetClientFrtSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetServiceSelectList')
|
|
|
|
|
optionsStore.getOptionsByCode('GetPackageSelectList')
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 请求前的参数格式化
|
|
|
|
|
beforeFetch: (p) => {
|
|
|
|
|
return formatParams(p)
|
|
|
|
|
},
|
|
|
|
|
// if (moreNumVal.value) {
|
|
|
|
|
// let ManyQueryData: any = { ConditionalList: [] }
|
|
|
|
|
// moreNumVal.value
|
|
|
|
|
// .replace(/\n|\r/g, ',')
|
|
|
|
|
// .split(',')
|
|
|
|
|
// .forEach((item) => {
|
|
|
|
|
// ManyQueryData.ConditionalList.push({
|
|
|
|
|
// Key: 0,
|
|
|
|
|
// Value: { FieldName: 'mblno', FieldValue: item, ConditionalType: 1 },
|
|
|
|
|
// })
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
|
|
// condition.push(ManyQueryData)
|
|
|
|
|
// }
|
|
|
|
|
afterFetch: () => {
|
|
|
|
|
isAdvancedQuery.value = false
|
|
|
|
|
moreNumVisible.value = false
|
|
|
|
|
moreNumVal.value = ''
|
|
|
|
|
},
|
|
|
|
|
columns,
|
|
|
|
|
formConfig: {
|
|
|
|
|
labelWidth: 120,
|
|
|
|
|
// 表格表单需要的过滤字段集合
|
|
|
|
|
schemas: searchFormSchema,
|
|
|
|
|
// 是否显示高级查询(默认否)
|
|
|
|
|
useAdvancedSearch: true,
|
|
|
|
|
},
|
|
|
|
|
isTreeTable: false,
|
|
|
|
|
pagination: true,
|
|
|
|
|
striped: true,
|
|
|
|
|
useSearchForm: true,
|
|
|
|
|
showTableSetting: true,
|
|
|
|
|
bordered: true,
|
|
|
|
|
showIndexColumn: true,
|
|
|
|
|
indexColumnProps: {
|
|
|
|
|
width: 60,
|
|
|
|
|
},
|
|
|
|
|
canResize: true,
|
|
|
|
|
resizeHeightOffset: 75,
|
|
|
|
|
immediate: false,
|
|
|
|
|
actionColumn: {
|
|
|
|
|
width: 80,
|
|
|
|
|
title: '操作',
|
|
|
|
|
dataIndex: 'action',
|
|
|
|
|
fixed: 'right',
|
|
|
|
|
},
|
|
|
|
|
// showSummary: true,
|
|
|
|
|
})
|
|
|
|
|
function editColumns(row) {
|
|
|
|
|
if (row.mblno) {
|
|
|
|
|
go(`/BookingDetail?id=${row.id}&source=edit`)
|
|
|
|
|
} else {
|
|
|
|
|
go(`/BookingDetail?id=${row.id}&customerNo=${row.customerNo}&source=edit`)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function FnCopy(data) {
|
|
|
|
|
const el = document.createElement('input')
|
|
|
|
|
el.setAttribute('value', data)
|
|
|
|
|
document.body.appendChild(el)
|
|
|
|
|
el.select()
|
|
|
|
|
document.execCommand('copy')
|
|
|
|
|
document.body.removeChild(el)
|
|
|
|
|
createMessage.success('复制成功!')
|
|
|
|
|
}
|
|
|
|
|
const moreNumVal = ref('') // 多提单号绑定值
|
|
|
|
|
const moreNumVisible = ref(false) //多提单号弹窗
|
|
|
|
|
// 打开多提单号查询
|
|
|
|
|
function tableMoreRefresh() {
|
|
|
|
|
moreNumVal.value = ''
|
|
|
|
|
moreNumVisible.value = !moreNumVisible.value
|
|
|
|
|
}
|
|
|
|
|
// 多提单号 确定
|
|
|
|
|
function moreNumSubmit() {
|
|
|
|
|
reload()
|
|
|
|
|
}
|
|
|
|
|
// 多提单号 取消
|
|
|
|
|
function moreNumCancel() {
|
|
|
|
|
// condition.push(ManyQueryData)
|
|
|
|
|
// }
|
|
|
|
|
afterFetch: () => {
|
|
|
|
|
isAdvancedQuery.value = false
|
|
|
|
|
moreNumVisible.value = false
|
|
|
|
|
moreNumVal.value = ''
|
|
|
|
|
},
|
|
|
|
|
columns,
|
|
|
|
|
formConfig: {
|
|
|
|
|
labelWidth: 120,
|
|
|
|
|
// 表格表单需要的过滤字段集合
|
|
|
|
|
schemas: searchFormSchema,
|
|
|
|
|
// 是否显示高级查询(默认否)
|
|
|
|
|
useAdvancedSearch: true,
|
|
|
|
|
},
|
|
|
|
|
isTreeTable: false,
|
|
|
|
|
pagination: true,
|
|
|
|
|
striped: true,
|
|
|
|
|
useSearchForm: true,
|
|
|
|
|
showTableSetting: true,
|
|
|
|
|
bordered: true,
|
|
|
|
|
showIndexColumn: true,
|
|
|
|
|
indexColumnProps: {
|
|
|
|
|
width: 60,
|
|
|
|
|
},
|
|
|
|
|
canResize: true,
|
|
|
|
|
resizeHeightOffset: 75,
|
|
|
|
|
immediate: false,
|
|
|
|
|
actionColumn: {
|
|
|
|
|
width: 80,
|
|
|
|
|
title: '操作',
|
|
|
|
|
dataIndex: 'action',
|
|
|
|
|
fixed: 'right',
|
|
|
|
|
},
|
|
|
|
|
// showSummary: true,
|
|
|
|
|
})
|
|
|
|
|
function editColumns(row) {
|
|
|
|
|
if (row.mblno) {
|
|
|
|
|
go(`/BookingDetail?id=${row.id}&source=edit`)
|
|
|
|
|
} else {
|
|
|
|
|
go(`/BookingDetail?id=${row.id}&customerNo=${row.customerNo}&source=edit`)
|
|
|
|
|
}
|
|
|
|
|
const isAdvancedQuery = ref(false)
|
|
|
|
|
const showColumns = ref({})
|
|
|
|
|
const formAllData = ref([])
|
|
|
|
|
const fromTableAllData = ref({})
|
|
|
|
|
const fields = ref<Field[]>([])
|
|
|
|
|
const tableHeight = ref(0)
|
|
|
|
|
const TaskShippingOrderCompareData = ref({
|
|
|
|
|
showDetailList: '',
|
|
|
|
|
total: '',
|
|
|
|
|
isExistsDiff: false,
|
|
|
|
|
})
|
|
|
|
|
const TaskShippingOrderCompareVisible = ref(false)
|
|
|
|
|
const formatSheetVisible = ref(false)
|
|
|
|
|
}
|
|
|
|
|
function FnCopy(data) {
|
|
|
|
|
const el = document.createElement('input')
|
|
|
|
|
el.setAttribute('value', data)
|
|
|
|
|
document.body.appendChild(el)
|
|
|
|
|
el.select()
|
|
|
|
|
document.execCommand('copy')
|
|
|
|
|
document.body.removeChild(el)
|
|
|
|
|
createMessage.success('复制成功!')
|
|
|
|
|
}
|
|
|
|
|
const moreNumVal = ref('') // 多提单号绑定值
|
|
|
|
|
const moreNumVisible = ref(false) //多提单号弹窗
|
|
|
|
|
// 打开多提单号查询
|
|
|
|
|
function tableMoreRefresh() {
|
|
|
|
|
moreNumVal.value = ''
|
|
|
|
|
moreNumVisible.value = !moreNumVisible.value
|
|
|
|
|
}
|
|
|
|
|
// 多提单号 确定
|
|
|
|
|
function moreNumSubmit() {
|
|
|
|
|
reload()
|
|
|
|
|
}
|
|
|
|
|
// 多提单号 取消
|
|
|
|
|
function moreNumCancel() {
|
|
|
|
|
moreNumVisible.value = false
|
|
|
|
|
}
|
|
|
|
|
const isAdvancedQuery = ref(false)
|
|
|
|
|
const showColumns = ref({})
|
|
|
|
|
const formAllData = ref([])
|
|
|
|
|
const fromTableAllData = ref({})
|
|
|
|
|
const fields = ref<Field[]>([])
|
|
|
|
|
const tableHeight = ref(0)
|
|
|
|
|
const TaskShippingOrderCompareData = ref({
|
|
|
|
|
showDetailList: '',
|
|
|
|
|
total: '',
|
|
|
|
|
isExistsDiff: false,
|
|
|
|
|
})
|
|
|
|
|
const TaskShippingOrderCompareVisible = ref(false)
|
|
|
|
|
const formatSheetVisible = ref(false)
|
|
|
|
|
|
|
|
|
|
// // 批量编辑
|
|
|
|
|
// function batchEditing() {
|
|
|
|
|
// const select = getSelectRows()
|
|
|
|
|
// if (select.length === 0) {
|
|
|
|
|
// createMessage.warning('请选择操作订单')
|
|
|
|
|
// return false
|
|
|
|
|
// }
|
|
|
|
|
// const removeArr = select.map((item) => {
|
|
|
|
|
// return item.id
|
|
|
|
|
// })
|
|
|
|
|
// openModal(true, { removeArr })
|
|
|
|
|
// }
|
|
|
|
|
function TaskShippingOrderCompareHandleCancel() {
|
|
|
|
|
TaskShippingOrderCompareVisible.value = false
|
|
|
|
|
}
|
|
|
|
|
const permissionId = ref<String>('')
|
|
|
|
|
const ConditionalList: Ref<any> = ref()
|
|
|
|
|
async function createdInit() {
|
|
|
|
|
showColumns.value = JSON.parse(JSON.stringify(initData.columns))
|
|
|
|
|
formAllData.value = JSON.parse(JSON.stringify(initData.condAllData))
|
|
|
|
|
fromTableAllData.value = JSON.parse(JSON.stringify(initData.columnsAllData))
|
|
|
|
|
tableHeight.value = document.body.clientHeight - 230
|
|
|
|
|
const res: API.DataResult = await getColumnsByClient({
|
|
|
|
|
tableViewName: 'op_sea_export',
|
|
|
|
|
})
|
|
|
|
|
const fullPath = ref(router.currentRoute.value.fullPath)
|
|
|
|
|
usePermissionStore().getWrouteList.forEach((item: Record<any, any>) => {
|
|
|
|
|
item.children[0].children?.forEach((item2: Record<any, any>) => {
|
|
|
|
|
if (fullPath.value.indexOf(item2.path) != -1) {
|
|
|
|
|
permissionId.value = item2.id
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// // 批量编辑
|
|
|
|
|
// function batchEditing() {
|
|
|
|
|
// const select = getSelectRows()
|
|
|
|
|
// if (select.length === 0) {
|
|
|
|
|
// createMessage.warning('请选择操作订单')
|
|
|
|
|
// return false
|
|
|
|
|
// }
|
|
|
|
|
// const removeArr = select.map((item) => {
|
|
|
|
|
// return item.id
|
|
|
|
|
// })
|
|
|
|
|
// openModal(true, { removeArr })
|
|
|
|
|
// }
|
|
|
|
|
function TaskShippingOrderCompareHandleCancel() {
|
|
|
|
|
TaskShippingOrderCompareVisible.value = false
|
|
|
|
|
}
|
|
|
|
|
const permissionId = ref<String>('')
|
|
|
|
|
const ConditionalList: Ref<any> = ref()
|
|
|
|
|
async function createdInit() {
|
|
|
|
|
showColumns.value = JSON.parse(JSON.stringify(initData.columns))
|
|
|
|
|
formAllData.value = JSON.parse(JSON.stringify(initData.condAllData))
|
|
|
|
|
fromTableAllData.value = JSON.parse(JSON.stringify(initData.columnsAllData))
|
|
|
|
|
tableHeight.value = document.body.clientHeight - 230
|
|
|
|
|
const res: API.DataResult = await getColumnsByClient({
|
|
|
|
|
tableViewName: 'op_sea_export',
|
|
|
|
|
})
|
|
|
|
|
const fullPath = ref(router.currentRoute.value.fullPath)
|
|
|
|
|
usePermissionStore().getWrouteList.forEach((item: Record<any, any>) => {
|
|
|
|
|
item.children[0].children?.forEach((item2: Record<any, any>) => {
|
|
|
|
|
if (fullPath.value.indexOf(item2.path) != -1) {
|
|
|
|
|
permissionId.value = item2.id
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if (res.succeeded) {
|
|
|
|
|
console.log(res)
|
|
|
|
|
})
|
|
|
|
|
if (res.succeeded) {
|
|
|
|
|
console.log(res)
|
|
|
|
|
|
|
|
|
|
let data: any[] = []
|
|
|
|
|
res.data.forEach((item) => {
|
|
|
|
|
data.push({
|
|
|
|
|
id: item.dbColumnName,
|
|
|
|
|
title: item.columnDescription,
|
|
|
|
|
name: 'Select',
|
|
|
|
|
value: null,
|
|
|
|
|
props: {
|
|
|
|
|
disabled: false,
|
|
|
|
|
multiple: false,
|
|
|
|
|
// placeholder: '请选择请假事由',
|
|
|
|
|
options: [],
|
|
|
|
|
},
|
|
|
|
|
style: {
|
|
|
|
|
width: '100%',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
let data: any[] = []
|
|
|
|
|
res.data.forEach((item) => {
|
|
|
|
|
data.push({
|
|
|
|
|
id: item.dbColumnName,
|
|
|
|
|
title: item.columnDescription,
|
|
|
|
|
name: 'Select',
|
|
|
|
|
value: null,
|
|
|
|
|
props: {
|
|
|
|
|
disabled: false,
|
|
|
|
|
multiple: false,
|
|
|
|
|
// placeholder: '请选择请假事由',
|
|
|
|
|
options: [],
|
|
|
|
|
},
|
|
|
|
|
style: {
|
|
|
|
|
width: '100%',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
fields.value = data
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function handledbclick(record) {
|
|
|
|
|
editColumns(record)
|
|
|
|
|
}
|
|
|
|
|
// 复制
|
|
|
|
|
function copyBooking(record) {
|
|
|
|
|
SeaExportCopy({ id: record.id }).then((res) => {
|
|
|
|
|
reload()
|
|
|
|
|
})
|
|
|
|
|
// go(`/BookingDetail?id=${record.id}&isCopy=${true}`)
|
|
|
|
|
|
|
|
|
|
fields.value = data
|
|
|
|
|
}
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
//初始化
|
|
|
|
|
}
|
|
|
|
|
function handledbclick(record) {
|
|
|
|
|
editColumns(record)
|
|
|
|
|
}
|
|
|
|
|
// 复制
|
|
|
|
|
function copyBooking(record) {
|
|
|
|
|
SeaExportCopy({ id: record.id }).then((res) => {
|
|
|
|
|
reload()
|
|
|
|
|
createdInit()
|
|
|
|
|
})
|
|
|
|
|
// go(`/BookingDetail?id=${record.id}&isCopy=${true}`)
|
|
|
|
|
}
|
|
|
|
|
// 格式单比对
|
|
|
|
|
const lstDraftCompareRltRef = ref()
|
|
|
|
|
function handleFormatContrast(row) {
|
|
|
|
|
lstDraftCompareRltRef.value.initLstDraft(row)
|
|
|
|
|
}
|
|
|
|
|
function excuteShippingOrderCompareBatch(row){
|
|
|
|
|
lstDraftCompareRltRef.value.reload(row)
|
|
|
|
|
}
|
|
|
|
|
function handleOpenResult(row){
|
|
|
|
|
lstDraftCompareRltRef.value.initTask(row)
|
|
|
|
|
}
|
|
|
|
|
function setLoadCompare(){
|
|
|
|
|
setLoading(true);
|
|
|
|
|
}
|
|
|
|
|
function compareSuccess(){
|
|
|
|
|
setLoading(false);
|
|
|
|
|
reload()
|
|
|
|
|
}
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
//初始化
|
|
|
|
|
reload()
|
|
|
|
|
createdInit()
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="less">
|
|
|
|
|
.ds-sea-export-table {
|
|
|
|
|
height: 100%;
|
|
|
|
|
.vben-basic-table-header__toolbar {
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
}
|
|
|
|
|
.static-box {
|
|
|
|
|
position: fixed;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
}
|
|
|
|
|
.icon-fuzhi3 {
|
|
|
|
|
color: #257afa;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
.ds-sea-export-table {
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
|
|
|
|
.vben-basic-table-header__toolbar {
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.static-box {
|
|
|
|
|
position: fixed;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.icon-fuzhi3 {
|
|
|
|
|
color: #257afa;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.compareIcon {
|
|
|
|
|
color: #257afa;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
font-size: 15px
|
|
|
|
|
}
|
|
|
|
|
.goods-status{
|
|
|
|
|
display: flex;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|