From 7cfcba3635ce943085cf7e7e39c2ac63641cf300 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Wed, 4 Nov 2026 11:22:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(codegen):=20=E9=BB=98=E8=AE=A4=E7=94=9F?= =?UTF-8?q?=E6=88=90=20CRUD=20=E9=A1=B5=E9=9D=A2=E5=B9=B6=E9=99=90?= =?UTF-8?q?=E5=88=B6=E4=B8=8D=E9=80=82=E7=94=A8=E7=9A=84=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 生成配置默认页面类型改为 crud,普通页面标注为兼容选项 IN 查询不适用于 byte[],BETWEEN 不适用于 Boolean 与 byte[] --- src/views/codegen/components/BasicConfigStep.vue | 10 +++++----- src/views/codegen/components/FieldConfigStep.vue | 12 ++++++++++++ src/views/codegen/components/GeneratorDrawer.vue | 4 ++-- src/views/codegen/components/PreviewStep.vue | 2 +- src/views/codegen/composables/useCodePreview.ts | 2 +- src/views/codegen/composables/useGenConfig.ts | 6 +++--- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/views/codegen/components/BasicConfigStep.vue b/src/views/codegen/components/BasicConfigStep.vue index a5c2a7e9..3cfd101c 100644 --- a/src/views/codegen/components/BasicConfigStep.vue +++ b/src/views/codegen/components/BasicConfigStep.vue @@ -109,13 +109,13 @@ - - - 普通 - - 封装(CRUD) + 封装 CRUD(推荐) + + + + 普通(兼容) diff --git a/src/views/codegen/components/FieldConfigStep.vue b/src/views/codegen/components/FieldConfigStep.vue index 29a311c7..31c9dbc6 100644 --- a/src/views/codegen/components/FieldConfigStep.vue +++ b/src/views/codegen/components/FieldConfigStep.vue @@ -131,6 +131,7 @@ :key="key" :label="item.label" :value="item.value" + :disabled="isQueryTypeDisabled(row, key)" /> @@ -212,9 +213,20 @@ const props = defineProps<{ aiChanges?: Record; }>(); +type FieldConfig = NonNullable[number]; + const formTypeOptions: Record = FormTypeEnum; const queryTypeOptions: Record = QueryTypeEnum; +/** + * 判断查询方式是否适用于字段类型 + */ +function isQueryTypeDisabled(row: FieldConfig, key: string): boolean { + if (key === "IN") return row.fieldType === "byte[]"; + if (key === "BETWEEN") return row.fieldType === "Boolean" || row.fieldType === "byte[]"; + return false; +} + const listRef = ref(); const sortFlag = ref(null); diff --git a/src/views/codegen/components/GeneratorDrawer.vue b/src/views/codegen/components/GeneratorDrawer.vue index 00def4d8..8214ab13 100644 --- a/src/views/codegen/components/GeneratorDrawer.vue +++ b/src/views/codegen/components/GeneratorDrawer.vue @@ -387,7 +387,7 @@ async function handleAiFill() { snapshotConfig(genConfigFormData.value); const filled = await GeneratorAPI.aiFillConfig(currentTableName.value); // 接口按表结构重建配置,页面类型等非字段项可能为空,沿用当前选择再补默认 - filled.pageType = filled.pageType || genConfigFormData.value.pageType || "classic"; + filled.pageType = filled.pageType || genConfigFormData.value.pageType || "crud"; const diff = resolveDiff(filled); genConfigFormData.value = applyDefaults(filled); if (diff.changeCount === 0) { @@ -484,7 +484,7 @@ async function handleNext() { } if (currentStep.value === STEP.PREVIEW) { - const pageType = genConfigFormData.value.pageType || "classic"; + const pageType = genConfigFormData.value.pageType || "crud"; await GeneratorAPI.download(currentTableName.value, pageType as "classic" | "crud", "ts"); } } diff --git a/src/views/codegen/components/PreviewStep.vue b/src/views/codegen/components/PreviewStep.vue index b7626dfd..71da9aeb 100644 --- a/src/views/codegen/components/PreviewStep.vue +++ b/src/views/codegen/components/PreviewStep.vue @@ -228,7 +228,7 @@ const fileCount = computed(() => { * 下载生成的代码 */ function handleDownload() { - const pageType = props.genConfigFormData.pageType || "classic"; + const pageType = props.genConfigFormData.pageType || "crud"; return GeneratorAPI.download(props.tableName, pageType as "classic" | "crud", "ts"); } diff --git a/src/views/codegen/composables/useCodePreview.ts b/src/views/codegen/composables/useCodePreview.ts index 644a9278..42b43cc2 100644 --- a/src/views/codegen/composables/useCodePreview.ts +++ b/src/views/codegen/composables/useCodePreview.ts @@ -37,7 +37,7 @@ export function useCodePreview(genConfigFormData: Ref) { */ async function handlePreview(tableName: string) { treeData.value = []; - const pageType = genConfigFormData.value.pageType || "classic"; + const pageType = genConfigFormData.value.pageType || "crud"; const data = await GeneratorAPI.getPreviewData(tableName, pageType as "classic" | "crud", "ts"); const previewList = data || []; diff --git a/src/views/codegen/composables/useGenConfig.ts b/src/views/codegen/composables/useGenConfig.ts index c60e8d1d..dc7ccb7a 100644 --- a/src/views/codegen/composables/useGenConfig.ts +++ b/src/views/codegen/composables/useGenConfig.ts @@ -11,7 +11,7 @@ import type { OptionItem } from "@/api/common"; export function useGenConfig() { const genConfigFormData = ref({ fieldConfigs: [], - pageType: "classic", + pageType: "crud", }); const genConfigFormRules = { @@ -63,11 +63,11 @@ export function useGenConfig() { ); /** - * 未保存过的表页面类型为空,统一补成普通表单 + * 未保存过的表页面类型为空,统一补成 CrudPage 页面 */ function applyDefaults(config: GenConfigForm): GenConfigForm { if (!config.pageType) { - config.pageType = "classic"; + config.pageType = "crud"; } return config; }