@ -1,10 +1,12 @@
< template >
< div class = "main" >
< a -spin :spinning ="spinning" >
< div class = "main-box" >
< div class = "box" >
< div class = "LeftHead" >
< p >
< i style = "color: orange;margin-right: 10px;font-size: 16px" class = "icon-lunchuan iconfont" > < / i >
< i style = "color: orange;margin-right: 10px;font-size: 16px"
class = "icon-lunchuan iconfont" > < / i >
货物运输计划已变更 { { taskData . carrier } }
< / p >
< p > 时间 : { { taskData . createTime } } < / p >
@ -104,18 +106,15 @@
< / div >
< / div >
< / div >
< a -row style = "margin-top: 40px;" type = "flex" justify = "end" :gutter ="16" >
< taskButton : buttonList = "['取消', '完成', '转移', '邮件', '检索']" @loadingStart ="loadingStart"
@ loadingStop = "loadingStop" : id = "taskPKId" > < / taskButton >
< / a - r o w >
< / div >
< / a - s p i n >
< taskButton : buttonList = "['取消', '完成', '转移', '邮件', '检索']" @loadingStart ="loadingStart" @loadingStop ="loadingStop"
: id = "taskPKId" > < / taskButton >
< / div >
< / template >
< script lang = "ts" setup >
import { ref , onMounted , computed } from 'vue'
import { GetInfoByTaskIdNotic e } from '../api'
import { TaskTransPlanHasChang e } from '../api'
import taskButton from '../components/taskButton.vue'
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage ( )
@ -141,257 +140,17 @@ const tableLoad = ref(false)
onMounted ( ( ) => {
/ / g e t I n f o ( )
taskData . value = {
"taskPkId" : "08dcaf78-2a14-4a17-8754-fb8dd5630677" ,
"pkId" : "08dcaf78-2a19-49df-8a32-b7b30cac12c3" ,
"billNo" : "241585502" ,
"contaNoList" : [
"TEMU1415619"
] ,
"carrier" : "MSK" ,
"changeReasonNotes" : "We would like to inform you that we are facing certain operational challenges at the terminal which will impact our container discharge operations. We are doing our utmost to minimize the delay & make the container available for further clearance." ,
"groupBatchNo" : "08dcaf78-0f8f-40a3-8c0e-689706b3f3bc" ,
"isLast" : true ,
"from" : {
"portList" : [
{
"indx" : 1 ,
"portName" : "Qingdao" ,
"countryCode" : "CN" ,
"terminalName" : "Qingdao Qianwan Container Co Ltd" ,
"isRemoved" : false
}
] ,
"dateList" : [
{
"indx" : 1 ,
"dateVal" : "2024-07-27 08:00:00" ,
"isRemoved" : true
} ,
{
"indx" : 2 ,
"dateVal" : "2024-07-27 15:01:00" ,
"isRemoved" : true
} ,
{
"indx" : 3 ,
"dateVal" : "2024-07-29 07:10:00" ,
"isRemoved" : false
}
] ,
"vesselList" : [
{
"indx" : 1 ,
"vessel" : "MAERSK SEBAROK" ,
"voyno" : "430S" ,
"flag" : "SG" ,
"isRemoved" : false
}
]
} ,
"to" : {
"portList" : [
{
"indx" : 1 ,
"portName" : "Brisbane" ,
"countryCode" : "AU" ,
"terminalName" : "Brisbane Patrick Terminal" ,
"isRemoved" : false
}
] ,
"dateList" : [
{
"indx" : 1 ,
"dateVal" : "2024-08-22 07:00:00" ,
"isRemoved" : true
} ,
{
"indx" : 2 ,
"dateVal" : "2024-08-27 14:00:00" ,
"isRemoved" : true
} ,
{
"indx" : 3 ,
"dateVal" : "2024-08-28 02:00:00" ,
"isRemoved" : false
}
] ,
"vesselList" : [
{
"indx" : 1 ,
"vessel" : "MAERSK SEBAROK" ,
"voyno" : "430S" ,
"flag" : "SG" ,
"isRemoved" : false
}
]
}
}
getInfo ( )
} )
const columns = [
{
title : 'Shipment' ,
dataIndex : 'shipment' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'equipmentNumber' ,
dataIndex : 'equipmentNumber' ,
align : 'center' ,
width : '150px'
} ,
{
title : 'Place of Receipt' ,
dataIndex : 'placeOfReceipt' ,
align : 'center' ,
width : '150px'
} ,
{
title : 'Load Port Name' ,
dataIndex : 'loadPortName' ,
align : 'center' ,
width : '150px'
} ,
{
title : 'Discharge Port Name' ,
align : 'center' ,
dataIndex : 'dischargePortName' ,
width : '180px'
} ,
{
title : 'Place of Delivery' ,
dataIndex : 'placeOfDelivery' ,
align : 'center' ,
width : '150px'
} ,
{
title : '已发通知' ,
dataIndex : 'isSend' ,
align : 'center' ,
width : '90px'
} ,
{
title : '订舱' ,
dataIndex : 'bookingId' ,
width : '70px' ,
align : 'center' ,
} ,
{
title : '客户同意换船' ,
dataIndex : 'userOpinion' ,
width : '120px' ,
align : 'center' ,
} ,
{
title : '是否客户提交' ,
dataIndex : 'isUserManual' ,
align : 'center' ,
width : '120px' ,
} ,
{
title : '箱型箱量' ,
dataIndex : 'ctnStat' ,
align : 'center' ,
width : '120px' ,
} ,
{
title : '客户' ,
width : '120px' ,
align : 'center' ,
dataIndex : 'customerName'
} ,
{
title : '分享链接' ,
dataIndex : 'groupName' ,
align : 'center' ,
width : '100px' ,
fixed : 'right' ,
customCell : ( _ , index ) => {
return {
rowspan : mergeCells ( _ . groupName , taskData . value . preBillList , 'groupName' , index )
}
} ,
}
]
const columnsLoad = [
{
title : 'Shipment' ,
dataIndex : 'shipment' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'Equipment Number' ,
dataIndex : 'equipmentNumber' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'Container' ,
dataIndex : 'containerType' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'FEE' ,
dataIndex : 'fee' ,
align : 'center' ,
width : '70px'
} ,
{
title : 'Weight' ,
dataIndex : 'weight' ,
align : 'center' ,
width : '70px'
} ,
{
title : 'Place of Receipt' ,
dataIndex : 'placeOfReceipt' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'Load Port Name' ,
dataIndex : 'loadPortName' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'Discharge Port Name' ,
dataIndex : 'dischargePortName' ,
align : 'center' ,
width : '120px'
} ,
{
title : 'Place of Delivery' ,
dataIndex : 'placeOfDelivery' ,
align : 'center' ,
width : '120px'
}
]
function mergeCells ( text , data , key , index ) {
/ / 上 一 行 该 列 数 据 是 否 一 样
if ( index !== 0 && text == data [ index - 1 ] [ key ] ) {
return 0 ;
}
let rowSpan = 1 ;
/ / 判 断 下 一 行 是 否 相 等
for ( let i = index + 1 ; i < data . length ; i ++ ) {
if ( text !== data [ i ] [ key ] ) {
break ;
}
rowSpan ++ ;
}
return rowSpan ;
}
function getInfo ( ) {
spinning . value = true
const ApiData = {
taskPKId : taskPKId . value
}
GetInfoByTaskIdNotic e( ApiData ) . then ( res => {
TaskTransPlanHasChange ( ApiData ) . then ( res => {
if ( res . succeeded ) {
taskData . value = res . data
} else {