From bd762452f8533fb4ce0165900e4d9901fbd3935d Mon Sep 17 00:00:00 2001 From: fyy <2717885210@qq.com> Date: Tue, 15 Jul 2025 16:12:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E5=B7=A1=E6=A3=80?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clean/cleanOrders/clean-modal.vue | 8 +- .../views/property/clean/cleanOrders/data.ts | 4 +- .../rentalPlan-detial-modal.vue | 24 +-- .../rentalPlan-modal.vue | 19 +-- .../inspectionTask/data.ts | 137 ++++++++---------- .../inspectionTask/index.vue | 8 +- .../inspectionTask/inspectionTask-modal.vue | 20 ++- 7 files changed, 93 insertions(+), 127 deletions(-) diff --git a/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue b/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue index 28d217e5..7a763c7f 100644 --- a/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue +++ b/apps/web-antd/src/views/property/clean/cleanOrders/clean-modal.vue @@ -67,6 +67,7 @@ const [BasicForm, formApi] = useVbenForm({ class: 'w-full', disabled: isReadonly.value, })), + schema: modalSchema(isReadonly.value), }, // 1. 使用正确的属性名 handleValuesChange handleValuesChange: async (values, fieldsChanged) => { @@ -327,6 +328,8 @@ async function handleConfirm() { return; } const data = cloneDeep(await formApi.getValues()); + console.log(data); + // 单位数据缓存 if (unitListData.length === 0) { const res = await resident_unitList(); @@ -340,10 +343,9 @@ async function handleConfirm() { data.name = cleanObj ? cleanObj.name : data.name || ''; data.unitId = unitObj ? unitObj.id : isUpdate.value ? editUnitId.value : ''; data.sumPeices = Number(totalSumPeices.value) - // data.sumPeices = parseInt(totalSumPeices.value, 10); - // 组装 cleanIds - // data.cleanIds = detailTable.value.map((item: any) => item.id); data.cleanList = detailTable.value; + if (data.starTime) data.starTime = dayjs(data.starTime).format('YYYY-MM-DD HH:mm:ss'); + if (data.endTime) data.endTime = dayjs(data.endTime).format('YYYY-MM-DD HH:mm:ss'); isUpdate.value ? await clean_orderUpdate({...data,id:editCleanOrderId.value}) : await clean_orderAdd(data); resetInitialized(); emit('reload'); diff --git a/apps/web-antd/src/views/property/clean/cleanOrders/data.ts b/apps/web-antd/src/views/property/clean/cleanOrders/data.ts index 78f6337f..82edeb15 100644 --- a/apps/web-antd/src/views/property/clean/cleanOrders/data.ts +++ b/apps/web-antd/src/views/property/clean/cleanOrders/data.ts @@ -131,7 +131,7 @@ export const columns: VxeGridProps['columns'] = [ ]; -export const modalSchema: FormSchemaGetter = () => [ +export const modalSchema: (isReadonly: boolean) => FormSchema[] = (isReadonly) => [ { label: '主键id', fieldName: 'id', @@ -167,7 +167,7 @@ export const modalSchema: FormSchemaGetter = () => [ showTime: true, format: 'YYYY-MM-DD HH:mm:ss', placeholder: !values.starTime?'请先选择开始时间':`请选择结束时间(结束时间不能早于开始时间)`, - disabled: !values.starTime, // 没选开始时间时禁用 + disabled: isReadonly || !values.starTime, // 没选开始时间时禁用 disabledDate: (current:any) => { if (!values.starTime) return false; // 只允许选择大于等于开始时间的日期 diff --git a/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-detial-modal.vue b/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-detial-modal.vue index e16c8d50..f7af2e4f 100644 --- a/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-detial-modal.vue +++ b/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-detial-modal.vue @@ -39,29 +39,7 @@ const detailSchema = [ api: async () => { const res = await plantsProductList({state:1,inventory:0}); plantListData = res.rows || []; - - // 获取当前模态框的数据,包含已添加的产品列表 - const modalData = modalApi.getData(); - const existingProducts = modalData?.existingProducts || []; - const currentProductId = modalData?.currentProductId; - - // 过滤掉已经添加到产品列表中的产品 - // 如果是编辑模式,需要排除当前正在编辑的产品 - const filteredRows = res.rows.filter((item: any) => { - // 如果是编辑模式且是当前正在编辑的产品,则保留 - if (currentProductId && item.id === currentProductId) { - return true; - } - // 过滤掉已添加的产品 - return !existingProducts.some((existing: any) => - existing.productId === item.id || existing.id === item.id - ); - }); - - return { - ...res, - rows: filteredRows - }; + return res; }, resultField: 'rows', labelField: 'plantName', diff --git a/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-modal.vue b/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-modal.vue index 55600aa4..b6a9a9c2 100644 --- a/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-modal.vue +++ b/apps/web-antd/src/views/property/greenPlantRentalManagement/leasePogramManagement/rentalPlan-modal.vue @@ -29,10 +29,10 @@ const [BasicForm, formApi] = useVbenForm({ // 默认label宽度 px labelWidth: 120, // 通用配置项 会影响到所有表单项 - componentProps: { + componentProps: computed(() => ({ class: 'w-full', - disabled: isReadonly, - }, + disabled: isReadonly.value, + })), }, schema: modalSchema(), showDefaultActions: false, @@ -143,13 +143,10 @@ const detailColumns = [ title: '操作', key: 'action', fixed: 'right' as const, - width: 200, }, ]; function handleAddDetail() { - detailModalApi.setData({ - existingProducts: detailTable.value - }); + detailModalApi.setData({}); detailModalApi.open(); } //添加植物组合包产品 @@ -172,13 +169,7 @@ function handleViewDetail(record: any) { } // 编辑产品详情 function handleEditDetail(record: any, index: number) { - detailModalApi.setData({ - ...record, - index, - readonly: false, - existingProducts: detailTable.value.filter((item: any, i: number) => i !== index), - currentProductId: record.productId || record.id - }); + detailModalApi.setData({ ...record, index, readonly: false }); detailModalApi.open(); } //分类字典 diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/data.ts b/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/data.ts index a172183f..243be27b 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/data.ts +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/data.ts @@ -1,41 +1,23 @@ import type { FormSchemaGetter } from '#/adapter/form'; import type { VxeGridProps } from '#/adapter/vxe-table'; - +import { getDictOptions } from '#/utils/dict'; +import { renderDict } from '#/utils/render'; export const querySchema: FormSchemaGetter = () => [ - - { - component: 'DatePicker', - componentProps: { - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'YYYY-MM-DD HH:mm:ss', - }, - fieldName: 'actInsTime', - label: '实际巡检时间', - labelWidth: 120, - }, - { - component: 'Input', - fieldName: 'actUserId', - label: '当前巡检人', - }, + // { + // component: 'Input', + // fieldName: 'actUserId', + // label: '当前巡检人', + // labelWidth: 160, + // }, { component: 'Select', componentProps: { - }, - fieldName: 'taskType', - label: '巡检方式', - }, - - { - component: 'RadioGroup', - componentProps: { - buttonStyle: 'solid', - optionType: 'button', + options:getDictOptions('wy_xjzt') }, fieldName: 'status', label: '巡检状态', + labelWidth: 160, }, ]; @@ -56,50 +38,58 @@ export const columns: VxeGridProps['columns'] = [ { title: '巡检计划', field: 'planName', - width:'auto' + minWidth: 120, }, { - title: '巡检开始日期', - field: 'startDate', - width:180 - - }, - { - title: '巡检结束日期', - field: 'endDate', - width:180 - - }, - { - title: '实际巡检时间', - field: 'actInsTime', - width:180 - }, - { - title: '当前巡检人', - field: 'actUserId', - width:'auto' + title: '巡检开始结束日期', + field: 'planInsTime', + minWidth:280 }, + // { + // title: '当前巡检人', + // field: 'actUserId', + // width:'auto' + // }, { title: '巡检方式', field: 'taskType', - width:'auto' - + width:'auto', + slots: { + default: ({ row }) => { + return renderDict(row.taskType, 'wy_xjqdfs'); + }, + }, }, { title: '转移描述', field: 'transferDesc', - width:200 + width:200, + slots: { + default: ({ row }) => { + return row.transferDesc?row.transferDesc:'--'; + }, + }, }, { title: '巡检状态', field: 'status', + width:'auto', + slots: { + default: ({ row }) => { + return renderDict(row.status, 'wy_xjzt'); + }, + }, }, { title: '备注', field: 'remark', - + width:'auto', + slots: { + default: ({ row }) => { + return row.remark?row.remark:'--'; + }, + }, }, { field: 'action', @@ -126,54 +116,45 @@ export const modalSchema: FormSchemaGetter = () => [ component: 'Input', }, { - label: '巡检开始日期', - fieldName: 'startDate', - component: 'Input', - }, - { - label: '巡检结束日期', - fieldName: 'endDate', - component: 'Input', - }, - { - label: '实际巡检时间', - fieldName: 'actInsTime', - component: 'DatePicker', - componentProps: { - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'YYYY-MM-DD HH:mm:ss', - }, - }, - { - label: '当前巡检人', - fieldName: 'actUserId', + label: '巡检开始结束日期', + fieldName: 'planInsTime', component: 'Input', }, + // { + // label: '当前巡检人', + // fieldName: 'actUserId', + // component: 'Input', + // }, { label: '巡检方式', fieldName: 'taskType', component: 'Select', componentProps: { + options: getDictOptions('wy_xjqdfs'), }, }, { label: '转移描述', fieldName: 'transferDesc', component: 'Textarea', + componentProps:{ + placeholder:'' + } }, { label: '巡检状态', fieldName: 'status', - component: 'RadioGroup', + component: 'Select', componentProps: { - buttonStyle: 'solid', - optionType: 'button', + options: getDictOptions('wy_xjzt'), }, }, { label: '备注', fieldName: 'remark', component: 'Input', + componentProps:{ + placeholder:'' + } } ]; diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/index.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/index.vue index 893481ce..06ceda3e 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/index.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionTask/index.vue @@ -155,17 +155,17 @@ function handleDownloadExcel() { +