diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts b/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts index 1c32a0a4c..0de86dbce 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/data.ts @@ -176,8 +176,8 @@ export function useGridColumns( } // ==================== 子表(学生课程) ==================== -/** 列表的字段 */ -export function useDemo03CourseGridColumns( +/** 新增/修改的列表的字段 */ +export function useDemo03CourseGridEditColumns( onActionClick?: OnActionClickFn, ): VxeTableGridOptions['columns'] { return [ diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/modules/Demo03CourseForm.vue b/apps/web-antd/src/views/infra/demo/demo03/normal/modules/Demo03CourseForm.vue index a6ac61224..15d1978cc 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/modules/Demo03CourseForm.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/modules/Demo03CourseForm.vue @@ -10,7 +10,7 @@ import { getDemo03CourseListByStudentId } from '#/api/infra/demo/demo03/normal'; import { $t } from '#/locales'; import { h, nextTick, watch } from 'vue'; -import { useDemo03CourseGridColumns } from '../data'; +import { useDemo03CourseGridEditColumns } from '../data'; const props = defineProps<{ studentId?: any; // 学生编号(主表的关联字段) @@ -28,7 +28,7 @@ function onActionClick({ code, row }: OnActionClickParams { /** 提供获取表格数据的方法供父组件调用 */ defineExpose({ getData: (): Demo03StudentApi.Demo03Course[] => { - return [ - ...demo03CourseGridApi.grid.getData(), - ...demo03CourseGridApi.grid.getInsertRecords().map((row) => { - delete row.id; - return row; - }), - ]; + // 获取当前数据,但排除已删除的记录 + const allData = demo03CourseGridApi.grid.getData(); + const removedData = demo03CourseGridApi.grid.getRemoveRecords(); + const removedIds = new Set(removedData.map((row) => row.id)); + + // 过滤掉已删除的记录 + const currentData = allData.filter((row) => !removedIds.has(row.id)); + + // 获取新插入的记录并移除id + const insertedData = demo03CourseGridApi.grid.getInsertRecords().map((row) => { + delete row.id; + return row; + }); + + return [...currentData, ...insertedData]; }, }); diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue index 6beddbf7b..40ffbc826 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/modules/form.vue @@ -63,6 +63,7 @@ const [Modal, modalApi] = useVbenModal({ }, async onOpenChange(isOpen: boolean) { if (!isOpen) { + formData.value = undefined; return; }