feat: 新增代码生成管理接口及视图模块
parent
23bcf4f61b
commit
1fa93dd5db
|
@ -0,0 +1,312 @@
|
|||
import { type PageParam, requestClient } from '#/api/request';
|
||||
|
||||
export namespace CodegenApi {
|
||||
/**
|
||||
* 代码生成字段定义 Response VO
|
||||
*/
|
||||
export interface CodegenColumnRespVO {
|
||||
/** 编号 */
|
||||
id: number;
|
||||
/** 表编号 */
|
||||
tableId: number;
|
||||
/** 字段名 */
|
||||
columnName: string;
|
||||
/** 字段类型 */
|
||||
dataType: string;
|
||||
/** 字段描述 */
|
||||
columnComment: string;
|
||||
/** 是否允许为空 */
|
||||
nullable: boolean;
|
||||
/** 是否主键 */
|
||||
primaryKey: boolean;
|
||||
/** 排序 */
|
||||
ordinalPosition: number;
|
||||
/** Java 属性类型 */
|
||||
javaType: string;
|
||||
/** Java 属性名 */
|
||||
javaField: string;
|
||||
/** 字典类型 */
|
||||
dictType?: string;
|
||||
/** 数据示例 */
|
||||
example?: string;
|
||||
/** 是否为 Create 创建操作的字段 */
|
||||
createOperation: boolean;
|
||||
/** 是否为 Update 更新操作的字段 */
|
||||
updateOperation: boolean;
|
||||
/** 是否为 List 查询操作的字段 */
|
||||
listOperation: boolean;
|
||||
/** List 查询操作的条件类型 */
|
||||
listOperationCondition: string;
|
||||
/** 是否为 List 查询操作的返回字段 */
|
||||
listOperationResult: boolean;
|
||||
/** 显示类型 */
|
||||
htmlType: string;
|
||||
/** 创建时间 */
|
||||
createTime: string; // 假设为 ISO 字符串格式的 LocalDateTime
|
||||
}
|
||||
|
||||
/**
|
||||
* 代码生成字段定义创建/修改 Request VO
|
||||
*/
|
||||
export interface CodegenColumnSaveReqVO {
|
||||
/** 编号 */
|
||||
id: number;
|
||||
/** 表编号 */
|
||||
tableId: number;
|
||||
/** 字段名 */
|
||||
columnName: string;
|
||||
/** 字段类型 */
|
||||
dataType: string;
|
||||
/** 字段描述 */
|
||||
columnComment: string;
|
||||
/** 是否允许为空 */
|
||||
nullable: boolean;
|
||||
/** 是否主键 */
|
||||
primaryKey: boolean;
|
||||
/** 排序 */
|
||||
ordinalPosition: number;
|
||||
/** Java 属性类型 */
|
||||
javaType: string;
|
||||
/** Java 属性名 */
|
||||
javaField: string;
|
||||
/** 字典类型 */
|
||||
dictType?: string;
|
||||
/** 数据示例 */
|
||||
example?: string;
|
||||
/** 是否为 Create 创建操作的字段 */
|
||||
createOperation: boolean;
|
||||
/** 是否为 Update 更新操作的字段 */
|
||||
updateOperation: boolean;
|
||||
/** 是否为 List 查询操作的字段 */
|
||||
listOperation: boolean;
|
||||
/** List 查询操作的条件类型 */
|
||||
listOperationCondition: string;
|
||||
/** 是否为 List 查询操作的返回字段 */
|
||||
listOperationResult: boolean;
|
||||
/** 显示类型 */
|
||||
htmlType: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 表定义分页 Request VO
|
||||
*/
|
||||
export interface CodegenTablePageReqVO {
|
||||
/** 表名称,模糊匹配 */
|
||||
tableName?: string;
|
||||
/** 表描述,模糊匹配 */
|
||||
tableComment?: string;
|
||||
/** 实体,模糊匹配 */
|
||||
className?: string;
|
||||
/** 创建时间 */
|
||||
createTime?: [string, string]; // 假设为 ISO 字符串格式的 LocalDateTime
|
||||
}
|
||||
|
||||
/**
|
||||
* 代码生成表定义 Response VO
|
||||
*/
|
||||
export interface CodegenTableRespVO {
|
||||
/** 编号 */
|
||||
id: number;
|
||||
/** 生成场景 */
|
||||
scene: number;
|
||||
/** 表名称 */
|
||||
tableName: string;
|
||||
/** 表描述 */
|
||||
tableComment: string;
|
||||
/** 备注 */
|
||||
remark?: string;
|
||||
/** 模块名 */
|
||||
moduleName: string;
|
||||
/** 业务名 */
|
||||
businessName: string;
|
||||
/** 类名称 */
|
||||
className: string;
|
||||
/** 类描述 */
|
||||
classComment: string;
|
||||
/** 作者 */
|
||||
author: string;
|
||||
/** 模板类型 */
|
||||
templateType: number;
|
||||
/** 前端类型 */
|
||||
frontType: number;
|
||||
/** 父菜单编号 */
|
||||
parentMenuId?: number;
|
||||
/** 主表的编号 */
|
||||
masterTableId?: number;
|
||||
/** 子表关联主表的字段编号 */
|
||||
subJoinColumnId?: number;
|
||||
/** 主表与子表是否一对多 */
|
||||
subJoinMany?: boolean;
|
||||
/** 树表的父字段编号 */
|
||||
treeParentColumnId?: number;
|
||||
/** 树表的名字字段编号 */
|
||||
treeNameColumnId?: number;
|
||||
/** 主键编号 */
|
||||
dataSourceConfigId: number;
|
||||
/** 创建时间 */
|
||||
createTime: string; // 假设为 ISO 字符串格式的 LocalDateTime
|
||||
/** 更新时间 */
|
||||
updateTime: string; // 假设为 ISO 字符串格式的 LocalDateTime
|
||||
}
|
||||
|
||||
/**
|
||||
* 代码生成表定义创建/修改 Response VO
|
||||
*/
|
||||
export interface CodegenTableSaveReqVO {
|
||||
/** 编号 */
|
||||
id: number;
|
||||
/** 生成场景 */
|
||||
scene: number;
|
||||
/** 表名称 */
|
||||
tableName: string;
|
||||
/** 表描述 */
|
||||
tableComment: string;
|
||||
/** 备注 */
|
||||
remark?: string;
|
||||
/** 模块名 */
|
||||
moduleName: string;
|
||||
/** 业务名 */
|
||||
businessName: string;
|
||||
/** 类名称 */
|
||||
className: string;
|
||||
/** 类描述 */
|
||||
classComment: string;
|
||||
/** 作者 */
|
||||
author: string;
|
||||
/** 模板类型 */
|
||||
templateType: number;
|
||||
/** 前端类型 */
|
||||
frontType: number;
|
||||
/** 父菜单编号 */
|
||||
parentMenuId?: number;
|
||||
/** 主表的编号 */
|
||||
masterTableId?: number;
|
||||
/** 子表关联主表的字段编号 */
|
||||
subJoinColumnId?: number;
|
||||
/** 主表与子表是否一对多 */
|
||||
subJoinMany?: boolean;
|
||||
/** 树表的父字段编号 */
|
||||
treeParentColumnId?: number;
|
||||
/** 树表的名字字段编号 */
|
||||
treeNameColumnId?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据库的表定义 Response VO
|
||||
*/
|
||||
export interface DatabaseTableRespVO {
|
||||
/** 表名称 */
|
||||
name: string;
|
||||
/** 表描述 */
|
||||
comment: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 基于数据库的表结构,创建代码生成器的表和字段定义 Request VO
|
||||
*/
|
||||
export interface CodegenCreateListReqVO {
|
||||
/** 数据源配置的编号 */
|
||||
dataSourceConfigId: number;
|
||||
/** 表名数组 */
|
||||
tableNames: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 代码生成表和字段的明细 Response VO
|
||||
*/
|
||||
export interface CodegenDetailRespVO {
|
||||
/** 表定义 */
|
||||
table: CodegenTableRespVO;
|
||||
/** 字段定义 */
|
||||
columns: CodegenColumnRespVO[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 代码生成预览 Response VO
|
||||
*/
|
||||
export interface CodegenPreviewRespVO {
|
||||
/** 文件路径 */
|
||||
filePath: string;
|
||||
/** 代码 */
|
||||
code: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 代码生成表和字段的修改 Request VO
|
||||
*/
|
||||
export interface CodegenUpdateReqVO {
|
||||
/** 表定义 */
|
||||
table: CodegenTableSaveReqVO;
|
||||
/** 字段定义 */
|
||||
columns: CodegenColumnSaveReqVO[];
|
||||
}
|
||||
}
|
||||
|
||||
// 查询列表代码生成表定义
|
||||
export const getCodegenTableList = (dataSourceConfigId: number) => {
|
||||
return requestClient.get<CodegenApi.CodegenTableRespVO[]>(
|
||||
`/infra/codegen/table/list?dataSourceConfigId=${dataSourceConfigId}`,
|
||||
);
|
||||
};
|
||||
|
||||
// 查询列表代码生成表定义
|
||||
export const getCodegenTablePage = (params: PageParam) => {
|
||||
return requestClient.get<CodegenApi.CodegenTableRespVO[]>(
|
||||
'/infra/codegen/table/page',
|
||||
{ params },
|
||||
);
|
||||
};
|
||||
|
||||
// 查询详情代码生成表定义
|
||||
export const getCodegenTable = (id: number) => {
|
||||
return requestClient.get<CodegenApi.CodegenDetailRespVO>(
|
||||
`/infra/codegen/detail?tableId=${id}`,
|
||||
);
|
||||
};
|
||||
|
||||
// 新增代码生成表定义
|
||||
export const createCodegenTable = (data: CodegenApi.CodegenCreateListReqVO) => {
|
||||
return requestClient.post('/infra/codegen/create', data);
|
||||
};
|
||||
|
||||
// 修改代码生成表定义
|
||||
export const updateCodegenTable = (data: CodegenApi.CodegenUpdateReqVO) => {
|
||||
return requestClient.put('/infra/codegen/update', data);
|
||||
};
|
||||
|
||||
// 基于数据库的表结构,同步数据库的表和字段定义
|
||||
export const syncCodegenFromDB = (id: number) => {
|
||||
return requestClient.put(`/infra/codegen/sync-from-db?tableId=${id}`);
|
||||
};
|
||||
|
||||
// 预览生成代码
|
||||
export const previewCodegen = (id: number) => {
|
||||
return requestClient.get(`/infra/codegen/preview?tableId=${id}`);
|
||||
};
|
||||
|
||||
// 下载生成代码
|
||||
export const downloadCodegen = (id: number) => {
|
||||
return requestClient.download(`/infra/codegen/download?tableId=${id}`);
|
||||
};
|
||||
|
||||
// 获得表定义
|
||||
export const getSchemaTableList = (params: {
|
||||
comment?: string;
|
||||
dataSourceConfigId: number;
|
||||
name?: string;
|
||||
}) => {
|
||||
return requestClient.get<CodegenApi.DatabaseTableRespVO[]>(
|
||||
'/infra/codegen/db/table/list',
|
||||
{ params },
|
||||
);
|
||||
};
|
||||
|
||||
// 基于数据库的表结构,创建代码生成器的表定义
|
||||
export const createCodegenList = (data: CodegenApi.CodegenCreateListReqVO) => {
|
||||
return requestClient.post('/infra/codegen/create-list', data);
|
||||
};
|
||||
|
||||
// 删除代码生成表定义
|
||||
export const deleteCodegenTable = (id: number) => {
|
||||
return requestClient.delete(`/infra/codegen/delete?tableId=${id}`);
|
||||
};
|
|
@ -0,0 +1,51 @@
|
|||
import { requestClient } from '#/api/request';
|
||||
|
||||
export namespace DataSourceConfigApi {
|
||||
export interface DataSourceConfigRespVO {
|
||||
id: number;
|
||||
name: string;
|
||||
url: string;
|
||||
username: string;
|
||||
createTime?: Date;
|
||||
}
|
||||
|
||||
export interface DataSourceConfigSaveReqVO {
|
||||
id?: number;
|
||||
name: string;
|
||||
url: string;
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
}
|
||||
// 新增数据源配置
|
||||
export const createDataSourceConfig = (
|
||||
data: DataSourceConfigApi.DataSourceConfigSaveReqVO,
|
||||
) => {
|
||||
return requestClient.post('/infra/data-source-config/create', data);
|
||||
};
|
||||
|
||||
// 修改数据源配置
|
||||
export const updateDataSourceConfig = (
|
||||
data: DataSourceConfigApi.DataSourceConfigSaveReqVO,
|
||||
) => {
|
||||
return requestClient.put('/infra/data-source-config/update', data);
|
||||
};
|
||||
|
||||
// 删除数据源配置
|
||||
export const deleteDataSourceConfig = (id: number) => {
|
||||
return requestClient.delete(`/infra/data-source-config/delete?id=${id}`);
|
||||
};
|
||||
|
||||
// 查询数据源配置详情
|
||||
export const getDataSourceConfig = (id: number) => {
|
||||
return requestClient.get<DataSourceConfigApi.DataSourceConfigRespVO>(
|
||||
`/infra/data-source-config/get?id=${id}`,
|
||||
);
|
||||
};
|
||||
|
||||
// 查询数据源配置列表
|
||||
export const getDataSourceConfigList = () => {
|
||||
return requestClient.get<DataSourceConfigApi.DataSourceConfigRespVO[]>(
|
||||
'/infra/data-source-config/list',
|
||||
);
|
||||
};
|
|
@ -0,0 +1,98 @@
|
|||
import type { VbenFormProps } from '@vben/common-ui';
|
||||
|
||||
import type { VxeGridProps } from '#/adapter/vxe-table';
|
||||
import type { CodegenApi } from '#/api/infra/codegen';
|
||||
|
||||
export namespace CodegenDefaultData {
|
||||
/**
|
||||
* 代码生成字段定义 表格配置
|
||||
*/
|
||||
export const tableColumns: VxeGridProps<CodegenApi.CodegenTableRespVO>['columns'] =
|
||||
[
|
||||
{
|
||||
type: 'checkbox',
|
||||
width: 50,
|
||||
},
|
||||
{
|
||||
type: 'seq',
|
||||
width: 50,
|
||||
},
|
||||
{ field: 'id', title: '编号', width: 100 },
|
||||
{ field: 'tableName', title: '表名' },
|
||||
{ field: 'tableComment', title: '表描述' },
|
||||
{ field: 'className', title: '实体类名' },
|
||||
{ field: 'createTime', title: '创建时间', formatter: 'formatDateTime' },
|
||||
{ field: 'updateTime', title: '更新时间', formatter: 'formatDateTime' },
|
||||
{
|
||||
title: '操作',
|
||||
width: 'auto',
|
||||
fixed: 'right',
|
||||
slots: { default: 'action' },
|
||||
},
|
||||
];
|
||||
/**
|
||||
* 代码生成表定义 表格查询表单配置
|
||||
*/
|
||||
export const formSchema: VbenFormProps['schema'] = [
|
||||
{
|
||||
label: '表名称',
|
||||
fieldName: 'tableName',
|
||||
component: 'Input',
|
||||
},
|
||||
{
|
||||
label: '表描述',
|
||||
fieldName: 'tableComment',
|
||||
component: 'Input',
|
||||
},
|
||||
{
|
||||
label: '创建时间',
|
||||
fieldName: 'createTime',
|
||||
component: 'DatePicker',
|
||||
componentProps: {
|
||||
type: 'daterange',
|
||||
format: 'YYYY-MM-DD',
|
||||
valueFormat: 'YYYY-MM-DD',
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
//* ****************************** ImportTableModal.vue *******************************//
|
||||
|
||||
export namespace CodegenImportTableModalData {
|
||||
/**
|
||||
* 导入表 表格配置
|
||||
*/
|
||||
export const tableColumns: VxeGridProps<CodegenApi.DatabaseTableRespVO>['columns'] =
|
||||
[
|
||||
{ type: 'checkbox', width: 50 },
|
||||
{ type: 'seq', title: '序号', width: 50 },
|
||||
{ field: 'name', title: '表名' },
|
||||
{ field: 'comment', title: '表描述' },
|
||||
];
|
||||
|
||||
/**
|
||||
* 导入表 表格查询表单配置
|
||||
*/
|
||||
export const formSchema: VbenFormProps['schema'] = [
|
||||
{
|
||||
label: '数据源',
|
||||
fieldName: 'dataSourceConfigId',
|
||||
component: 'Select',
|
||||
componentProps: {
|
||||
allowClear: true,
|
||||
placeholder: '请选择数据源',
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '表名称',
|
||||
fieldName: 'name',
|
||||
component: 'Input',
|
||||
},
|
||||
{
|
||||
label: '表描述',
|
||||
fieldName: 'comment',
|
||||
component: 'Input',
|
||||
},
|
||||
];
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
<script setup lang="ts">
|
||||
import { reactive, ref } from 'vue';
|
||||
|
||||
import { useVbenModal, type VbenFormProps } from '@vben/common-ui';
|
||||
import {
|
||||
useVbenVxeGrid,
|
||||
type VxeGridListeners,
|
||||
type VxeGridProps,
|
||||
} from '@vben/plugins/vxe-table';
|
||||
|
||||
import { getSchemaTableList } from '#/api/infra/codegen';
|
||||
import {
|
||||
type DataSourceConfigApi,
|
||||
getDataSourceConfigList,
|
||||
} from '#/api/infra/data-source-config';
|
||||
|
||||
import { CodegenImportTableModalData } from '../codegen.data';
|
||||
|
||||
// checked
|
||||
const checkedStatus = ref<boolean>(false);
|
||||
|
||||
const dataSourceConfigList =
|
||||
ref<DataSourceConfigApi.DataSourceConfigRespVO[]>();
|
||||
|
||||
/**
|
||||
* 表格查询表单配置
|
||||
*/
|
||||
const formOptions = reactive<any>({
|
||||
// 默认展开
|
||||
collapsed: false,
|
||||
schema: CodegenImportTableModalData.formSchema,
|
||||
// 控制表单是否显示折叠按钮
|
||||
showCollapseButton: true,
|
||||
submitButtonOptions: {
|
||||
content: '查询',
|
||||
},
|
||||
// 按下回车时是否提交表单
|
||||
submitOnEnter: false,
|
||||
} as VbenFormProps);
|
||||
|
||||
/**
|
||||
* 表格配置
|
||||
*/
|
||||
const gridOptions = reactive<any>({
|
||||
columns: CodegenImportTableModalData.tableColumns,
|
||||
toolbarConfig: {
|
||||
enabled: false,
|
||||
},
|
||||
height: 'auto',
|
||||
proxyConfig: {
|
||||
autoLoad: false,
|
||||
ajax: {
|
||||
query: async (_, values) => {
|
||||
return await getSchemaTableList(values);
|
||||
},
|
||||
},
|
||||
},
|
||||
pagerConfig: {
|
||||
enabled: false,
|
||||
},
|
||||
} as VxeGridProps);
|
||||
|
||||
const gridEvents = reactive<any>({
|
||||
checkboxChange: (params) => {
|
||||
const { checked } = params;
|
||||
checkedStatus.value = checked;
|
||||
},
|
||||
checkboxAll: (params) => {
|
||||
const { checked } = params;
|
||||
checkedStatus.value = checked;
|
||||
},
|
||||
} as VxeGridListeners);
|
||||
|
||||
// 使用表格组件
|
||||
const [Grid, gridApi] = useVbenVxeGrid(
|
||||
reactive({
|
||||
formOptions,
|
||||
gridOptions,
|
||||
gridEvents,
|
||||
}),
|
||||
);
|
||||
|
||||
const [Modal] = useVbenModal({
|
||||
class: 'w-[800px] h-[800px]',
|
||||
onOpenChange: async (isOpen) => {
|
||||
if (isOpen) {
|
||||
// 获取数据源配置列表
|
||||
dataSourceConfigList.value = await getDataSourceConfigList();
|
||||
// 设置下拉框
|
||||
gridApi.formApi.updateSchema([
|
||||
{
|
||||
fieldName: 'dataSourceConfigId',
|
||||
componentProps: {
|
||||
options: dataSourceConfigList.value?.map((item) => ({
|
||||
label: item.name,
|
||||
value: item.id,
|
||||
})),
|
||||
},
|
||||
},
|
||||
]);
|
||||
// 设置默认值
|
||||
gridApi.formApi.setFieldValue(
|
||||
'dataSourceConfigId',
|
||||
dataSourceConfigList.value?.[0]?.id,
|
||||
);
|
||||
|
||||
// 加载表格数据
|
||||
gridApi.reload(await gridApi.formApi.getValues());
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Modal>
|
||||
<Grid />
|
||||
</Modal>
|
||||
</template>
|
|
@ -0,0 +1,194 @@
|
|||
<script lang="ts" setup>
|
||||
import { defineAsyncComponent, reactive, ref } from 'vue';
|
||||
|
||||
import { Page, useVbenModal, type VbenFormProps } from '@vben/common-ui';
|
||||
|
||||
import { Button } from 'ant-design-vue';
|
||||
|
||||
import {
|
||||
useVbenVxeGrid,
|
||||
type VxeGridListeners,
|
||||
type VxeGridProps,
|
||||
} from '#/adapter/vxe-table';
|
||||
import { type CodegenApi, getCodegenTablePage } from '#/api/infra/codegen';
|
||||
|
||||
import { CodegenDefaultData } from './codegen.data';
|
||||
|
||||
// 使用导入表弹窗组件
|
||||
const [ImportTableModal, importTableModalApi] = useVbenModal({
|
||||
connectedComponent: defineAsyncComponent(
|
||||
() => import('./components/import-table-modal.vue'),
|
||||
),
|
||||
});
|
||||
|
||||
// checked
|
||||
const checkedStatus = ref<boolean>(false);
|
||||
|
||||
/**
|
||||
* 查看详情
|
||||
*/
|
||||
const handleView = (_row: CodegenApi.CodegenTableRespVO) => {
|
||||
// console.log('查看详情', row);
|
||||
};
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
const handleEdit = (_row: CodegenApi.CodegenTableRespVO) => {
|
||||
// console.log('编辑', row);
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
const handleDelete = (_row: CodegenApi.CodegenTableRespVO) => {
|
||||
// console.log('删除', row);
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*/
|
||||
const handleBatchDelete = (_rows: CodegenApi.CodegenTableRespVO[]) => {
|
||||
// console.log('批量删除', rows);
|
||||
};
|
||||
|
||||
/**
|
||||
* 导入表
|
||||
*/
|
||||
const handleImportTable = () => {
|
||||
// console.log('导入表', importTableModalApi);
|
||||
importTableModalApi.open();
|
||||
};
|
||||
|
||||
/**
|
||||
* 同步
|
||||
*/
|
||||
const handleSync = (_row: CodegenApi.CodegenTableRespVO) => {
|
||||
// console.log('同步', row);
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量同步
|
||||
*/
|
||||
const handleBatchSync = (_rows: CodegenApi.CodegenTableRespVO[]) => {
|
||||
// console.log('批量同步', rows);
|
||||
};
|
||||
|
||||
/**
|
||||
* 生成代码
|
||||
*/
|
||||
const handleGenerateCode = (_row: CodegenApi.CodegenTableRespVO) => {
|
||||
// console.log('生成代码', row);
|
||||
};
|
||||
|
||||
/**
|
||||
* 批量生成代码
|
||||
*/
|
||||
const handleBatchGenerateCode = (_rows: CodegenApi.CodegenTableRespVO[]) => {
|
||||
// console.log('批量生成代码', rows);
|
||||
};
|
||||
|
||||
/**
|
||||
* 表格查询表单配置
|
||||
*/
|
||||
const formOptions = reactive<any>({
|
||||
// 默认展开
|
||||
collapsed: false,
|
||||
schema: CodegenDefaultData.formSchema,
|
||||
// 控制表单是否显示折叠按钮
|
||||
showCollapseButton: true,
|
||||
submitButtonOptions: {
|
||||
content: '查询',
|
||||
},
|
||||
// 按下回车时是否提交表单
|
||||
submitOnEnter: false,
|
||||
} as VbenFormProps);
|
||||
|
||||
/**
|
||||
* 表格配置
|
||||
*/
|
||||
const gridOptions = reactive<any>({
|
||||
columns: CodegenDefaultData.tableColumns,
|
||||
toolbarConfig: {
|
||||
slots: {
|
||||
buttons: 'toolbar_buttons',
|
||||
},
|
||||
},
|
||||
proxyConfig: {
|
||||
ajax: {
|
||||
query: async ({ page }, params) => {
|
||||
const data = await getCodegenTablePage({
|
||||
pageNo: page.currentPage,
|
||||
pageSize: page.pageSize,
|
||||
...params,
|
||||
});
|
||||
return data;
|
||||
},
|
||||
},
|
||||
},
|
||||
} as VxeGridProps);
|
||||
|
||||
const gridEvents = reactive<any>({
|
||||
checkboxChange: (params) => {
|
||||
const { checked } = params;
|
||||
checkedStatus.value = checked;
|
||||
},
|
||||
checkboxAll: (params) => {
|
||||
const { checked } = params;
|
||||
checkedStatus.value = checked;
|
||||
},
|
||||
} as VxeGridListeners);
|
||||
|
||||
// 使用表格组件
|
||||
const [Grid] = useVbenVxeGrid({
|
||||
formOptions,
|
||||
gridOptions,
|
||||
gridEvents,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Page auto-content-height>
|
||||
<Grid>
|
||||
<template #toolbar_buttons="{ $grid }">
|
||||
<div class="flex items-center gap-2">
|
||||
<Button type="primary" @click="handleImportTable">导入表</Button>
|
||||
<Button
|
||||
:disabled="!checkedStatus"
|
||||
type="primary"
|
||||
@click="handleBatchSync($grid.getCheckboxRecords())"
|
||||
>
|
||||
批量同步
|
||||
</Button>
|
||||
<Button
|
||||
:disabled="!checkedStatus"
|
||||
type="primary"
|
||||
@click="handleBatchGenerateCode($grid.getCheckboxRecords())"
|
||||
>
|
||||
批量生成
|
||||
</Button>
|
||||
<Button
|
||||
:disabled="!checkedStatus"
|
||||
danger
|
||||
type="primary"
|
||||
@click="handleBatchDelete($grid.getCheckboxRecords())"
|
||||
>
|
||||
批量删除
|
||||
</Button>
|
||||
</div>
|
||||
</template>
|
||||
<template #action="{ row }">
|
||||
<div class="flex w-fit items-center justify-around">
|
||||
<Button type="link" @click="handleView(row)">查看</Button>
|
||||
<Button type="link" @click="handleEdit(row)">编辑</Button>
|
||||
<Button type="link" @click="handleSync(row)">同步</Button>
|
||||
<Button type="link" @click="handleGenerateCode(row)">
|
||||
生成代码
|
||||
</Button>
|
||||
<Button danger type="link" @click="handleDelete(row)">删除</Button>
|
||||
</div>
|
||||
</template>
|
||||
</Grid>
|
||||
<ImportTableModal />
|
||||
</Page>
|
||||
</template>
|
Loading…
Reference in New Issue