|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
<template>
|
|
|
|
|
<BasicModal width="1100px" v-bind="$attrs" :use-wrapper="true" title="马士基订舱" @register="registerModal" @ok="handleSave">
|
|
|
|
|
<BasicModal width="1100px" v-bind="$attrs" :use-wrapper="true" title="马士基订舱" @register="registerModal"
|
|
|
|
|
@ok="handleSave">
|
|
|
|
|
<a-spin :spinning="formLoading">
|
|
|
|
|
<div class="main">
|
|
|
|
|
<div class="title">MSK 订舱</div>
|
|
|
|
@ -350,59 +351,27 @@
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
|
import { ref } from 'vue'
|
|
|
|
|
import { BasicModal, useModalInner } from '/@/components/Modal'
|
|
|
|
|
import {
|
|
|
|
|
getContractno, SearchCommodities, SearchShipSailingSchedule, mskGetGetInfoSpot, mskGetSaveSpot,
|
|
|
|
|
SearchLocations, SendMSKBooking, mskGetSave, mskGetGetInfo, GetInitInfoMsk, SendMSKBookingSpot, GetInitInfoMskApi,
|
|
|
|
|
CheckWarningBatchCopy, maskCopy, SearchLocationsSpot, SearchShipSailingScheduleSpot, maskCopySPOT, SearchCommoditiesSpot
|
|
|
|
|
} from './api'
|
|
|
|
|
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
|
|
|
|
|
setModalProps({ loading: false })
|
|
|
|
|
})
|
|
|
|
|
const loading = ref(false)
|
|
|
|
|
async function handleSave(exit) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
const wrapperCol = { span: 18 }
|
|
|
|
|
const labelCol = { span: 6 }
|
|
|
|
|
const formLoading = ref(false)
|
|
|
|
|
|
|
|
|
|
interface contractnoListFace {
|
|
|
|
|
contractName: any
|
|
|
|
|
contractNo: any,
|
|
|
|
|
id: number
|
|
|
|
|
}
|
|
|
|
|
const contractnoList = ref<contractnoListFace[]>([])
|
|
|
|
|
|
|
|
|
|
const contractnoList = ref([]) as any
|
|
|
|
|
const nodisabled = ref(false)
|
|
|
|
|
const mskBookType = ref('')
|
|
|
|
|
|
|
|
|
|
const form = ref({
|
|
|
|
|
isReefer: false,
|
|
|
|
|
isShipperOwned: false,
|
|
|
|
|
isImportReturned: false,
|
|
|
|
|
temperature: 0,
|
|
|
|
|
humidity: 0,
|
|
|
|
|
ventilation: 0,
|
|
|
|
|
noOfProbes: 0,
|
|
|
|
|
cargoType: '',
|
|
|
|
|
totalCargoWeight: 0,
|
|
|
|
|
commodityCodeType: '',
|
|
|
|
|
commodityName: '',
|
|
|
|
|
importServiceMode: '',
|
|
|
|
|
exportServiceMode: '',
|
|
|
|
|
mdsfcarrierGeoID: '',
|
|
|
|
|
sfcarrierGeoID: '',
|
|
|
|
|
priceOwnerContactEmail: '',
|
|
|
|
|
priceOwnerContactName: '',
|
|
|
|
|
priceOwnerMaerskPartyCode: '',
|
|
|
|
|
priceOwnerCompanyName: '',
|
|
|
|
|
bookedByCompanyContactEmail: '',
|
|
|
|
|
bookedByCompanyContactName: '',
|
|
|
|
|
productCode: '',
|
|
|
|
|
sender: '',
|
|
|
|
|
priceReferenceId: '',
|
|
|
|
|
carrierCode: '',
|
|
|
|
|
isBookingPartOwnPrice: '',
|
|
|
|
|
bookedByMaerskPartyCode: '',
|
|
|
|
|
bookedByCompanyName: '',
|
|
|
|
|
earliestDepartureDate: '',
|
|
|
|
|
isSendNoSchedule: '',
|
|
|
|
|
ctns: []
|
|
|
|
|
})
|
|
|
|
|
import { useMessage } from '../../../hooks/web/useMessage'
|
|
|
|
|
const { createMessage } = useMessage()
|
|
|
|
|
const form = ref({}) as any
|
|
|
|
|
const columns = [
|
|
|
|
|
{
|
|
|
|
|
title: '箱型',
|
|
|
|
@ -438,17 +407,7 @@ const rules = {
|
|
|
|
|
carrierCode: [{ required: true, message: '请选择服务船公司', trigger: 'blur' }]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleSelectPrice() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleSelectProduct() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleChangePrice() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
interface portloadListFace {
|
|
|
|
|
countryName: any
|
|
|
|
|
unRegionName: any
|
|
|
|
@ -458,13 +417,7 @@ interface portloadListFace {
|
|
|
|
|
const portloadList = ref<portloadListFace[]>([])
|
|
|
|
|
const fetching = ref(false)
|
|
|
|
|
|
|
|
|
|
function getSearchLocations() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleSelect() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface portdischargeListFace {
|
|
|
|
|
countryName: any
|
|
|
|
@ -474,67 +427,664 @@ interface portdischargeListFace {
|
|
|
|
|
}
|
|
|
|
|
const portdischargeList = ref<portdischargeListFace[]>([])
|
|
|
|
|
|
|
|
|
|
function getSearchLocations1() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
const searchForm = ref({}) as any
|
|
|
|
|
const shipList = ref([]) as any
|
|
|
|
|
const cqLoading = ref(false)
|
|
|
|
|
|
|
|
|
|
function handleSelect1() {
|
|
|
|
|
//打开搜索船期
|
|
|
|
|
function handleOpenCQ() {
|
|
|
|
|
if (!form.value.earliestDepartureDate) {
|
|
|
|
|
createMessage.warning('请先选择预计离港日期')
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
if (!form.value.sfcarrierGeoID || !form.value.mdsfcarrierGeoID) {
|
|
|
|
|
createMessage.warning('请先选择始发地和目的地')
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
if (form.value.ctns.length === 0) {
|
|
|
|
|
createMessage.warning('请先添加一条箱型箱量')
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
if (!form.value.ctns[0].ctnCode || !form.value.ctns[0].ctnSufferWeight || !form.value.ctns[0].ctnNum) {
|
|
|
|
|
createMessage.warning('请填写完整箱型箱量')
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
visible.value = true
|
|
|
|
|
this.cqLoading = true
|
|
|
|
|
const data = {
|
|
|
|
|
carrierId: 'MSK',
|
|
|
|
|
collectionOriginCityName: form.value.placeOfReceiptCityName,
|
|
|
|
|
collectionOriginCountryCode: form.value.placeOfReceiptCountryCode,
|
|
|
|
|
deliveryDestinationCityName: form.value.placeOfDeliveryCityName,
|
|
|
|
|
deliveryDestinationCountryCode: form.value.placeOfDeliveryCountryCode,
|
|
|
|
|
cargoType: form.value.cargoType,
|
|
|
|
|
exportServiceMode: form.value.exportServiceMode,
|
|
|
|
|
importServiceMode: form.value.importServiceMode,
|
|
|
|
|
vesselOperatorCarrierCode: form.value.carrierCode,
|
|
|
|
|
startDate: form.value.earliestDepartureDate,
|
|
|
|
|
carrierCollectionOriginGeoID: form.value.carrierCollectionOriginGeoID,
|
|
|
|
|
carrierDeliveryDestinationGeoID: form.value.carrierDeliveryDestinationGeoID,
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
collectionOriginUNLocationCode: form.value.userPlaceOfReceiptUnLocCode,
|
|
|
|
|
collectionOriginUNRegionName: form.value.userPlaceOfReceiptRegionName,
|
|
|
|
|
collectionOriginCountryName: form.value.userPlaceOfReceiptCountryName,
|
|
|
|
|
|
|
|
|
|
function handleOpenCQ() {
|
|
|
|
|
deliveryDestinationUNLocationCode: form.value.userPlaceOfDeliveryUnLocCode,
|
|
|
|
|
deliveryDestinationUNRegionName: form.value.userPlaceOfDeliveryRegionName,
|
|
|
|
|
deliveryDestinationCountryName: form.value.userPlaceOfDeliveryCountryName,
|
|
|
|
|
|
|
|
|
|
...searchForm.value
|
|
|
|
|
}
|
|
|
|
|
data.isoEquipmentCode = form.value.ctns[0].ctnCode
|
|
|
|
|
data.ISOEquipmentNum = form.value.ctns[0].ctnNum
|
|
|
|
|
data.stuffingWeight = form.value.ctns[0].ctnSufferWeight
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
SearchShipSailingScheduleSpot(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
shipList.value = res.data
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
shipList.value = []
|
|
|
|
|
}
|
|
|
|
|
cqLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
SearchShipSailingSchedule(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
shipList.value = res.data
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
shipList.value = []
|
|
|
|
|
}
|
|
|
|
|
cqLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
interface shipDataFace {
|
|
|
|
|
totalAmountShow: any
|
|
|
|
|
totalCurrency: any
|
|
|
|
|
deliveryCountryName: string
|
|
|
|
|
deliveryRegionName: string
|
|
|
|
|
deliveryCityName: string
|
|
|
|
|
originCountryName: string
|
|
|
|
|
originRegionName: string
|
|
|
|
|
orignCityName: string
|
|
|
|
|
legs: Array<any>
|
|
|
|
|
carrierDepartureVoyageNumber: any
|
|
|
|
|
vesselName: string
|
|
|
|
|
days: any
|
|
|
|
|
eta: string
|
|
|
|
|
etd: string
|
|
|
|
|
}
|
|
|
|
|
const shipData = ref<shipDataFace[]>([])
|
|
|
|
|
|
|
|
|
|
function handleOpenSP() {
|
|
|
|
|
const shipData = ref([]) as any
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const disabled = ref(false)
|
|
|
|
|
function handleChagneType() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
function handleCtnChange(row) {
|
|
|
|
|
|
|
|
|
|
function handleCtnChange(row) {
|
|
|
|
|
ctnallList.value.forEach(item => {
|
|
|
|
|
if (item.code === row.ctnCode) {
|
|
|
|
|
row.ctnName = item.name
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
function handleAdd() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
interface ctnallListFace {
|
|
|
|
|
code: any
|
|
|
|
|
name: any
|
|
|
|
|
}
|
|
|
|
|
const ctnallList = ref<ctnallListFace[]>([])
|
|
|
|
|
function filterOption() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const mskSpotInfo = ref({})
|
|
|
|
|
const mskApiInfo = ref({})
|
|
|
|
|
//获取订舱人初始值
|
|
|
|
|
function getinitInfoMsk() {
|
|
|
|
|
GetInitInfoMsk().then(res => {
|
|
|
|
|
mskSpotInfo.value = res.data
|
|
|
|
|
})
|
|
|
|
|
GetInitInfoMskApi().then(res => {
|
|
|
|
|
mskApiInfo.value = res.data
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
const mskType = ref('')
|
|
|
|
|
const mskNumber = ref('')
|
|
|
|
|
const mskCopyId = ref('')
|
|
|
|
|
const maskTitle = ref('')
|
|
|
|
|
const showFlag = ref(false)
|
|
|
|
|
import moment from 'moment'
|
|
|
|
|
|
|
|
|
|
//初始化弹窗
|
|
|
|
|
function init(id, type, number, copyId) {
|
|
|
|
|
mskType.value = type || 'add'
|
|
|
|
|
mskNumber.value = number
|
|
|
|
|
mskCopyId.value = copyId
|
|
|
|
|
maskTitle.value = '马士基合约订舱'
|
|
|
|
|
getContractnoList()
|
|
|
|
|
mskBookType.value = 'api'
|
|
|
|
|
shipData.value = []
|
|
|
|
|
if (!id) {
|
|
|
|
|
form.value = {
|
|
|
|
|
ctns: [
|
|
|
|
|
{ ctnSufferWeight: 15000, ctnNum: 1, ctnCode: '22G1', ctnName: '20GP' },
|
|
|
|
|
{ ctnSufferWeight: 15000, ctnNum: 1, ctnCode: '45G11', ctnName: '40HC' }
|
|
|
|
|
],
|
|
|
|
|
isReefer: false,
|
|
|
|
|
productCode: 'MaerskContract',
|
|
|
|
|
carrierCode: 'MAEU',
|
|
|
|
|
isBookingPartOwnPrice: true,
|
|
|
|
|
importServiceMode: 'CY',
|
|
|
|
|
exportServiceMode: 'CY',
|
|
|
|
|
earliestDepartureDate: moment().format('YYYY-MM-DD'),
|
|
|
|
|
cargoType: 'DRY',
|
|
|
|
|
sender: 'BOOKAPI',
|
|
|
|
|
commodityCodeType: 'MaerskCode'
|
|
|
|
|
}
|
|
|
|
|
form.value = { ...form.value, ...this.mskApiInfo }
|
|
|
|
|
form.value.isReefer = false
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
mskGetGetInfo({ id: id }).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
if (!res.data.ctns) {
|
|
|
|
|
res.data.ctns = []
|
|
|
|
|
}
|
|
|
|
|
form.value = res.data
|
|
|
|
|
form.value.priceReferenceId = form.value.priceReferenceId + ''
|
|
|
|
|
form.value.sfcarrierGeoID = form.value.placeOfReceiptCityName
|
|
|
|
|
form.value.mdsfcarrierGeoID = form.value.placeOfDeliveryCityName
|
|
|
|
|
if (!form.value.selectedShipScheduleShow) {
|
|
|
|
|
shipData.value.push({
|
|
|
|
|
deliveryCityName: form.value.placeOfDeliveryCityName,
|
|
|
|
|
orignCityName: form.value.placeOfReceiptCityName,
|
|
|
|
|
carrierDepartureVoyageNumber: form.value.exportVoyageNumber,
|
|
|
|
|
vesselName: form.value.vesselName,
|
|
|
|
|
days: form.value.estSailingDays,
|
|
|
|
|
atd: form.value.destinationArrivalDateTimeLocal,
|
|
|
|
|
etd: form.value.originDepartureDateTimeLocal
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
shipData.value.push(form.value.selectedShipScheduleShow)
|
|
|
|
|
}
|
|
|
|
|
if (form.value.isReefer) {
|
|
|
|
|
disabled.value = false
|
|
|
|
|
} else {
|
|
|
|
|
disabled.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
showFlag.value = true
|
|
|
|
|
}
|
|
|
|
|
//spot初始化弹窗
|
|
|
|
|
function spotInit(id, type, number, copyId) {
|
|
|
|
|
mskType.value = type || 'add'
|
|
|
|
|
mskNumber.value = number
|
|
|
|
|
maskTitle.value = '马士基SPOT订舱'
|
|
|
|
|
mskCopyId.value = copyId
|
|
|
|
|
mskBookType.value = 'spot'
|
|
|
|
|
getContractnoList()
|
|
|
|
|
shipData.value = []
|
|
|
|
|
if (!id) {
|
|
|
|
|
form.value = {
|
|
|
|
|
ctns: [
|
|
|
|
|
{ ctnSufferWeight: 18000, ctnNum: 1, ctnCode: '45G11', ctnName: '40HC' }
|
|
|
|
|
],
|
|
|
|
|
isReefer: false,
|
|
|
|
|
productCode: 'MaerskSpot',
|
|
|
|
|
carrierCode: 'MAEU',
|
|
|
|
|
isBookingPartOwnPrice: true,
|
|
|
|
|
importServiceMode: 'CY',
|
|
|
|
|
exportServiceMode: 'CY',
|
|
|
|
|
earliestDepartureDate: moment().format('YYYY-MM-DD'),
|
|
|
|
|
cargoType: 'DRY',
|
|
|
|
|
sender: 'BOOKAPI',
|
|
|
|
|
commodityCodeType: 'MaerskCode'
|
|
|
|
|
}
|
|
|
|
|
form.value.isReefer = false
|
|
|
|
|
form.value = { ...form.value, ...mskSpotInfo.value }
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
mskGetGetInfoSpot({ id: id }).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
if (!res.data.ctns) {
|
|
|
|
|
res.data.ctns = []
|
|
|
|
|
}
|
|
|
|
|
form.value = res.data
|
|
|
|
|
form.value.priceReferenceId = null
|
|
|
|
|
form.value.sfcarrierGeoID = form.value.placeOfReceiptCityName
|
|
|
|
|
form.value.mdsfcarrierGeoID = form.value.placeOfDeliveryCityName
|
|
|
|
|
if (!form.value.selectedShipScheduleShow) {
|
|
|
|
|
shipData.value.push({
|
|
|
|
|
deliveryCityName: form.value.placeOfDeliveryCityName,
|
|
|
|
|
orignCityName: form.value.placeOfReceiptCityName,
|
|
|
|
|
carrierDepartureVoyageNumber: form.value.exportVoyageNumber,
|
|
|
|
|
vesselName: form.value.vesselName,
|
|
|
|
|
days: form.value.estSailingDays,
|
|
|
|
|
atd: form.value.destinationArrivalDateTimeLocal,
|
|
|
|
|
etd: form.value.originDepartureDateTimeLocal,
|
|
|
|
|
shipRateTotalCurrency: form.value.shipRateTotalCurrency,
|
|
|
|
|
shipRateTotalAmount: form.value.shipRateTotalAmount
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
shipData.value.push(form.value.selectedShipScheduleShow)
|
|
|
|
|
}
|
|
|
|
|
if (form.value.isReefer) {
|
|
|
|
|
disabled.value = false
|
|
|
|
|
} else {
|
|
|
|
|
disabled.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
showFlag.value = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function handleChangePrice(val) {
|
|
|
|
|
if (val) {
|
|
|
|
|
form.value.priceOwnerContactEmail = form.value.bookedByCompanyContactEmail
|
|
|
|
|
form.value.priceOwnerContactName = form.value.bookedByCompanyContactName
|
|
|
|
|
form.value.priceOwnerMaerskPartyCode = form.value.bookedByMaerskPartyCode
|
|
|
|
|
form.value.priceOwnerCompanyName = form.value.bookedByCompanyName
|
|
|
|
|
} else {
|
|
|
|
|
form.value.priceOwnerContactEmail = ''
|
|
|
|
|
form.value.priceOwnerContactName = ''
|
|
|
|
|
form.value.priceOwnerMaerskPartyCode = ''
|
|
|
|
|
form.value.priceOwnerCompanyName = ''
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
function handleSelectPrice(val) {
|
|
|
|
|
contractnoList.value.forEach(item => {
|
|
|
|
|
if (item.id === val) {
|
|
|
|
|
form.value.priceReference = item.contractNo
|
|
|
|
|
form.value.priceReferenceName = item.contractName
|
|
|
|
|
form.value.priceOwnerContactEmail = item.contractLinkEmail
|
|
|
|
|
form.value.priceOwnerContactName = item.contractLinkName
|
|
|
|
|
form.value.priceOwnerMaerskPartyCode = item.contractPartyCode
|
|
|
|
|
form.value.priceOwnerCompanyName = item.contractPartyName
|
|
|
|
|
form.value.isBookingPartOwnPrice = item.isOurOwnPrice
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
function handleSelectPrice1(val) {
|
|
|
|
|
contractnoList.value.forEach(item => {
|
|
|
|
|
if (item.id === val) {
|
|
|
|
|
form.value.priceOwnerContactEmail = item.contractLinkEmail
|
|
|
|
|
form.value.priceOwnerContactName = item.contractLinkName
|
|
|
|
|
form.value.priceOwnerMaerskPartyCode = item.contractPartyCode
|
|
|
|
|
form.value.priceOwnerCompanyName = item.contractPartyName
|
|
|
|
|
form.value.priceOwnerReference = item.contractNo
|
|
|
|
|
form.value.priceOwnerReferenceName = item.contractName
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const visible = ref(false)
|
|
|
|
|
|
|
|
|
|
//选择船期
|
|
|
|
|
function handleSelectCQ(item) {
|
|
|
|
|
shipData.value = []
|
|
|
|
|
form.value.originDepartureDateTimeLocal = item.etd
|
|
|
|
|
form.value.isoEquipmentCode = searchForm.value.isoEquipmentCode
|
|
|
|
|
form.value.destinationArrivalDateTimeLocal = item.eta
|
|
|
|
|
form.value.placeOfReceiptUnLocCode = item.orignUNLocationCode
|
|
|
|
|
form.value.placeOfDeliveryUnLocCode = item.deliveryUNLocationCode
|
|
|
|
|
form.value.placeOfReceiptCountryCode = item.orignCountryCode
|
|
|
|
|
form.value.placeOfDeliveryCountryCode = item.deliveryCountryCode
|
|
|
|
|
form.value.vesselName = item.vesselName
|
|
|
|
|
form.value.carrierVesselCode = item.carrierVesselCode
|
|
|
|
|
form.value.exportVoyageNumber = item.carrierDepartureVoyageNumber
|
|
|
|
|
form.value.estSailingDays = item.days
|
|
|
|
|
form.value.transportMode = item.transportMode
|
|
|
|
|
form.value.carrierProductId = item.carrierProductId
|
|
|
|
|
form.value.originCountryName = item.originCountryName
|
|
|
|
|
form.value.originRegionName = item.originRegionName
|
|
|
|
|
form.value.deliveryRegionName = item.deliveryRegionName
|
|
|
|
|
form.value.deliveryCountryName = item.deliveryCountryName
|
|
|
|
|
form.value.pId = item.pId
|
|
|
|
|
form.value.mD5 = item.mD5
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
form.value.priceID = item.priceID
|
|
|
|
|
form.value.shipRateTotalAmount = item.totalAmountShow
|
|
|
|
|
form.value.shipRateTotalCurrency = item.totalCurrency
|
|
|
|
|
}
|
|
|
|
|
shipData.value.push(item)
|
|
|
|
|
visible.value = false
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const emit = defineEmits(['handleSuccess'])
|
|
|
|
|
function handleSubimt() {
|
|
|
|
|
this.$refs.form.validate(valid => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
form.value.carrierId = 'MSK'
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
if (mskType.value === 'add') {
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
form.value.priceReference = form.value.priceID
|
|
|
|
|
SendMSKBookingSpot(form.value).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
showFlag.value = false
|
|
|
|
|
createMessage.success('发送成功')
|
|
|
|
|
emit('handleSuccess')
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
SendMSKBooking(form.value).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
showFlag.value = false
|
|
|
|
|
createMessage.success('发送成功')
|
|
|
|
|
this.$emit('handleSuccess')
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
console.log('error submit!!');
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleSave() {
|
|
|
|
|
form.value.carrierId = 'MSK'
|
|
|
|
|
if (!form.value.isBookingPartOwnPrice) {
|
|
|
|
|
if (!form.value.priceOwnerReferenceId) {
|
|
|
|
|
createMessage.warning('请选择持约方合同')
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
if (mskType.value === 'add') {
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
form.value.priceReference = form.value.priceID
|
|
|
|
|
mskGetSaveSpot(form.value).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
showFlag.value = false
|
|
|
|
|
this.$emit('handleSuccess')
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
mskGetSave(form.value).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
showFlag.value = false
|
|
|
|
|
this.$emit('handleSuccess')
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const data = {
|
|
|
|
|
originalId: this.mskCopyId,
|
|
|
|
|
opType: 'copy_edit',
|
|
|
|
|
copyNum: this.mskNumber,
|
|
|
|
|
bookingDto: form.value
|
|
|
|
|
}
|
|
|
|
|
delete data.bookingDto.id
|
|
|
|
|
CheckWarningBatchCopy(data).then(res => {
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.handleCopyMore()
|
|
|
|
|
} else {
|
|
|
|
|
//二次确认提示
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function handleCopyMore() {
|
|
|
|
|
const data = {
|
|
|
|
|
originalId: this.mskCopyId,
|
|
|
|
|
opType: 'copy_edit',
|
|
|
|
|
copyNum: this.mskNumber,
|
|
|
|
|
bookingDto: form.value
|
|
|
|
|
}
|
|
|
|
|
delete data.bookingDto.id
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
maskCopy(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
createMessage.success('复制成功')
|
|
|
|
|
showFlag.value = false
|
|
|
|
|
this.$emit('handleSuccessCopy')
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
maskCopySPOT(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
createMessage.success('复制成功')
|
|
|
|
|
showFlag.value = false
|
|
|
|
|
this.$emit('handleSuccessCopy')
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function handleSelect(val) {
|
|
|
|
|
this.portloadList.forEach(item => {
|
|
|
|
|
if (item.carrierGeoID === val) {
|
|
|
|
|
form.value.placeOfReceiptCityName = item.cityName
|
|
|
|
|
form.value.carrierCollectionOriginGeoID = item.carrierGeoID
|
|
|
|
|
// form.value.placeOfReceiptCountryCode = item.countryCode
|
|
|
|
|
form.value.userPlaceOfReceiptUnLocCode = item.unLocationCode
|
|
|
|
|
form.value.userPlaceOfReceiptCityName = item.cityName
|
|
|
|
|
form.value.userPlaceOfReceiptCountryCode = item.countryCode
|
|
|
|
|
form.value.userPlaceOfReceiptCountryName = item.countryName
|
|
|
|
|
form.value.userPlaceOfReceiptRegionName = item.unRegionName
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
function handleSelect1(val) {
|
|
|
|
|
this.portdischargeList.forEach(item => {
|
|
|
|
|
if (item.carrierGeoID === val) {
|
|
|
|
|
form.value.placeOfDeliveryCityName = item.cityName
|
|
|
|
|
// form.value.placeOfDeliveryCountryCode = item.countryCode
|
|
|
|
|
form.value.carrierDeliveryDestinationGeoID = item.carrierGeoID
|
|
|
|
|
form.value.userPlaceOfDeliveryUnLocCode = item.unLocationCode
|
|
|
|
|
form.value.userPlaceOfDeliveryCityName = item.cityName
|
|
|
|
|
form.value.userPlaceOfDeliveryCountryCode = item.countryCode
|
|
|
|
|
form.value.userPlaceOfDeliveryCountryName = item.countryName
|
|
|
|
|
form.value.userPlaceOfDeliveryRegionName = item.unRegionName
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getSearchLocations(val) {
|
|
|
|
|
if (val.length >= 3) {
|
|
|
|
|
this.fetching = true
|
|
|
|
|
const data = {
|
|
|
|
|
cityName: val,
|
|
|
|
|
carrierId: 'MSK',
|
|
|
|
|
carrierCode: form.value.carrierCode
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
SearchLocations(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.portloadList = res.data
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
this.fetching = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
SearchLocationsSpot(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.portloadList = res.data
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
this.fetching = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function getSearchLocations1(val) {
|
|
|
|
|
if (val.length >= 3) {
|
|
|
|
|
this.fetching = true
|
|
|
|
|
const data = {
|
|
|
|
|
cityName: val,
|
|
|
|
|
carrierId: 'MSK',
|
|
|
|
|
carrierCode: form.value.carrierCode
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
SearchLocations(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.portdischargeList = res.data
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
this.fetching = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
SearchLocationsSpot(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.portdischargeList = res.data
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
this.fetching = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function handleSelectProduct() {
|
|
|
|
|
if (form.value.productCode === 'MaerskContract') {
|
|
|
|
|
this.nodisabled = false
|
|
|
|
|
} else {
|
|
|
|
|
this.nodisabled = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function handleChagneType() {
|
|
|
|
|
if (form.value.isReefer) {
|
|
|
|
|
disabled.value = false
|
|
|
|
|
} else {
|
|
|
|
|
disabled.value = true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function handleSelectGoods(item) {
|
|
|
|
|
this.goodsFlag = false
|
|
|
|
|
this.$set(form.value, 'commodityCode', item.commodityCode)
|
|
|
|
|
this.$set(form.value, 'commodityName', item.commodityName)
|
|
|
|
|
this.$refs.form.validateField('commodityName');
|
|
|
|
|
}
|
|
|
|
|
function handleDeleteCtn(index) {
|
|
|
|
|
form.value.ctns.splice(index, 1)
|
|
|
|
|
}
|
|
|
|
|
function handleAdd() {
|
|
|
|
|
const data = {
|
|
|
|
|
ctnCode: '',
|
|
|
|
|
ctnNum: 1,
|
|
|
|
|
ctnSufferWeight: 0
|
|
|
|
|
}
|
|
|
|
|
form.value.ctns.push(data)
|
|
|
|
|
}
|
|
|
|
|
function filterOption(input, option) {
|
|
|
|
|
return (
|
|
|
|
|
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
function handleClick(val, index) {
|
|
|
|
|
this.goodsList[index].goodsType = val
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
function handleOpenSP() {
|
|
|
|
|
this.goodsFlag = true
|
|
|
|
|
}
|
|
|
|
|
//获取商品信息
|
|
|
|
|
function getGoodsList() {
|
|
|
|
|
const data = {
|
|
|
|
|
carrierId: 'MSK',
|
|
|
|
|
commodityName: this.goodsName
|
|
|
|
|
}
|
|
|
|
|
this.loading = true
|
|
|
|
|
if (mskBookType.value === 'api') {
|
|
|
|
|
SearchCommodities(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
if (form.value.cargoType) {
|
|
|
|
|
const arr = [] as any
|
|
|
|
|
res.data.forEach(item => {
|
|
|
|
|
if (item.cargoTypes.includes(form.value.cargoType)) {
|
|
|
|
|
arr.push(item)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
this.goodsList = arr
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
this.goodsList = res.data
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
this.loading = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
if (mskBookType.value === 'spot') {
|
|
|
|
|
SearchCommoditiesSpot(data).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
if (form.value.cargoType) {
|
|
|
|
|
const arr = [] as any
|
|
|
|
|
res.data.forEach(item => {
|
|
|
|
|
if (item.cargoTypes.includes(form.value.cargoType)) {
|
|
|
|
|
arr.push(item)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
this.goodsList = arr
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
this.goodsList = res.data
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
createMessage.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
this.loading = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getAutoViewRes({ type, res }) {
|
|
|
|
|
if (type === 'contractno') {
|
|
|
|
|
form.value.contractno = res.contractNo || ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function getContractnoList() {
|
|
|
|
|
getContractno({ carrier: 'MSK' }).then(res => {
|
|
|
|
|
contractnoList.value = res.data
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
/deep/ .ant-form-item {
|
|
|
|
|
margin-bottom: 0px !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/deep/ .ant-form-item-label > label{
|
|
|
|
|
/deep/ .ant-form-item-label>label {
|
|
|
|
|
height: 25px !important;
|
|
|
|
|
}
|
|
|
|
|
|