Commit 57138d7995379d5dd0ad371d4b29e0fa1f996fad

Authored by puhui999
1 parent b0f4a252

【功能完善】INFRA:代码生成 vben5 antd 主子表 normal 模版

yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/general/views/form.vue.vm
@@ -112,10 +112,11 @@ const [Modal, modalApi] = useVbenModal({ @@ -112,10 +112,11 @@ const [Modal, modalApi] = useVbenModal({
112 #if ($subTable.subJoinMany) ## 一对多 112 #if ($subTable.subJoinMany) ## 一对多
113 ## TODO 列表值校验? 113 ## TODO 列表值校验?
114 #else 114 #else
115 - const ${subClassNameVar}Valid = await ${subClassNameVar}FormRef.value?.validate();  
116 - if (!${subClassNameVar}Valid) {  
117 - subTabsName.value = '${subClassNameVar}';  
118 - return; 115 + try {
  116 + await ${subClassNameVar}FormRef.value?.validate()
  117 + } catch (e) {
  118 + subTabsName.value = '${subClassNameVar}'
  119 + return
119 } 120 }
120 #end 121 #end
121 #end 122 #end
@@ -134,7 +135,7 @@ const [Modal, modalApi] = useVbenModal({ @@ -134,7 +135,7 @@ const [Modal, modalApi] = useVbenModal({
134 #if ($subTable.subJoinMany) 135 #if ($subTable.subJoinMany)
135 data.${subClassNameVar}s = ${subClassNameVar}FormRef.value?.getData(); 136 data.${subClassNameVar}s = ${subClassNameVar}FormRef.value?.getData();
136 #else 137 #else
137 - data.${subClassNameVar} = await ${subClassNameVar}FormRef.value?.getValues(); 138 + data.${subClassNameVar} = ${subClassNameVar}FormRef.value?.getValues();
138 #end 139 #end
139 #end 140 #end
140 #end 141 #end
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/form_sub_normal.vue.vm
@@ -7,19 +7,19 @@ @@ -7,19 +7,19 @@
7 <script lang="ts" setup> 7 <script lang="ts" setup>
8 import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; 8 import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}';
9 9
  10 + import { message, Tabs, Form, Input, Textarea,Button, Select, RadioGroup, Radio, CheckboxGroup, Checkbox, DatePicker } from 'ant-design-vue';
10 import { computed, ref, h, onMounted,watch,nextTick } from 'vue'; 11 import { computed, ref, h, onMounted,watch,nextTick } from 'vue';
11 import { $t } from '#/locales'; 12 import { $t } from '#/locales';
  13 + import { DICT_TYPE, getDictOptions } from '#/utils/dict';
12 14
13 #if ($subTable.subJoinMany) ## 一对多 15 #if ($subTable.subJoinMany) ## 一对多
  16 +import type { VxeTableInstance } from 'vxe-table';
14 import { Plus } from "@vben/icons"; 17 import { Plus } from "@vben/icons";
15 -import { Button, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGroup, DatePicker } from 'ant-design-vue';  
16 -import type { OnActionClickParams } from '#/adapter/vxe-table';  
17 -import { useVbenVxeGrid } from '#/adapter/vxe-table';  
18 -import { use${subSimpleClassName}GridEditColumns } from '../data'; 18 +import { VxeColumn, VxeTable } from 'vxe-table';
19 import { get${subSimpleClassName}ListBy${SubJoinColumnName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; 19 import { get${subSimpleClassName}ListBy${SubJoinColumnName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}';
20 #else 20 #else
21 -import { useVbenForm } from '#/adapter/form';  
22 -import { use${subSimpleClassName}FormSchema } from '../data'; 21 +import type { Rule } from 'ant-design-vue/es/form';
  22 +import { Tinymce as RichTextarea } from '#/components/tinymce';
23 import { get${subSimpleClassName}By${SubJoinColumnName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; 23 import { get${subSimpleClassName}By${SubJoinColumnName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}';
24 #end 24 #end
25 25
@@ -28,57 +28,27 @@ const props = defineProps&lt;{ @@ -28,57 +28,27 @@ const props = defineProps&lt;{
28 }>() 28 }>()
29 29
30 #if ($subTable.subJoinMany) ## 一对多 30 #if ($subTable.subJoinMany) ## 一对多
31 -/** 表格操作按钮的回调函数 */  
32 -function onActionClick({  
33 - code,  
34 - row,  
35 -}: OnActionClickParams<${simpleClassName}Api.${subSimpleClassName}>) {  
36 - switch (code) {  
37 - case 'delete': {  
38 - onDelete(row);  
39 - break;  
40 - }  
41 - }  
42 -}  
43 -  
44 -const [Grid, gridApi] = useVbenVxeGrid({  
45 -gridOptions: {  
46 - columns: use${subSimpleClassName}GridEditColumns(onActionClick),  
47 - border: true,  
48 - showOverflow: true,  
49 - autoResize: true,  
50 - keepSource: true,  
51 - rowConfig: {  
52 - keyField: 'id',  
53 - },  
54 - pagerConfig: {  
55 - enabled: false,  
56 - },  
57 - toolbarConfig: {  
58 - enabled: false,  
59 - },  
60 -},  
61 -});  
62 - 31 +const list = ref<${simpleClassName}Api.${subSimpleClassName}[]>([]) // 列表的数据
  32 +const tableRef = ref<VxeTableInstance>();
63 /** 添加${subTable.classComment} */ 33 /** 添加${subTable.classComment} */
64 const onAdd = async () => { 34 const onAdd = async () => {
65 - await gridApi.grid.insertAt({} as ${simpleClassName}Api.${subSimpleClassName}, -1); 35 + await tableRef.value?.insertAt({} as ${simpleClassName}Api.${subSimpleClassName}, -1);
66 } 36 }
67 37
68 /** 删除${subTable.classComment} */ 38 /** 删除${subTable.classComment} */
69 const onDelete = async (row: ${simpleClassName}Api.${subSimpleClassName}) => { 39 const onDelete = async (row: ${simpleClassName}Api.${subSimpleClassName}) => {
70 - await gridApi.grid.remove(row); 40 + await tableRef.value?.remove(row);
71 } 41 }
72 42
73 /** 提供获取表格数据的方法供父组件调用 */ 43 /** 提供获取表格数据的方法供父组件调用 */
74 defineExpose({ 44 defineExpose({
75 getData: (): ${simpleClassName}Api.${subSimpleClassName}[] => { 45 getData: (): ${simpleClassName}Api.${subSimpleClassName}[] => {
76 - const data = gridApi.grid.getData() as ${simpleClassName}Api.${subSimpleClassName}[];  
77 - const removeRecords = gridApi.grid.getRemoveRecords() as ${simpleClassName}Api.${subSimpleClassName}[];  
78 - const insertRecords = gridApi.grid.getInsertRecords() as ${simpleClassName}Api.${subSimpleClassName}[]; 46 + const data = list.value as ${simpleClassName}Api.${subSimpleClassName}[];
  47 + const removeRecords = tableRef.value?.getRemoveRecords() as ${simpleClassName}Api.${subSimpleClassName}[];
  48 + const insertRecords = tableRef.value?.getInsertRecords() as ${simpleClassName}Api.${subSimpleClassName}[];
79 return data 49 return data
80 .filter((row) => !removeRecords.some((removed) => removed.id === row.id)) 50 .filter((row) => !removeRecords.some((removed) => removed.id === row.id))
81 - .concat(insertRecords.map((row: any) => ({ ...row, id: undefined }))); 51 + ?.concat(insertRecords.map((row: any) => ({ ...row, id: undefined })));
82 }, 52 },
83 }); 53 });
84 54
@@ -89,32 +59,35 @@ watch( @@ -89,32 +59,35 @@ watch(
89 if (!val) { 59 if (!val) {
90 return; 60 return;
91 } 61 }
92 - await nextTick();  
93 - await gridApi.grid.loadData(await get${subSimpleClassName}ListBy${SubJoinColumnName}(props.${subJoinColumn.javaField}!)); 62 + list.value = await get${subSimpleClassName}ListBy${SubJoinColumnName}(props.${subJoinColumn.javaField}!);
94 }, 63 },
95 { immediate: true }, 64 { immediate: true },
96 ); 65 );
97 #else 66 #else
98 -const [Form, formApi] = useVbenForm({  
99 - commonConfig: {  
100 - componentProps: {  
101 - class: 'w-full',  
102 - },  
103 - formItemClass: 'col-span-2',  
104 - labelWidth: 80,  
105 - },  
106 - layout: 'horizontal',  
107 - schema: use${subSimpleClassName}FormSchema(),  
108 - showDefaultActions: false 67 +const formRef = ref();
  68 +const formData = ref<Partial<${simpleClassName}Api.${subSimpleClassName}>>({
  69 + #foreach ($column in $subColumns)
  70 + #if ($column.createOperation || $column.updateOperation)
  71 + #if ($column.htmlType == "checkbox")
  72 + $column.javaField: [],
  73 + #else
  74 + $column.javaField: undefined,
  75 + #end
  76 + #end
  77 + #end
109 }); 78 });
110 - 79 +const rules: Record<string, Rule[]> = {
  80 + #foreach ($column in $subColumns)
  81 + #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键
  82 + #set($comment=$column.columnComment)
  83 + $column.javaField: [{ required: true, message: '${comment}不能为空', trigger: #if($column.htmlType == 'select')'change'#else'blur'#end }],
  84 + #end
  85 + #end
  86 +};
111 /** 暴露出表单校验方法和表单值获取方法 */ 87 /** 暴露出表单校验方法和表单值获取方法 */
112 defineExpose({ 88 defineExpose({
113 - validate: async () => {  
114 - const { valid } = await formApi.validate();  
115 - return valid;  
116 - },  
117 - getValues: formApi.getValues, 89 + validate: async () => await formRef.value?.validate(),
  90 + getValues: ()=> formData.value,
118 }); 91 });
119 92
120 /** 监听主表的关联字段的变化,加载对应的子表数据 */ 93 /** 监听主表的关联字段的变化,加载对应的子表数据 */
@@ -125,7 +98,7 @@ watch( @@ -125,7 +98,7 @@ watch(
125 return; 98 return;
126 } 99 }
127 await nextTick(); 100 await nextTick();
128 - await formApi.setValues(await get${subSimpleClassName}By${SubJoinColumnName}(props.${subJoinColumn.javaField}!)); 101 + formData.value = await get${subSimpleClassName}By${SubJoinColumnName}(props.${subJoinColumn.javaField}!);
129 }, 102 },
130 { immediate: true }, 103 { immediate: true },
131 ); 104 );
@@ -134,66 +107,232 @@ watch( @@ -134,66 +107,232 @@ watch(
134 107
135 <template> 108 <template>
136 #if ($subTable.subJoinMany) ## 一对多 109 #if ($subTable.subJoinMany) ## 一对多
137 - <Grid class="mx-4"> 110 + <vxe-table ref="tableRef" :data="list" show-overflow class="mx-4">
138 #foreach($column in $subColumns) 111 #foreach($column in $subColumns)
139 #if ($column.createOperation || $column.updateOperation) 112 #if ($column.createOperation || $column.updateOperation)
  113 + #set ($comment = $column.columnComment)
140 #set ($javaField = $column.javaField) 114 #set ($javaField = $column.javaField)
  115 + #set ($javaType = $column.javaType)
  116 + #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
  117 + #set ($dictMethod = "number")
  118 + #elseif ($javaType == "String")
  119 + #set ($dictMethod = "string")
  120 + #elseif ($javaType == "Boolean")
  121 + #set ($dictMethod = "boolean")
  122 + #end
141 #if ( $column.id == $subJoinColumn.id) ## 特殊:忽略主子表的 join 字段,不用填写 123 #if ( $column.id == $subJoinColumn.id) ## 特殊:忽略主子表的 join 字段,不用填写
142 #elseif ($column.htmlType == "input" && !$column.primaryKey)## 忽略主键,不用在表单里 124 #elseif ($column.htmlType == "input" && !$column.primaryKey)## 忽略主键,不用在表单里
143 - <template #${javaField}="{ row }">  
144 - <Input v-model:value="row.${javaField}" />  
145 - </template> 125 + <vxe-column field="${javaField}" title="${comment}" align="center">
  126 + <template #default="{row}">
  127 + <Input v-model:value="row.${javaField}" />
  128 + </template>
  129 + </vxe-column>
  130 + #elseif($column.htmlType == "imageUpload")## 图片上传
  131 + <vxe-column field="${javaField}" title="${comment}" align="center">
  132 + <template #default="{row}">
  133 + <ImageUpload v-model:value="row.${javaField}" />
  134 + </template>
  135 + </vxe-column>
  136 + #elseif($column.htmlType == "fileUpload")## 文件上传
  137 + <vxe-column field="${javaField}" title="${comment}" align="center">
  138 + <template #default="{row}">
  139 + <FileUpload v-model:value="row.${javaField}" />
  140 + </template>
  141 + </vxe-column>
  142 + #elseif($column.htmlType == "select")## 下拉框
  143 + <vxe-column field="${javaField}" title="${comment}" align="center">
  144 + <template #default="{row}">
  145 + <Select v-model:value="row.${javaField}" placeholder="请选择${comment}">
  146 + #if ("" != $dictType)## 有数据字典
  147 + <Select.Option
  148 + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')"
  149 + :key="dict.value"
  150 + :value="dict.value"
  151 + >
  152 + {{ dict.label }}
  153 + </Select.Option>
  154 + #else##没数据字典
  155 + <Select.Option label="请选择字典生成" value="" />
  156 + #end
  157 + </Select>
  158 + </template>
  159 + </vxe-column>
  160 + #elseif($column.htmlType == "checkbox")## 多选框
  161 + <vxe-column field="${javaField}" title="${comment}" align="center">
  162 + <template #default="{row}">
  163 + <CheckboxGroup v-model:value="row.${javaField}">
  164 + #if ("" != $dictType)## 有数据字典
  165 + <Checkbox
  166 + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')"
  167 + :key="dict.value"
  168 + :value="dict.value"
  169 + >
  170 + {{ dict.label }}
  171 + </Checkbox>
  172 + #else##没数据字典
  173 + <Checkbox label="请选择字典生成" />
  174 + #end
  175 + </CheckboxGroup>
  176 + </template>
  177 + </vxe-column>
  178 + #elseif($column.htmlType == "radio")## 单选框
  179 + <vxe-column field="${javaField}" title="${comment}" align="center">
  180 + <template #default="{row}">
  181 + <RadioGroup v-model:value="row.${javaField}">
  182 + #if ("" != $dictType)## 有数据字典
  183 + <Radio
  184 + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')"
  185 + :key="dict.value"
  186 + :value="dict.value"
  187 + >
  188 + {{ dict.label }}
  189 + </Radio>
  190 + #else##没数据字典
  191 + <Radio value="1">请选择字典生成</Radio>
  192 + #end
  193 + </RadioGroup>
  194 + </template>
  195 + </vxe-column>
  196 + #elseif($column.htmlType == "datetime")## 时间框
  197 + <vxe-column field="${javaField}" title="${comment}" align="center">
  198 + <template #default="{row}">
  199 + <DatePicker
  200 + v-model:value="row.${javaField}"
  201 + :showTime="true"
  202 + format="YYYY-MM-DD HH:mm:ss"
  203 + valueFormat='x'
  204 + />
  205 + </template>
  206 + </vxe-column>
  207 + #elseif($column.htmlType == "textarea" || $column.htmlType == "editor")## 文本框
  208 + <vxe-column field="${javaField}" title="${comment}" align="center">
  209 + <template #default="{row}">
  210 + <Textarea v-model:value="row.${javaField}" />
  211 + </template>
  212 + </vxe-column>
  213 + #end
  214 + #end
  215 + #end
  216 + <vxe-column field="operation" title="操作" align="center">
  217 + <template #default="{row}">
  218 + <Button
  219 + size="small"
  220 + type="link"
  221 + danger
  222 + @click="onDelete(row as any)"
  223 + v-access:code="['${permissionPrefix}:delete']"
  224 + >
  225 + {{ $t('ui.actionTitle.delete') }}
  226 + </Button>
  227 + </template>
  228 + </vxe-column>
  229 + </vxe-table>
  230 + <div class="flex justify-center mt-4">
  231 + <Button :icon="h(Plus)" type="primary" ghost @click="onAdd" v-access:code="['${permissionPrefix}:create']">
  232 + {{ $t('ui.actionTitle.create', ['${subTable.classComment}']) }}
  233 + </Button>
  234 + </div>
  235 +#else
  236 + <Form
  237 + ref="formRef"
  238 + class="mx-4"
  239 + :model="formData"
  240 + :rules="rules"
  241 + :label-col="{ span: 5 }"
  242 + :wrapper-col="{ span: 18 }"
  243 + >
  244 + #foreach($column in $subColumns)
  245 + #if ($column.createOperation || $column.updateOperation)
  246 + #set ($dictType = $column.dictType)
  247 + #set ($javaField = $column.javaField)
  248 + #set ($javaType = $column.javaType)
  249 + #set ($comment = $column.columnComment)
  250 + #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short")
  251 + #set ($dictMethod = "number")
  252 + #elseif ($javaType == "String")
  253 + #set ($dictMethod = "string")
  254 + #elseif ($javaType == "Boolean")
  255 + #set ($dictMethod = "boolean")
  256 + #end
  257 + #if ($column.htmlType == "input" && !$column.primaryKey)## 忽略主键,不用在表单里
  258 + <Form.Item label="${comment}" name="${javaField}">
  259 + <Input v-model:value="formData.${javaField}" placeholder="请输入${comment}" />
  260 + </Form.Item>
146 #elseif($column.htmlType == "imageUpload")## 图片上传 261 #elseif($column.htmlType == "imageUpload")## 图片上传
147 - <template #${javaField}="{ row }">  
148 - <UploadImg v-model:value="row.${javaField}" />  
149 - </template> 262 + <Form.Item label="${comment}" name="${javaField}">
  263 + <ImageUpload v-model:value="formData.${javaField}" />
  264 + </Form.Item>
150 #elseif($column.htmlType == "fileUpload")## 文件上传 265 #elseif($column.htmlType == "fileUpload")## 文件上传
151 - <template #${javaField}="{ row }">  
152 - <UploadFile v-model:value="row.${javaField}" />  
153 - </template> 266 + <Form.Item label="${comment}" name="${javaField}">
  267 + <FileUpload v-model:value="formData.${javaField}" />
  268 + </Form.Item>
154 #elseif($column.htmlType == "editor")## 文本编辑器 269 #elseif($column.htmlType == "editor")## 文本编辑器
155 - <template #${javaField}="{ row }">  
156 - <Textarea v-model:value="row.${javaField}" />  
157 - </template> 270 + <Form.Item label="${comment}" name="${javaField}">
  271 + <RichTextarea v-model="formData.${javaField}" height="500px" />
  272 + </Form.Item>
158 #elseif($column.htmlType == "select")## 下拉框 273 #elseif($column.htmlType == "select")## 下拉框
159 - <template #${javaField}="{ row, column }">  
160 - <Select v-model:value="row.${javaField}" class="w-full">  
161 - <Select.Option v-for="option in column.params.options" :key="option.value" :value="option.value">  
162 - {{ option.label }}  
163 - </Select.Option> 274 + <Form.Item label="${comment}" name="${javaField}">
  275 + <Select v-model:value="formData.${javaField}" placeholder="请选择${comment}">
  276 + #if ("" != $dictType)## 有数据字典
  277 + <Select.Option
  278 + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')"
  279 + :key="dict.value"
  280 + :value="dict.value"
  281 + >
  282 + {{ dict.label }}
  283 + </Select.Option>
  284 + #else##没数据字典
  285 + <Select.Option label="请选择字典生成" value="" />
  286 + #end
164 </Select> 287 </Select>
165 - </template> 288 + </Form.Item>
166 #elseif($column.htmlType == "checkbox")## 多选框 289 #elseif($column.htmlType == "checkbox")## 多选框
167 - <template #${javaField}="{ row, column }">  
168 - <CheckboxGroup v-model:value="row.${javaField}" :options="column.params.options" />  
169 - </template> 290 + <Form.Item label="${comment}" name="${javaField}">
  291 + <CheckboxGroup v-model:value="formData.${javaField}">
  292 + #if ("" != $dictType)## 有数据字典
  293 + <Checkbox
  294 + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')"
  295 + :key="dict.value"
  296 + :value="dict.value"
  297 + >
  298 + {{ dict.label }}
  299 + </Checkbox>
  300 + #else##没数据字典
  301 + <Checkbox label="请选择字典生成" />
  302 + #end
  303 + </CheckboxGroup>
  304 + </Form.Item>
170 #elseif($column.htmlType == "radio")## 单选框 305 #elseif($column.htmlType == "radio")## 单选框
171 - <template #${javaField}="{ row, column }">  
172 - <RadioGroup v-model:value="row.${javaField}" :options="column.params.options" />  
173 - </template> 306 + <Form.Item label="${comment}" name="${javaField}">
  307 + <RadioGroup v-model:value="formData.${javaField}">
  308 + #if ("" != $dictType)## 有数据字典
  309 + <Radio
  310 + v-for="dict in getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod')"
  311 + :key="dict.value"
  312 + :value="dict.value"
  313 + >
  314 + {{ dict.label }}
  315 + </Radio>
  316 + #else##没数据字典
  317 + <Radio value="1">请选择字典生成</Radio>
  318 + #end
  319 + </RadioGroup>
  320 + </Form.Item>
174 #elseif($column.htmlType == "datetime")## 时间框 321 #elseif($column.htmlType == "datetime")## 时间框
175 - <template #${javaField}="{ row }"> 322 + <Form.Item label="${comment}" name="${javaField}">
176 <DatePicker 323 <DatePicker
177 - v-model:value="row.${javaField}"  
178 - :showTime="true"  
179 - format="YYYY-MM-DD HH:mm:ss"  
180 - valueFormat='x' 324 + v-model:value="formData.${javaField}"
  325 + valueFormat="x"
  326 + placeholder="选择${comment}"
181 /> 327 />
182 - </template> 328 + </Form.Item>
183 #elseif($column.htmlType == "textarea")## 文本框 329 #elseif($column.htmlType == "textarea")## 文本框
184 - <template #${javaField}="{ row }">  
185 - <Textarea v-model:value="row.${javaField}" />  
186 - </template> 330 + <Form.Item label="${comment}" name="${javaField}">
  331 + <Textarea v-model:value="formData.${javaField}" placeholder="请输入${comment}" />
  332 + </Form.Item>
187 #end 333 #end
188 #end 334 #end
189 #end 335 #end
190 - </Grid>  
191 - <div class="flex justify-center -mt-4">  
192 - <Button :icon="h(Plus)" type="primary" ghost @click="onAdd" v-access:code="['${subTable.moduleName}:${simpleClassName_strikeCase}:create']">  
193 - {{ $t('ui.actionTitle.create', ['${subTable.classComment}']) }}  
194 - </Button>  
195 - </div>  
196 -#else  
197 - <Form class="mx-4" /> 336 + </Form>
198 #end 337 #end
199 </template> 338 </template>
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/form_sub_normal.vue.vm
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
13 #if ($subTable.subJoinMany) ## 一对多 13 #if ($subTable.subJoinMany) ## 一对多
14 import { Plus } from "@vben/icons"; 14 import { Plus } from "@vben/icons";
15 import { Button, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGroup, DatePicker } from 'ant-design-vue'; 15 import { Button, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGroup, DatePicker } from 'ant-design-vue';
  16 +import { ImageUpload, FileUpload } from "#/components/upload";
16 import type { OnActionClickParams } from '#/adapter/vxe-table'; 17 import type { OnActionClickParams } from '#/adapter/vxe-table';
17 import { useVbenVxeGrid } from '#/adapter/vxe-table'; 18 import { useVbenVxeGrid } from '#/adapter/vxe-table';
18 import { use${subSimpleClassName}GridEditColumns } from '../data'; 19 import { use${subSimpleClassName}GridEditColumns } from '../data';
@@ -145,15 +146,11 @@ watch( @@ -145,15 +146,11 @@ watch(
145 </template> 146 </template>
146 #elseif($column.htmlType == "imageUpload")## 图片上传 147 #elseif($column.htmlType == "imageUpload")## 图片上传
147 <template #${javaField}="{ row }"> 148 <template #${javaField}="{ row }">
148 - <UploadImg v-model:value="row.${javaField}" /> 149 + <ImageUpload v-model:value="row.${javaField}" />
149 </template> 150 </template>
150 #elseif($column.htmlType == "fileUpload")## 文件上传 151 #elseif($column.htmlType == "fileUpload")## 文件上传
151 <template #${javaField}="{ row }"> 152 <template #${javaField}="{ row }">
152 - <UploadFile v-model:value="row.${javaField}" />  
153 - </template>  
154 - #elseif($column.htmlType == "editor")## 文本编辑器  
155 - <template #${javaField}="{ row }">  
156 - <Textarea v-model:value="row.${javaField}" /> 153 + <FileUpload v-model:value="row.${javaField}" />
157 </template> 154 </template>
158 #elseif($column.htmlType == "select")## 下拉框 155 #elseif($column.htmlType == "select")## 下拉框
159 <template #${javaField}="{ row, column }"> 156 <template #${javaField}="{ row, column }">
@@ -180,7 +177,7 @@ watch( @@ -180,7 +177,7 @@ watch(
180 valueFormat='x' 177 valueFormat='x'
181 /> 178 />
182 </template> 179 </template>
183 - #elseif($column.htmlType == "textarea")## 文本框 180 + #elseif($column.htmlType == "textarea" || $column.htmlType == "editor")## 文本框
184 <template #${javaField}="{ row }"> 181 <template #${javaField}="{ row }">
185 <Textarea v-model:value="row.${javaField}" /> 182 <Textarea v-model:value="row.${javaField}" />
186 </template> 183 </template>