diff --git a/package.json b/package.json
index 53e177eb..4bd8452e 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/src/views/ContainerManagement/BaseInfo/TenantAuditStepModal.vue b/src/views/ContainerManagement/BaseInfo/TenantAuditStepModal.vue
index c178ce19..98637b65 100644
--- a/src/views/ContainerManagement/BaseInfo/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/BaseInfo/TenantAuditStepModal.vue
@@ -3,7 +3,8 @@
v-bind="$attrs"
:use-wrapper="true"
title="箱状态批量维护"
- width="55%"
+ width="30%"
+ :height="600"
@register="registerModal"
@ok="handleSave"
>
diff --git a/src/views/ContainerManagement/BaseInfo/columns.tsx b/src/views/ContainerManagement/BaseInfo/columns.tsx
index 780f1821..f1d94405 100644
--- a/src/views/ContainerManagement/BaseInfo/columns.tsx
+++ b/src/views/ContainerManagement/BaseInfo/columns.tsx
@@ -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 },
},
]
diff --git a/src/views/ContainerManagement/BaseInfo/index.vue b/src/views/ContainerManagement/BaseInfo/index.vue
index 9ea7fcff..81e48c60 100644
--- a/src/views/ContainerManagement/BaseInfo/index.vue
+++ b/src/views/ContainerManagement/BaseInfo/index.vue
@@ -2,12 +2,12 @@
@@ -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()
diff --git a/src/views/ContainerManagement/CurrentState/columns.tsx b/src/views/ContainerManagement/CurrentState/columns.tsx
index 1290b2fe..905a66f7 100644
--- a/src/views/ContainerManagement/CurrentState/columns.tsx
+++ b/src/views/ContainerManagement/CurrentState/columns.tsx
@@ -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',
diff --git a/src/views/baseinfo/infoclient/ClientAccountDateModal.vue b/src/views/baseinfo/infoclient/ClientAccountDateModal.vue
index d33cd7b2..6ac65630 100644
--- a/src/views/baseinfo/infoclient/ClientAccountDateModal.vue
+++ b/src/views/baseinfo/infoclient/ClientAccountDateModal.vue
@@ -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) {
diff --git a/src/views/baseinfo/infoclient/TenantAuditStepModal.vue b/src/views/baseinfo/infoclient/TenantAuditStepModal.vue
index 8ba0375e..e3af7b00 100644
--- a/src/views/baseinfo/infoclient/TenantAuditStepModal.vue
+++ b/src/views/baseinfo/infoclient/TenantAuditStepModal.vue
@@ -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 })
}
})
}
diff --git a/src/views/baseinfo/infoclient/custTemplateDetail/Modal.vue b/src/views/baseinfo/infoclient/custTemplateDetail/Modal.vue
index 039059ad..41910335 100644
--- a/src/views/baseinfo/infoclient/custTemplateDetail/Modal.vue
+++ b/src/views/baseinfo/infoclient/custTemplateDetail/Modal.vue
@@ -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 {
diff --git a/src/views/baseinfo/infoclient/customerParams/components/Modal.vue b/src/views/baseinfo/infoclient/customerParams/components/Modal.vue
index 3847fe61..f67094e7 100644
--- a/src/views/baseinfo/infoclient/customerParams/components/Modal.vue
+++ b/src/views/baseinfo/infoclient/customerParams/components/Modal.vue
@@ -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 {
diff --git a/src/views/baseinfo/infoclient/index.vue b/src/views/baseinfo/infoclient/index.vue
index d870ebf2..2c7c891e 100644
--- a/src/views/baseinfo/infoclient/index.vue
+++ b/src/views/baseinfo/infoclient/index.vue
@@ -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()
}
}
diff --git a/src/views/baseinfo/infoclient/menu2/TenantAuditStepModal.vue b/src/views/baseinfo/infoclient/menu2/TenantAuditStepModal.vue
index 2389b5f0..ee28eec9 100644
--- a/src/views/baseinfo/infoclient/menu2/TenantAuditStepModal.vue
+++ b/src/views/baseinfo/infoclient/menu2/TenantAuditStepModal.vue
@@ -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()
diff --git a/src/views/baseinfo/infoclient/menu3/TenantAuditStepModal.vue b/src/views/baseinfo/infoclient/menu3/TenantAuditStepModal.vue
index 8a694216..5385c848 100644
--- a/src/views/baseinfo/infoclient/menu3/TenantAuditStepModal.vue
+++ b/src/views/baseinfo/infoclient/menu3/TenantAuditStepModal.vue
@@ -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()
diff --git a/src/views/baseinfo/infoclient/menu4/TenantAuditStepModal.vue b/src/views/baseinfo/infoclient/menu4/TenantAuditStepModal.vue
index 12c0298b..56bfe397 100644
--- a/src/views/baseinfo/infoclient/menu4/TenantAuditStepModal.vue
+++ b/src/views/baseinfo/infoclient/menu4/TenantAuditStepModal.vue
@@ -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()
diff --git a/src/views/baseinfo/infoclient/menu5/TenantAuditStepModal.vue b/src/views/baseinfo/infoclient/menu5/TenantAuditStepModal.vue
index e6e7f894..ec21bbda 100644
--- a/src/views/baseinfo/infoclient/menu5/TenantAuditStepModal.vue
+++ b/src/views/baseinfo/infoclient/menu5/TenantAuditStepModal.vue
@@ -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()
diff --git a/src/views/baseinfo/infoclient/tabs3/TenantAuditStepModal.vue b/src/views/baseinfo/infoclient/tabs3/TenantAuditStepModal.vue
index 28614f10..031054fe 100644
--- a/src/views/baseinfo/infoclient/tabs3/TenantAuditStepModal.vue
+++ b/src/views/baseinfo/infoclient/tabs3/TenantAuditStepModal.vue
@@ -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()
diff --git a/src/views/baseinfo/infoclient/tabs3/index.vue b/src/views/baseinfo/infoclient/tabs3/index.vue
index 2bc83c3b..7157c5e3 100644
--- a/src/views/baseinfo/infoclient/tabs3/index.vue
+++ b/src/views/baseinfo/infoclient/tabs3/index.vue
@@ -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,
diff --git a/src/views/bookingcabin/generation/index.vue b/src/views/bookingcabin/generation/index.vue
index 911e9728..f1d02ed5 100644
--- a/src/views/bookingcabin/generation/index.vue
+++ b/src/views/bookingcabin/generation/index.vue
@@ -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)
}
diff --git a/src/views/taskmanage/index.vue b/src/views/taskmanage/index.vue
index aaaf6a8d..977781c0 100644
--- a/src/views/taskmanage/index.vue
+++ b/src/views/taskmanage/index.vue
@@ -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()
}
diff --git a/src/views/taskmanage/taskList/data.json b/src/views/taskmanage/taskList/data.json
new file mode 100644
index 00000000..73c77afe
--- /dev/null
+++ b/src/views/taskmanage/taskList/data.json
@@ -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"}
+ ]
+ }
+]
\ No newline at end of file
diff --git a/src/views/taskmanage/taskList/taskAllocation.vue b/src/views/taskmanage/taskList/taskAllocation.vue
new file mode 100644
index 00000000..4fb7cf30
--- /dev/null
+++ b/src/views/taskmanage/taskList/taskAllocation.vue
@@ -0,0 +1,42 @@
+
+
+
+
+ card content
+ card content
+ card content
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/taskmanage/taskList/taskCustom.vue b/src/views/taskmanage/taskList/taskCustom.vue
new file mode 100644
index 00000000..626fd6e3
--- /dev/null
+++ b/src/views/taskmanage/taskList/taskCustom.vue
@@ -0,0 +1,143 @@
+
+
+
+ *使用说明:上下拖动字段排序,勾选字段会显示在任务台账
+
+
+
+
+
+
+
+
+
{{ element.title }}
+
+
+
+
+
+
+
+
+
+
+ SI反馈入库
+ BC任务
+ 单票账单
+ 派车任务
+ 任务截止时间变更通知
+ Rolling Nomination(预甩货通知)
+ DRAFT转发客户
+ 任务目的港未提货
+ 重要提醒
+ 航线船舶截止时间调整的通知
+
+
+
+
+
+
+
{{ element.title }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file