lijingjia 4 months ago
commit 74954f49b8

@ -76,7 +76,7 @@
"vue-json-pretty": "^2.0.6",
"vue-router": "^4.0.14",
"vue-types": "^4.1.1",
"vuedraggable": "^2.24.3",
"vuedraggable": "^4.1.0",
"vuex": "^4.1.0",
"vxe-table": "^4.5.21",
"vxe-table-plugin-export-xlsx": "^3.0.4",

@ -3,7 +3,8 @@
v-bind="$attrs"
:use-wrapper="true"
title="箱状态批量维护"
width="55%"
width="30%"
:height="600"
@register="registerModal"
@ok="handleSave"
>

@ -1,5 +1,4 @@
import { BasicColumn, FormSchema } from '/@/components/Table'
import { Tag } from 'ant-design-vue'
import { GetCtnSelectList } from '/@/api/common'
export const columns: BasicColumn[] = [
{
@ -15,128 +14,14 @@ export const columns: BasicColumn[] = [
width: 150,
},
{
title: '集装箱类型',
dataIndex: 'ctnType',
sorter: true,
width: 200,
},
{
title: '新旧箱',
dataIndex: 'usedState',
sorter: true,
width: 200,
},
{
title: '箱主',
dataIndex: 'ctnOwner',
sorter: true,
width: 200,
},
{
title: '业务所属分部',
dataIndex: 'corpid',
sorter: true,
width: 200,
},
{
title: '箱来源',
dataIndex: 'ctnSource',
sorter: true,
width: 200,
},
{
title: '箱业务状态',
dataIndex: 'ctnBizState',
sorter: true,
width: 200,
},
{
title: '箱业务编号',
dataIndex: 'billno',
sorter: true,
width: 200,
},
{
title: '关联放箱单号',
dataIndex: 'ctnReleaseNo',
sorter: true,
width: 200,
},
{
title: '箱状态',
dataIndex: 'ctnState',
sorter: true,
width: 200,
},
{
title: '箱损坏',
dataIndex: 'ctnBreakState',
sorter: true,
width: 200,
},
{
title: '是否上线',
dataIndex: 'isOnline',
sorter: true,
width: 200,
},
{
title: '空重箱',
dataIndex: 'isHeavy',
sorter: true,
width: 200,
},
{
title: '当前港口',
dataIndex: 'portid',
sorter: true,
width: 200,
},
{
title: '码头或场站',
dataIndex: 'depot',
sorter: true,
width: 200,
},
{
title: '运输工具',
dataIndex: 'vehicleName',
sorter: true,
width: 200,
},
{
title: '当前业务编号',
dataIndex: 'mblno',
sorter: true,
width: 200,
},
{
title: '业务委托单位',
dataIndex: 'customerName',
sorter: true,
width: 200,
},
{
title: 'ETD',
dataIndex: 'etd',
sorter: true,
width: 200,
},
{
title: 'ETA',
dataIndex: 'eta',
sorter: true,
width: 200,
},
{
title: '状态时间',
dataIndex: 'stateTime',
title: '箱皮重',
dataIndex: 'ctnWeight',
sorter: true,
width: 200,
},
{
title: '箱皮重',
dataIndex: 'ctnWeight',
title: '箱生产时间',
dataIndex: 'productionDate',
sorter: true,
width: 200,
},
@ -150,8 +35,8 @@ export const columns: BasicColumn[] = [
export const searchFormSchema: FormSchema[] = [
{
field: 'CtnName',
label: '表现形式',
field: 'cntrno',
label: '集装箱号',
component: 'Input',
colProps: { span: 6 },
},
@ -167,20 +52,14 @@ export const formSchema: FormSchema[] = [
{
field: 'cntrno',
label: '集装箱号',
component: 'InputTextArea',
required: true,
colProps: { span: 24 },
componentProps: {
placeholder: '请输入,多个箱号请以“,”逗号间隔',
rows: 3,
},
component: 'Input',
colProps: { span: 20 },
},
{
field: 'ctnall',
label: '箱型',
component: 'ApiSelect',
colProps: { span: 6 },
required: true,
colProps: { span: 20 },
componentProps: () => {
return {
api: GetCtnSelectList,
@ -190,140 +69,26 @@ export const formSchema: FormSchema[] = [
}
},
},
{
field: 'usedState',
label: '新旧箱',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'ctnOwner',
label: '箱主',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'corpid',
label: '业务所属分部',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'ctnSource',
label: '箱来源',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'ctnBizState',
label: '箱业务状态',
component: 'InputNumber',
colProps: { span: 6 },
},
{
field: 'billno',
label: '箱业务编号',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'ctnReleaseNo',
label: '关联放箱单号',
component: 'Input',
colProps: { span: 6 },
required: true,
},
{
field: 'ctnState',
label: '箱状态',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'ctnBreakState',
label: '箱损坏',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'isOnline',
label: '是否上线',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'isHeavy',
label: '空重箱',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'portid',
label: '当前港口',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'depot',
label: '码头或场站',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'vehicleName',
label: '运输工具',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'mblno',
label: '当前业务编号',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'customerName',
label: '业务委托单位',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'etd',
label: 'ETD',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'eta',
label: 'ETA',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'stateTime',
label: '状态时间',
component: 'Input',
colProps: { span: 6 },
},
{
field: 'ctnWeight',
label: '箱皮重',
component: 'Input',
colProps: { span: 6 },
component: 'InputNumber',
colProps: { span: 20 },
},
{
field: 'productionDate',
label: '生产日期',
component: 'Input',
colProps: { span: 6 },
component: 'DatePicker',
colProps: { span: 20 },
componentProps: {
showTime: false,
style: 'width:100%',
},
},
{
field: 'ctnValue_Base',
label: '箱初期成本',
component: 'Input',
colProps: { span: 6 },
component: 'InputNumber',
colProps: { span: 20 },
},
]

@ -2,12 +2,12 @@
<div>
<BasicTable class="ds-table" @register="registerTable" @row-dbClick="handleAudit">
<template #tableTitle>
<a-button type="link" @click="handleCreate" :disabled="checkPermissions('op:ctn:add')">
<a-button type="link" @click="handleCreate">
<span class="iconfont icon-piliangbianji"></span>
批量维护
维护
</a-button>
</template>
<template #bodyCell="{ column, record }">
<!-- <template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
@ -15,12 +15,11 @@
icon: 'ant-design:file-search-outlined',
tooltip: '编辑',
onClick: handleAudit.bind(null, record),
disabled: checkPermissions('op:ctn:edit'),
},
]"
/>
</template>
</template>
</template> -->
</BasicTable>
<TenantAuditStepModal @register="registerModal" @success="handleSuccess" />
</div>
@ -67,10 +66,10 @@
postParam.pageCondition.sortConditions = []
}
let condition: API.ConditionItem[] = []
if (!!data.CtnName) {
if (!!data.cntrno) {
condition.push({
FieldName: 'CtnName',
FieldValue: data.CtnName,
FieldName: 'cntrno',
FieldValue: data.cntrno,
ConditionalType: 1,
})
}
@ -95,12 +94,12 @@
canResize: true,
resizeHeightOffset: 35,
immediate: true,
actionColumn: {
width: 80,
title: '操作',
dataIndex: 'action',
fixed: 'right',
},
// actionColumn: {
// width: 80,
// title: '',
// dataIndex: 'action',
// fixed: 'right',
// },
})
function handleCreate() {
openModal(true, {
@ -110,12 +109,12 @@
}
function handleAudit(record: Recordable) {
if (!checkPermissions('op:ctn:edit')) {
openModal(true, {
record,
isUpdate: true,
})
}
// if (!checkPermissions('op:ctn:edit')) {
openModal(true, {
record,
isUpdate: true,
})
// }
}
function handleSuccess() {
reload()

@ -168,7 +168,7 @@ export const formSchema: FormSchema[] = [
field: 'cntrno',
label: '集装箱号',
component: 'InputTextArea',
required: true,
// required: true,
colProps: { span: 24 },
componentProps: {
placeholder: '请输入,多个箱号请以“,”逗号间隔',
@ -180,7 +180,7 @@ export const formSchema: FormSchema[] = [
label: '箱型',
component: 'ApiSelect',
colProps: { span: 6 },
required: true,
// required: true,
componentProps: () => {
return {
api: GetCtnSelectList,
@ -246,7 +246,7 @@ export const formSchema: FormSchema[] = [
label: '关联放箱单号',
component: 'Input',
colProps: { span: 6 },
required: true,
// required: true,
},
{
field: 'ctnState',

@ -49,7 +49,7 @@
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: CADformSchema,
@ -92,7 +92,7 @@
loading.value = true
const res: API.DataResult = await editClientBank(values)
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
//
if (!exit) {

@ -166,7 +166,7 @@
console.log(Number(nval) > 2, !rowId.value, rowId.value)
if (Number(nval) > 2 && !rowId.value) {
activeKey.value = oval
notification.warning('请先保存!')
notification.warning({ message: '请先保存!', duration: 3 })
console.log(nval, oval)
}
})
@ -450,10 +450,10 @@
async function handleSave(exit) {
try {
const values = await validate().catch(() => {
notification.warning('请补全基本信息中必填内容!')
notification.warning({ message: '请补全基本信息中必填内容!', duration: 3 })
})
// const values1 = await validate1().catch(() => {
// notification.warning('')
// notification.warning({ message: '', duration: 3 })
// })
// if (values && values1) {
if (values) {
@ -529,7 +529,7 @@
// // })
// })
notification.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
// //
// if (!exit) {
@ -542,7 +542,7 @@
// }
// }
} else {
notification.error(res.message)
notification.error({ message: res.message, duration: 3 })
}
// exit && closeModal()
@ -683,7 +683,7 @@
})
DeleteInvoiceHeader(ApiData).then((res) => {
if (res.succeeded) {
notification.success(res.message)
notification.success({ message: res.message, duration: 3 })
}
})
}

@ -63,7 +63,7 @@
// loading
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerModal, { setModalProps, closeModal, updateFormField }] = useModalInner(
async (data) => {
@ -105,10 +105,8 @@
})
loading.value = false
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
} else {
createMessage.error(res.message)
}
exit && closeModal()
} finally {

@ -59,36 +59,37 @@
// loading
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] =
useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
})
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate, updateSchema }] = useForm({
labelWidth: 100,
schemas: formSchema,
showActionButtonGroup: false,
})
const [registerModal, { setModalProps, closeModal, updateFormField }] = useModalInner(async (data) => {
resetFields()
setModalProps({ confirmLoading: false, loading: true })
isUpdate.value = !!data?.isUpdate
if (unref(isUpdate)) {
setModalProps({ confirmLoading: true });
updateFormField(updateSchema)
rowId.value = data.record.id
const res: API.DataResult = await GetClientParamInfo({ id: unref(rowId) })
if (res.succeeded) {
const [registerModal, { setModalProps, closeModal, updateFormField }] = useModalInner(
async (data) => {
resetFields()
setModalProps({ confirmLoading: false, loading: true })
isUpdate.value = !!data?.isUpdate
if (unref(isUpdate)) {
setModalProps({ confirmLoading: true })
updateFormField(updateSchema)
rowId.value = data.record.id
const res: API.DataResult = await GetClientParamInfo({ id: unref(rowId) })
if (res.succeeded) {
setFieldsValue({
...res.data,
})
}
} else {
setFieldsValue({
...res.data,
customerId: data.clientId,
customerName: data.customerName,
})
}
} else {
setFieldsValue({
customerId: data.clientId,
customerName: data.customerName
})
}
setModalProps({ loading: false })
})
setModalProps({ loading: false })
},
)
const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'))
@ -100,10 +101,8 @@
const res: API.DataResult = await EditClientParam(values)
loading.value = false
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
} else {
createMessage.error(res.message)
}
exit && closeModal()
} finally {

@ -72,7 +72,7 @@
import TenantAuditStepModal from './TenantAuditStepModal.vue'
import { columns, searchFormSchema, formSchema } from './columns'
import { useMessage } from '/@/hooks/web/useMessage'
const { createMessage } = useMessage()
const { notification } = useMessage()
import { useGo } from '/@/hooks/web/usePage'
const go = useGo()
import { useAppStore } from '/@/store/modules/app'
@ -223,7 +223,7 @@
ids: ids,
})
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
reload()
}
}

@ -49,7 +49,7 @@
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
@ -90,7 +90,7 @@
const res: API.DataResult = await ApiEdit(values)
console.log(res)
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
//
if (!exit) {
@ -102,8 +102,6 @@
await refresh()
}
}
} else {
createMessage.error(res.message)
}
exit && closeModal()

@ -49,7 +49,7 @@
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
@ -90,7 +90,7 @@
const res: API.DataResult = await ApiEdit(values)
console.log(res)
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
//
if (!exit) {
@ -102,8 +102,6 @@
await refresh()
}
}
} else {
createMessage.error(res.message)
}
exit && closeModal()

@ -49,7 +49,7 @@
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
@ -90,7 +90,7 @@
const res: API.DataResult = await ApiEdit(values)
console.log(res)
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
//
if (!exit) {
@ -102,8 +102,6 @@
await refresh()
}
}
} else {
createMessage.error(res.message)
}
exit && closeModal()

@ -49,7 +49,7 @@
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
@ -90,7 +90,7 @@
const res: API.DataResult = await ApiEdit(values)
console.log(res)
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
//
if (!exit) {
@ -102,8 +102,6 @@
await refresh()
}
}
} else {
createMessage.error(res.message)
}
exit && closeModal()

@ -49,7 +49,7 @@
const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref('')
const { createMessage } = useMessage()
const { notification } = useMessage()
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
labelWidth: 100,
schemas: formSchema,
@ -89,7 +89,7 @@
// loading.value = true;
const res: API.DataResult = await ApiEdit(values)
if (res.succeeded) {
createMessage.success(res.message)
notification.success({ message: res.message, duration: 3 })
emit('success')
//
if (!exit) {
@ -101,8 +101,6 @@
await refresh()
}
}
} else {
createMessage.error(res.message)
}
exit && closeModal()

@ -54,7 +54,7 @@
import { columns, searchFormSchema } from './columns'
import { useMessage } from '/@/hooks/web/useMessage'
import DsFile from '/@/components/File/index.vue'
const { createMessage } = useMessage()
const { notification } = useMessage()
const props = defineProps({
clientId: { type: String },
})
@ -139,9 +139,6 @@
function handleOk() {
visible.value = true
}
function waiting() {
createMessage.warning('待开发')
}
function handleCreate() {
openModal(true, {
clientId: props.clientId,

@ -569,7 +569,7 @@ function handleSaveCabin() {
CreateBookingOrder(ApiData).then(res => {
if (res.succeeded) {
closeModal()
createMessage.success(res.message)
createMessage.success(res.data.msg)
} else {
createMessage.error(res.data.msg)
}
@ -593,7 +593,7 @@ function handleSaveTask(){
CreateBookingAndSlot(ApiData).then(res => {
if (res.succeeded) {
closeModal()
createMessage.success(res.message)
createMessage.success(res.data.msg)
} else {
createMessage.error(res.data.msg)
}

@ -359,6 +359,7 @@ function getCurrentTotalStat() {
})
}
function refshTotalStat() {
levelreLoading.value = true
levelLoading.value = true
@ -462,6 +463,7 @@ function changeTopLevel() {
levelTree.value.forEach(item => {
item.active = false
})
reload()
}
function onSelect() {
@ -585,7 +587,6 @@ function handledbclick(row) {
handleEdit(row)
}
import { useRouter } from 'vue-router'
const router = useRouter();
function handleEdit(data) {
switch (data.tasK_TYPE) {
@ -1166,12 +1167,19 @@ function laraRecordFun() {
//
function handleClickTree(row, index) {
taskType.value = row.key
levelTree.value.map((item, index) => {
item.active = false
})
levelTree.value[index].active = true
taskType.value = row.key
console.log('点击详细任务类型', row)
if (!row.active) {
taskType.value = row.key
levelTree.value.map((item, index) => {
item.active = false
})
levelTree.value[index].active = true
} else {
levelTree.value.map((item, index) => {
item.active = false
})
taskType.value = ''
}
reload()
}
</script>

@ -0,0 +1,315 @@
[
{
"type":"basic",
"title":"基础信息",
"list":[
{"field":"tasK_NO","title":"任务流水号","width":150},
{"field":"tasK_TYPE","title":"任务类型","width":100,"slots": { "default": "taskType" }, "sortable": true},
{"field":"tasK_SOURCE","title":"任务来源","width":100,"slots": { "default": "taskScource" }},
{"field":"statuS_NAME","title":"状态","width":100,"slots": { "default": "status" }},
{"field":"tasK_TITLE","title":"任务标题","width":200,"slots": { "default": "taskTitle" }, "sortable": true},
{"field":"tasK_DESP","title":"任务描述","width":100},
{"field":"ouT_BUSI_NO","title":"外业务编号","width":120},
{"field":"ouT_BUSI_TYPE","title":"外业务类型","width":120,"slots": { "default": "ouT_BUSI_TYPE" }},
{"field":"tasK_BASE_TYPE","title":"基础业务类型","width":120},
{"field":"carrieR_ID","title":"船公司代号","width":100},
{"field":"mbL_NO","title":"主单号","width":150, "sortable": true},
{"field":"remark","title":"备注","width":100},
{"field":"iS_EXCEPT","title":"是否异常","width":100,"slots": { "default": "iS_EXCEPT" }},
{"field":"iS_PUBLIC","title":"是否公共","width":100,"slots": { "default": "iS_PUBLIC" }},
{"field":"iS_COMPLETE","title":"是否完成","width":100,"slots": { "default": "iS_COMPLETE" }},
{"field":"begiN_DATE","title":"任务启动时间","width":120},
{"field":"completE_DATE","title":"任务完成时间","width":120},
{"field":"resulT_NOTE","title":"反馈结果","width":100},
{"field":"etd","title":"开船日期","width":100, "sortable": true},
{"field":"completE_DEAL","title":"任务完成方式","width":120},
{"field":"issuE_TYPE_NAME","title":"签单方式","width":100},
{"field":"tasK_REQ_USERNAME","title":"操作名称","width":100, "sortable": true},
{"field":"contA_INFO","title":"箱型箱量","width":150, "sortable": true},
{"field":"vesseL_VOYNO","title":"船名航次","width":100, "sortable": true},
{"field":"yarD_NAME","title":"场站","width":150, "sortable": true},
{"field":"trucK_NAME","title":"车队名称","width":170,"slots": { "default": "truckName" }, "sortable": true},
{"field":"customeR_NAME","title":"委托客户","width":200, "sortable": true},
{"field":"needArriveTime","title":"要求到达时间","width":200, "sortable": true},
{"field":"realUserName","title":"实际操作人","width":100},
{"field":"batcH_STATIC","title":"批次统计","width":100},
{"field":"systeM_NAME","title":"平台名称","width":100},
{"field":"createdUserName","title":"接收人","width":100},
{"field":"createdTime","title":"接收时间","width":200, "sortable": true}
]
},
{
"type":"SI_FEEDBACK",
"title":"SI反馈入库",
"list":[
{ "title":"船公司","field":"carrieR_ID","width": 100 },
{ "title":"提取签单方式","field":"takE_ISSUETYPE_NAME","width": 120 },
{ "title":"通知接收时间","field":"noticE_DATE","width": 120 },
{ "title":"签单方式","field":"issuetype","width": 100 },
{ "title":"截单上传时间","field":"submitteD_DATE","width": 120 },
{ "title":"提单份数","field":"billoF_NUM","width": 100 },
{ "title":"放单方式","field":"releasE_INSTRUCTION","width": 100 },
{ "title":"是否拆单","field":"sI_SUBTYPE","width": 100,"slots": { "default": "sI_SUBTYPE" } },
{ "title":"发货人","field":"shipper","width": 100 },
{ "title":"收货人","field":"consignee","width": 100 },
{ "title":"通知人","field":"notifyparty","width": 100 },
{ "title":"第二通知人","field":"notifypartY2","width": 100 },
{ "title":"订舱方","field":"transporT_RECEIVER","width": 100 },
{ "title":"唛头","field":"marks","width": 100 },
{ "title":"HS代码","field":"hscode","width": 100 },
{ "title":"货描","field":"description","width": 100 },
{ "title":"件数","field":"pkgs","width": 100 },
{ "title":"包装","field":"kindpkgs","width": 100 },
{ "title":"毛重","field":"kgs","width": 100 },
{ "title":"尺码","field":"cbm","width": 100 },
{ "title":"船名","field":"vessel","width": 100 },
{ "title":"海关航次","field":"voyno","width": 100 },
{ "title":"商品名称","field":"commodity","width": 100 },
{ "title":"收货地代码","field":"placereceiptid","width": 100 },
{ "title":"收货地","field":"placereceipt","width": 100 },
{ "title":"起运港代码","field":"portloadid","width": 100 },
{ "title":"起运港","field":"portload","width": 100 },
{ "title":"卸货港代码","field":"portdischargeid","width": 100 },
{ "title":"卸货港","field":"portdischarge","width": 100 },
{ "title":"交货地代码","field":"placedeliveryid","width": 100 },
{ "title":"交货地","field":"placedelivery","width": 100 },
{ "title":"处理状态","field":"procesS_STATUS","width": 100 },
{ "title":"自动更新订舱","field":"iS_SET_AUTO_UPD_BOOKING","width": 120 },
{ "title":"处理结果","field":"procesS_RESULT","width": 100 },
{ "title":"处理时间","field":"procesS_DATE","width": 100 },
{ "title":"比对差异数量","field":"difF_NUM","width": 120 },
{ "title":"是否已更新订舱","field":"iS_UPDATE_BOOKING","width": 140,"slots": { "default": "iS_UPDATE_BOOKING" } },
{ "title":"更新订舱时间","field":"updatE_BOOKING_DATE","width": 140 }
]
},
{
"type":"BC",
"title":"BC任务",
"list":[
{ "title":"订舱单位","field":"bookinG_PARTY","width": 100 },
{ "title":"业务类型","field":"busI_TYPE","width": 100,"slots": { "default": "busI_TYPE" } },
{ "title":"发货人","field":"shipper","width": 100 },
{ "title":"收货人","field":"consignee","width": 100 },
{ "title":"通知人","field":"notifyparty","width": 100 },
{ "title":"BC更新次数","field":"bC_MODIFY_TIMES","width": 120 },
{ "title":"BC更新时间","field":"bC_MODIFY_DATE","width": 120 },
{ "title":"主单号","field":"mbL_NO","width": 100 },
{ "title":"船名","field":"vessel","width": 100 },
{ "title":"航次","field":"voyno","width": 100 },
{ "title":"船公司","field":"carrier","width": 100 },
{ "title":"收货地","field":"placereceipt","width": 100 },
{ "title":"装货港","field":"portload","width": 100 },
{ "title":"截关时间","field":"closinG_DATE","width": 100 },
{ "title":"截VGM时间","field":"vgM_CUTOFF_TIME","width": 100 },
{ "title":"ETA","field":"eta","width": 100 },
{ "title":"ETD","field":"etd","width": 100 },
{ "title":"卸货港","field":"portdischarge","width": 100 },
{ "title":"交货地","field":"placedelivery","width": 100 },
{ "title":"目的港ETA","field":"poD_ETA","width": 100 },
{ "title":"装运方式","field":"shippinG_METHOD","width": 100 },
{ "title":"运输条款","field":"service","width": 100 },
{ "title":"港前运输形态","field":"pretranS_MODE","width": 100 },
{ "title":"品名","field":"description","width": 100 },
{ "title":"签单地点","field":"issueplace","width": 100 },
{ "title":"集港码头","field":"collectioN_TERMINAL","width": 100 },
{ "title":"约号","field":"contractno","width": 100 },
{ "title":"预付地点","field":"prepardat","width": 100 },
{ "title":"船代","field":"shiP_AGENT","width": 100 },
{ "title":"场站","field":"yard","width": 100 },
{ "title":"场站联系人","field":"yarD_CONTACT_USR","width": 100 },
{ "title":"场站联系电话","field":"yarD_CONTACT_TEL","width": 100 },
{ "title":"截单时间","field":"cuT_SINGLE_TIME","width": 100 },
{ "title":"一代客服姓名","field":"fsT_CUSTOMER_SER_USRNAME","width": 120 },
{ "title":"一代客服电话","field":"fsT_CUSTOMER_SER_TEL","width": 120 },
{ "title":"一代客服邮箱","field":"fsT_CUSTOMER_SER_EMAIL","width": 120 },
{ "title":"备注1","field":"remarK1","width": 100 },
{ "title":"截港时间","field":"cY_CUTOFF_TIME","width": 100 },
{ "title":"状态","field":"status","width": 100 },
{ "title":"最后对应时间","field":"lasT_TOBOOKING_DATE","width": 120 },
{ "title":"来源邮箱","field":"froM_EMAIL","width": 100 },
{ "title":"接收邮箱","field":"recV_EMAIL","width": 100 },
{ "title":"船公司","field":"carrierid","width": 100 },
{ "title":"航线代码","field":"lanecode","width": 100 },
{ "title":"航线名称","field":"lanename","width": 100 },
{ "title":"承运方式","field":"carriagE_TYPE_NAME","width": 100 },
{ "title":"订舱方式","field":"bookinG_SLOT_TYPE_NAME","width": 100 },
{ "title":"箱型箱量","field":"ctN_STAT","width": 100 },
{ "title":"所在周数","field":"weeK_AT","width": 100 },
{ "title":"箱使天数","field":"detensioN_FREE_DAYS","width": 100 },
{ "title":"样单截止日期","field":"sI_CUT_DATE","width": 120 },
{ "title":"舱单截止时间","field":"manifesT_CUT_DATE","width": 120 },
{ "title":"MDGF提交截止时间","field":"mdgF_CUT_DATE","width": 140 },
{ "title":"中转港1","field":"transfeR_PORT_1","width": 100 },
{ "title":"中转港2","field":"transfeR_PORT_2","width": 100 },
{ "title":"二程船名","field":"seconD_VESSEL","width": 100 },
{ "title":"二程航次","field":"seconD_VOYNO","width": 100 },
{ "title":"二程ETD","field":"seconD_ETD","width": 100 },
{ "title":"二程ETA","field":"seconD_ETA","width": 100 },
{ "title":"订舱确认时间","field":"bookinG_COMFIRM_DATE","width": 120 },
{ "title":"批次号","field":"batcH_NO","width": 100 },
{ "title":"样单截止日期","field":"custoM_SI_CUT_DATE","width": 120 },
{ "title":"自动转发邮件","field":"iS_SET_AUTO_EMAIL","width": 120,"slots": { "default": "iS_SET_AUTO_EMAIL" } },
{ "title":"已发送邮件","field":"iS_SEND_EMAIL","width": 100,"slots": { "default": "iS_SEND_EMAIL" } },
{ "title":"比对差异数量","field":"difF_NUM","width": 100 },
{ "title":"邮件接收人","field":"autO_SEND_USER","width": 100 },
{ "title":"处理状态","field":"procesS_STATUS","width": 100,"slots": { "default": "procesS_STATUS" } },
{ "title":"处理结果","field":"procesS_RESULT","width": 100 },
{ "title":"处理时间","field":"procesS_DATE","width": 100 },
{ "title":"计费日期","field":"pricE_CALCULATION_DATE","width": 100 }
]
},
{
"title":"单票账单",
"type":"PER_BILL",
"list":[
{ "title":"发票号","field":"invoicE_NO","width": 100 },
{ "title":"取消号","field":"canceL_NO","width": 100 },
{ "title":"合计金额","field":"totaL_AMOUNT","width": 100 },
{ "title":"东胜接收","field":"iS_DONGSH_RECV","width": 100,"slots": { "default": "iS_DONGSH_RECV" } },
{ "title":"东胜接收回执 ","field":"iS_DONGSH_RESULT","width": 120,"slots": { "default": "iS_DONGSH_RESULT" } },
{ "title":"东胜接收时间","field":"dongsH_RECV_TIME","width": 120 },
{ "title":"东胜回执时间","field":"dongsH_RESULT_TIME","width": 120 },
{ "title":"东胜反馈原因","field":"dongsH_RECV_REASON","width": 120 }
]
},
{
"title":"派车任务",
"type":"TRUCK_DISPATCH",
"list":[
{"field":"truckCode","title":"车队代码","width":"100"},
{"field":"truckName","title":"车队名称","width":"100"},
{"field":"toName","title":"TO","width":"100"},
{"field":"attn","title":"ATTN","width":"100"},
{"field":"attnTel","title":"ATTN电话","width":"100"},
{"field":"attnMail","title":"ATTN邮箱","width":"100"},
{"field":"attnFax","title":"ATTN传真","width":"100"},
{"field":"fromName","title":"FROM","width":"100"},
{"field":"fromTel","title":"FROM座机","width":"100"},
{"field":"fromMail","title":"FROM邮箱","width":"100"},
{"field":"fromMobile","title":"FROM手机号","width":"100"},
{"field":"fromFax","title":"FROM传真","width":"100"},
{"field":"kgs","title":"吨数","width":"100"},
{"field":"fee","title":"陆运费","width":"100"},
{"field":"payMethodName","title":"支付方式","width":"100"},
{"field":"truckTime","title":"派车日期","width":"100"},
{"field":"yardid","title":"提箱场站ID","width":"100"},
{"field":"yard","title":"提箱场站","width":"100"},
{"field":"yardcontract","title":"场站联系人","width":"100"},
{"field":"yardcontracttel","title":"场站联系人电话","width":"140"},
{"field":"factoryCode","title":"工厂代码","width":"100"},
{"field":"factoryName","title":"工厂名称","width":"100"},
{"field":"factoryContact","title":"工厂联系人","width":"100"},
{"field":"factoryTel","title":"工厂联系电话","width":"120"},
{"field":"returnTime","title":"返场时间","width":"100"},
{"field":"inYard","title":"入货场站","width":"100"},
{"field":"inYardContact","title":"入货联系人","width":"100"},
{"field":"inYardContractTel","title":"入货联系人电话","width":"100"},
{"field":"needArriveTime","title":"要求到达时间","width":"100"},
{"field":"closingTime","title":"截港日期","width":"100"},
{"field":"pickUpTime","title":"提货日期","width":"100"},
{"field":"isGuaJi","title":"是否挂机","width":"100"},
{"field":"status","title":"状态","width":"100"},
{"field":"attention","title":"注意事项","width":"100"},
{"field":"remark","title":"备注","width":"100"},
{"field":"dispatcherName","title":"调度名称","width":"100"},
{"field":"truckFlowNo","title":"派车流水号","width":"100"},
{"field":"taskNo","title":"任务流水号","width":"100"},
{"field":"vessel","title":"船名","width":"100"},
{"field":"voyNo","title":"航次","width":"100"},
{"field":"mblNo","title":"提单号","width":"100"},
{"field":"cntrTotal","title":"箱型箱量","width":"100"},
{"field":"factoryAddr","title":"工厂地址","width":"100"}
]
},
{
"title":"任务截止时间变更通知",
"type":"CUT_MODIFY",
"list":[
{"field":"carrier","title":"船公司","width":"100"},
{"field":"vessel","title":"船名","width":"100"},
{"field":"voyno","title":"航次","width":"100"},
{"field":"noticE_DATE","title":"通知接收时间","width":"120"}
]
},
{
"title":"Rolling Nomination(预甩货通知)",
"type":"ROLLING_NOMINATION",
"list":[
{"field":"plaN_TYPE","title":"计划类型","width":"100","slots": { "default": "plaN_TYPE" }},
{"field":"batcH_NO","title":"批次号","width":"100"},
{"field":"carrierid","title":"船公司代号","width":"100"},
{"field":"carrier","title":"船公司","width":"100"},
{"field":"confirM_DEAD_LINE","title":"最后确认期限日期","width":"150"},
{"field":"reaD_CREATE_TIME","title":"解析生成日期","width":"120"},
{"field":"rolL_DOUBLE_REMARK","title":"含有二甩声明备注","width":"150"},
{"field":"plaN_TXT","title":"预甩计划详情","width":"100"},
{"field":"remark","title":"备注","width":"100"},
{"field":"tasK_BATCH_TOTAL","title":"任务批次明细合计","width":"150"},
{"field":"tasK_BATCH_PER_TOTAL","title":"任务批次单票合计","width":"150"}
]
},
{
"title":"DRAFT转发客户",
"type":"DRAFT",
"list":[
{"field":"carrier","title":"船公司","width":"100"},
{"field":"mbL_NO","title":"主单号","width":"100"},
{"field":"iS_CHANGE","title":"已发消息提醒","width":"120","slots": { "default": "iS_CHANGE" }},
{"field":"iS_EMAIL_SEND","title":"是否邮件推送","width":"120","slots": { "default": "iS_EMAIL_SEND" }},
{"field":"senD_EMAIL_DATE","title":"邮件推送时间","width":"120"},
{"field":"noticE_DATE","title":"通知接收时间","width":"120"}
]
},
{
"title":"任务目的港未提货",
"type":"POD_DISCHARGE_FULL",
"list":[
{"field":"noticE_TYPE_NAME","title":"通知类型","width":"100"},
{"field":"mbL_NO","title":"主单号","width":"100"},
{"field":"carrier","title":"船公司","width":"100"},
{"field":"noticE_DATE","title":"通知接收时间","width":"120"}
]
},
{
"title":"重要提醒",
"type":"CAUTION_NOTICE",
"list":[
{"field":"sourcE_SYSTEM","title":"来源系统","width":"100"},
{"field":"sourcE_BUSI_TYPENAME","title":"来源业务类型","width":"120"},
{"field":"notifY_CONTENT","title":"通知内容","width":"100"},
{"field":"mbL_NO","title":"提单号","width":"100"},
{"field":"carrier","title":"船公司","width":"100"},
{"field":"cautioN_NOTICE_TYPE","title":"通知差异类型","width":"120","slots": { "default": "plaN_TYPE" }},
{"field":"iS_WEEK_DIFF","title":"计费周差异","width":"100","slots": { "default": "iS_WEEK_DIFF" }},
{"field":"iS_PRICE_DATE_DIFF","title":"计费日差异","width":"100","slots": { "default": "iS_PRICE_DATE_DIFF" }},
{"field":"iS_TRANSFER","title":"转为中转","width":"100","slots": { "default": "iS_TRANSFER" }},
{"field":"iS_VESSEL_CHANGE","title":"船名变化","width":"100","slots": { "default": "iS_VESSEL_CHANGE" }},
{"field":"iS_CUT_DATE_ADVANCED","title":"截止时间提前","width":"120","slots": { "default": "iS_CUT_DATE_ADVANCED" }},
{"field":"olD_VAL","title":"原始值","width":"100"},
{"field":"neW_VAL","title":"修改值","width":"100"}
]
},
{
"title":"航线船舶截止时间调整的通知",
"type":"ROUTE_CUT_CHANGE",
"list":[
{"field":"vessel","title":"船名","width":"100"},
{"field":"voyno","title":"航次","width":"100"},
{"field":"carrier","title":"船公司","width":"100"},
{"field":"reaD_PORTLOAD","title":"装货港提取","width":"100"},
{"field":"oriG_ETD","title":"原ETD","width":"100"},
{"field":"mdgF_CUT_DATE","title":"MDGF提交截止时间","width":"200"},
{"field":"eta","title":"ETA","width":"100"},
{"field":"etd","title":"ETD","width":"100"},
{"field":"sI_CUT_DATE","title":"样单截止日期","width":"150"},
{"field":"tM_SHIFT_CUT_DATE","title":"码头移箱截止时间","width":"150"},
{"field":"vgM_CUTOFF_TIME","title":"截VGM时间","width":"100"},
{"field":"cY_CUT_DATE","title":"截港/场站收据截止","width":"200"},
{"field":"routE_CODE","title":"航线代码","width":"100"},
{"field":"emaiL_SUBJECT","title":"邮件对应标题","width":"100"},
{"field":"week","title":"周数","width":"100"},
{"field":"portloadid","title":"装货港代码","width":"100"},
{"field":"portload","title":"装货港","width":"100"}
]
}
]

@ -0,0 +1,42 @@
<template>
<div class="main">
<a-card title="操作" style="width: 300px">
<template #extra> <i @click="handleEdit('Operator')" class="icon-bianji1 iconfont"></i> </template>
<p>card content</p>
<p>card content</p>
<p>card content</p>
</a-card>
<a-modal v-model:open="open" title="分配任务" @ok="handleSave">
</a-modal>
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import pdf from '../components/pdf.vue'
import taskData from '../components/taskData.vue'
import taskButton from '../components/taskButton.vue'
import { GetInfoByTaskId, DownloadFileByBC } from '../api'
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage()
const open = ref(false)
function handleEdit(type) {
open.value = true
}
function handleSave(){
}
</script>
<style lang="less" scoped>
.main {
padding: 20px;
.iconfont {
cursor: pointer;
color: rgba(22, 119, 255, 1);
}
}
</style>

@ -0,0 +1,143 @@
<template>
<div class="main">
<div class="main-title">
*使用说明上下拖动字段排序勾选字段会显示在任务台账
</div>
<div style="display: flex;padding: 20px">
<div class="left">
<div class="title">
<div>基础信息</div> <a-button size="small" type="link" @click="handleSaveBasic">
<i class="icon-baocun iconfont"></i>
保存</a-button>
</div>
<a-spin :spinning="loading">
<draggable :list="basicList" item-key="field" animation="300">
<template #item="{ element }">
<div class="check-item">
<a-checkbox v-model="element.checked">{{ element.title }}</a-checkbox>
<MenuOutlined />
</div>
</template>
</draggable>
</a-spin>
</div>
<div class="right">
<div class="title">
<div>{{ title }}</div> <a-button size="small" type="link" @click="handleSave"> <i class="icon-baocun iconfont"></i>保存</a-button>
</div>
<div>
<a-select style="width: 270px;margin-bottom: 10px;" size="small" @change="handleChange"
v-model="taskType">
<a-select-option value="SI_FEEDBACK">SI反馈入库</a-select-option>
<a-select-option value="BC">BC任务</a-select-option>
<a-select-option value="PER_BILL">单票账单</a-select-option>
<a-select-option value="TRUCK_DISPATCH">派车任务</a-select-option>
<a-select-option value="CUT_MODIFY">任务截止时间变更通知</a-select-option>
<a-select-option value="ROLLING_NOMINATION">Rolling Nomination(预甩货通知)</a-select-option>
<a-select-option value="DRAFT">DRAFT转发客户</a-select-option>
<a-select-option value="POD_DISCHARGE_FULL">任务目的港未提货</a-select-option>
<a-select-option value="CAUTION_NOTICE">重要提醒</a-select-option>
<a-select-option value="ROUTE_CUT_CHANGE">航线船舶截止时间调整的通知</a-select-option>
</a-select>
</div>
<a-spin :spinning="loading1">
<draggable :list="taskList" item-key="field" animation="300">
<template #item="{ element }">
<div class="check-item">
<a-checkbox v-model="element.checked">{{ element.title }}</a-checkbox>
<MenuOutlined />
</div>
</template>
</draggable>
</a-spin>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import Data from './data.json'
import { ref, onMounted, computed, reactive } from 'vue'
import draggable from 'vuedraggable';
import { GetInfoByTaskIdNotice } from '../api'
import { MenuOutlined } from '@ant-design/icons-vue';
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage()
function handleSaveBasic() {
}
const loading = ref(false)
const loading1 = ref(false)
const basicList = ref([]) as any
const taskList = ref([]) as any
const taskType = ref('SI_FEEDBACK')
function handleChange() {
}
const title = ref('SI反馈入库')
function handleSave() {
}
onMounted(() => {
Data.forEach(item => {
if (item.type === taskType.value) {
taskList.value = item.list
}
})
basicList.value = Data[0].list
})
</script>
<style scoped lang="less">
.main {
.title {
margin-bottom: 10px;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
}
.left {
margin-right: 50px;
border: 1px solid rgba(232, 235, 237, 1);
padding: 10px 20px;
font-size: 12px;
width: 20%;
}
.right{
border: 1px solid rgba(232, 235, 237, 1);
padding: 10px 20px;
font-size: 12px;
width: 20%;
}
.main-title {
color: rgba(22, 119, 255, 1);
background: rgba(245, 249, 252, 1);
font-size: 12px;
padding: 10px 0;
padding-left: 20px;
}
.check-item {
display: flex;
justify-content: space-between;
align-items: center;
background: rgba(245, 249, 252, 1);
padding: 3px 10px;
font-size: 12px !important;
cursor: pointer;
margin-bottom: 3px;
/deep/ .ant-checkbox-wrapper {
span {
font-size: 12px;
}
}
}
}
</style>
Loading…
Cancel
Save