refactor: 代码生成代码优化

This commit is contained in:
puhui999
2025-04-15 18:19:29 +08:00
parent f27774c1fc
commit 3cc9adc5b3
7 changed files with 60 additions and 89 deletions

View File

@@ -8,7 +8,11 @@ import { computed, ref, watch } from 'vue';
import { isEmpty } from '@vben/utils';
import { useGenerationInfoBaseFormSchema, useSubTableFormSchema, useTreeTableFormSchema } from '../data';
import {
useGenerationInfoBaseFormSchema,
useGenerationInfoSubTableFormSchema,
useGenerationInfoTreeFormSchema
} from '../data';
const props = defineProps<{
columns?: InfraCodegenApi.CodegenColumn[];
@@ -55,14 +59,14 @@ const [SubForm, subFormApi] = useVbenForm({
/** 更新树表信息表单 schema */
function updateTreeSchema(): void {
treeFormApi.setState({
schema: useTreeTableFormSchema(props.columns)
schema: useGenerationInfoTreeFormSchema(props.columns)
});
}
/** 更新主子表信息表单 schema */
function updateSubSchema(): void {
subFormApi.setState({
schema: useSubTableFormSchema(props.columns, tables.value)
schema: useGenerationInfoSubTableFormSchema(props.columns, tables.value)
});
}

View File

@@ -1,15 +1,13 @@
<script lang="ts" setup>
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { InfraCodegenApi } from '#/api/infra/codegen';
import type { InfraDataSourceConfigApi } from '#/api/infra/data-source-config';
import { useVbenModal } from '@vben/common-ui';
import { message } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { createCodegenList, getSchemaTableList } from '#/api/infra/codegen';
import { getDataSourceConfigList } from '#/api/infra/data-source-config';
import { reactive, ref, unref } from 'vue';
import { reactive } from 'vue';
import { $t } from '@vben/locales';
@@ -20,16 +18,15 @@ const emit = defineEmits<{
(e: 'success'): void;
}>();
const dataSourceConfigList = ref<InfraDataSourceConfigApi.InfraDataSourceConfig[]>([]);
const formData = reactive<InfraCodegenApi.CodegenCreateListReqVO>({
dataSourceConfigId: undefined,
dataSourceConfigId: 0,
tableNames: [], // 已选择的表列表
});
/** 表格实例 */
const [Grid, gridApi] = useVbenVxeGrid({
const [Grid] = useVbenVxeGrid({
formOptions: {
schema: useImportTableFormSchema([]),
schema: useImportTableFormSchema(),
},
gridOptions: {
// TODO @puhui999这个要不也挪出去保持统一
@@ -43,13 +40,8 @@ const [Grid, gridApi] = useVbenVxeGrid({
proxyConfig: {
ajax: {
query: async ({ page }, formValues) => {
// TODO @puhui999貌似可以直接使用 formValues.dataSourceConfigId。肯定可以读到值。
if (formValues.dataSourceConfigId === undefined) {
if (unref(dataSourceConfigList).length > 0) {
formValues.dataSourceConfigId = unref(dataSourceConfigList)[0]?.id;
} else {
return [];
}
return [];
}
formData.dataSourceConfigId = formValues.dataSourceConfigId;
return await getSchemaTableList({
@@ -119,23 +111,6 @@ const [Modal, modalApi] = useVbenModal({
}
},
});
/** 获取数据源配置列表 */
async function initDataSourceConfig() {
try {
dataSourceConfigList.value = await getDataSourceConfigList();
gridApi.setState({
formOptions: {
schema: useImportTableFormSchema(dataSourceConfigList.value),
},
});
} catch (error) {
console.error('获取数据源配置失败', error);
}
}
/** 初始化 */
initDataSourceConfig();
</script>
<template>

View File

@@ -203,7 +203,7 @@ const [Modal, modalApi] = useVbenModal({
<template>
<Modal title="代码预览">
<div class="h-full flex" v-loading="loading">
<div class="flex h-full" v-loading="loading">
<!-- 文件树 -->
<div class="w-1/3 border-r border-gray-200 pr-4 dark:border-gray-700">
<!-- TODO @puhui999树默认展示 -->