From 1ecf5534e4ada12681dfb6815db1c57540f3778f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E5=90=8C=E6=B5=B7?=
<14166000+zhangtonghai@user.noreply.gitee.com>
Date: Wed, 18 Sep 2024 17:54:39 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AE=B1=E7=AE=A1=20=E6=89=B9=E9=87=8F?=
=?UTF-8?q?=E5=8F=98=E5=8A=A8=E5=AF=BC=E5=85=A5=E3=80=81=E6=89=B9=E9=87=8F?=
=?UTF-8?q?=E5=8F=98=E5=8A=A8=E5=AF=BC=E5=85=A5=5F=E6=A8=A1=E6=9D=BF?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=20=E5=8D=95=E7=A8=8B=E7=A7=9F=E5=85=A5=20?=
=?UTF-8?q?=E5=8D=95=E7=A8=8B=E7=A7=9F=E5=87=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../BuyCtn/TenantAuditStepModal.vue | 6 +-
.../CtnScrap/TenantAuditStepModal.vue | 6 +-
.../RentIn/TenantAuditStepModal.vue | 6 +-
.../RentOneWay/TenantAuditStepModal.vue | 6 +-
.../RentOneWayIn/TenantAuditStepModal.vue | 853 ++++++++++++++++++
.../ContainerManagement/RentOneWayIn/api.ts | 110 +++
.../RentOneWayIn/columns.tsx | 517 +++++++++++
.../RentOneWayIn/index.vue | 169 ++++
.../RentOut/TenantAuditStepModal.vue | 6 +-
.../SellCtn/TenantAuditStepModal.vue | 6 +-
.../Templat/TenantAuditStepModal.vue | 51 +-
.../ContainerManagement/Templat/index.vue | 29 +-
.../TemplatImport/TenantAuditStepModal.vue | 444 +++++++++
.../ContainerManagement/TemplatImport/api.ts | 60 ++
.../TemplatImport/columns.tsx | 246 +++++
.../TemplatImport/index.vue | 121 +++
src/views/system/sequence/DictDataModal.vue | 2 +-
17 files changed, 2595 insertions(+), 43 deletions(-)
create mode 100644 src/views/ContainerManagement/RentOneWayIn/TenantAuditStepModal.vue
create mode 100644 src/views/ContainerManagement/RentOneWayIn/api.ts
create mode 100644 src/views/ContainerManagement/RentOneWayIn/columns.tsx
create mode 100644 src/views/ContainerManagement/RentOneWayIn/index.vue
create mode 100644 src/views/ContainerManagement/TemplatImport/TenantAuditStepModal.vue
create mode 100644 src/views/ContainerManagement/TemplatImport/api.ts
create mode 100644 src/views/ContainerManagement/TemplatImport/columns.tsx
create mode 100644 src/views/ContainerManagement/TemplatImport/index.vue
diff --git a/src/views/ContainerManagement/BuyCtn/TenantAuditStepModal.vue b/src/views/ContainerManagement/BuyCtn/TenantAuditStepModal.vue
index baf03227..76094afb 100644
--- a/src/views/ContainerManagement/BuyCtn/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/BuyCtn/TenantAuditStepModal.vue
@@ -362,10 +362,8 @@
fileId: dsFile.value.dsFileList.SelectId,
}
ApiDealExcel(ApiData).then((res) => {
- list.value.splice(0)
- res.data.forEach((item) => {
- list.value.push(item)
- })
+ refresh()
+ notification.success({ message: res.message, duration: 3 })
})
} else {
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
diff --git a/src/views/ContainerManagement/CtnScrap/TenantAuditStepModal.vue b/src/views/ContainerManagement/CtnScrap/TenantAuditStepModal.vue
index 19955fb4..5043e5dc 100644
--- a/src/views/ContainerManagement/CtnScrap/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/CtnScrap/TenantAuditStepModal.vue
@@ -373,10 +373,8 @@
fileId: dsFile.value.dsFileList.SelectId,
}
ApiDealExcel(ApiData).then((res) => {
- list.value.splice(0)
- res.data.forEach((item) => {
- list.value.push(item)
- })
+ refresh()
+ notification.success({ message: res.message, duration: 3 })
})
} else {
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
diff --git a/src/views/ContainerManagement/RentIn/TenantAuditStepModal.vue b/src/views/ContainerManagement/RentIn/TenantAuditStepModal.vue
index a930422c..615c27dc 100644
--- a/src/views/ContainerManagement/RentIn/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/RentIn/TenantAuditStepModal.vue
@@ -375,10 +375,8 @@
fileId: dsFile.value.dsFileList.SelectId,
}
ApiDealExcel(ApiData).then((res) => {
- list.value.splice(0)
- res.data.forEach((item) => {
- list.value.push(item)
- })
+ refresh()
+ notification.success({ message: res.message, duration: 3 })
})
} else {
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
diff --git a/src/views/ContainerManagement/RentOneWay/TenantAuditStepModal.vue b/src/views/ContainerManagement/RentOneWay/TenantAuditStepModal.vue
index 8358de0a..c4de6aea 100644
--- a/src/views/ContainerManagement/RentOneWay/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/RentOneWay/TenantAuditStepModal.vue
@@ -362,10 +362,8 @@
fileId: dsFile.value.dsFileList.SelectId,
}
ApiDealExcel(ApiData).then((res) => {
- list.value.splice(0)
- res.data.forEach((item) => {
- list.value.push(item)
- })
+ refresh()
+ notification.success({ message: res.message, duration: 3 })
})
} else {
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
diff --git a/src/views/ContainerManagement/RentOneWayIn/TenantAuditStepModal.vue b/src/views/ContainerManagement/RentOneWayIn/TenantAuditStepModal.vue
new file mode 100644
index 00000000..58da7664
--- /dev/null
+++ b/src/views/ContainerManagement/RentOneWayIn/TenantAuditStepModal.vue
@@ -0,0 +1,853 @@
+
+
+
+
+
+
+
+
+
+ 新增
+
+
+
+
+ 删除
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认执行
+
+
+ 取消执行
+
+
+ 识别excel
+
+ 取消
+ 仅保存
+ 保存并关闭
+
+
+
+
+
+
diff --git a/src/views/ContainerManagement/RentOneWayIn/api.ts b/src/views/ContainerManagement/RentOneWayIn/api.ts
new file mode 100644
index 00000000..143454e4
--- /dev/null
+++ b/src/views/ContainerManagement/RentOneWayIn/api.ts
@@ -0,0 +1,110 @@
+// @ts-ignore
+import { request } from '/@/utils/request'
+import { DataResult, PageRequest } from '/@/api/model/baseModel'
+enum Api {
+ list = '/containerManagementApi/CM_RentOneWay_In/GetCM_RentOneWay_InList',
+ edit = '/containerManagementApi/CM_RentOneWay_In/EditCM_RentOneWay_In',
+ info = '/containerManagementApi/CM_RentOneWay_In/GetCM_RentOneWay_In',
+ del = '/containerManagementApi/CM_RentOneWay_In/DeleteCM_RentOneWay_In',
+
+ // listDetail = '/containerManagementApi/CM_RentOneWay_Detail/GetCM_RentOneWay_DetailList',
+ // editDetail = '/containerManagementApi/CM_RentOneWay_Detail/EditCM_RentOneWay_Detail',
+ delDetail = '/containerManagementApi/CM_RentOneWay_Detail/DeleteCM_RentOneWay_Detail',
+
+ Confirm = '/containerManagementApi/CM_RentOneWay_In/CM_RentOneWay_In_Confirm',
+ Cancel = '/containerManagementApi/CM_RentOneWay_In/CM_RentOneWay_In_Cancel',
+
+ // DetailView = '/containerManagementApi/CM_RentOut/CM_RentOut_NeedRent_View',
+ // AddCtn = '/containerManagementApi/CM_RentOneWay/CM_RentOneWay_AddCtn',
+}
+// 列表 (Auth)
+export function ApiList(data: PageRequest) {
+ return request({
+ url: Api.list,
+ method: 'post',
+ data,
+ })
+}
+// 编辑 (Auth)
+export function ApiEdit(data: PageRequest) {
+ return request({
+ url: Api.edit,
+ method: 'post',
+ data,
+ })
+}
+// 详情 (Auth)
+export function ApiInfo(query) {
+ return request({
+ url: Api.info,
+ method: 'get',
+ params: query,
+ })
+}
+// 删除 (Auth)
+export function ApiDel(data: PageRequest) {
+ return request({
+ url: Api.del,
+ method: 'post',
+ data,
+ })
+}
+
+// // 列表详情 (Auth)
+// export function ApiListDetail(data: PageRequest) {
+// return request({
+// url: Api.listDetail,
+// method: 'post',
+// data,
+// })
+// }
+// // 编辑详情 (Auth)
+// export function ApiEditDetail(data: PageRequest) {
+// return request({
+// url: Api.editDetail,
+// method: 'post',
+// data,
+// })
+// }
+// 删除详情 (Auth)
+export function ApiDelDetail(data: PageRequest) {
+ return request({
+ url: Api.delDetail,
+ method: 'post',
+ data,
+ })
+}
+
+// _确认 (Auth)
+export function ApiConfirm(data: PageRequest) {
+ return request({
+ url: Api.Confirm,
+ method: 'post',
+ data,
+ })
+}
+// _取消 (Auth)
+export function ApiCancel(data: PageRequest) {
+ return request({
+ url: Api.Cancel,
+ method: 'post',
+ data,
+ })
+}
+
+// // 租箱租入明细视图 (Auth)
+// export function ApiDetailView(data: PageRequest) {
+// return request({
+// url: Api.DetailView,
+// method: 'post',
+// data,
+// })
+// }
+// // 租箱租入退租_添加 (Auth)
+// export function ApiAddCtn(data: PageRequest) {
+// return request({
+// url: Api.AddCtn,
+// method: 'post',
+// data,
+// })
+// }
diff --git a/src/views/ContainerManagement/RentOneWayIn/columns.tsx b/src/views/ContainerManagement/RentOneWayIn/columns.tsx
new file mode 100644
index 00000000..41c46b0c
--- /dev/null
+++ b/src/views/ContainerManagement/RentOneWayIn/columns.tsx
@@ -0,0 +1,517 @@
+import { ref } from 'vue'
+import moment from 'moment'
+import { BasicColumn, FormSchema } from '/@/components/Table'
+import { Tag } from 'ant-design-vue'
+import { GetCtnSelectList, GetClientListByCode } from '/@/api/common'
+import { GetDeptList } from '/@/views/operation/seaexport/api/BookingLedger'
+import { useOptionsStore } from '/@/store/modules/options'
+const optionsStore = useOptionsStore()
+// 字典
+import { getDictOption } from '/@/utils/dictUtil'
+
+// 业务类型字典
+const businessTypeDict = ref([])
+getDictOption('CM_BusinessType').then((res) => {
+ businessTypeDict.value = res
+})
+// 租箱类型字典
+const rentTypeIdDict = ref([])
+getDictOption('CM_RentType').then((res) => {
+ rentTypeIdDict.value = res
+})
+
+export const columns: BasicColumn[] = [
+ {
+ title: '单程业务号',
+ dataIndex: 'billno',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '业务类型',
+ dataIndex: 'businessType',
+ sorter: true,
+ width: 150,
+ customRender: ({ text }) => {
+ let RData = '-'
+ businessTypeDict.value.forEach((item: any) => {
+ if (text == item.value) {
+ RData = item.label
+ }
+ })
+ return RData
+ },
+ },
+ {
+ title: '租箱业务',
+ dataIndex: 'rentDirect',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '租箱类型',
+ dataIndex: 'rentTypeId',
+ sorter: true,
+ width: 150,
+ customRender: ({ text }) => {
+ let RData = '-'
+ rentTypeIdDict.value.forEach((item: any) => {
+ if (text == item.value) {
+ RData = item.label
+ }
+ })
+ return RData
+ },
+ },
+ {
+ title: '业务状态',
+ dataIndex: 'billState',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '租箱客户',
+ dataIndex: 'rentCustomerName',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '业务日期',
+ dataIndex: 'bsdate',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '会计期间',
+ dataIndex: 'accdate',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '业务锁定',
+ dataIndex: 'isBusinessLocking',
+ sorter: true,
+ width: 200,
+ customRender: ({ text }) => {
+ if (text) {
+ return 是
+ } else {
+ return 否
+ }
+ return text
+ },
+ },
+ {
+ title: '费用锁定',
+ dataIndex: 'isFeeLocking',
+ sorter: true,
+ width: 200,
+ customRender: ({ text }) => {
+ if (text) {
+ return 是
+ } else {
+ return 否
+ }
+ return text
+ },
+ },
+ // {
+ // title: '费用状态??',
+ // dataIndex: 'accdate',
+ // sorter: true,
+ // width: 200,
+ // },
+ {
+ title: '备注',
+ dataIndex: 'remark',
+ sorter: true,
+ width: 200,
+ },
+]
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ field: 'billno',
+ label: '租箱业务号',
+ component: 'Input',
+ colProps: { span: 4 },
+ },
+ {
+ field: 'rentCustomerName',
+ label: '租箱客户',
+ component: 'ApiSelect',
+ required: false,
+ dynamicDisabled: false,
+ colProps: { span: 4 },
+ 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: 'rentDirectId',
+ // label: '租箱业务',
+ // component: 'ApiSelect',
+ // colProps: { span: 4 },
+ // componentProps: ({}) => {
+ // return {
+ // api: () => {
+ // return new Promise((resolve) => {
+ // getDictOption('CM_RentDirect').then((res) => {
+ // let data: any = []
+ // res.forEach((item) => {
+ // item.value = parseInt(item.value)
+ // if (!item.label.indexOf('租入')) {
+ // data.push(item)
+ // }
+ // })
+ // resolve(data)
+ // })
+ // })
+ // },
+ // labelField: 'label',
+ // valueField: 'value',
+ // resultField: 'data',
+ // filterOption: (input: string, option: any) => {
+ // return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+ // },
+ // }
+ // },
+ // },
+ {
+ field: 'bsdate',
+ label: '业务日期',
+ component: 'DatePicker',
+ colProps: { span: 4 },
+ defaultValue: '',
+ componentProps: {
+ allowClear: true,
+ valueFormat: 'YYYY-MM-DD 00:00:00',
+ style: 'width:100%',
+ },
+ },
+ {
+ field: 'accdate',
+ label: '会计期间',
+ component: 'MonthPicker',
+ colProps: { span: 4 },
+ defaultValue: '',
+ componentProps: {
+ showTime: true,
+ allowClear: true,
+ valueFormat: 'YYYY-MM',
+ format: 'YYYY-MM',
+ },
+ },
+ // {
+ // field: 'etd',
+ // label: 'ETD',
+ // component: 'DatePicker',
+ // colProps: { span: 4 },
+ // defaultValue: '',
+ // componentProps: {
+ // showTime: true,
+ // style: 'width:100%',
+ // },
+ // },
+ // {
+ // field: 'eta',
+ // label: 'ETA',
+ // component: 'DatePicker',
+ // colProps: { span: 4 },
+ // defaultValue: '',
+ // componentProps: {
+ // showTime: true,
+ // style: 'width:100%',
+ // },
+ // },
+]
+export const formSchema: FormSchema[] = [
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ defaultValue: '',
+ show: false,
+ },
+ {
+ field: 'businessType',
+ label: '业务类型',
+ component: 'ApiSelect',
+ colProps: { span: 6 },
+ defaultValue: 103,
+ dynamicDisabled: ({}) => {
+ return true
+ },
+ componentProps: ({}) => {
+ return {
+ api: () => {
+ return new Promise((resolve) => {
+ getDictOption('CM_BusinessType').then((res) => {
+ res.forEach((item) => {
+ item.value = parseInt(item.value)
+ })
+ resolve(res)
+ })
+ })
+ },
+ labelField: 'label',
+ valueField: 'value',
+ resultField: 'data',
+ filterOption: (input: string, option: any) => {
+ return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+ },
+ }
+ },
+ },
+
+ // {
+ // field: 'rentDirectId',
+ // label: '租箱业务',
+ // component: 'ApiSelect',
+ // colProps: { span: 6 },
+ // defaultValue: 2,
+ // dynamicDisabled: ({ values }) => {
+ // return !!values.id
+ // },
+ // componentProps: ({ formModel, formActionType }) => {
+ // return {
+ // api: () => {
+ // return new Promise((resolve) => {
+ // getDictOption('CM_RentDirect').then((res) => {
+ // let data: any = []
+ // res.forEach((item) => {
+ // item.value = parseInt(item.value)
+ // if (!item.label.indexOf('租出')) {
+ // data.push(item)
+ // }
+ // })
+ // resolve(data)
+ // })
+ // })
+ // },
+ // labelField: 'label',
+ // valueField: 'value',
+ // resultField: 'data',
+ // filterOption: (input: string, option: any) => {
+ // return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+ // },
+ // onChange: (e, obj) => {
+ // formActionType ? formActionType.submit() : null
+ // if (e && obj) {
+ // formModel.rentDirect = obj.label
+ // } else {
+ // formModel.rentDirect = ''
+ // }
+ // },
+ // }
+ // },
+ // },
+ // {
+ // field: 'rentTypeId',
+ // label: '租箱类型',
+ // component: 'ApiSelect',
+ // colProps: { span: 6 },
+ // defaultValue: 1,
+ // dynamicDisabled: ({ values }) => {
+ // return !!values.id
+ // },
+ // componentProps: ({}) => {
+ // return {
+ // api: () => {
+ // return new Promise((resolve) => {
+ // getDictOption('CM_RentType').then((res) => {
+ // res.forEach((item) => {
+ // item.value = parseInt(item.value)
+ // })
+ // resolve(res)
+ // })
+ // })
+ // },
+ // labelField: 'label',
+ // valueField: 'value',
+ // resultField: 'data',
+ // filterOption: (input: string, option: any) => {
+ // return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+ // },
+ // }
+ // },
+ // },
+ // {
+ // field: 'billState',
+ // label: '业务状态',
+ // component: 'Input',
+ // colProps: { span: 6 },
+ // dynamicDisabled: ({}) => {
+ // return true
+ // },
+ // },
+ {
+ field: 'rentCustomerId',
+ label: '租箱客户',
+ component: 'Input',
+ colProps: { span: 6 },
+ show: false,
+ },
+ {
+ field: 'rentCustomerName',
+ label: '租箱客户',
+ component: 'ApiSelect',
+ required: false,
+ dynamicDisabled: 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
+ },
+ onChange: (e, obj) => {
+ if (e && obj) {
+ formModel.rentCustomerId = obj.id
+ }
+ if (!e && !obj) {
+ formModel.rentCustomerId = ''
+ }
+ },
+ }
+ },
+ },
+ {
+ field: 'bsdate',
+ label: '业务日期',
+ component: 'DatePicker',
+ colProps: { span: 6 },
+ defaultValue: moment(),
+ componentProps: {
+ allowClear: true,
+ valueFormat: 'YYYY-MM-DD 00:00:00',
+ style: 'width:100%',
+ },
+ },
+ {
+ field: 'accdate',
+ label: '会计期间',
+ component: 'MonthPicker',
+ colProps: { span: 6 },
+ defaultValue: moment(),
+ componentProps: {
+ showTime: true,
+ allowClear: true,
+ valueFormat: 'YYYY-MM',
+ format: 'YYYY-MM',
+ },
+ },
+ {
+ field: 'isBusinessLocking',
+ label: '业务锁定',
+ component: 'Switch',
+ defaultValue: false,
+ colProps: { span: 6 },
+ componentProps: {
+ checkedChildren: '是',
+ unCheckedChildren: '否',
+ },
+ dynamicDisabled: ({}) => {
+ return true
+ },
+ },
+ {
+ field: 'isFeeLocking',
+ label: '费用锁定',
+ component: 'Switch',
+ defaultValue: false,
+ colProps: { span: 6 },
+ componentProps: {
+ checkedChildren: '是',
+ unCheckedChildren: '否',
+ },
+ dynamicDisabled: ({}) => {
+ return true
+ },
+ },
+ {
+ field: 'remark',
+ label: '备注',
+ component: 'Input',
+ colProps: { span: 24 },
+ },
+]
+
+export const formSearchBoxSchema: FormSchema[] = [
+ {
+ field: 'rentCustomerName',
+ label: '租箱客户',
+ component: 'ApiSelect',
+ required: false,
+ dynamicDisabled: 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: 'ctnall',
+ label: '箱型',
+ component: 'ApiSelect',
+ required: false,
+ dynamicDisabled: false,
+ colProps: { span: 6 },
+ componentProps: () => {
+ return {
+ allowClear: true,
+ showSearch: true,
+ api: GetCtnSelectList,
+ params: { code: 'leasing' },
+ labelField: 'ctnName',
+ showName: 'ctnName',
+ valueField: 'ctnName',
+ resultField: 'data',
+ immediate: false,
+ filterOption: (input: string, option: any) => {
+ return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+ },
+ }
+ },
+ },
+ {
+ field: 'cntrno',
+ label: '箱号',
+ component: 'Input',
+ colProps: { span: 10 },
+ },
+]
diff --git a/src/views/ContainerManagement/RentOneWayIn/index.vue b/src/views/ContainerManagement/RentOneWayIn/index.vue
new file mode 100644
index 00000000..2592f0ec
--- /dev/null
+++ b/src/views/ContainerManagement/RentOneWayIn/index.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+ 新建
+
+
+
+
+ 删除
+
+
+
+
+ 确认执行
+
+
+
+ 取消确认
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ContainerManagement/RentOut/TenantAuditStepModal.vue b/src/views/ContainerManagement/RentOut/TenantAuditStepModal.vue
index 5126d116..7b46de3a 100644
--- a/src/views/ContainerManagement/RentOut/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/RentOut/TenantAuditStepModal.vue
@@ -393,10 +393,8 @@
fileId: dsFile.value.dsFileList.SelectId,
}
ApiDealExcel(ApiData).then((res) => {
- list.value.splice(0)
- res.data.forEach((item) => {
- list.value.push(item)
- })
+ refresh()
+ notification.success({ message: res.message, duration: 3 })
})
} else {
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
diff --git a/src/views/ContainerManagement/SellCtn/TenantAuditStepModal.vue b/src/views/ContainerManagement/SellCtn/TenantAuditStepModal.vue
index 6835fb15..9a6e6615 100644
--- a/src/views/ContainerManagement/SellCtn/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/SellCtn/TenantAuditStepModal.vue
@@ -373,10 +373,8 @@
fileId: dsFile.value.dsFileList.SelectId,
}
ApiDealExcel(ApiData).then((res) => {
- list.value.splice(0)
- res.data.forEach((item) => {
- list.value.push(item)
- })
+ refresh()
+ notification.success({ message: res.message, duration: 3 })
})
} else {
notification.warning({ message: '请先在电子文档中勾选一个文件。', duration: 3 })
diff --git a/src/views/ContainerManagement/Templat/TenantAuditStepModal.vue b/src/views/ContainerManagement/Templat/TenantAuditStepModal.vue
index 45a72684..84f74372 100644
--- a/src/views/ContainerManagement/Templat/TenantAuditStepModal.vue
+++ b/src/views/ContainerManagement/Templat/TenantAuditStepModal.vue
@@ -93,7 +93,7 @@
const { notification } = useMessage()
// 声明Emits
const emit = defineEmits(['success', 'register'])
- const select = ref([])
+ const isUpdate = ref(true)
const loading = ref(false)
const rowId = ref()
const { createMessage } = useMessage()
@@ -106,14 +106,23 @@
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields()
setModalProps({ confirmLoading: false, loading: true })
- select.value = data.select
- if (select.value.length) {
- console.log(select.value)
- let cntrno = ''
- select.value.forEach((item: any) => {
- cntrno = cntrno ? `${cntrno},${item.cntrno}` : item.cntrno
- })
- setFieldsValue({ cntrno })
+ isUpdate.value = !!data?.isUpdate
+ list.value.splice(0)
+ if (unref(isUpdate)) {
+ rowId.value = data.record.id
+ const res: any = await ApiInfo({ id: unref(rowId) })
+ if (res.succeeded) {
+ setFieldsValue({
+ ...res.data,
+ })
+ allCheck.value = false
+ someCheck.value = false
+ res.data.bodyList.forEach((item) => {
+ list.value.push({ ...item, selected: false })
+ })
+ }
+ } else {
+ setFieldsValue({ permissionIdentity: unref(2) })
}
setModalProps({ loading: false })
})
@@ -123,15 +132,19 @@
const values = await validate()
setModalProps({ confirmLoading: true, loading: true })
values.bodyList = list.value
- const res: API.DataResult = await ApiEdit(values)
+ const res: any = await ApiEdit(values)
if (res.succeeded) {
createMessage.success(res.message)
emit('success')
//刷新页面
if (!exit) {
- rowId.value = res.data
- select.value = []
- await refresh()
+ if (unref(isUpdate)) {
+ await refresh()
+ } else {
+ rowId.value = res.data
+ isUpdate.value = true
+ await refresh()
+ }
}
} else {
createMessage.error(res.message)
@@ -144,11 +157,17 @@
}
}
async function refresh() {
- const res: API.DataResult = await ApiInfo({ id: unref(rowId) })
+ list.value.splice(0)
+ const res: any = await ApiInfo({ id: unref(rowId) })
if (res.succeeded) {
- await setFieldsValue({
+ setFieldsValue({
...res.data,
})
+ allCheck.value = false
+ someCheck.value = false
+ res.data.bodyList.forEach((item) => {
+ list.value.push({ ...item, selected: false })
+ })
}
}
// ------------------------
@@ -292,7 +311,7 @@
},
}
function TableAdd() {
- list.value.push({ selected: false })
+ list.value.push({ pid: rowId.value ? rowId.value : '', selected: false })
}
function FnClickDel() {
let ApiData: any = { ids: [] }
diff --git a/src/views/ContainerManagement/Templat/index.vue b/src/views/ContainerManagement/Templat/index.vue
index beb358e4..a777ccb5 100644
--- a/src/views/ContainerManagement/Templat/index.vue
+++ b/src/views/ContainerManagement/Templat/index.vue
@@ -1,6 +1,6 @@
-
+
@@ -18,6 +18,19 @@
+
+
+
+
+
@@ -36,7 +49,7 @@
const [registerTable, { reload, getForm, getSelectRows }] = useTable({
title: '批量变动导入_模板管理',
api: async (p) => {
- const res: API.DataResult = await ApiList(p)
+ const res: any = await ApiList(p)
return new Promise((resolve) => {
resolve({ data: [...res.data], total: res.count })
})
@@ -62,6 +75,12 @@
canResize: true,
resizeHeightOffset: 35,
immediate: true,
+ actionColumn: {
+ width: 80,
+ title: '操作',
+ dataIndex: 'action',
+ fixed: 'right',
+ },
})
function handleCreate() {
const select = getSelectRows()
@@ -90,6 +109,12 @@
reload()
})
}
+ function handleAudit(record) {
+ openModal(true, {
+ record,
+ isUpdate: true,
+ })
+ }
function handleSuccess() {
reload()
}
diff --git a/src/views/ContainerManagement/TemplatImport/TenantAuditStepModal.vue b/src/views/ContainerManagement/TemplatImport/TenantAuditStepModal.vue
new file mode 100644
index 00000000..d1d7b2a2
--- /dev/null
+++ b/src/views/ContainerManagement/TemplatImport/TenantAuditStepModal.vue
@@ -0,0 +1,444 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认执行
+
+
+ 识别excel
+
+ 取消
+ 仅保存
+ 保存并关闭
+
+
+
+
diff --git a/src/views/ContainerManagement/TemplatImport/api.ts b/src/views/ContainerManagement/TemplatImport/api.ts
new file mode 100644
index 00000000..99c0b809
--- /dev/null
+++ b/src/views/ContainerManagement/TemplatImport/api.ts
@@ -0,0 +1,60 @@
+// @ts-ignore
+import { request } from '/@/utils/request'
+import { DataResult, PageRequest } from '/@/api/model/baseModel'
+enum Api {
+ list = '/containerManagementApi/CM_State_Change_TemplatImport/GetCM_State_Change_TemplatImportList',
+ edit = '/containerManagementApi/CM_State_Change_TemplatImport/EditCM_State_Change_TemplatImport',
+ info = '/containerManagementApi/CM_State_Change_TemplatImport/Get_State_Change_TemplatImport',
+ del = '/containerManagementApi/CM_State_Change_TemplatImport/DeleteCM_State_Change_TemplatImport',
+ delDetail = '/containerManagementApi/CM_State_Change_TemplatImport/DeleteCM_State_Change_Temp',
+ import = '/containerManagementApi/CM_State_Change_TemplatImport/CM_State_Change_TemplatImport_Confirm',
+}
+// 列表 (Auth)
+export function ApiList(data: PageRequest) {
+ return request({
+ url: Api.list,
+ method: 'post',
+ data,
+ })
+}
+// 编辑 (Auth)
+export function ApiEdit(data: PageRequest) {
+ return request({
+ url: Api.edit,
+ method: 'post',
+ data,
+ })
+}
+// 详情 (Auth)
+export function ApiInfo(query) {
+ return request({
+ url: Api.info,
+ method: 'get',
+ params: query,
+ })
+}
+// 批量删除 (Auth)
+export function ApiDel(data: PageRequest) {
+ return request({
+ url: Api.del,
+ method: 'post',
+ data,
+ })
+}
+
+// 删除明细 (Auth)
+export function ApiDelDetail(data: PageRequest) {
+ return request({
+ url: Api.delDetail,
+ method: 'post',
+ data,
+ })
+}
+// 确认引入 (Auth)
+export function ApiImport(data: PageRequest) {
+ return request({
+ url: Api.import,
+ method: 'post',
+ data,
+ })
+}
\ No newline at end of file
diff --git a/src/views/ContainerManagement/TemplatImport/columns.tsx b/src/views/ContainerManagement/TemplatImport/columns.tsx
new file mode 100644
index 00000000..e311862b
--- /dev/null
+++ b/src/views/ContainerManagement/TemplatImport/columns.tsx
@@ -0,0 +1,246 @@
+import { BasicColumn, FormSchema } from '/@/components/Table'
+import { Tag } from 'ant-design-vue'
+import { ApiList } from '../Templat/api'
+export const columns: BasicColumn[] = [
+ {
+ title: '模板名称',
+ dataIndex: 'templetName',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '导入人',
+ dataIndex: 'createUserName',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '导入时间',
+ dataIndex: 'createTime',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '是否已执行',
+ dataIndex: 'billState',
+ sorter: true,
+ width: 200,
+ },
+ {
+ title: '备注',
+ dataIndex: 'remark',
+ sorter: true,
+ width: 200,
+ },
+]
+
+export const searchFormSchema: FormSchema[] = [
+ {
+ field: 'templetName',
+ label: '模板名称',
+ component: 'Input',
+ colProps: { span: 4 },
+ },
+ {
+ field: 'remark',
+ label: '备注',
+ component: 'Input',
+ colProps: { span: 4 },
+ },
+]
+export const formSchema: FormSchema[] = [
+ {
+ label: '',
+ field: 'id',
+ component: 'Input',
+ defaultValue: '',
+ show: false,
+ },
+ {
+ label: '模板Id',
+ field: 'templetId',
+ component: 'Input',
+ show: false,
+ },
+ {
+ label: '模板名称',
+ field: 'templetName',
+ component: 'ApiSelect',
+ required: false,
+ dynamicDisabled: false,
+ colProps: { span: 6 },
+ componentProps: ({ formModel }) => {
+ return {
+ api: () => {
+ return new Promise((resolve) => {
+ ApiList({
+ queryCondition: '[]',
+ pageCondition: { pageIndex: 1, pageSize: 100, sortConditions: [] },
+ }).then((res) => {
+ resolve(res)
+ })
+ })
+ },
+ labelField: 'templetName',
+ valueField: 'templetName',
+ resultField: 'data',
+ onChange: (e, obj) => {
+ console.log(e, obj)
+ if (e && obj) {
+ formModel.templetName = obj.label
+ formModel.templetId = obj.value
+ }
+ if (!e && !obj) {
+ formModel.templetName = null
+ formModel.templetId = null
+ }
+ },
+ filterOption: (input: string, option: any) => {
+ return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
+ },
+ }
+ },
+ },
+ {
+ label: '导入人',
+ field: 'createUserName',
+ component: 'Input',
+ defaultValue: '',
+ dynamicDisabled: true,
+ },
+ // {
+ // label: '导入人',
+ // field: 'createUser',
+ // component: 'ApiSelect',
+ // required: false,
+ // dynamicDisabled: 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
+ // },
+ // }
+ // },
+ // },
+ {
+ label: '导入时间',
+ field: 'createTime',
+ component: 'DatePicker',
+ colProps: { span: 6 },
+ componentProps: {
+ showTime: false,
+ style: 'width:100%',
+ valueFormat: 'YYYY-MM-DD 00:00:00',
+ },
+ },
+ {
+ label: '是否已执行',
+ field: 'billState',
+ component: 'Input',
+ defaultValue: '',
+ colProps: { span: 6 },
+ dynamicDisabled: true,
+ },
+ {
+ field: 'remark',
+ label: '备注',
+ component: 'InputTextArea',
+ // required: true,
+ colProps: { span: 12 },
+ componentProps: {
+ rows: 3,
+ },
+ },
+]
+export const InfoColumns: BasicColumn[] = [
+ {
+ title: '箱号',
+ dataIndex: 'cntrno',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '变动来源',
+ dataIndex: 'changeSource',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '业务类型',
+ dataIndex: 'ctnBizState',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '箱来源',
+ dataIndex: 'ctnSource',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '状态变动',
+ dataIndex: 'ctnFlowState',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '新旧箱',
+ dataIndex: 'usedState',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '箱型',
+ dataIndex: 'ctnall',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '箱状态',
+ dataIndex: 'ctnState',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: '空重箱',
+ dataIndex: 'isHeavy',
+ sorter: true,
+ width: 80,
+ customRender: ({ text }) => {
+ if (text) {
+ return 重箱
+ } else {
+ return 空箱
+ }
+ return text
+ },
+ },
+ {
+ title: '当前港口',
+ dataIndex: 'port',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: 'DEPOT/TEIMINAL',
+ dataIndex: 'depot',
+ sorter: true,
+ width: 150,
+ },
+ {
+ title: 'DATE',
+ dataIndex: 'changeTime',
+ sorter: true,
+ width: 150,
+ },
+]
diff --git a/src/views/ContainerManagement/TemplatImport/index.vue b/src/views/ContainerManagement/TemplatImport/index.vue
new file mode 100644
index 00000000..70f6e0da
--- /dev/null
+++ b/src/views/ContainerManagement/TemplatImport/index.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+ 新建
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/sequence/DictDataModal.vue b/src/views/system/sequence/DictDataModal.vue
index 2ed2a667..62d28c8f 100644
--- a/src/views/system/sequence/DictDataModal.vue
+++ b/src/views/system/sequence/DictDataModal.vue
@@ -92,7 +92,7 @@
condition.push({
FieldName: 'SequenceId',
FieldValue: unref(pid),
- ConditionalType: 1,
+ ConditionalType: 0,
})
postParam.queryCondition = JSON.stringify(condition)
// console.log(postParam)