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')