Commit 24aea3e30a28f9f93e33db3f743208aeafb96975
1 parent
7c940854
【代码优化】INFRA: vue3_vben5_antd schema 单表和树表代码生成模版优化
Showing
3 changed files
with
24 additions
and
42 deletions
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben_next/schema/views/data.ts.vm
| ... | ... | @@ -9,6 +9,7 @@ import { get${simpleClassName}List } from '#/api/${table.moduleName}/${simpleCla |
| 9 | 9 | import { handleTree } from '#/utils/tree'; |
| 10 | 10 | #end |
| 11 | 11 | import { DICT_TYPE, getDictOptions } from '#/utils/dict'; |
| 12 | +import { getRangePickerDefaultProps } from '#/utils/date'; | |
| 12 | 13 | import { useAccess } from '@vben/access'; |
| 13 | 14 | |
| 14 | 15 | const { hasAccessByCodes } = useAccess(); |
| ... | ... | @@ -196,6 +197,7 @@ export function useGridFormSchema(): VbenFormSchema[] { |
| 196 | 197 | #elseif($column.htmlType == "datetime") |
| 197 | 198 | component: 'RangePicker', |
| 198 | 199 | componentProps: { |
| 200 | + ...getRangePickerDefaultProps(), | |
| 199 | 201 | allowClear: true, |
| 200 | 202 | }, |
| 201 | 203 | #end |
| ... | ... | @@ -237,7 +239,7 @@ export function useGridColumns( |
| 237 | 239 | field: 'operation', |
| 238 | 240 | title: '操作', |
| 239 | 241 | minWidth: 200, |
| 240 | - align: 'right', | |
| 242 | + align: 'center', | |
| 241 | 243 | fixed: 'right', |
| 242 | 244 | headerAlign: 'center', |
| 243 | 245 | showOverflow: false, |
| ... | ... | @@ -251,7 +253,7 @@ export function useGridColumns( |
| 251 | 253 | options: [ |
| 252 | 254 | #if (${table.templateType} == 2)## 树表特有操作 |
| 253 | 255 | { |
| 254 | - code: 'add_child', | |
| 256 | + code: 'append', | |
| 255 | 257 | text: '新增下级', |
| 256 | 258 | show: hasAccessByCodes(['${table.moduleName}:${simpleClassName_strikeCase}:create']), |
| 257 | 259 | }, | ... | ... |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben_next/schema/views/form.vue.vm
| ... | ... | @@ -64,49 +64,25 @@ const [Modal, modalApi] = useVbenModal({ |
| 64 | 64 | if (!isOpen) { |
| 65 | 65 | return; |
| 66 | 66 | } |
| 67 | + | |
| 67 | 68 | // 加载数据 |
| 68 | -#if (${table.templateType} == 2)## 树表处理传入的父ID | |
| 69 | 69 | let data = modalApi.getData<${simpleClassName}Api.${simpleClassName}>(); |
| 70 | -#else## 标准表直接获取 | |
| 71 | - const data = modalApi.getData<${simpleClassName}Api.${simpleClassName}>(); | |
| 72 | -#end | |
| 73 | 70 | if (!data) { |
| 74 | 71 | return; |
| 75 | 72 | } |
| 76 | 73 | |
| 77 | -#if (${table.templateType} == 2)## 树表特有:处理新增下级的情况 | |
| 78 | - // 处理新增下级的情况 | |
| 79 | - if (!data.id && data.${treeParentColumn.javaField}) { | |
| 80 | - parentId.value = data.${treeParentColumn.javaField}; | |
| 81 | - formData.value = { ${treeParentColumn.javaField}: parentId.value } as ${simpleClassName}Api.${simpleClassName}; | |
| 82 | - await formApi.setValues(formData.value); | |
| 83 | - return; | |
| 84 | - } | |
| 85 | -#end | |
| 86 | - | |
| 87 | 74 | if (data.id) { |
| 88 | 75 | // 编辑 |
| 89 | 76 | modalApi.lock(); |
| 90 | 77 | try { |
| 91 | -#if (${table.templateType} == 2)## 树表获取数据后重新赋值 | |
| 92 | 78 | data = await get${simpleClassName}(data.id); |
| 93 | - formData.value = data; | |
| 94 | -#else## 标准表设置表单数据 | |
| 95 | - formData.value = await get${simpleClassName}(data.id as number); | |
| 96 | -#end | |
| 97 | - await formApi.setValues(formData.value); | |
| 98 | 79 | } finally { |
| 99 | 80 | modalApi.lock(false); |
| 100 | 81 | } |
| 101 | - } else { | |
| 102 | - // 新增 | |
| 103 | -#if (${table.templateType} == 2)## 树表特有:设置顶级ID | |
| 104 | - formData.value = { ${treeParentColumn.javaField}: 0 } as ${simpleClassName}Api.${simpleClassName}; | |
| 105 | -#else## 标准表:设置空值 | |
| 106 | - formData.value = data; | |
| 107 | -#end | |
| 108 | - await formApi.setValues(formData.value || {}); | |
| 109 | 82 | } |
| 83 | + // 设置到 values | |
| 84 | + formData.value = data; | |
| 85 | + await formApi.setValues(formData.value); | |
| 110 | 86 | }, |
| 111 | 87 | }); |
| 112 | 88 | </script> | ... | ... |
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben_next/schema/views/index.vue.vm
| ... | ... | @@ -7,7 +7,7 @@ import { Button, message } from 'ant-design-vue'; |
| 7 | 7 | import { Download, Plus } from '@vben/icons'; |
| 8 | 8 | import Form from './modules/form.vue'; |
| 9 | 9 | |
| 10 | -import { ref } from 'vue'; | |
| 10 | +import { ref, h } from 'vue'; | |
| 11 | 11 | import { $t } from '#/locales'; |
| 12 | 12 | import { useVbenVxeGrid } from '#/adapter/vxe-table'; |
| 13 | 13 | #if (${table.templateType} == 2)## 树表接口 |
| ... | ... | @@ -56,7 +56,7 @@ function onEdit(row: ${simpleClassName}Api.${simpleClassName}) { |
| 56 | 56 | |
| 57 | 57 | #if (${table.templateType} == 2)## 树表特有:新增下级 |
| 58 | 58 | /** 新增下级${table.classComment} */ |
| 59 | -function onAddChild(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 59 | +function onAppend(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 60 | 60 | formModalApi.setData({ ${treeParentColumn.javaField}: row.id }).open(); |
| 61 | 61 | } |
| 62 | 62 | #end |
| ... | ... | @@ -86,20 +86,20 @@ function onActionClick({ |
| 86 | 86 | row, |
| 87 | 87 | }: OnActionClickParams<${simpleClassName}Api.${simpleClassName}>) { |
| 88 | 88 | switch (code) { |
| 89 | - case 'edit': { | |
| 90 | - onEdit(row); | |
| 89 | + #if (${table.templateType} == 2)## 树表特有:新增下级 | |
| 90 | + case 'append': { | |
| 91 | + onAppend(row); | |
| 91 | 92 | break; |
| 92 | 93 | } |
| 94 | + #end | |
| 93 | 95 | case 'delete': { |
| 94 | 96 | onDelete(row); |
| 95 | 97 | break; |
| 96 | 98 | } |
| 97 | -#if (${table.templateType} == 2)## 树表特有:新增下级 | |
| 98 | - case 'add_child': { | |
| 99 | - onAddChild(row); | |
| 99 | + case 'edit': { | |
| 100 | + onEdit(row); | |
| 100 | 101 | break; |
| 101 | 102 | } |
| 102 | -#end | |
| 103 | 103 | } |
| 104 | 104 | } |
| 105 | 105 | |
| ... | ... | @@ -167,12 +167,16 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 167 | 167 | {{ isExpanded ? '收缩' : '展开' }} |
| 168 | 168 | </Button> |
| 169 | 169 | #end |
| 170 | - <Button type="primary" @click="onCreate" v-access:code="['${table.moduleName}:${simpleClassName_strikeCase}:create']"> | |
| 171 | - <Plus class="size-5" /> | |
| 170 | + <Button :icon="h(Plus)" type="primary" @click="onCreate" v-access:code="['${table.moduleName}:${simpleClassName_strikeCase}:create']"> | |
| 172 | 171 | {{ $t('ui.actionTitle.create', ['${table.classComment}']) }} |
| 173 | 172 | </Button> |
| 174 | - <Button type="primary" class="ml-2" @click="onExport" v-access:code="['${table.moduleName}:${simpleClassName_strikeCase}:export']"> | |
| 175 | - <Download class="size-5" /> | |
| 173 | + <Button | |
| 174 | + :icon="h(Download)" | |
| 175 | + type="primary" | |
| 176 | + class="ml-2" | |
| 177 | + @click="onExport" | |
| 178 | + v-access:code="['${table.moduleName}:${simpleClassName_strikeCase}:export']" | |
| 179 | + > | |
| 176 | 180 | {{ $t('ui.actionTitle.export') }} |
| 177 | 181 | </Button> |
| 178 | 182 | </template> | ... | ... |