Commit ff39a2b57b94530f8435366c1f19c33c804918b2
1 parent
ef2d0b35
【功能完善】INFRA:代码生成 vben5 antd 单表表单模版
Showing
2 changed files
with
60 additions
and
51 deletions
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
| @@ -164,23 +164,23 @@ public class CodegenEngine { | @@ -164,23 +164,23 @@ public class CodegenEngine { | ||
| 164 | .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD_SCHEMA.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/list_sub_erp.vue"), // 特殊:主子表专属逻辑 | 164 | .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD_SCHEMA.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/list_sub_erp.vue"), // 特殊:主子表专属逻辑 |
| 165 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-list.vue")) | 165 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-list.vue")) |
| 166 | // VUE3_VBEN5_ANTD | 166 | // VUE3_VBEN5_ANTD |
| 167 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/data.ts"), | 167 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/data.ts"), |
| 168 | vue3FilePath("views/${table.moduleName}/${table.businessName}/data.ts")) | 168 | vue3FilePath("views/${table.moduleName}/${table.businessName}/data.ts")) |
| 169 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/index.vue"), | 169 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/index.vue"), |
| 170 | vue3FilePath("views/${table.moduleName}/${table.businessName}/index.vue")) | 170 | vue3FilePath("views/${table.moduleName}/${table.businessName}/index.vue")) |
| 171 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/form.vue"), | 171 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/form.vue"), |
| 172 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/form.vue")) | 172 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/form.vue")) |
| 173 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("api/api.ts"), | 173 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("api/api.ts"), |
| 174 | vue3FilePath("api/${table.moduleName}/${table.businessName}/index.ts")) | 174 | vue3FilePath("api/${table.moduleName}/${table.businessName}/index.ts")) |
| 175 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/form_sub_normal.vue"), // 特殊:主子表专属逻辑 | 175 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/modules/form_sub_normal.vue"), // 特殊:主子表专属逻辑 |
| 176 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-form.vue")) | 176 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-form.vue")) |
| 177 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/form_sub_inner.vue"), // 特殊:主子表专属逻辑 | 177 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/modules/form_sub_inner.vue"), // 特殊:主子表专属逻辑 |
| 178 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-form.vue")) | 178 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-form.vue")) |
| 179 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/form_sub_erp.vue"), // 特殊:主子表专属逻辑 | 179 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/modules/form_sub_erp.vue"), // 特殊:主子表专属逻辑 |
| 180 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-form.vue")) | 180 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-form.vue")) |
| 181 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/list_sub_inner.vue"), // 特殊:主子表专属逻辑 | 181 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/modules/list_sub_inner.vue"), // 特殊:主子表专属逻辑 |
| 182 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-list.vue")) | 182 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-list.vue")) |
| 183 | - .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdSchemaTemplatePath("views/modules/list_sub_erp.vue"), // 特殊:主子表专属逻辑 | 183 | + .put(CodegenFrontTypeEnum.VUE3_VBEN5_ANTD.getType(), vue3Vben5AntdGeneralTemplatePath("views/modules/list_sub_erp.vue"), // 特殊:主子表专属逻辑 |
| 184 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-list.vue")) | 184 | vue3FilePath("views/${table.moduleName}/${table.businessName}/modules/${subSimpleClassName_strikeCase}-list.vue")) |
| 185 | .build(); | 185 | .build(); |
| 186 | 186 |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/general/views/form.vue.vm
| 1 | <script lang="ts" setup> | 1 | <script lang="ts" setup> |
| 2 | import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; | 2 | import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; |
| 3 | +import type { Rule } from 'ant-design-vue/es/form'; | ||
| 3 | 4 | ||
| 4 | import { useVbenModal } from '@vben/common-ui'; | 5 | import { useVbenModal } from '@vben/common-ui'; |
| 5 | -import { message, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGroup, DatePicker } from 'ant-design-vue'; | 6 | +import { Tinymce as RichTextarea } from '#/components/tinymce'; |
| 7 | +import { ImageUpload, FileUpload } from "#/components/upload"; | ||
| 8 | +import { message, Tabs, Form, Input, Textarea, Select, RadioGroup, Radio, CheckboxGroup, Checkbox, DatePicker } from 'ant-design-vue'; | ||
| 9 | +import { DICT_TYPE, getDictOptions } from '#/utils/dict'; | ||
| 10 | + | ||
| 6 | ## 特殊:主子表专属逻辑 | 11 | ## 特殊:主子表专属逻辑 |
| 7 | #if ( $table.templateType == 10 || $table.templateType == 12 ) | 12 | #if ( $table.templateType == 10 || $table.templateType == 12 ) |
| 8 | #foreach ($subSimpleClassName in $subSimpleClassNames) | 13 | #foreach ($subSimpleClassName in $subSimpleClassNames) |
| @@ -14,12 +19,12 @@ import { message, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGro | @@ -14,12 +19,12 @@ import { message, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGro | ||
| 14 | 19 | ||
| 15 | import { computed, ref } from 'vue'; | 20 | import { computed, ref } from 'vue'; |
| 16 | import { $t } from '#/locales'; | 21 | import { $t } from '#/locales'; |
| 17 | -import { useVbenForm } from '#/adapter/form'; | ||
| 18 | import { get${simpleClassName}, create${simpleClassName}, update${simpleClassName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; | 22 | import { get${simpleClassName}, create${simpleClassName}, update${simpleClassName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; |
| 19 | 23 | ||
| 20 | -import { useFormSchema } from '../data'; | ||
| 21 | - | ||
| 22 | const emit = defineEmits(['success']); | 24 | const emit = defineEmits(['success']); |
| 25 | +const formRef = ref(); | ||
| 26 | +const labelCol = { span: 5 }; | ||
| 27 | +const wrapperCol = { span: 13 }; | ||
| 23 | const formData = ref<Partial<${simpleClassName}Api.${simpleClassName}>>({ | 28 | const formData = ref<Partial<${simpleClassName}Api.${simpleClassName}>>({ |
| 24 | #foreach ($column in $columns) | 29 | #foreach ($column in $columns) |
| 25 | #if ($column.createOperation || $column.updateOperation) | 30 | #if ($column.createOperation || $column.updateOperation) |
| @@ -31,6 +36,14 @@ const formData = ref<Partial<${simpleClassName}Api.${simpleClassName}>>({ | @@ -31,6 +36,14 @@ const formData = ref<Partial<${simpleClassName}Api.${simpleClassName}>>({ | ||
| 31 | #end | 36 | #end |
| 32 | #end | 37 | #end |
| 33 | }); | 38 | }); |
| 39 | +const rules: Record<string, Rule[]> = { | ||
| 40 | + #foreach ($column in $columns) | ||
| 41 | + #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 | ||
| 42 | + #set($comment=$column.columnComment) | ||
| 43 | + $column.javaField: [{ required: true, message: '${comment}不能为空', trigger: #if($column.htmlType == 'select')'change'#else'blur'#end }], | ||
| 44 | + #end | ||
| 45 | + #end | ||
| 46 | +}; | ||
| 34 | #if (${table.templateType} == 2)## 树表特有:父ID处理 | 47 | #if (${table.templateType} == 2)## 树表特有:父ID处理 |
| 35 | const parentId = ref<number>(); // 新增下级时的父级 ID | 48 | const parentId = ref<number>(); // 新增下级时的父级 ID |
| 36 | 49 | ||
| @@ -66,10 +79,7 @@ const getTitle = computed(() => { | @@ -66,10 +79,7 @@ const getTitle = computed(() => { | ||
| 66 | 79 | ||
| 67 | const [Modal, modalApi] = useVbenModal({ | 80 | const [Modal, modalApi] = useVbenModal({ |
| 68 | async onConfirm() { | 81 | async onConfirm() { |
| 69 | - const { valid } = await formApi.validate(); | ||
| 70 | - if (!valid) { | ||
| 71 | - return; | ||
| 72 | - } | 82 | + await formRef.value?.validate(); |
| 73 | ## 特殊:主子表专属逻辑 | 83 | ## 特殊:主子表专属逻辑 |
| 74 | #if ( $table.templateType == 10 || $table.templateType == 12 ) | 84 | #if ( $table.templateType == 10 || $table.templateType == 12 ) |
| 75 | #if ( $subTables && $subTables.size() > 0 ) | 85 | #if ( $subTables && $subTables.size() > 0 ) |
| @@ -133,6 +143,7 @@ const [Modal, modalApi] = useVbenModal({ | @@ -133,6 +143,7 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 133 | #end | 143 | #end |
| 134 | #end | 144 | #end |
| 135 | }; | 145 | }; |
| 146 | + formRef.value?.resetFields(); | ||
| 136 | return; | 147 | return; |
| 137 | } | 148 | } |
| 138 | 149 | ||
| @@ -151,7 +162,6 @@ const [Modal, modalApi] = useVbenModal({ | @@ -151,7 +162,6 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 151 | } | 162 | } |
| 152 | // 设置到 values | 163 | // 设置到 values |
| 153 | formData.value = data; | 164 | formData.value = data; |
| 154 | - await formApi.setValues(formData.value); | ||
| 155 | }, | 165 | }, |
| 156 | }); | 166 | }); |
| 157 | </script> | 167 | </script> |
| @@ -161,9 +171,9 @@ const [Modal, modalApi] = useVbenModal({ | @@ -161,9 +171,9 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 161 | <Form | 171 | <Form |
| 162 | ref="formRef" | 172 | ref="formRef" |
| 163 | :model="formData" | 173 | :model="formData" |
| 164 | - :rules="formRules" | ||
| 165 | - label-col="{ span: 6 }" | ||
| 166 | - :loading="formLoading" | 174 | + :rules="rules" |
| 175 | + :label-col="labelCol" | ||
| 176 | + :wrapper-col="wrapperCol" | ||
| 167 | > | 177 | > |
| 168 | #foreach($column in $columns) | 178 | #foreach($column in $columns) |
| 169 | #if ($column.createOperation || $column.updateOperation) | 179 | #if ($column.createOperation || $column.updateOperation) |
| @@ -172,16 +182,15 @@ const [Modal, modalApi] = useVbenModal({ | @@ -172,16 +182,15 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 172 | #set ($javaType = $column.javaType) | 182 | #set ($javaType = $column.javaType) |
| 173 | #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | 183 | #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) |
| 174 | #set ($comment = $column.columnComment) | 184 | #set ($comment = $column.columnComment) |
| 175 | - #set ($dictMethod = "getDictOptions")## 计算使用哪个 dict 字典方法 | ||
| 176 | #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") | 185 | #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") |
| 177 | - #set ($dictMethod = "getIntDictOptions") | 186 | + #set ($dictMethod = "number") |
| 178 | #elseif ($javaType == "String") | 187 | #elseif ($javaType == "String") |
| 179 | - #set ($dictMethod = "getStrDictOptions") | 188 | + #set ($dictMethod = "string") |
| 180 | #elseif ($javaType == "Boolean") | 189 | #elseif ($javaType == "Boolean") |
| 181 | - #set ($dictMethod = "getBoolDictOptions") | 190 | + #set ($dictMethod = "boolean") |
| 182 | #end | 191 | #end |
| 183 | #if ( $table.templateType == 2 && $column.id == $treeParentColumn.id ) | 192 | #if ( $table.templateType == 2 && $column.id == $treeParentColumn.id ) |
| 184 | - <FormItem label="${comment}" name="${javaField}"> | 193 | + <Form.Item label="${comment}" name="${javaField}"> |
| 185 | <TreeSelect | 194 | <TreeSelect |
| 186 | v-model:value="formData.${javaField}" | 195 | v-model:value="formData.${javaField}" |
| 187 | :treeData="${classNameVar}Tree" | 196 | :treeData="${classNameVar}Tree" |
| @@ -194,29 +203,29 @@ const [Modal, modalApi] = useVbenModal({ | @@ -194,29 +203,29 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 194 | treeDefaultExpandAll | 203 | treeDefaultExpandAll |
| 195 | placeholder="请选择${comment}" | 204 | placeholder="请选择${comment}" |
| 196 | /> | 205 | /> |
| 197 | - </FormItem> | 206 | + </Form.Item> |
| 198 | #elseif ($column.htmlType == "input" && !$column.primaryKey)## 忽略主键,不用在表单里 | 207 | #elseif ($column.htmlType == "input" && !$column.primaryKey)## 忽略主键,不用在表单里 |
| 199 | - <FormItem label="${comment}" name="${javaField}"> | 208 | + <Form.Item label="${comment}" name="${javaField}"> |
| 200 | <Input v-model:value="formData.${javaField}" placeholder="请输入${comment}" /> | 209 | <Input v-model:value="formData.${javaField}" placeholder="请输入${comment}" /> |
| 201 | - </FormItem> | 210 | + </Form.Item> |
| 202 | #elseif($column.htmlType == "imageUpload")## 图片上传 | 211 | #elseif($column.htmlType == "imageUpload")## 图片上传 |
| 203 | - <FormItem label="${comment}" name="${javaField}"> | ||
| 204 | - <UploadImg v-model:value="formData.${javaField}" /> | ||
| 205 | - </FormItem> | 212 | + <Form.Item label="${comment}" name="${javaField}"> |
| 213 | + <ImageUpload v-model:value="formData.${javaField}" /> | ||
| 214 | + </Form.Item> | ||
| 206 | #elseif($column.htmlType == "fileUpload")## 文件上传 | 215 | #elseif($column.htmlType == "fileUpload")## 文件上传 |
| 207 | - <FormItem label="${comment}" name="${javaField}"> | ||
| 208 | - <UploadFile v-model:value="formData.${javaField}" /> | ||
| 209 | - </FormItem> | 216 | + <Form.Item label="${comment}" name="${javaField}"> |
| 217 | + <FileUpload v-model:value="formData.${javaField}" /> | ||
| 218 | + </Form.Item> | ||
| 210 | #elseif($column.htmlType == "editor")## 文本编辑器 | 219 | #elseif($column.htmlType == "editor")## 文本编辑器 |
| 211 | - <FormItem label="${comment}" name="${javaField}"> | ||
| 212 | - <Editor v-model:value="formData.${javaField}" height="150px" /> | ||
| 213 | - </FormItem> | 220 | + <Form.Item label="${comment}" name="${javaField}"> |
| 221 | + <RichTextarea v-model="formData.${javaField}" height="500px" /> | ||
| 222 | + </Form.Item> | ||
| 214 | #elseif($column.htmlType == "select")## 下拉框 | 223 | #elseif($column.htmlType == "select")## 下拉框 |
| 215 | - <FormItem label="${comment}" name="${javaField}"> | 224 | + <Form.Item label="${comment}" name="${javaField}"> |
| 216 | <Select v-model:value="formData.${javaField}" placeholder="请选择${comment}"> | 225 | <Select v-model:value="formData.${javaField}" placeholder="请选择${comment}"> |
| 217 | #if ("" != $dictType)## 有数据字典 | 226 | #if ("" != $dictType)## 有数据字典 |
| 218 | <SelectOption | 227 | <SelectOption |
| 219 | - v-for="dict in $dictMethod(DICT_TYPE.$dictType.toUpperCase())" | 228 | + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')" |
| 220 | :key="dict.value" | 229 | :key="dict.value" |
| 221 | :label="dict.label" | 230 | :label="dict.label" |
| 222 | :value="dict.value" | 231 | :value="dict.value" |
| @@ -225,13 +234,13 @@ const [Modal, modalApi] = useVbenModal({ | @@ -225,13 +234,13 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 225 | <SelectOption label="请选择字典生成" value="" /> | 234 | <SelectOption label="请选择字典生成" value="" /> |
| 226 | #end | 235 | #end |
| 227 | </Select> | 236 | </Select> |
| 228 | - </FormItem> | 237 | + </Form.Item> |
| 229 | #elseif($column.htmlType == "checkbox")## 多选框 | 238 | #elseif($column.htmlType == "checkbox")## 多选框 |
| 230 | - <FormItem label="${comment}" name="${javaField}"> | 239 | + <Form.Item label="${comment}" name="${javaField}"> |
| 231 | <CheckboxGroup v-model:value="formData.${javaField}"> | 240 | <CheckboxGroup v-model:value="formData.${javaField}"> |
| 232 | #if ("" != $dictType)## 有数据字典 | 241 | #if ("" != $dictType)## 有数据字典 |
| 233 | <Checkbox | 242 | <Checkbox |
| 234 | - v-for="dict in $dictMethod(DICT_TYPE.$dictType.toUpperCase())" | 243 | + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')" |
| 235 | :key="dict.value" | 244 | :key="dict.value" |
| 236 | :label="dict.label" | 245 | :label="dict.label" |
| 237 | :value="dict.value" | 246 | :value="dict.value" |
| @@ -240,13 +249,13 @@ const [Modal, modalApi] = useVbenModal({ | @@ -240,13 +249,13 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 240 | <Checkbox label="请选择字典生成" /> | 249 | <Checkbox label="请选择字典生成" /> |
| 241 | #end | 250 | #end |
| 242 | </CheckboxGroup> | 251 | </CheckboxGroup> |
| 243 | - </FormItem> | 252 | + </Form.Item> |
| 244 | #elseif($column.htmlType == "radio")## 单选框 | 253 | #elseif($column.htmlType == "radio")## 单选框 |
| 245 | - <FormItem label="${comment}" name="${javaField}"> | 254 | + <Form.Item label="${comment}" name="${javaField}"> |
| 246 | <RadioGroup v-model:value="formData.${javaField}"> | 255 | <RadioGroup v-model:value="formData.${javaField}"> |
| 247 | #if ("" != $dictType)## 有数据字典 | 256 | #if ("" != $dictType)## 有数据字典 |
| 248 | <Radio | 257 | <Radio |
| 249 | - v-for="dict in $dictMethod(DICT_TYPE.$dictType.toUpperCase())" | 258 | + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')" |
| 250 | :key="dict.value" | 259 | :key="dict.value" |
| 251 | :value="dict.value" | 260 | :value="dict.value" |
| 252 | > | 261 | > |
| @@ -256,19 +265,19 @@ const [Modal, modalApi] = useVbenModal({ | @@ -256,19 +265,19 @@ const [Modal, modalApi] = useVbenModal({ | ||
| 256 | <Radio value="1">请选择字典生成</Radio> | 265 | <Radio value="1">请选择字典生成</Radio> |
| 257 | #end | 266 | #end |
| 258 | </RadioGroup> | 267 | </RadioGroup> |
| 259 | - </FormItem> | 268 | + </Form.Item> |
| 260 | #elseif($column.htmlType == "datetime")## 时间框 | 269 | #elseif($column.htmlType == "datetime")## 时间框 |
| 261 | - <FormItem label="${comment}" name="${javaField}"> | 270 | + <Form.Item label="${comment}" name="${javaField}"> |
| 262 | <DatePicker | 271 | <DatePicker |
| 263 | v-model:value="formData.${javaField}" | 272 | v-model:value="formData.${javaField}" |
| 264 | valueFormat="x" | 273 | valueFormat="x" |
| 265 | placeholder="选择${comment}" | 274 | placeholder="选择${comment}" |
| 266 | /> | 275 | /> |
| 267 | - </FormItem> | 276 | + </Form.Item> |
| 268 | #elseif($column.htmlType == "textarea")## 文本框 | 277 | #elseif($column.htmlType == "textarea")## 文本框 |
| 269 | - <FormItem label="${comment}" name="${javaField}"> | 278 | + <Form.Item label="${comment}" name="${javaField}"> |
| 270 | <Textarea v-model:value="formData.${javaField}" placeholder="请输入${comment}" /> | 279 | <Textarea v-model:value="formData.${javaField}" placeholder="请输入${comment}" /> |
| 271 | - </FormItem> | 280 | + </Form.Item> |
| 272 | #end | 281 | #end |
| 273 | #end | 282 | #end |
| 274 | #end | 283 | #end |