预定舱模块

szh-new
sunzehua 4 months ago
parent 84121a7a18
commit d17c05a72b

@ -21,6 +21,7 @@ import {
GetTruckClientList,
GetDispatcherList,
GetFactorySelectList,
GetCodeCountryList
} from '/@/views/operation/seaexport/api/BookingLedger'
import { getList } from '/@/views/flowcenter/flowInstances/api'
import { GetFeeCurrencySelectList, GetClientListByCode } from '/@/api/common/index'
@ -151,5 +152,11 @@ export default {
return GetFactorySelectList().then((res) => {
return res.data
})
},
//国家
GetCodeCountryList: () => {
return GetCodeCountryList().then((res) => {
return res.data
})
}
}

@ -42,6 +42,8 @@ export const useOptionsStore = defineStore({
GetFeeCurrencySelectList: null,
// 用户表
GetUserList: null,
// 国家
GetCodeCountryList: null,
// 车队
GetTruckClientList: null,
// 结算单位/结算对象

@ -0,0 +1,144 @@
// @ts-ignore
import { request } from '/@/utils/request'
import { DataResult, PageRequest } from '/@/api/model/baseModel'
export function SearchShipSailingScheduleSpot(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/SearchShipSailingSchedule',
method: 'post',
data,
})
}
export function SearchShipSailingSchedule(data) {
return request<DataResult>({
url: '/BookingMSKAPI/SearchShipSailingSchedule',
method: 'post',
data,
})
}
export function getContractno(data) {
return request<DataResult>({
url: '/Para/QuerytParaContractNoInfo',
method: 'get',
params: data,
})
}
export function SearchCommodities(data) {
return request<DataResult>({
url: '/BookingMSKAPI/SearchCommodities',
method: 'post',
data,
})
}
export function mskGetGetInfoSpot(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/GetInfo',
method: 'get',
params: data,
})
}
export function mskGetSaveSpot(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/Save',
method: 'post',
data,
})
}
export function SearchLocations(data) {
return request<DataResult>({
url: '/BookingMSKAPI/SearchLocations',
method: 'post',
data,
})
}
export function SendMSKBooking(data) {
return request<DataResult>({
url: '/BookingMSKAPI/SendMSKBooking',
method: 'post',
data,
})
}
export function mskGetSave(data) {
return request<DataResult>({
url: '/BookingMSKAPI/Save',
method: 'post',
data,
})
}
export function mskGetGetInfo(data) {
return request<DataResult>({
url: '/BookingMSKAPI/GetInfo',
method: 'get',
params: data,
})
}
export function GetInitInfoMsk() {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/GetInitInfo',
method: 'get',
})
}
export function SendMSKBookingSpot(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/SendMSKBooking',
method: 'post',
data,
})
}
export function GetInitInfoMskApi() {
return request<DataResult>({
url: '/BookingMSKAPI/GetInitInfo',
method: 'get',
})
}
export function maskCopySPOT(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/BatchCopy',
method: 'post',
data,
})
}
export function SearchCommoditiesSpot(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/SearchCommodities',
method: 'post',
data,
})
}
export function SearchLocationsSpot(data) {
return request<DataResult>({
url: '/BookingMSKSPOTAPI/SearchLocations',
method: 'post',
data,
})
}
export function CheckWarningBatchCopy(data) {
return request<DataResult>({
url: '/BookingMSKAPI/CheckWarningBatchCopy',
method: 'post',
data,
})
}
export function maskCopy(data) {
return request<DataResult>({
url: '/BookingMSKAPI/BatchCopy',
method: 'post',
data,
})
}

@ -0,0 +1,245 @@
import { ref } from 'vue'
import { BasicColumn, FormSchema } from '/@/components/Table'
import { GetCarrierlist } from '/@/views/operation/seaexport/api/BookingLedger'
import { GetCtnSelectList } from '/@/api/common'
import { getDictOption } from '/@/utils/dictUtil'
import { useOptionsStore } from '/@/store/modules/options'
const optionsStore = useOptionsStore()
const FnblType = ref([])
const FncargoId = ref([])
getDictOption('bl_type').then(res => {
FncargoId.value = res
})
export const searchFormSchema: FormSchema[] = [
{
field: 'vessel',
label: '船名',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'voyno',
label: '航次',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'etD_START',
label: 'ETD开始',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'etD_END',
label: 'ETD结束',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'PORTLOAD',
label: '装货港',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'carrier',
label: '船公司',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'ctN_STAT',
label: '箱型',
colProps: { span: 4 },
component: 'ApiSelect',
componentProps: () => {
return {
api: GetCtnSelectList,
labelField: 'ctnName',
valueField: 'ediCode',
resultField: 'data'
}
}
},
{
field: 'etA_START',
label: 'ETA开始',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'etA_END',
label: 'ETA结束',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'PORTDISCHARGE',
label: '卸货港',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'PORTDISCHARGE_COUNTRY_CODE',
label: '国家',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
colProps: { span: 3 },
componentProps: () => {
return {
allowClear: true,
showSearch: true,
option: optionsStore.getOptionsByCode('GetCodeCountryList'),
labelField: 'countryName',
valueField: 'id',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
}
},
},
{
label: ' ',
field: 'more',
slot: 'more',
component: 'Select',
colProps: { span: 4 },
},
]
//列表
export const columns: BasicColumn[] = [
{
title: '船名/航次',
align: 'center',
width: 200,
dataIndex: 'vessel',
},
{
title: '订舱抬头',
align: 'center',
width: 200,
dataIndex: 'bookinG_PARTY'
},
{
title: '合约号',
align: 'center',
width: 100,
dataIndex: 'contracT_NO'
},
{
title: '订舱方式',
align: 'center',
width: 100,
dataIndex: 'bookinG_SLOT_TYPE_NAME'
},
{
title: '总库存',
align: 'center',
width: 100,
dataIndex: 'totaL_ORDERS'
},
{
title: '剩余库存',
align: 'center',
width: 100,
dataIndex: 'remaiN_CTNS_NUM',
},
{
title: '取消库存',
align: 'center',
width: 100,
dataIndex: 'canceL_NUM'
},
{
title: '收货地',
align: 'center',
width: 100,
dataIndex: 'placereceipt'
},
{
title: '交货地',
align: 'center',
width: 100,
dataIndex: 'placedelivery'
},
{
title: '装货港',
align: 'center',
width: 100,
dataIndex: 'portload'
},
{
title: '卸货港',
align: 'center',
width: 100,
dataIndex: 'portdischarge'
},
{
title: '卸货港国家',
align: 'center',
width: 100,
dataIndex: 'portdischargE_COUNTRY'
},
{
title: '航线',
align: 'center',
width: 100,
dataIndex: 'lanename'
},
{
title: '箱型箱量',
align: 'center',
width: 100,
dataIndex: 'ctN_STAT'
},
{
title: '剩余箱型箱量',
align: 'center',
width: '110',
dataIndex: 'remaiN_CTN_STAT'
},
{
title: 'ETD',
align: 'center',
width: 100,
dataIndex: 'etd',
},
{
title: 'ETA',
align: 'center',
width: 100,
dataIndex: 'eta',
},
{
title: '船公司',
align: 'center',
width: '150',
dataIndex: 'carrier'
}
]

File diff suppressed because it is too large Load Diff

@ -0,0 +1,451 @@
<template>
<div class="ds-sea-export-table">
<BasicTable class="ds-table" @register="registerTable" @row-dbClick="handledbclick">
<template #toolbar>
</template>
<template v-slot:bodyCell="{ column, record }">
<template v-if="column.dataIndex == 'vessel'">
<span>{{ record.vessel }} / {{ record.voyno }}</span>
</template>
<template v-if="column.dataIndex == 'etd'">
<span>{{ record.etd ? record.etd.substring(0, 10) : '' }}</span>
</template>
<template v-if="column.dataIndex == 'eta'">
<span>{{ record.eta ? record.eta.substring(0, 10) : '' }}</span>
</template>
<template v-if="column.dataIndex == 'shipRateTotalAmount'">
<span>{{ record.shipRateTotalCurrency }} {{ record.shipRateTotalAmount }}</span>
</template>
<template v-if="column.dataIndex == 'isRecvBC'">
<BulbFilled style="color: green;font-size: 16px;" :title="record.lstRecvBCDate" v-if="record.isRecvBC" />
</template>
<template v-if="column.dataIndex == 'isRecvBKCancel'">
<BulbFilled style="color: red;font-size: 16px;" :title="record.lstRecvBCDate" v-if="record.isRecvBKCancel" />
</template>
<template v-if="column.dataIndex == 'isShipperOwned'">
<CheckCircleFilled v-if="record.isShipperOwned" style="color: green;font-size: 16px;" />
</template>
<template v-if="column.dataIndex === 'action'" >
<a>刷新</a>
</template>
</template>
</BasicTable>
<cabinModal @register="registerModal"></cabinModal>
</div>
</template>
<script lang="ts" setup>
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { PageDataByBooking } from '../../operation/seaexport/api/BookingLedger'
import { columns, searchFormSchema, FeeStatus } from './columns'
import { BulbFilled, CheckCircleFilled } from '@ant-design/icons-vue';
import cabinModal from './detail.vue'
import { useModal } from '/@/components/Modal'
const [registerModal, { openModal }] = useModal()
const [registerTable, { reload, getForm, getPaginationRef, getSelectRows, setProps }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await PageDataByBooking(p)
return new Promise((resolve) => {
resolve({
data: [
{
"vessel": "ARIES",
"voyno": "412S",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-04-01 00:00:00",
"eta": "2024-04-23 00:00:00",
"ctN_STAT": "20OT*8",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "20OT*8",
"totaL_ORDERS": 6,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 8,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 8,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Brisbane,Queensland,Australia",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "AUBNE",
"portdischarge": "BRISBANE, AUSTRALIA",
"portdischargE_COUNTRY_CODE": "AU",
"portdischargE_COUNTRY": "AUSTRALIA"
},
{
"vessel": "ARIES",
"voyno": "412S",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-04-01 00:00:00",
"eta": "2024-04-26 00:00:00",
"ctN_STAT": "40OH*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "40OH*1",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 1,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 1,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Melbourne,Victoria,Australia",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "AUMEL",
"portdischarge": "MELBOURNE,VI,AU",
"portdischargE_COUNTRY_CODE": "AU",
"portdischargE_COUNTRY": "澳大利亚(AUSTRALIA)"
},
{
"vessel": "CHRISTA SCHULTE",
"voyno": "413S",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-03-30 00:00:00",
"eta": "2024-04-21 00:00:00",
"ctN_STAT": "20OT*1 20TK*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "20OT*1 20TK*1",
"totaL_ORDERS": 2,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 2,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 2,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Sydney,New South Wales,Australia",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "AUSYD",
"portdischarge": "SYDNEY, AUSTRALIA",
"portdischargE_COUNTRY_CODE": "AU",
"portdischargE_COUNTRY": "AUSTRALIA"
},
{
"vessel": "COSCO KOREA",
"voyno": "413W",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-03-31 00:00:00",
"eta": "2024-04-25 00:00:00",
"ctN_STAT": "20OT*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "20OT*1",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 1,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 1,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Fremantle,Western Australia,Australia",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "AUFRE",
"portdischarge": "FREMANTLE,WA,AUSTRALIA",
"portdischargE_COUNTRY_CODE": "AU",
"portdischargE_COUNTRY": "AUSTRALIA"
},
{
"vessel": "COSCO KOREA",
"voyno": "413W",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-03-31 00:00:00",
"eta": "2024-05-13 00:00:00",
"ctN_STAT": "40HC*1 20GP*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "40HC*1 20GP*1",
"totaL_ORDERS": 2,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 2,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 2,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Adelaide,South Australia,Australia",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "AUADL",
"portdischarge": "ADELAIDE,SA,AUSTRALIA",
"portdischargE_COUNTRY_CODE": "AU",
"portdischargE_COUNTRY": "AUSTRALIA"
},
{
"vessel": "GSL VINIA",
"voyno": "414S",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-04-10 00:00:00",
"eta": "2024-05-17 00:00:00",
"ctN_STAT": "40HC*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "40HC*1",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 1,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 1,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Lyttelton,New Zealand",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "NZLYT",
"portdischarge": "LYTTELTON, NEW ZEALAND",
"portdischargE_COUNTRY_CODE": "NZ",
"portdischargE_COUNTRY": "NEW ZEALAND"
},
{
"vessel": "CHRISTA SCHULTE",
"voyno": "413S",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-03-30 00:00:00",
"eta": "2024-04-26 00:00:00",
"ctN_STAT": "20OT*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "20OT*1",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 1,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 1,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Melbourne,Victoria,Australia",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "AUMEL",
"portdischarge": "MELBOURNE,VI,AU",
"portdischargE_COUNTRY_CODE": "AU",
"portdischargE_COUNTRY": "澳大利亚(AUSTRALIA)"
},
{
"vessel": "MAERSK YOSEMITE",
"voyno": "415S",
"contracT_NO": "298546855",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-04-03 00:00:00",
"eta": "2024-04-23 00:00:00",
"ctN_STAT": "40NOR*2",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "40NOR*2",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 2,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 2,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Balboa,Panama",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "PABLB",
"portdischarge": "BALBOA,PANAMA",
"portdischargE_COUNTRY_CODE": "PA",
"portdischargE_COUNTRY": "PANAMA"
},
{
"vessel": "MAERSK YOSEMITE",
"voyno": "415S",
"contracT_NO": "298546855",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-04-05 00:00:00",
"eta": "2024-06-10 00:00:00",
"ctN_STAT": "40NOR*3",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "40NOR*3",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 3,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 3,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Caucedo,Dominican Republic",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "DO004",
"portdischarge": "CAUCEDO",
"portdischargE_COUNTRY_CODE": "DO",
"portdischargE_COUNTRY": "DOMINICA"
},
{
"vessel": "GSL VINIA",
"voyno": "414S",
"contracT_NO": "299026908",
"bookinG_SLOT_TYPE": "CONTRACT_ORDER",
"bookinG_SLOT_TYPE_NAME": "合约订舱",
"bookinG_PARTY": "QINGDAO CHENGSI FREIGHT FORWARDER CO",
"carrierid": "MSK",
"carrier": "马士基",
"etd": "2024-04-10 00:00:00",
"eta": "2024-05-11 00:00:00",
"ctN_STAT": "20GP*1",
"usE_CTN_STAT": "",
"remaiN_CTN_STAT": "20GP*1",
"totaL_ORDERS": 1,
"usE_NUM": 0,
"canceL_NUM": 0,
"totaL_CTNS": 1,
"usE_CTNS_NUM": 0,
"remaiN_CTNS_NUM": 1,
"placereceipt": "Qingdao,Shandong,China",
"placedelivery": "Tauranga,New Zealand",
"portloadid": "CNTAO",
"portload": "QINGDAO",
"portdischargeid": "NZTRG",
"portdischarge": "TAURANGA, NEW ZEALAND",
"portdischargE_COUNTRY_CODE": "NZ",
"portdischargE_COUNTRY": "NEW ZEALAND"
}
], total: 10
})
})
},
beforeFetch: (p) => {
var data = getForm().getFieldsValue()
const postParam: API.PageRequest = {
queryCondition: '',
pageCondition: {
pageIndex: p.current,
pageSize: p.pageSize,
sortConditions: []
}
}
console.log(data)
return postParam
},
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
clickToRowSelect: false,
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: true,
showTableSetting: true,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 80,
actionColumn: {
width: 50,
title: '操作',
dataIndex: 'action',
fixed: 'right',
}
})
function handledbclick(record) {
console.log('双击')
}
function handleAdd() {
openModal(true, 123)
}
</script>
<style lang="less" scoped>
/deep/ .ant-form-item {
margin-bottom: 10px !important;
}
/deep/ .ant-card-body {
padding-bottom: 0px !important;
}
.table-operator {
margin-bottom: 18px;
}
.Close {
height: 45px;
overflow: hidden;
}
.vxe-table--render-default .vxe-body--row.row--stripe {
background: #f5f9fe;
}
.ant-card-body {
padding-top: 10px;
}
.inline {
position: relative;
}
.inline-right {
position: absolute;
top: 6px;
right: 25px;
}
.change {
display: flex;
justify-content: center;
margin-top: 25px;
div {
width: 120px;
height: 50px;
background-color: rgb(247, 249, 250);
border: 1px solid rgb(247, 249, 250);
color: rgb(105, 102, 102);
line-height: 50px;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s, background-color 0.3s;
margin-right: 10px;
}
div:hover {
border: 1px solid #d1cfcf;
}
}
</style>

@ -1,8 +1,4 @@
/*
* @Description: tsx
* @Author: lijj
* @Date: 2024-06-03 15:48:33
*/
import { ref } from 'vue'
import { BasicColumn, FormSchema } from '/@/components/Table'
import {
@ -10,58 +6,100 @@ import {
} from '/@/views/operation/seaexport/api/BookingLedger'
// 字典
import { getDictOption } from '/@/utils/dictUtil'
import { GetCtnSelectList } from '/@/api/common'
const FnblType = ref([])
const FncargoId = ref([])
getDictOption('bl_type').then(res => {
FncargoId.value = res
})
//合并单元格
const sharedOnCell = (_, index) => {
if (_.isSPan > 1) {
return {
rowspan: _.isSPan,
colspan: 1
}
}
if (_.isSPan == 0) {
return {
rowspan: _.isSPan,
colspan: 1
}
}
};
const sharedOnCell1 = (_, index) => {
console.log(index, _.isSPan)
};
export const searchFormSchema: FormSchema[] = [
{
field: 'BookingReference',
label: '订舱号',
field: 'SLOT_BOOKING_NO',
label: '位提单号',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'BookingCreator',
label: '订舱人',
component: 'Input',
field: 'STATUS',
label: '舱位状态',
component: 'Select',
componentProps: {
allowClear: true,
optionLabelProp: 'label',
options: [
{
label: '全部',
value: '0'
},
{
label: '未取消',
value: '1'
},
{
label: '已取消',
value: '2'
},
]
},
colProps: { span: 4 },
},
{
field: 'priceReference',
label: '合约号',
field: 'VESSEL',
label: '船名',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'vessel',
label: '船名',
field: 'VOYNO',
label: '航次',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'priceOwnerCompanyName',
label: '持约方公司',
field: 'PORTLOAD',
label: '装货港',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'voyno',
label: '航次号',
field: 'PORTDISCHARGE',
label: '卸货港',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'placeReceiptCity',
label: '始发地',
component: 'Input',
field: 'ETD_START',
label: 'ETD开始',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'eDeparture',
label: '预计离港时间',
component: 'RangePicker',
field: 'ETD_END',
label: 'ETD结束',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
@ -70,137 +108,160 @@ export const searchFormSchema: FormSchema[] = [
}
},
{
field: 'isReefer',
label: '是否冷冻处理',
component: 'Select',
field: 'ETA_START',
label: 'ETA开始',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
optionLabelProp: 'label',
options: [
{
label: '是',
value: '1'
},
{
label: '否',
value: '0'
}
]
},
}
},
{
field: 'ETA_END',
label: 'ETA结束',
component: 'DatePicker',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'bookedByCompanyPartyCode',
label: '订舱公司代码',
field: 'createdUserName',
label: '创建人',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'placeDeliveryCity',
label: '目的地',
field: 'updatedUserName',
label: '更新人',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'etd',
label: 'ETD',
component: 'RangePicker',
required: false,
dynamicDisabled: false,
field: 'CARRIER',
label: '船公司',
component: 'Input',
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
},
{
field: 'commodityCodeType',
label: '货物标志',
field: 'CONTRACT_NO',
label: '合约号',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'SI_RLT_STAT',
label: 'SI回执',
component: 'Select',
colProps: { span: 4 },
componentProps: {
allowClear: true,
optionLabelProp: 'label',
options: [
{
label: 'DRY',
value: 'DRY'
label: '',
value: ''
},
{
label: 'REEFER',
value: 'REEFER'
label: '',
value: ''
}
]
},
colProps: { span: 4 },
},
{
field: 'priceOwnerCompanyPartyCode',
label: '持约方公司代码',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'bookedByCompanyName',
label: '订舱公司',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'eta',
label: 'ETA',
component: 'RangePicker',
required: false,
dynamicDisabled: false,
field: 'VGM_RLT_STAT',
label: 'VGM回执',
component: 'Select',
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
optionLabelProp: 'label',
options: [
{
label: '有',
value: '有'
},
{
label: '无',
value: '无'
}
]
},
},
{
field: 'isbookingPartOwnPrice',
label: '是否持约方',
field: 'CARRIAGE_TYPE',
label: '承运模式',
component: 'Select',
colProps: { span: 4 },
componentProps: {
allowClear: true,
optionLabelProp: 'label',
options: [
{
label: '是',
value: '1'
label: '直达',
value: 'DIRECT_SHIP'
},
{
label: '',
value: '0'
label: '中转',
value: 'TRANSFER_SHIP'
}
]
},
colProps: { span: 4 },
},
{
field: 'job',
label: '定时时间',
component: 'RangePicker',
required: false,
dynamicDisabled: false,
field: 'BOOKING_SLOT_TYPE',
label: '订舱方式',
component: 'Select',
colProps: { span: 4 },
componentProps: {
allowClear: true,
}
optionLabelProp: 'label',
options: [
{
label: '合约订舱',
value: 'CONTRACT_ORDER'
},
{
label: 'SPOT订舱',
value: 'SPOT_ORDER'
}
]
},
},
{
field: 'TotalAmountStart',
label: '预估金额开始',
field: 'LANENAME',
label: '航线名称',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'TotalAmountEnd',
label: '预估金额结束',
field: 'ctN_STAT',
label: '箱型',
colProps: { span: 4 },
component: 'ApiSelect',
componentProps: () => {
return {
api: GetCtnSelectList,
labelField: 'ctnName',
valueField: 'ediCode',
resultField: 'data'
}
}
},
{
field: 'labelIdArray',
label: '标签',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'BookingChannelType',
label: '订舱类别',
field: 'LOAD_GUARANTEE_FLAG',
label: '舱保类型',
component: 'Select',
colProps: { span: 4 },
componentProps: {
@ -208,41 +269,35 @@ export const searchFormSchema: FormSchema[] = [
optionLabelProp: 'label',
options: [
{
label: '合约订舱',
value: 'CON_API'
label: '全部舱保',
value: 'FULL'
},
{
label: 'SPOT订舱',
value: 'SPOT_API'
label: '部分舱保',
value: 'PART'
}
]
},
},
{
field: 'TotalCurrency',
label: '预估币别',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'carrierId',
label: '船公司',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
field: 'spliT_OR_MERGE_FLAG',
label: '拆/合票',
component: 'Select',
colProps: { span: 4 },
componentProps: () => {
return {
api: GetCarrierlist,
immediate: false,
labelField: 'shortName',
valueField: 'id',
resultField: 'data',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
componentProps: {
allowClear: true,
optionLabelProp: 'label',
options: [
{
label: '拆票',
value: 1
},
{
label: '合票',
value: 2
}
}
}
]
},
},
{
label: ' ',
@ -252,219 +307,372 @@ export const searchFormSchema: FormSchema[] = [
colProps: { span: 4 },
},
]
// 费用状态
export const FeeStatus = [
'审核通过',
'录入状态',
'提交审核',
'申请修改 ',
'申请删除',
'撤销申请',
'驳回提交',
'驳回申请, 部分结算, 结算完毕',
]
//列表
export const columns: BasicColumn[] = [
{
title: '订舱号',
title: '标签',
align: 'center',
width: 100,
dataIndex: 'bookingReference'
dataIndex: 'labelList',
customCell: sharedOnCell,
},
{
title: '舱位提单号',
align: 'center',
width: 160,
dataIndex: 'sloT_BOOKING_NO',
customCell: sharedOnCell,
},
{
title: '类别',
title: '订舱编号',
align: 'center',
width: 60,
dataIndex: 'bookingChannelTypeName'
width: 150,
dataIndex: 'sloT_NO',
customCell: sharedOnCell,
},
{
title: '起运港',
title: '船名/航次',
align: 'center',
width: 150,
dataIndex: 'vessel',
customCell: sharedOnCell,
},
{
title: '船公司',
align: 'center',
width: 100,
dataIndex: 'placeReceiptCity'
dataIndex: 'carrier',
customCell: sharedOnCell,
},
{
title: '目的港',
title: '合约号',
align: 'center',
width: 100,
dataIndex: 'placeDeliveryCity'
dataIndex: 'contracT_NO',
customCell: sharedOnCell,
},
{
title: '箱型箱量',
title: '承运模式',
align: 'center',
width: 80,
dataIndex: 'ctnStat'
width: 100,
dataIndex: 'carriagE_TYPE_NAME',
customCell: sharedOnCell,
},
{
title: '船名/航次',
title: '订舱方式',
align: 'center',
width: 200,
dataIndex: 'vessel'
width: 100,
dataIndex: 'bookinG_SLOT_TYPE_NAME',
customCell: sharedOnCell,
},
{
title: 'ETD',
align: 'center',
width: 100,
dataIndex: 'etd'
dataIndex: 'etd',
customCell: sharedOnCell,
},
{
title: '总重KGS',
title: 'ETA',
align: 'center',
width: 130,
dataIndex: 'totalCargoWeight'
width: 100,
dataIndex: 'eta',
customCell: sharedOnCell,
},
{
title: '合约号',
title: 'CANCELLATION',
align: 'center',
width: 160,
dataIndex: 'priceReference'
width: 150,
dataIndex: 'iS_CANCELLATION',
customCell: sharedOnCell,
},
{
title: '船公司',
title: '委托单位',
align: 'center',
width: 100,
dataIndex: 'customername',
},
{
title: '客服',
align: 'center',
width: 100,
dataIndex: 'custservice'
},
{
title: '操作',
align: 'center',
width: '80',
dataIndex: 'op'
},
{
title: '单证',
align: 'center',
width: '80',
dataIndex: 'doc'
},
{
title: '商务',
align: 'center',
width: '80',
dataIndex: 'business'
},
{
title: '销售',
align: 'center',
width: 100,
dataIndex: 'sale'
},
{
title: 'SHIPPER',
align: 'center',
width: 100,
dataIndex: 'shipper'
},
{
title: '品名',
align: 'center',
width: 100,
dataIndex: 'goodsname'
},
{
title: '卖价',
align: 'center',
width: 100,
dataIndex: 'sellinG_PRICE'
},
{
title: '销售日期',
align: 'center',
width: 100,
dataIndex: 'carrierId'
dataIndex: 'salE_TIME'
},
{
title: 'BC',
title: '是否拆合票',
align: 'center',
width: 50,
dataIndex: 'isRecvBC'
width: 100,
dataIndex: 'spliT_OR_MERGE_FLAG',
customCell: sharedOnCell,
},
{
title: 'Cancellation',
title: '舱保类型',
align: 'center',
width: 100,
dataIndex: 'isRecvBKCancel'
dataIndex: 'loaD_GUARANTEE_FLAG_NAME',
customCell: sharedOnCell1,
},
{
title: '收货地',
align: 'center',
width: '180',
dataIndex: 'placereceipt',
customCell: sharedOnCell,
},
{
title: '交货地',
align: 'center',
width: '180',
dataIndex: 'placedelivery',
customCell: sharedOnCell,
},
{
title: '装货港',
align: 'center',
width: '180',
dataIndex: 'portload',
customCell: sharedOnCell,
},
{
title: '卸货港',
align: 'center',
width: '180',
dataIndex: 'portdischarge',
customCell: sharedOnCell,
},
{
title: '卸货港国家',
align: 'center',
width: '180',
dataIndex: 'portdischargE_COUNTRY',
customCell: sharedOnCell,
},
{
title: '箱型箱量',
align: 'center',
width: 100,
dataIndex: 'ctN_STAT',
customCell: sharedOnCell,
},
{
title: 'WEEK',
align: 'center',
width: 100,
dataIndex: 'weeK_AT',
customCell: sharedOnCell,
},
{
title: '样单截止时间',
align: 'center',
width: 150,
dataIndex: 'sI_CUT_DATE',
customCell: sharedOnCell,
},
{
title: 'VGM截止时间',
align: 'center',
width: 150,
dataIndex: 'vgM_SUBMISSION_CUT_DATE',
customCell: sharedOnCell,
},
{
title: '截港时间',
align: 'center',
width: 150,
dataIndex: 'cY_CUT_DATE',
customCell: sharedOnCell,
},
{
title: '状态',
title: '入港清单截止',
align: 'center',
width: 130,
dataIndex: 'statusName'
width: 150,
dataIndex: 'manifesT_CUT_DATE',
customCell: sharedOnCell,
},
{
title: 'SOC',
title: 'MDGF截止',
align: 'center',
width: 50,
dataIndex: 'isShipperOwned'
width: 150,
dataIndex: 'mdgF_CUT_DATE',
customCell: sharedOnCell,
},
{
title: '订舱人',
title: '航线',
align: 'center',
width: 130,
dataIndex: 'createdUserName'
width: 100,
dataIndex: 'lanename',
customCell: sharedOnCell,
},
{
title: '订舱日期',
title: '创建日期',
align: 'center',
width: 150,
dataIndex: 'createdTime'
dataIndex: 'createdTime',
customCell: sharedOnCell,
},
{
title: '金额',
title: '创建人',
align: 'center',
width: 100,
dataIndex: 'shipRateTotalAmount'
dataIndex: 'createdUserName',
customCell: sharedOnCell,
},
{
title: '发送结果',
title: '更新日期',
align: 'center',
width: 150,
dataIndex: 'notes',
ellipsis: true
}
]
// BatchModification表单
export const BatchModificationFormSchema: FormSchema[] = [
dataIndex: 'updatedTime',
customCell: sharedOnCell,
},
{
label: '场站联系方式',
field: 'YardTel',
component: 'Input',
show: false,
title: '更新人',
align: 'center',
width: 100,
dataIndex: 'updatedUserName',
customCell: sharedOnCell,
},
{
label: '场站联系人',
field: 'YardATTN',
component: 'Input',
show: false,
title: 'VGM回执',
align: 'center',
width: 100,
dataIndex: 'VGM_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '',
field: 'InnerVoyno',
component: 'Input',
show: false,
title: 'SI回执',
align: 'center',
width: 100,
dataIndex: 'SI_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '',
field: 'AgentContent',
component: 'Input',
show: false,
title: '提箱',
align: 'center',
width: 100,
dataIndex: 'TAKE_CTN_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '',
field: 'TemperatureSet',
component: 'Input',
show: false,
title: '还箱',
align: 'center',
width: 100,
dataIndex: 'RETURN_CTN_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '',
field: 'yard',
component: 'Input',
show: false,
title: '预甩',
align: 'center',
width: 100,
dataIndex: 'NOMINATION_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '',
field: 'carrier',
component: 'Input',
show: false,
title: '舱位变更',
align: 'center',
width: 100,
dataIndex: 'AMENDMENT_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '订舱代理',
field: 'forwarder',
component: 'Input',
show: false,
title: '舱位取消',
align: 'center',
width: 100,
dataIndex: 'CANCELLATION_RLT_STAT',
customCell: sharedOnCell,
},
{
label: '船司航线',
field: 'Lane',
component: 'Input',
show: false,
title: '卸船未提货',
align: 'center',
width: 100,
dataIndex: 'DISCHARGE_FULL_RLT_STAT',
customCell: sharedOnCell,
},
{
field: 'hblno',
label: '分提单号',
component: 'Input',
required: false,
dynamicDisabled: false,
colProps: { span: 4 },
title: '提箱未还空箱',
align: 'center',
width: 150,
dataIndex: 'GATE_OUTFULL_RLT_STAT',
customCell: sharedOnCell,
},
{
field: 'agent',
label: 'AGENT',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
colProps: { span: 12 },
componentProps: {
rows: 3,
},
title: '费用信息',
align: 'center',
width: 100,
dataIndex: 'typeCode',
customCell: sharedOnCell,
},
{
field: 'Remark',
label: '备注',
component: 'InputTextArea',
required: false,
dynamicDisabled: false,
colProps: { span: 12 },
componentProps: {
rows: 3,
},
title: '备注',
align: 'center',
width: 100,
dataIndex: 'remark',
customCell: sharedOnCell,
},
{
title: '计费时间',
align: 'center',
width: 100,
dataIndex: 'pricE_CALCULATION_DATE',
customCell: sharedOnCell,
},
{
title: '操作',
align: 'center',
width: 100,
dataIndex: 'action',
customCell: sharedOnCell,
fixed: 'right'
},
]

File diff suppressed because it is too large Load Diff

@ -1,8 +1,4 @@
/*
* @Description: tsx
* @Author: lijj
* @Date: 2024-06-03 15:48:33
*/
import { ref } from 'vue'
import { BasicColumn, FormSchema } from '/@/components/Table'
import {
@ -252,17 +248,7 @@ export const searchFormSchema: FormSchema[] = [
colProps: { span: 4 },
},
]
// 费用状态
export const FeeStatus = [
'审核通过',
'录入状态',
'提交审核',
'申请修改 ',
'申请删除',
'撤销申请',
'驳回提交',
'驳回申请, 部分结算, 结算完毕',
]
//列表
export const columns: BasicColumn[] = [
{
@ -376,14 +362,6 @@ export const columns: BasicColumn[] = [
}
]
export const detailSchemas: FormSchema[] = [
{
field: 'BookingReference',
label: '订舱号',
component: 'Input',
colProps: { span: 4 },
},
]

@ -370,9 +370,6 @@
</template>
</a-table>
<a-form-item>
<a-checkbox v-model:value="form.isShipperOwned">我希望使用托运人自己的集装箱</a-checkbox>
<a-checkbox v-model:value="form.isImportReturned">我想使用进口退货集装箱或者其他三角集运选项</a-checkbox>
@ -563,6 +560,7 @@
<script lang="ts" setup>
import { ref, reactive, UnwrapRef } from 'vue'
import { BasicModal, useModalInner } from '/@/components/Modal'
import { GetCtnSelectList } from '/@/views/operation/seaexport/api/BookingLedger'
import {
getContractno, SearchCommodities, SearchShipSailingSchedule, mskGetGetInfoSpot, mskGetSaveSpot,
SearchLocations, SendMSKBooking, mskGetSave, mskGetGetInfo, GetInitInfoMsk, SendMSKBookingSpot, GetInitInfoMskApi,

@ -663,6 +663,7 @@ const [registerTable, { reload, getForm, getPaginationRef, getSelectRows, setPro
pagination: true,
striped: true,
useSearchForm: true,
rowSelection:true,
showTableSetting: true,
bordered: true,
showIndexColumn: true,
@ -671,7 +672,6 @@ const [registerTable, { reload, getForm, getPaginationRef, getSelectRows, setPro
},
canResize: true,
resizeHeightOffset: 80,
actionColumn: {
width: 80,
title: '操作',

@ -633,6 +633,14 @@ export function GetFactorySelectList(parameter) {
params: parameter,
})
}
// 获取国家下拉列表-客户端 (Auth)
export function GetCodeCountryList(parameter) {
return request({
url: '/mainApi/CodeCountry/GetCodeCountrySelectList',
method: 'post',
data: parameter,
})
}
// 海运出口规则引擎校验 (Auth)
export function ExcuteRuleEngine(parameter) {
return request({

Loading…
Cancel
Save