|
@@ -1,13 +1,15 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { type VxeGridInstance, type VxeGridProps } from 'vxe-table'
|
|
|
|
|
import DownloadDialog from './components/DownloadDialog.vue'
|
|
import DownloadDialog from './components/DownloadDialog.vue'
|
|
|
import { autoWidth } from '@/utils/table'
|
|
import { autoWidth } from '@/utils/table'
|
|
|
import { useRowClickStyle } from '@/hooks/rowClickStyle'
|
|
import { useRowClickStyle } from '@/hooks/rowClickStyle'
|
|
|
import dayjs from 'dayjs'
|
|
import dayjs from 'dayjs'
|
|
|
import { useRouter } from 'vue-router'
|
|
import { useRouter } from 'vue-router'
|
|
|
import { transportationMode } from '@/components/TransportationMode'
|
|
import { transportationMode } from '@/components/TransportationMode'
|
|
|
|
|
+import { useHeaderSearch } from '@/stores/modules/headerSearch'
|
|
|
|
|
+import { fa } from 'element-plus/es/locales.mjs'
|
|
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
|
|
|
+const headerSearch = useHeaderSearch()
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
height: {
|
|
height: {
|
|
|
type: Number,
|
|
type: Number,
|
|
@@ -52,12 +54,14 @@ const handleColumns = (columns: any, status?: string) => {
|
|
|
sortBy: ({ row, column }: any) => {
|
|
sortBy: ({ row, column }: any) => {
|
|
|
return dayjs(row[column.field]).unix()
|
|
return dayjs(row[column.field]).unix()
|
|
|
},
|
|
},
|
|
|
- formatter: ({ cellValue }: any) => dayjs(cellValue).format('MMM-YYYY-DD ') || '--'
|
|
|
|
|
|
|
+ formatter: ({ cellValue }: any) =>
|
|
|
|
|
+ cellValue ? dayjs(cellValue).format('MMM-YYYY-DD ') : '--'
|
|
|
}
|
|
}
|
|
|
} else if (item.formatter === 'dateTime') {
|
|
} else if (item.formatter === 'dateTime') {
|
|
|
curColumn = {
|
|
curColumn = {
|
|
|
...curColumn,
|
|
...curColumn,
|
|
|
- formatter: ({ cellValue }: any) => dayjs(cellValue).format('MMM-YYYY-DD HH:mm:ss') || '--'
|
|
|
|
|
|
|
+ formatter: ({ cellValue }: any) =>
|
|
|
|
|
+ cellValue ? dayjs(cellValue).format('MMM-YYYY-DD HH:mm:ss') : '--'
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return curColumn
|
|
return curColumn
|
|
@@ -72,7 +76,8 @@ const getTableColumns = async (isInit: boolean) => {
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
trackingTable.value.columns = [
|
|
trackingTable.value.columns = [
|
|
|
{ type: 'checkbox', width: 50, fixed: 'left' },
|
|
{ type: 'checkbox', width: 50, fixed: 'left' },
|
|
|
- ...handleColumns(res.data.TrackingTableColumns)
|
|
|
|
|
|
|
+ ...handleColumns(res.data.TrackingTableColumns),
|
|
|
|
|
+ { title: 'Action', fixed: 'right', width: 80, slots: { default: 'action' } }
|
|
|
]
|
|
]
|
|
|
tableOriginColumnsField.value = res.data.TrackingTableColumns
|
|
tableOriginColumnsField.value = res.data.TrackingTableColumns
|
|
|
}
|
|
}
|
|
@@ -88,7 +93,32 @@ const TagsList = ref()
|
|
|
|
|
|
|
|
// 获取表格数据
|
|
// 获取表格数据
|
|
|
let filterdataobj: any = {}
|
|
let filterdataobj: any = {}
|
|
|
|
|
+const getSharedTableData = () => {
|
|
|
|
|
+ const trackingData = JSON.parse(localStorage.getItem('TrackingData'))
|
|
|
|
|
+ if (trackingData) {
|
|
|
|
|
+ trackingTable.value.data = trackingData.searchData
|
|
|
|
|
+ pageInfo.value.total = Number(trackingData.rc)
|
|
|
|
|
+ TransportListItem.value = trackingData.TransportList
|
|
|
|
|
+ TagsList.value = trackingData.tagsList
|
|
|
|
|
+
|
|
|
|
|
+ // 拥有所有字段的表格
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ allTable.value.columns = handleColumns(trackingData.allColums, 'all')
|
|
|
|
|
+ allTable.value.data = trackingData.searchData
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ allTableRef.value && autoWidth(allTable.value, allTableRef.value)
|
|
|
|
|
+ })
|
|
|
|
|
+ }, 1000)
|
|
|
|
|
+ localStorage.removeItem('TrackingData')
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ return false
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const getTableData = async (isInit: boolean, isPageChange?: boolean) => {
|
|
const getTableData = async (isInit: boolean, isPageChange?: boolean) => {
|
|
|
|
|
+ if (getSharedTableData()) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
const rc = isPageChange ? pageInfo.value.total : -1
|
|
const rc = isPageChange ? pageInfo.value.total : -1
|
|
|
tableLoading.value = true
|
|
tableLoading.value = true
|
|
|
await $api
|
|
await $api
|
|
@@ -120,10 +150,21 @@ const getTableData = async (isInit: boolean, isPageChange?: boolean) => {
|
|
|
!isInit && (tableLoading.value = false)
|
|
!isInit && (tableLoading.value = false)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// 当 sharedData 发生变化时,更新 inputValue
|
|
|
|
|
+watch(
|
|
|
|
|
+ () => headerSearch.isChangeByLogin,
|
|
|
|
|
+ (newData) => {
|
|
|
|
|
+ if (newData) {
|
|
|
|
|
+ getSharedTableData()
|
|
|
|
|
+ headerSearch.clearChangeByLogin()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
// 查询列表数据
|
|
// 查询列表数据
|
|
|
const searchTableData = (data: any) => {
|
|
const searchTableData = (data: any) => {
|
|
|
tableLoading.value = true
|
|
tableLoading.value = true
|
|
|
- console.log(data)
|
|
|
|
|
filterdataobj = data
|
|
filterdataobj = data
|
|
|
$api
|
|
$api
|
|
|
.getTrackingTableData({
|
|
.getTrackingTableData({
|
|
@@ -139,7 +180,10 @@ const searchTableData = (data: any) => {
|
|
|
if (res.data.searchData.length == 1) {
|
|
if (res.data.searchData.length == 1) {
|
|
|
router.push({
|
|
router.push({
|
|
|
path: '/tracking/detail',
|
|
path: '/tracking/detail',
|
|
|
- query: { a: res.data.searchData.__serial_no, _schemas: res.data.searchData.__schemas }
|
|
|
|
|
|
|
+ query: {
|
|
|
|
|
+ a: res.data.searchData[0].__serial_no,
|
|
|
|
|
+ _schemas: res.data.searchData[0].__schemas
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
} else {
|
|
} else {
|
|
|
trackingTable.value.data = res.data.searchData
|
|
trackingTable.value.data = res.data.searchData
|
|
@@ -160,8 +204,8 @@ onMounted(() => {
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-const tableRef = ref<VxeGridInstance>()
|
|
|
|
|
-const trackingTable = ref<VxeGridProps<any>>({
|
|
|
|
|
|
|
+const tableRef = ref<any>()
|
|
|
|
|
+const trackingTable = ref<any>({
|
|
|
border: true,
|
|
border: true,
|
|
|
round: true,
|
|
round: true,
|
|
|
columns: [],
|
|
columns: [],
|
|
@@ -183,8 +227,8 @@ const trackingTable = ref<VxeGridProps<any>>({
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
-const allTableRef = ref<VxeGridInstance>()
|
|
|
|
|
-const allTable = ref<VxeGridProps<any>>({
|
|
|
|
|
|
|
+const allTableRef = ref<any>()
|
|
|
|
|
+const allTable = ref<any>({
|
|
|
columns: [],
|
|
columns: [],
|
|
|
data: [],
|
|
data: [],
|
|
|
showHeaderOverflow: true,
|
|
showHeaderOverflow: true,
|
|
@@ -235,7 +279,7 @@ const exportTable = (status: number) => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const tableLoading = ref(true)
|
|
|
|
|
|
|
+const tableLoading = ref(false)
|
|
|
|
|
|
|
|
const CustomizeColumnsRef = ref()
|
|
const CustomizeColumnsRef = ref()
|
|
|
// 打开定制表格弹窗
|
|
// 打开定制表格弹窗
|
|
@@ -269,17 +313,17 @@ const handleCellDblclick = ({ row }: any) => {
|
|
|
query: { a: row.__serial_no, _schemas: row._schemas }
|
|
query: { a: row.__serial_no, _schemas: row._schemas }
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
-// 点击link字段是时
|
|
|
|
|
|
|
+// 点击link字段时
|
|
|
const handleLinkClick = (row: any, column: any) => {
|
|
const handleLinkClick = (row: any, column: any) => {
|
|
|
- if (column.field === 'booking_no') {
|
|
|
|
|
|
|
+ if (column.title === 'Booking No.') {
|
|
|
router.push({
|
|
router.push({
|
|
|
path: '/booking/detail',
|
|
path: '/booking/detail',
|
|
|
query: { a: row.__serial_no, _schemas: row._schemas }
|
|
query: { a: row.__serial_no, _schemas: row._schemas }
|
|
|
})
|
|
})
|
|
|
- } else if (column.field === 'h_bol') {
|
|
|
|
|
|
|
+ } else if (column.title === 'HBL No.') {
|
|
|
router.push({
|
|
router.push({
|
|
|
path: '/tracking/detail',
|
|
path: '/tracking/detail',
|
|
|
- query: { a: row.__serial_no, _schemas: row._schemas }
|
|
|
|
|
|
|
+ query: { a: row.__serial_no, _schemas: row._schemas, serial_no: row.serial_no }
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -292,6 +336,14 @@ const handleCheckboxChange = ({ records }: any) => {
|
|
|
const handleCheckAllChange = ({ records }: any) => {
|
|
const handleCheckAllChange = ({ records }: any) => {
|
|
|
selectedNumber.value = records.length
|
|
selectedNumber.value = records.length
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// VGM
|
|
|
|
|
+const handleVGM = (row) => {
|
|
|
|
|
+ router.push({
|
|
|
|
|
+ path: '/tracking/add-vgm',
|
|
|
|
|
+ query: { a: row.__serial_no, _schemas: row._schemas }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
defineExpose({
|
|
defineExpose({
|
|
|
searchTableData,
|
|
searchTableData,
|
|
|
TransportListItem,
|
|
TransportListItem,
|
|
@@ -328,7 +380,7 @@ defineExpose({
|
|
|
<!-- 空数据时的插槽 -->
|
|
<!-- 空数据时的插槽 -->
|
|
|
<template #empty>
|
|
<template #empty>
|
|
|
<VEmpty>
|
|
<VEmpty>
|
|
|
- <template #default>
|
|
|
|
|
|
|
+ <template #suggestion>
|
|
|
<p>We support the following references number to find tracking:</p>
|
|
<p>We support the following references number to find tracking:</p>
|
|
|
<p>
|
|
<p>
|
|
|
· Tracking No./HAWB No./MAWB No./PO No./Carrier Tracking No./Contract No./File
|
|
· Tracking No./HAWB No./MAWB No./PO No./Carrier Tracking No./Contract No./File
|
|
@@ -338,8 +390,8 @@ defineExpose({
|
|
|
</VEmpty>
|
|
</VEmpty>
|
|
|
</template>
|
|
</template>
|
|
|
<!-- action操作的插槽 -->
|
|
<!-- action操作的插槽 -->
|
|
|
- <template #action>
|
|
|
|
|
- <el-button class="el-button--blue" style="height: 24px">
|
|
|
|
|
|
|
+ <template #action="{ row }">
|
|
|
|
|
+ <el-button @click="handleVGM(row)" class="el-button--blue" style="height: 24px">
|
|
|
<span class="font_family icon-icon_vgm_b"></span> <span style="font-size: 12px">VGM</span>
|
|
<span class="font_family icon-icon_vgm_b"></span> <span style="font-size: 12px">VGM</span>
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</template>
|
|
</template>
|
|
@@ -369,7 +421,7 @@ defineExpose({
|
|
|
</vxe-grid>
|
|
</vxe-grid>
|
|
|
<vxe-grid :height="10" ref="allTableRef" class="all-table" v-bind="allTable"> </vxe-grid>
|
|
<vxe-grid :height="10" ref="allTableRef" class="all-table" v-bind="allTable"> </vxe-grid>
|
|
|
<div class="bottom-pagination">
|
|
<div class="bottom-pagination">
|
|
|
- <div class="left-total-records">Total 181</div>
|
|
|
|
|
|
|
+ <div class="left-total-records">Total {{ pageInfo.total }}</div>
|
|
|
<div class="right-pagination">
|
|
<div class="right-pagination">
|
|
|
<el-pagination
|
|
<el-pagination
|
|
|
v-model:current-page="pageInfo.pageNo"
|
|
v-model:current-page="pageInfo.pageNo"
|
|
@@ -379,6 +431,8 @@ defineExpose({
|
|
|
background
|
|
background
|
|
|
layout="sizes, prev, pager, next"
|
|
layout="sizes, prev, pager, next"
|
|
|
:total="pageInfo.total"
|
|
:total="pageInfo.total"
|
|
|
|
|
+ @size-change="getTableData(false, true)"
|
|
|
|
|
+ @current-change="getTableData(false, true)"
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -433,4 +487,4 @@ defineExpose({
|
|
|
visibility: hidden;
|
|
visibility: hidden;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-</style>
|
|
|
|
|
|
|
+</style>
|