refactor: 代码生成案例-主子表标准模式
parent
35d7419015
commit
d5422b570f
|
|
@ -176,8 +176,8 @@ export function useGridColumns(
|
||||||
}
|
}
|
||||||
|
|
||||||
// ==================== 子表(学生课程) ====================
|
// ==================== 子表(学生课程) ====================
|
||||||
/** 列表的字段 */
|
/** 新增/修改的列表的字段 */
|
||||||
export function useDemo03CourseGridColumns(
|
export function useDemo03CourseGridEditColumns(
|
||||||
onActionClick?: OnActionClickFn<Demo03StudentApi.Demo03Course>,
|
onActionClick?: OnActionClickFn<Demo03StudentApi.Demo03Course>,
|
||||||
): VxeTableGridOptions<Demo03StudentApi.Demo03Course>['columns'] {
|
): VxeTableGridOptions<Demo03StudentApi.Demo03Course>['columns'] {
|
||||||
return [
|
return [
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import { getDemo03CourseListByStudentId } from '#/api/infra/demo/demo03/normal';
|
||||||
import { $t } from '#/locales';
|
import { $t } from '#/locales';
|
||||||
import { h, nextTick, watch } from 'vue';
|
import { h, nextTick, watch } from 'vue';
|
||||||
|
|
||||||
import { useDemo03CourseGridColumns } from '../data';
|
import { useDemo03CourseGridEditColumns } from '../data';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
studentId?: any; // 学生编号(主表的关联字段)
|
studentId?: any; // 学生编号(主表的关联字段)
|
||||||
|
|
@ -28,7 +28,7 @@ function onActionClick({ code, row }: OnActionClickParams<Demo03StudentApi.Demo0
|
||||||
|
|
||||||
const [Demo03CourseGrid, demo03CourseGridApi] = useVbenVxeGrid({
|
const [Demo03CourseGrid, demo03CourseGridApi] = useVbenVxeGrid({
|
||||||
gridOptions: {
|
gridOptions: {
|
||||||
columns: useDemo03CourseGridColumns(onActionClick),
|
columns: useDemo03CourseGridEditColumns(onActionClick),
|
||||||
border: true,
|
border: true,
|
||||||
showOverflow: true,
|
showOverflow: true,
|
||||||
autoResize: true,
|
autoResize: true,
|
||||||
|
|
@ -58,13 +58,21 @@ const handleAdd = async () => {
|
||||||
/** 提供获取表格数据的方法供父组件调用 */
|
/** 提供获取表格数据的方法供父组件调用 */
|
||||||
defineExpose({
|
defineExpose({
|
||||||
getData: (): Demo03StudentApi.Demo03Course[] => {
|
getData: (): Demo03StudentApi.Demo03Course[] => {
|
||||||
return [
|
// 获取当前数据,但排除已删除的记录
|
||||||
...demo03CourseGridApi.grid.getData(),
|
const allData = demo03CourseGridApi.grid.getData();
|
||||||
...demo03CourseGridApi.grid.getInsertRecords().map((row) => {
|
const removedData = demo03CourseGridApi.grid.getRemoveRecords();
|
||||||
delete row.id;
|
const removedIds = new Set(removedData.map((row) => row.id));
|
||||||
return row;
|
|
||||||
}),
|
// 过滤掉已删除的记录
|
||||||
];
|
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];
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
},
|
},
|
||||||
async onOpenChange(isOpen: boolean) {
|
async onOpenChange(isOpen: boolean) {
|
||||||
if (!isOpen) {
|
if (!isOpen) {
|
||||||
|
formData.value = undefined;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue