From 1c498865939f76da3b866189617fbd340e26c432 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 12 Jul 2026 01:17:47 +0800 Subject: [PATCH] refactor(codegen): 统一移动端搜索全部选项语义 --- yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm | 37 ++++++++++++------------------------- yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineUniappTest.java | 28 ++++++++++++++++++++++++++++ yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/search-form | 60 ++++++++++++++++++------------------------------------------ 3 files changed, 58 insertions(+), 67 deletions(-) diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm index 3a009db..0aa06fd 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_admin_uniapp/components/search-form.vue.vm @@ -42,23 +42,12 @@ #elseif ($column.htmlType == "datetime" && $listOperationCondition == "BETWEEN") #elseif (($column.htmlType == "select" || $column.htmlType == "radio") && $dictType && "" != $dictType) - - - ${comment} - - - - 全部 - - - {{ dict.label }} - - - + #else @@ -150,11 +139,11 @@ const formData = reactive({ ${column.javaField}: [undefined, undefined] as [number | undefined, number | undefined], #elseif ($column.dictType && "" != $column.dictType) #if(${javaType} == "string") - ${column.javaField}: -1 as -1 | string, // -1 表示全部 + ${column.javaField}: undefined as string | undefined, #elseif(${javaType} == "boolean") - ${column.javaField}: -1 as -1 | boolean, // -1 表示全部 + ${column.javaField}: undefined as boolean | undefined, #else - ${column.javaField}: -1, // -1 表示全部 + ${column.javaField}: undefined as number | undefined, #end #elseif(${javaType} == "long" || ${javaType} == "integer" || ${javaType} == "short" || ${javaType} == "double" || ${javaType} == "bigdecimal" || ${javaType} == "byte") ${column.javaField}: undefined as number | undefined, @@ -181,7 +170,7 @@ const placeholder = computed(() => { conditions.push(`${comment}:#[[${]]#formatDate(formData.${javaField}[0])#[[}]]#~#[[${]]#formatDate(formData.${javaField}[1])#[[}]]#`) } #elseif ($dictType && "" != $dictType) - if (formData.${javaField} !== -1) { + if (formData.${javaField} !== undefined) { conditions.push(`${comment}:#[[${]]#getDictLabel(DICT_TYPE.${dictType.toUpperCase()}, formData.${javaField})#[[}]]#`) } #else @@ -207,9 +196,7 @@ function handleSearch() { ...formData, #foreach($column in $columns) #if ($column.listOperation) - #if ($column.dictType && "" != $column.dictType) - ${column.javaField}: formData.${column.javaField} === -1 ? undefined : formData.${column.javaField}, - #elseif ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") + #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") ${column.javaField}: formatDateRange(formData.${column.javaField}), #end #end @@ -224,7 +211,7 @@ function handleReset() { #if ($column.htmlType == "datetime" && $column.listOperationCondition == "BETWEEN") formData.${column.javaField} = [undefined, undefined] #elseif ($column.dictType && "" != $column.dictType) - formData.${column.javaField} = -1 + formData.${column.javaField} = undefined #else formData.${column.javaField} = undefined #end diff --git a/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineUniappTest.java b/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineUniappTest.java index 763e66f..958afe2 100644 --- a/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineUniappTest.java +++ b/yudao-module-infra/src/test/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngineUniappTest.java @@ -10,6 +10,9 @@ import org.junit.jupiter.api.Test; import java.util.List; import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * {@link CodegenEngine} 的 Vue3 Admin Uniapp + Wot UI 单元测试 * @@ -31,4 +34,29 @@ public class CodegenEngineUniappTest extends CodegenEngineAbstractTest { assertResult(result, "/vue3_admin_uniapp_one"); } + @Test + public void testExecute_dictSearch() { + // 准备参数 + CodegenTableDO table = getTable("student") + .setFrontType(CodegenFrontTypeEnum.VUE3_ADMIN_UNIAPP_WOT.getType()) + .setTemplateType(CodegenTemplateTypeEnum.ONE.getType()); + List columns = getColumnList("student"); + + // 调用并断言数字、布尔字典 + Map result = codegenEngine.execute(DbType.MYSQL, table, columns, null, null); + String searchForm = result.get("yudao-ui-admin-uniapp/src/pages-infra/demo/components/search-form.vue"); + assertFalse(searchForm.contains(" "sex".equals(column.getJavaField())).findFirst().orElseThrow() + .setJavaType("String"); + result = codegenEngine.execute(DbType.MYSQL, table, columns, null, null); + searchForm = result.get("yudao-ui-admin-uniapp/src/pages-infra/demo/components/search-form.vue"); + assertTrue(searchForm.contains(":columns=\"getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)\"")); + assertTrue(searchForm.contains("sex: undefined as string | undefined,")); + } + } diff --git a/yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/search-form b/yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/search-form index 9571c6e..0928d14 100644 --- a/yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/search-form +++ b/yudao-module-infra/src/test/resources/codegen/vue3_admin_uniapp_one/vue/search-form @@ -27,40 +27,18 @@ clearable /> - - - 性别 - - - - 全部 - - - {{ dict.label }} - - - - - - 是否有效 - - - - 全部 - - - {{ dict.label }} - - - + + @@ -90,8 +68,8 @@ const visible = ref(false) // 搜索弹窗显示状态 const formData = reactive({ name: undefined as string | undefined, birthday: undefined as string | undefined, - sex: -1, // -1 表示全部 - enabled: -1 as -1 | boolean, // -1 表示全部 + sex: undefined as number | undefined, + enabled: undefined as boolean | undefined, createTime: [undefined, undefined] as [number | undefined, number | undefined], }) // 搜索表单数据 @@ -104,10 +82,10 @@ const placeholder = computed(() => { if (formData.birthday) { conditions.push(`出生日期:${formData.birthday}`) } - if (formData.sex !== -1) { + if (formData.sex !== undefined) { conditions.push(`性别:${getDictLabel(DICT_TYPE.SYSTEM_USER_SEX, formData.sex)}`) } - if (formData.enabled !== -1) { + if (formData.enabled !== undefined) { conditions.push(`是否有效:${getDictLabel(DICT_TYPE.INFRA_BOOLEAN_STRING, formData.enabled)}`) } if (formData.createTime?.[0] && formData.createTime?.[1]) { @@ -121,8 +99,6 @@ function handleSearch() { visible.value = false emit('search', { ...formData, - sex: formData.sex === -1 ? undefined : formData.sex, - enabled: formData.enabled === -1 ? undefined : formData.enabled, createTime: formatDateRange(formData.createTime), }) } @@ -131,8 +107,8 @@ function handleSearch() { function handleReset() { formData.name = undefined formData.birthday = undefined - formData.sex = -1 - formData.enabled = -1 + formData.sex = undefined + formData.enabled = undefined formData.createTime = [undefined, undefined] visible.value = false emit('reset') -- libgit2 0.21.4