sunzehua 3 months ago
commit cce0f86b2d

@ -7,7 +7,7 @@
@menu-event="handleMenuEvent"
>
<div v-if="getIsTabs" :class="`${prefixCls}__info`" @contextmenu="handleContext">
<span class="ml-1">{{ getTitle }}</span>
<span class="ml-1">{{ RText(getTitle) }}</span>
</div>
<span v-else :class="`${prefixCls}__extra-quick`" @click="handleContext">
<Icon icon="ion:chevron-down" />
@ -46,29 +46,29 @@
const { tabItem: { meta } = {} } = props
return meta && t(meta.title as string)
})
// function RText(data) {
// let Rdata = ''
// if (data == '-') {
// if (props.tabItem.query.isCopy) {
// if (props.tabItem.query.copyId) {
// Rdata = `-${Number(props.tabItem.query.copyId) + 1}`
// } else {
// Rdata = '-'
// }
// } else if (props.tabItem.query.mblno) {
// Rdata = `${props.tabItem.query.mblno}-`
// } else if (props.tabItem.query.customerNo) {
// Rdata = `${props.tabItem.query.customerNo}-`
// } else if (props.tabItem.query.addNum) {
// Rdata = '-'
// } else {
// Rdata = '-'
// }
// } else {
// Rdata = data
// }
// return Rdata
// }
function RText(data) {
let Rdata = ''
if (data == '海运出口-详情') {
if (props.tabItem.query.isCopy) {
if (props.tabItem.query.copyId) {
Rdata = `海运出口-复制${Number(props.tabItem.query.copyId) + 1}`
} else {
Rdata = '海运出口-复制'
}
} else if (props.tabItem.query.mblno) {
Rdata = `${props.tabItem.query.mblno}-详情`
} else if (props.tabItem.query.customerNo) {
Rdata = `${props.tabItem.query.customerNo}-详情`
} else if (props.tabItem.query.addNum) {
Rdata = '海运出口-新增'
} else {
Rdata = '海运出口-详情'
}
} else {
Rdata = data
}
return Rdata
}
const getIsTabs = computed(() => !props.isExtra)
const getTrigger = computed((): ('contextmenu' | 'click' | 'hover')[] =>
@ -94,7 +94,7 @@
getTrigger,
getIsTabs,
getTitle,
// RText,
RText,
}
},
})

@ -153,8 +153,8 @@ export const columns: BasicColumn[] = [
width: 200,
},
{
title: '生产日期',
dataIndex: '',
title: '生产日期',
dataIndex: 'productionDate',
sorter: true,
width: 200,
},

@ -43,7 +43,7 @@
</div>
</div>
<div class="SearchBox">
<BasicForm class="Form" @register="registerSearchBoxForm" />
<BasicForm class="Form" @register="registerSearchBoxForm" :disabledDate="disabledDate" />
<div class="ButtonBox">
<a-button size="default" @click="handleReset" :disabled="!rowId"> 重置 </a-button>
<a-button
@ -137,6 +137,15 @@
@click="handleSave(true)"
>保存并关闭</a-button
>
<a-button
pre-icon="ant-design:check-circle-outlined"
type="primary"
:loading="loading"
:disabled="!rowId"
@click="MakeFee()"
>
生成费用
</a-button>
</template>
</BasicModal>
</template>
@ -178,7 +187,7 @@
const loading = ref(false)
const rowId = ref('')
const height = ref(300)
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
const [registerForm, { resetFields, setFieldsValue, getFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
@ -192,6 +201,7 @@
Viewlist.value.splice(0)
list.value.splice(0)
if (unref(isUpdate)) {
// setModalProps({ confirmLoading: true });
rowId.value = data.record.id
@ -199,8 +209,6 @@
if (res.succeeded) {
allCheck.value = false
someCheck.value = false
console.log(res.data)
setFieldsValue({
...res.data,
})
@ -209,19 +217,69 @@
ViewlallCheck.value = false
ViewlsomeCheck.value = false
resetSearchBoxFields()
GetViewListDetail(
`[{ FieldName: 'Pid', FieldValue: '${rowId.value}', ConditionalType: 1 }]`,
)
GetViewListDetail(null, res.data)
}
} else {
setFieldsValue({})
rowId.value = ''
}
setModalProps({ loading: false })
})
function GetViewListDetail(queryCondition) {
function GetViewListDetail(data, resData) {
console.log(data, resData)
let queryCondition: any = []
if (getFieldsValue().customerId || resData.customerId) {
queryCondition.push({
ConditionalList: [
{
Key: 0,
Value: {
FieldName: 'oldContainerOwnerId',
FieldValue: getFieldsValue().customerId || resData.customerId,
ConditionalType: 0,
},
},
{
Key: 1,
Value: {
FieldName: 'rentCustomerId',
FieldValue: getFieldsValue().customerId || resData.customerId,
ConditionalType: 0,
},
},
],
})
}
if (getFieldsValue().billStartDate || resData.billStartDate) {
queryCondition.push({
ConditionalList: [
{
Key: 0,
Value: { FieldName: 'dropoffdate', FieldValue: 'null', ConditionalType: 0 },
},
{
Key: 1,
Value: {
FieldName: 'dropoffdate',
FieldValue: getFieldsValue().billStartDate || resData.billStartDate,
ConditionalType: 3,
},
},
],
})
}
if (data) {
data.forEach((item) => {
queryCondition.push(item)
})
}
ApiDetailView({
queryCondition,
queryCondition: JSON.stringify(queryCondition),
pageCondition: { pageIndex: 1, pageSize: 999, sortConditions: [] },
}).then((res) => {
Viewlist.value.splice(0)
@ -245,7 +303,6 @@
list.value.splice(0)
let Arr = ['pickupDate', 'dropoffDate', 'feeStartDate', 'bsdate']
res.data.forEach((item) => {
console.log(item)
Arr.forEach((e) => {
if (item[e]) {
item[e] = item[e].split(' ')[0]
@ -255,6 +312,11 @@
})
})
}
function MakeFee() {
ApiMakeFee({ id: rowId.value }).then((res) => {
notification.success({ message: res.message, duration: 3 })
})
}
async function handleSave(exit) {
try {
const values = await validate()
@ -579,6 +641,8 @@
}
}
//--------------------------------------- tab1 View ---------------------------------------
const disabledDate = ref(['2024/08/10', '2024/08/20'])
const [
registerSearchBoxForm,
{ resetFields: resetSearchBoxFields, validate: validateSearchBox },
@ -785,15 +849,10 @@
Object.keys(values).forEach((item) => {
if (values[item]) {
console.log(values[item].split(','))
if (item == 'cntrno') {
ApiData.push({ FieldName: item, FieldValue: values[item], ConditionalType: 15 })
} else {
ApiData.push({ FieldName: item, FieldValue: values[item], ConditionalType: 1 })
}
ApiData.push({ FieldName: item, FieldValue: values[item], ConditionalType: 5 })
}
})
GetViewListDetail(JSON.stringify(ApiData))
GetViewListDetail(ApiData, null)
}
function ViewTableAdd() {
let ApiData: any = { id: rowId.value, ids: [] }
@ -814,9 +873,7 @@
ViewlsomeCheck.value = false
GetListDetail()
resetSearchBoxFields()
GetViewListDetail(
`[{ FieldName: 'Pid', FieldValue: '${rowId.value}', ConditionalType: 1 }]`,
)
GetViewListDetail(null, null)
}
// getData(false)
notification.success({ message: res.message, duration: 3 })

@ -13,7 +13,7 @@ enum Api {
// Confirm = '/containerManagementApi/CM_RentIn/CM_RentIn_Confirm',
// Cancel = '/containerManagementApi/CM_RentIn/CM_RentIn_Cancel',
// MakeFee = '/containerManagementApi/CM_RentIn/CM_RentIn_MakeFee',
MakeFee = '/containerManagementApi/CM_CustFeeDui/CM_CustFeeDui_MakeFee',
DetailView = '/containerManagementApi/CM_CustFeeDui/GetVW_CM_FeeBase_Detail',
AddCtn = '/containerManagementApi/CM_CustFeeDui/AddVW_CM_FeeBase_Detail',

@ -1,6 +1,7 @@
import { ref } from 'vue'
import { BasicColumn, FormSchema } from '/@/components/Table'
import { Tag } from 'ant-design-vue'
import dayjs from 'dayjs'
import { GetCtnSelectList, GetClientListByCode } from '/@/api/common'
import { GetDeptList } from '/@/views/operation/seaexport/api/BookingLedger'
import { useOptionsStore } from '/@/store/modules/options'
@ -24,6 +25,7 @@ const usedStateList = [
value: 'new',
},
]
const billEndDate = ref()
// 业务类型字典
const businessTypeDict = ref([])
getDictOption('CM_BusinessType').then((res) => {
@ -101,8 +103,26 @@ export const columns: BasicColumn[] = [
},
},
{
title: '费用状态??',
dataIndex: 'billno',
title: '应收费用状态',
dataIndex: 'arFeeStatusName',
sorter: true,
width: 150,
},
{
title: '应付费用状态',
dataIndex: 'apFeeStatusName',
sorter: true,
width: 150,
},
{
title: '应收开票状态',
dataIndex: 'arInvoiceStatusName',
sorter: true,
width: 150,
},
{
title: '应付开票状态',
dataIndex: 'apInvoiceStatusName',
sorter: true,
width: 150,
},
@ -276,12 +296,27 @@ export const formSchema: FormSchema[] = [
colProps: { span: 6 },
defaultValue: '',
required: true,
componentProps: {
showTime: false,
allowClear: true,
valueFormat: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
style: 'width:100%',
componentProps: ({ formModel }) => {
return {
showTime: false,
allowClear: true,
valueFormat: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
style: 'width:100%',
onChange: (e, obj) => {
if (e && obj) {
setTimeout(() => {
billEndDate.value = formModel.billEndDate
}, 100)
}
if (!obj && !e) {
setTimeout(() => {
billEndDate.value = ''
}, 100)
}
},
}
},
},
{
@ -344,30 +379,6 @@ export const formSchema: FormSchema[] = [
]
export const formSearchBoxSchema: FormSchema[] = [
{
field: 'ctnBizstateId',
label: '业务信息',
component: 'ApiSelect',
required: false,
colProps: { span: 6 },
componentProps: ({ formModel }) => {
return {
allowClear: true,
showSearch: true,
api: GetClientListByCode,
params: { code: 'leasing' },
labelField: 'pinYinCode',
showName: 'shortName',
valueField: 'shortName',
resultField: 'data',
immediate: false,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
}
},
},
{
field: 'feestartdate',
label: '按日明细',
@ -380,6 +391,9 @@ export const formSearchBoxSchema: FormSchema[] = [
valueFormat: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
style: 'width:100%',
disabledDate: (current) => {
return current && current <= dayjs(billEndDate.value).subtract(0, 'day')
},
},
},
]

@ -2,7 +2,8 @@
import { request } from '/@/utils/request'
import { DataResult, PageRequest } from '/@/api/model/baseModel'
enum Api {
list = '/containerManagementApi/CM_State_Change/GetCM_State_ChangeList',
list = '/containerManagementApi/CM_CurrentState/GetCM_CurrentStateList',
Changelist = '/containerManagementApi/CM_State_Change/GetCM_State_ChangeList',
edit = '/containerManagementApi/CM_State_Change/EditCM_State_Change',
multiEdit = '/containerManagementApi/CM_State_Change/CM_State_Change_Multi',
Changeinfo = '/containerManagementApi/CM_State_Change/GetCM_State_Change',
@ -16,6 +17,14 @@ enum Api {
ExistList = '/mainApi/CodeCtn/GetExistCodeCtnList',
Import = '/mainApi/CodeCtn/ImportCodeCtn',
}
// 列表 (Auth)
export function ApiList(data: PageRequest) {
return request<DataResult>({
url: Api.list,
method: 'post',
data,
})
}
// 批量上线 (Auth)
export function ApiOnLine(data: PageRequest) {
return request<DataResult>({
@ -35,7 +44,7 @@ export function ApiOffLine(data: PageRequest) {
// 列表 (Auth)
export function ApiChangeList(data: PageRequest) {
return request<DataResult>({
url: Api.list,
url: Api.Changelist,
method: 'post',
data,
})

@ -17,7 +17,7 @@
<script lang="ts" setup>
import { ref } from 'vue'
import { BasicTable, useTable } from '/@/components/Table'
import { ApiChangeList, ApiChangeDel, ApiOnLine, ApiOffLine } from './api'
import { ApiList, ApiOnLine, ApiOffLine } from './api'
import { columns, searchFormSchema } from './columns'
import { useMessage } from '/@/hooks/web/useMessage'
const { notification } = useMessage()
@ -26,7 +26,7 @@
const [registerTable, { reload, getSelectRows }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await ApiChangeList(p)
const res: API.DataResult = await ApiList(p)
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})

@ -140,6 +140,7 @@
DeleteInvoiceHeader,
cbDelete,
} from './api'
import { GetClientSourceDetailSelectList } from '/@/views/operation/seaexport/api/BookingLedger'
import ClientAccountDateModal from './ClientAccountDateModal.vue'
import { useMessage } from '/@/hooks/web/useMessage'
const { notification } = useMessage()
@ -179,11 +180,12 @@
console.log(nval, oval)
}
})
const [registerForm1, { resetFields, getFieldsValue, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
})
const [registerForm1, { resetFields, getFieldsValue, setFieldsValue, validate, updateSchema }] =
useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
})
const [
registerForm2,
{
@ -333,6 +335,30 @@
await setFieldsValue({
...res.data,
})
let Arr: any = []
await GetClientSourceDetailSelectList({ id: res.data.sourceId }).then((res) => {
res.data.forEach((item) => {
Arr.push({ label: item.detailName, value: item.id })
})
})
updateSchema({
label: '来源明细',
field: 'sourceDetailId',
component: 'Select',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 4 },
componentProps: {
allowClear: true,
options: Arr,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
},
})
activeKey.value = '2'
await setFieldsValue1({
...res.data,

@ -19,7 +19,10 @@ import {
getDeptList,
GetFeeCurrencySelectList,
} from '/@/api/common'
import { GetClientSourceDetailSelectList } from '/@/views/operation/seaexport/api/BookingLedger'
import { getOrgTree } from '/@/api/system/org'
import { useOptionsStore } from '/@/store/modules/options'
const optionsStore = useOptionsStore()
let ClientFrtList = []
const res: API.DataResult = await getClientFrtSelectList()
if (res.succeeded) {
@ -550,12 +553,12 @@ export const formSchema: FormSchema[] = [
{
field: 'codeName',
label: '助记码',
required: true,
// required: true,
component: 'Input',
defaultValue: '',
// dynamicDisabled: ({ values }) => {
// return values.id != ''
// },
dynamicDisabled: ({ values }) => {
return true
},
colProps: { span: 4 },
},
{
@ -736,26 +739,95 @@ export const formSchema: FormSchema[] = [
},
},
{
field: 'divider-selects',
field: 'divider-selects2',
component: 'Divider',
label: '业务属性及干系人',
colProps: { span: 24 },
},
// {
// field: 'sourceId',
// label: '业务来源',
// component: 'Select',
// colProps: { span: 4 },
// defaultValue: '',
// componentProps: {
// options: ClientSourceList,
// allowClear: true,
// showSearch: true,
// filterOption: (input: string, option: any) => {
// return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
// },
// },
// },
{
field: 'sourceId',
label: '业务来源',
component: 'Select',
field: 'sourceId',
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 4 },
defaultValue: '',
componentProps: {
options: ClientSourceList,
allowClear: true,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
componentProps: ({ formActionType, formModel }) => {
return {
allowClear: true,
showSearch: true,
option: optionsStore.getOptionsByCode('GetClientSourceSelectList'),
labelField: 'sourceName',
valueField: 'id',
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
onChange: async (e, obj) => {
// if (e && obj) {
// formModel.sourceCode = obj.sourceCode
// }
// if (!e && !obj) {
// formModel.sourceCode = null
// }
if (e) {
if (formActionType) {
const { updateSchema } = formActionType
let Arr: any = []
await GetClientSourceDetailSelectList({ id: e }).then((res) => {
res.data.forEach((item) => {
Arr.push({ label: item.detailName, value: item.id })
})
})
updateSchema({
label: '来源明细',
field: 'sourceDetailId',
component: 'Select',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 4 },
componentProps: {
allowClear: true,
options: Arr,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
},
})
}
}
formModel.sourceDetailId = ''
},
}
},
},
{
label: '来源明细',
field: 'sourceDetailId',
component: 'Select',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 4 },
},
{
field: 'saleId',
label: '揽货人',

@ -20,13 +20,13 @@ export const columns: BasicColumn[] = [
// width: 150,
// },
{
title: '客户参数类',
dataIndex: 'paramType',
title: '客户参数类',
dataIndex: 'paramName',
width: 150,
},
{
title: '客户参数名称',
dataIndex: 'paramName',
dataIndex: 'itemName',
width: 200,
},
{
@ -38,7 +38,7 @@ export const columns: BasicColumn[] = [
export const searchFormSchema: FormSchema[] = [
{
field: 'paramName',
field: 'itemName',
label: '客户参数名称',
colProps: { span: 6 },
component: 'Input',
@ -70,11 +70,12 @@ export const formSchema: FormSchema[] = [
GetTenantParamDataSelectList({ code: e }).then((res) => {
itemNameOption.value = res.data
})
if (obj) {
if (e && obj) {
formModel.paramName = obj.label
formModel.paramId = obj.id
formModel.paramType = obj.type
} else {
}
if (!e && !obj) {
formModel.paramName = ''
formModel.paramId = ''
formModel.paramType = ''

@ -528,7 +528,7 @@ export const columns: BasicColumn[] = [
width: 150,
},
{
title: '订舱代理',
title: '订舱',
dataIndex: 'forwarder',
sorter: true,
width: 150,
@ -1412,13 +1412,13 @@ export const BatchModificationFormSchema: FormSchema[] = [
},
},
{
label: '订舱代理',
label: '',
field: 'forwarder',
component: 'Input',
show: false,
},
{
label: '订舱代理',
label: '订舱',
field: 'forwarderId',
component: 'ApiSelect',
required: false,

@ -768,6 +768,7 @@ export const mailingInfoFormSchemaR: FormSchema[] = [
colProps: { span: 5 },
componentProps: {
allowClear: true,
showTime: true,
valueFormat: 'YYYY-MM-DD HH:mm'
},
},
@ -1721,8 +1722,9 @@ export const cargoInfoFormSchema2: FormSchema[] = [
componentProps: ({ formModel }) => {
return {
api: GetClientGoodsList,
labelField: 'goodName',
labelField: 'pinYinCode',
valueField: 'goodName',
showName: 'goodName',
immediate: false,
resultField: 'data',
onChange: (v, obj) => {
@ -2292,12 +2294,9 @@ export const otherInfoFormSchema: FormSchema[] = [
component: 'ApiSelect',
required: false,
dynamicDisabled: false,
// defaultValue: '',
colProps: { span: 12 },
componentProps: ({ formActionType, formModel }) => {
componentProps: ({ formModel }) => {
return {
allowClear: true,
showSearch: true,
option: optionsStore.getOptionsByCode('GetClientSourceSelectList'),
labelField: 'sourceName',
valueField: 'id',
@ -2307,53 +2306,52 @@ export const otherInfoFormSchema: FormSchema[] = [
onChange: async (e, obj) => {
if (e && obj) {
formModel.sourceCode = obj.sourceCode
formModel.sourceDetailId = null
formModel.sourceDetailName = null
}
if (!e && !obj) {
formModel.sourceCode = null
}
if (e) {
if (formActionType) {
const { updateSchema } = formActionType
let Arr: any = []
await GetClientSourceDetailSelectList({ id: e }).then((res) => {
res.data.forEach((item) => {
Arr.push({ label: item.detailName, value: item.id })
})
})
updateSchema({
label: '来源明细',
field: 'sourceDetailId',
component: 'Select',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 12 },
componentProps: {
allowClear: true,
options: Arr,
showSearch: true,
filterOption: (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
},
})
}
}
formModel.sourceDetailId = ''
},
}
},
},
{
label: '来源明细',
field: 'sourceDetailId',
component: 'Select',
field: 'sourceDetailName',
component: 'ApiSelect',
required: false,
dynamicDisabled: ({ values }) => {
return !values.sourceId
},
colProps: { span: 12 },
componentProps: ({ formModel }) => {
return {
api: GetClientSourceDetailSelectList,
params: {
id: formModel.sourceId
},
immediate: false,
labelField: 'detailName',
valueField: 'detailName',
resultField: 'data',
onChange: (v, obj) => {
if (v && obj) {
console.log(obj)
formModel.sourceDetailId = obj.id
}
if (!v && !obj) {
formModel.sourceDetailId = null
}
}
}
}
},
{
label: '',
field: 'sourceDetailId',
component: 'Input',
show: false,
},
{
label: '',

@ -18,7 +18,7 @@
</a-button>
</ConfigForm>
<div>
<input ref="customerNoRef" :style="{width: `${formData.customerNo.length * 7}px`}" class="customerNo" v-model="formData.customerNo"/>
<input ref="customerNoRef" :style="{width: `${formData.customerNo?.length * 7}px`}" class="customerNo" v-model="formData.customerNo"/>
<span @click="editCustomerNo" class="iconfont icon-bianji1"></span>
<Divider type="vertical"/>
<a-dropdown>

@ -449,7 +449,7 @@ const [registerTable, { reload, getForm, setLoading, getSelectRows }] = useTable
})
function editColumns(row) {
if (row.mblno) {
go(`/BookingDetail?id=${row.id}&source=edit`)
go(`/BookingDetail?id=${row.id}&source=edit&mblno=${row.mblno}`)
} else {
go(`/BookingDetail?id=${row.id}&customerNo=${row.customerNo}&source=edit`)
}

@ -266,7 +266,7 @@ export default {
{ field: 'shipagency', label: 'SHIPAGENCY', width: 160, title: '船代', showHeaderOverflow: true, sortable: true },
{ field: 'custno', label: 'CUSTNO', width: 160, title: '订舱编号', showHeaderOverflow: true, sortable: true, slots: { default: 'custno' } },
// { field: 'vgm', label: 'VGM', width: 120, title: 'VGM', showHeaderOverflow: true },
{ field: 'forwarder', label: 'FORWARDER', width: 120, title: '订舱代理', showHeaderOverflow: true, sortable: true },
{ field: 'forwarder', label: 'FORWARDER', width: 120, title: '订舱', showHeaderOverflow: true, sortable: true },
// { field: 'bookingStatus', label: 'BOOKINGSTATUS', width: 120, title: '订舱状态', showHeaderOverflow: true },
{
field: 'freightpayer',
@ -533,7 +533,7 @@ export default {
showLabel: 'enName',
showLabel2: 'cnName'
},
{ title: '订舱代理', align: 'center', width: 120, label: 'FORWARDER', type: 'complete', showLabel: 'shortName' },
{ title: '订舱', align: 'center', width: 120, label: 'FORWARDER', type: 'complete', showLabel: 'shortName' },
{
title: '场站',
align: 'center',

Loading…
Cancel
Save