Commit 8193e9801cec249d57bcba26203cee6f716f8b97
1 parent
f29abe85
reactor:【infra 基础设施】优化 vben5 + antd 的 schema 模版
Showing
9 changed files
with
121 additions
and
286 deletions
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm
| 1 | -import type { PageParam, PageResult } from '@vben/request'; | |
| 2 | -import type { Dayjs } from 'dayjs'; | |
| 3 | - | |
| 4 | -import { requestClient } from '#/api/request'; | |
| 5 | -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") | |
| 6 | - | |
| 7 | -export namespace ${simpleClassName}Api { | |
| 8 | -## 特殊:主子表专属逻辑 | |
| 9 | -#foreach ($subTable in $subTables) | |
| 10 | - #set ($index = $foreach.count - 1) | |
| 11 | - #set ($subSimpleClassName = $subSimpleClassNames.get($index)) | |
| 12 | - #set ($subColumns = $subColumnsList.get($index))##当前字段数组 | |
| 13 | - /** ${subTable.classComment}信息 */ | |
| 14 | - export interface ${subSimpleClassName} { | |
| 15 | - #foreach ($column in $subColumns) | |
| 16 | - #if ($column.createOperation || $column.updateOperation) | |
| 17 | - #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") | |
| 18 | - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment} | |
| 19 | - #elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime") | |
| 20 | - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: string | Dayjs; // ${column.columnComment} | |
| 21 | - #else | |
| 22 | - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: ${column.javaType.toLowerCase()}; // ${column.columnComment} | |
| 23 | - #end | |
| 24 | - #end | |
| 25 | - #end | |
| 26 | - } | |
| 27 | - | |
| 28 | -#end | |
| 29 | - /** ${table.classComment}信息 */ | |
| 30 | - export interface ${simpleClassName} { | |
| 31 | -#foreach ($column in $columns) | |
| 32 | -#if ($column.createOperation || $column.updateOperation) | |
| 33 | -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") | |
| 34 | - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment} | |
| 35 | -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime") | |
| 36 | - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: string | Dayjs; // ${column.columnComment} | |
| 37 | -#else | |
| 38 | - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: ${column.javaType.toLowerCase()}; // ${column.columnComment} | |
| 39 | -#end | |
| 40 | -#end | |
| 41 | -#end | |
| 42 | -#if ( $table.templateType == 2 ) | |
| 43 | - children?: ${simpleClassName}[]; | |
| 44 | -#end | |
| 45 | -## 特殊:主子表专属逻辑 | |
| 46 | -#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 47 | - #foreach ($subTable in $subTables) | |
| 48 | - #set ($index = $foreach.count - 1) | |
| 49 | - #set ($subSimpleClassName = $subSimpleClassNames.get($index)) | |
| 50 | - #if ( $subTable.subJoinMany ) | |
| 51 | - ${subSimpleClassName.toLowerCase()}s?: ${subSimpleClassName}[] | |
| 52 | - #else | |
| 53 | - ${subSimpleClassName.toLowerCase()}?: ${subSimpleClassName} | |
| 54 | - #end | |
| 55 | - #end | |
| 56 | -#end | |
| 57 | - } | |
| 58 | -} | |
| 59 | - | |
| 60 | -#if ( $table.templateType != 2 ) | |
| 61 | -/** 查询${table.classComment}分页 */ | |
| 62 | -export function get${simpleClassName}Page(params: PageParam) { | |
| 63 | - return requestClient.get<PageResult<${simpleClassName}Api.${simpleClassName}>>('${baseURL}/page', { params }); | |
| 64 | -} | |
| 65 | -#else | |
| 66 | -/** 查询${table.classComment}列表 */ | |
| 67 | -export function get${simpleClassName}List(params: any) { | |
| 68 | - return requestClient.get<${simpleClassName}Api.${simpleClassName}[]>('${baseURL}/list', { params }); | |
| 69 | -} | |
| 70 | -#end | |
| 71 | - | |
| 72 | -/** 查询${table.classComment}详情 */ | |
| 73 | -export function get${simpleClassName}(id: number) { | |
| 74 | - return requestClient.get<${simpleClassName}Api.${simpleClassName}>(`${baseURL}/get?id=${id}`); | |
| 75 | -} | |
| 76 | - | |
| 77 | -/** 新增${table.classComment} */ | |
| 78 | -export function create${simpleClassName}(data: ${simpleClassName}Api.${simpleClassName}) { | |
| 79 | - return requestClient.post('${baseURL}/create', data); | |
| 80 | -} | |
| 81 | - | |
| 82 | -/** 修改${table.classComment} */ | |
| 83 | -export function update${simpleClassName}(data: ${simpleClassName}Api.${simpleClassName}) { | |
| 84 | - return requestClient.put('${baseURL}/update', data); | |
| 85 | -} | |
| 86 | - | |
| 87 | -/** 删除${table.classComment} */ | |
| 88 | -export function delete${simpleClassName}(id: number) { | |
| 89 | - return requestClient.delete(`${baseURL}/delete?id=${id}`); | |
| 90 | -} | |
| 91 | - | |
| 92 | -#if ( $table.templateType != 2 && $deleteBatchEnable) | |
| 93 | -/** 批量删除${table.classComment} */ | |
| 94 | -export function delete${simpleClassName}List(ids: number[]) { | |
| 95 | - return requestClient.delete(`${baseURL}/delete-list?ids=${ids.join(',')}`) | |
| 96 | -} | |
| 97 | -#end | |
| 98 | - | |
| 99 | -/** 导出${table.classComment} */ | |
| 100 | -export function export${simpleClassName}(params: any) { | |
| 101 | - return requestClient.download('${baseURL}/export-excel', { params }); | |
| 102 | -} | |
| 103 | - | |
| 104 | -## 特殊:主子表专属逻辑 | |
| 105 | -#foreach ($subTable in $subTables) | |
| 106 | -#set ($index = $foreach.count - 1) | |
| 107 | -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) | |
| 108 | -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 | |
| 109 | -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 | |
| 110 | -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 | |
| 111 | -#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) | |
| 112 | -#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) | |
| 113 | -#set ($subClassNameVar = $subClassNameVars.get($index)) | |
| 114 | - | |
| 115 | -// ==================== 子表($subTable.classComment) ==================== | |
| 116 | - | |
| 117 | -## 情况一:MASTER_ERP 时,需要分查询页子表 | |
| 118 | -#if ( $table.templateType == 11 ) | |
| 119 | -/** 获得${subTable.classComment}分页 */ | |
| 120 | -export function get${subSimpleClassName}Page(params: PageParam) { | |
| 121 | - return requestClient.get<PageResult<${simpleClassName}Api.${subSimpleClassName}>>(`${baseURL}/${subSimpleClassName_strikeCase}/page`, { params }); | |
| 122 | -} | |
| 123 | -## 情况二:非 MASTER_ERP 时,需要列表查询子表 | |
| 124 | -#else | |
| 125 | - #if ( $subTable.subJoinMany ) | |
| 126 | -/** 获得${subTable.classComment}列表 */ | |
| 127 | -export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}: number) { | |
| 128 | - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}[]>(`${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); | |
| 129 | -} | |
| 130 | - #else | |
| 131 | -/** 获得${subTable.classComment} */ | |
| 132 | -export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}: number) { | |
| 133 | - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); | |
| 134 | -} | |
| 135 | - #end | |
| 136 | -#end | |
| 137 | -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 | |
| 138 | -#if ( $table.templateType == 11 ) | |
| 139 | -/** 新增${subTable.classComment} */ | |
| 140 | -export function create${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 141 | - return requestClient.post(`${baseURL}/${subSimpleClassName_strikeCase}/create`, data); | |
| 142 | -} | |
| 143 | - | |
| 144 | -/** 修改${subTable.classComment} */ | |
| 145 | -export function update${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 146 | - return requestClient.put(`${baseURL}/${subSimpleClassName_strikeCase}/update`, data); | |
| 147 | -} | |
| 148 | - | |
| 149 | -/** 删除${subTable.classComment} */ | |
| 150 | -export function delete${subSimpleClassName}(id: number) { | |
| 151 | - return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete?id=${id}`); | |
| 152 | -} | |
| 153 | - | |
| 154 | -#if ($deleteBatchEnable) | |
| 155 | -/** 批量删除${subTable.classComment} */ | |
| 156 | -export function delete${subSimpleClassName}List(ids: number[]) { | |
| 157 | - return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete-list?ids=${ids.join(',')}`) | |
| 158 | -} | |
| 159 | -#end | |
| 160 | - | |
| 161 | -/** 获得${subTable.classComment} */ | |
| 162 | -export function get${subSimpleClassName}(id: number) { | |
| 163 | - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`); | |
| 164 | -} | |
| 165 | -#end | |
| 166 | -#end | |
| 167 | - | |
| 1 | +#parse("codegen/vue3_vben5_ele/schema/api/api.ts.vm") | |
| 168 | 2 | \ No newline at end of file | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | import type { VbenFormSchema } from '#/adapter/form'; |
| 2 | 3 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 3 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | 5 | |
| 5 | -import { z } from '#/adapter/form'; | |
| 6 | -import { | |
| 7 | - DICT_TYPE, | |
| 8 | - getDictOptions, | |
| 9 | - getRangePickerDefaultProps, | |
| 10 | -} from '#/utils'; | |
| 6 | +import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; | |
| 11 | 7 | #if(${table.templateType} == 2)## 树表需要导入这些 |
| 12 | 8 | import { get${simpleClassName}List } from '#/api/${table.moduleName}/${table.businessName}'; |
| 13 | 9 | import { handleTree } from '@vben/utils'; |
| ... | ... | @@ -186,7 +182,7 @@ export function useGridFormSchema(): VbenFormSchema[] { |
| 186 | 182 | } |
| 187 | 183 | |
| 188 | 184 | /** 列表的字段 */ |
| 189 | -export function useGridColumns(): VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>['columns'] { | |
| 185 | +export function useGridColumns(): VxeTableGridOptions<${apiName}.${simpleClassName}>['columns'] { | |
| 190 | 186 | return [ |
| 191 | 187 | #if ($table.templateType != 2 && $deleteBatchEnable) |
| 192 | 188 | { type: 'checkbox', width: 40 }, |
| ... | ... | @@ -389,7 +385,7 @@ export function use${subSimpleClassName}GridFormSchema(): VbenFormSchema[] { |
| 389 | 385 | } |
| 390 | 386 | |
| 391 | 387 | /** 列表的字段 */ |
| 392 | -export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] { | |
| 388 | +export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${apiName}.${subSimpleClassName}>['columns'] { | |
| 393 | 389 | return [ |
| 394 | 390 | #if ($table.templateType != 2 && $deleteBatchEnable) |
| 395 | 391 | { type: 'checkbox', width: 40 }, |
| ... | ... | @@ -426,7 +422,7 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${sim |
| 426 | 422 | #else |
| 427 | 423 | #if ($subTable.subJoinMany) ## 一对多 |
| 428 | 424 | /** 新增/修改列表的字段 */ |
| 429 | - export function use${subSimpleClassName}GridEditColumns(): VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>['columns'] { | |
| 425 | + export function use${subSimpleClassName}GridEditColumns(): VxeTableGridOptions<${apiName}.${subSimpleClassName}>['columns'] { | |
| 430 | 426 | return [ |
| 431 | 427 | #foreach($column in $subColumns) |
| 432 | 428 | #if ($column.createOperation || $column.updateOperation) |
| ... | ... | @@ -602,4 +598,4 @@ export function use${subSimpleClassName}GridColumns(): VxeTableGridOptions<${sim |
| 602 | 598 | } |
| 603 | 599 | #end |
| 604 | 600 | #end |
| 605 | 601 | -#end |
| 602 | +#end | |
| 606 | 603 | \ No newline at end of file | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/form.vue.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | <script lang="ts" setup> |
| 2 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 3 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | + | |
| 5 | +import { computed, ref } from 'vue'; | |
| 3 | 6 | |
| 4 | 7 | import { useVbenModal } from '@vben/common-ui'; |
| 5 | -import { message, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGroup, DatePicker } from 'ant-design-vue'; | |
| 8 | + | |
| 9 | +import { message#if ($table.templateType == 11), Tabs#end } from 'ant-design-vue'; | |
| 10 | + | |
| 11 | +import { useVbenForm } from '#/adapter/form'; | |
| 12 | +import { create${simpleClassName}, get${simpleClassName}, update${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 13 | +import { $t } from '#/locales'; | |
| 14 | + | |
| 15 | +import { useFormSchema } from '../data'; | |
| 6 | 16 | ## 特殊:主子表专属逻辑 |
| 7 | 17 | #if ( $table.templateType == 10 || $table.templateType == 12 ) |
| 8 | 18 | #foreach ($subSimpleClassName in $subSimpleClassNames) |
| ... | ... | @@ -12,21 +22,13 @@ import { message, Tabs, Checkbox, Input, Textarea, Select,RadioGroup,CheckboxGro |
| 12 | 22 | #end |
| 13 | 23 | #end |
| 14 | 24 | |
| 15 | -import { computed, ref } from 'vue'; | |
| 16 | -import { $t } from '#/locales'; | |
| 17 | -import { useVbenForm } from '#/adapter/form'; | |
| 18 | -import { get${simpleClassName}, create${simpleClassName}, update${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 19 | - | |
| 20 | -import { useFormSchema } from '../data'; | |
| 21 | - | |
| 22 | 25 | const emit = defineEmits(['success']); |
| 23 | -const formData = ref<${simpleClassName}Api.${simpleClassName}>(); | |
| 26 | +const formData = ref<${apiName}.${simpleClassName}>(); | |
| 24 | 27 | const getTitle = computed(() => { |
| 25 | 28 | return formData.value?.id |
| 26 | 29 | ? $t('ui.actionTitle.edit', ['${table.classComment}']) |
| 27 | 30 | : $t('ui.actionTitle.create', ['${table.classComment}']); |
| 28 | 31 | }); |
| 29 | - | |
| 30 | 32 | ## 特殊:主子表专属逻辑 |
| 31 | 33 | #if ( $table.templateType == 10 || $table.templateType == 12 ) |
| 32 | 34 | #if ( $subTables && $subTables.size() > 0 ) |
| ... | ... | @@ -51,7 +53,7 @@ const [Form, formApi] = useVbenForm({ |
| 51 | 53 | }, |
| 52 | 54 | layout: 'horizontal', |
| 53 | 55 | schema: useFormSchema(), |
| 54 | - showDefaultActions: false | |
| 56 | + showDefaultActions: false, | |
| 55 | 57 | }); |
| 56 | 58 | |
| 57 | 59 | const [Modal, modalApi] = useVbenModal({ |
| ... | ... | @@ -60,8 +62,8 @@ const [Modal, modalApi] = useVbenModal({ |
| 60 | 62 | if (!valid) { |
| 61 | 63 | return; |
| 62 | 64 | } |
| 63 | - ## 特殊:主子表专属逻辑 | |
| 64 | - #if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 65 | +## 特殊:主子表专属逻辑 | |
| 66 | +#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 65 | 67 | #if ( $subTables && $subTables.size() > 0 ) |
| 66 | 68 | // 校验子表单 |
| 67 | 69 | #foreach ($subTable in $subTables) |
| ... | ... | @@ -78,12 +80,12 @@ const [Modal, modalApi] = useVbenModal({ |
| 78 | 80 | #end |
| 79 | 81 | #end |
| 80 | 82 | #end |
| 81 | - #end | |
| 83 | +#end | |
| 82 | 84 | modalApi.lock(); |
| 83 | 85 | // 提交表单 |
| 84 | - const data = (await formApi.getValues()) as ${simpleClassName}Api.${simpleClassName}; | |
| 85 | - ## 特殊:主子表专属逻辑 | |
| 86 | - #if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 86 | + const data = (await formApi.getValues()) as ${apiName}.${simpleClassName}; | |
| 87 | +## 特殊:主子表专属逻辑 | |
| 88 | +#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 87 | 89 | #if ( $subTables && $subTables.size() > 0 ) |
| 88 | 90 | // 拼接子表的数据 |
| 89 | 91 | #foreach ($subTable in $subTables) |
| ... | ... | @@ -96,13 +98,13 @@ const [Modal, modalApi] = useVbenModal({ |
| 96 | 98 | #end |
| 97 | 99 | #end |
| 98 | 100 | #end |
| 99 | - #end | |
| 101 | +#end | |
| 100 | 102 | try { |
| 101 | 103 | await (formData.value?.id ? update${simpleClassName}(data) : create${simpleClassName}(data)); |
| 102 | 104 | // 关闭并提示 |
| 103 | 105 | await modalApi.close(); |
| 104 | 106 | emit('success'); |
| 105 | - message.success( $t('ui.actionMessage.operationSuccess') ); | |
| 107 | + message.success($t('ui.actionMessage.operationSuccess')); | |
| 106 | 108 | } finally { |
| 107 | 109 | modalApi.unlock(); |
| 108 | 110 | } |
| ... | ... | @@ -113,21 +115,20 @@ const [Modal, modalApi] = useVbenModal({ |
| 113 | 115 | return; |
| 114 | 116 | } |
| 115 | 117 | // 加载数据 |
| 116 | - let data = modalApi.getData<${simpleClassName}Api.${simpleClassName}>(); | |
| 117 | - if (!data) { | |
| 118 | + const data = modalApi.getData<${apiName}.${simpleClassName}>(); | |
| 119 | + if (!data || !data.id) { | |
| 118 | 120 | return; |
| 119 | 121 | } |
| 120 | - if (data.id) { | |
| 121 | - modalApi.lock(); | |
| 122 | - try { | |
| 123 | - data = await get${simpleClassName}(data.id); | |
| 124 | - } finally { | |
| 125 | - modalApi.unlock(); | |
| 122 | + modalApi.lock(); | |
| 123 | + try { | |
| 124 | + formData.value = await get${simpleClassName}(data.id); | |
| 125 | + // 设置到 values | |
| 126 | + if (formData.value) { | |
| 127 | + await formApi.setValues(formData.value); | |
| 126 | 128 | } |
| 129 | + } finally { | |
| 130 | + modalApi.unlock(); | |
| 127 | 131 | } |
| 128 | - // 设置到 values | |
| 129 | - formData.value = data; | |
| 130 | - await formApi.setValues(formData.value); | |
| 131 | 132 | }, |
| 132 | 133 | }); |
| 133 | 134 | </script> |
| ... | ... | @@ -135,8 +136,8 @@ const [Modal, modalApi] = useVbenModal({ |
| 135 | 136 | <template> |
| 136 | 137 | <Modal :title="getTitle"> |
| 137 | 138 | <Form class="mx-4" /> |
| 138 | - ## 特殊:主子表专属逻辑 | |
| 139 | - #if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 139 | +## 特殊:主子表专属逻辑 | |
| 140 | +#if ( $table.templateType == 10 || $table.templateType == 12 ) | |
| 140 | 141 | <!-- 子表的表单 --> |
| 141 | 142 | <Tabs v-model:active-key="subTabsName"> |
| 142 | 143 | #foreach ($subTable in $subTables) |
| ... | ... | @@ -149,6 +150,6 @@ const [Modal, modalApi] = useVbenModal({ |
| 149 | 150 | </Tabs.TabPane> |
| 150 | 151 | #end |
| 151 | 152 | </Tabs> |
| 152 | - #end | |
| 153 | +#end | |
| 153 | 154 | </Modal> |
| 154 | 155 | </template> | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm
| 1 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 1 | 2 | <script lang="ts" setup> |
| 2 | 3 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 3 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 4 | 5 | |
| 5 | -import { Page, useVbenModal } from '@vben/common-ui'; | |
| 6 | -import { message,Tabs } from 'ant-design-vue'; | |
| 7 | -import Form from './modules/form.vue'; | |
| 6 | +import { ref } from 'vue'; | |
| 8 | 7 | |
| 9 | -## 特殊:主子表专属逻辑 | |
| 10 | -#if ( $table.templateType == 11 || $table.templateType == 12 ) | |
| 11 | - #foreach ($subSimpleClassName in $subSimpleClassNames) | |
| 12 | - #set ($index = $foreach.count - 1) | |
| 13 | - #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) | |
| 14 | -import ${subSimpleClassName}List from './modules/${subSimpleClassName_strikeCase}-list.vue' | |
| 15 | - #end | |
| 16 | -#end | |
| 8 | +import {#if ($table.templateType != 2 && $deleteBatchEnable) confirm,#end Page, useVbenModal } from '@vben/common-ui'; | |
| 9 | +import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; | |
| 10 | + | |
| 11 | +import { message#if ($table.templateType == 11), Tabs#end } from 'ant-design-vue'; | |
| 17 | 12 | |
| 18 | -import { ref, computed } from 'vue'; | |
| 19 | -import { $t } from '#/locales'; | |
| 20 | 13 | import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; |
| 21 | 14 | #if (${table.templateType} == 2)## 树表接口 |
| 22 | -import { get${simpleClassName}List, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 15 | +import { | |
| 16 | + delete${simpleClassName}, | |
| 17 | + export${simpleClassName}, | |
| 18 | + get${simpleClassName}List, | |
| 19 | +} from '#/api/${table.moduleName}/${table.businessName}'; | |
| 23 | 20 | #else## 标准表接口 |
| 24 | -import { get${simpleClassName}Page, delete${simpleClassName},#if ($deleteBatchEnable) delete${simpleClassName}List,#end export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 21 | +import { | |
| 22 | + delete${simpleClassName},#if ($deleteBatchEnable) | |
| 23 | + | |
| 24 | + delete${simpleClassName}List,#end | |
| 25 | + export${simpleClassName}, | |
| 26 | + get${simpleClassName}Page, | |
| 27 | +} from '#/api/${table.moduleName}/${table.businessName}'; | |
| 25 | 28 | #end |
| 26 | -import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; | |
| 29 | +import { $t } from '#/locales'; | |
| 27 | 30 | |
| 28 | 31 | import { useGridColumns, useGridFormSchema } from './data'; |
| 32 | +import Form from './modules/form.vue'; | |
| 33 | +## 特殊:主子表专属逻辑 | |
| 34 | +#if ( $table.templateType == 11 || $table.templateType == 12 ) | |
| 35 | + #foreach ($subSimpleClassName in $subSimpleClassNames) | |
| 36 | + #set ($index = $foreach.count - 1) | |
| 37 | + #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) | |
| 38 | +import ${subSimpleClassName}List from './modules/${subSimpleClassName_strikeCase}-list.vue'; | |
| 39 | + #end | |
| 40 | +#end | |
| 29 | 41 | |
| 30 | 42 | #if ($table.templateType == 12 || $table.templateType == 11) ## 内嵌和erp情况 |
| 31 | 43 | /** 子表的列表 */ |
| 32 | 44 | const subTabsName = ref('$subClassNameVars.get(0)') |
| 33 | 45 | #if ($table.templateType == 11) |
| 34 | -const select${simpleClassName} = ref<${simpleClassName}Api.${simpleClassName}>(); | |
| 46 | +const select${simpleClassName} = ref<${apiName}.${simpleClassName}>(); | |
| 35 | 47 | #end |
| 36 | 48 | #end |
| 37 | - | |
| 38 | 49 | const [FormModal, formModalApi] = useVbenModal({ |
| 39 | 50 | connectedComponent: Form, |
| 40 | 51 | destroyOnClose: true, |
| 41 | 52 | }); |
| 42 | - | |
| 43 | 53 | #if (${table.templateType} == 2)## 树表特有:控制表格展开收缩 |
| 54 | + | |
| 44 | 55 | /** 切换树形展开/收缩状态 */ |
| 45 | 56 | const isExpanded = ref(true); |
| 46 | 57 | function toggleExpand() { |
| ... | ... | @@ -60,33 +71,29 @@ function onRefresh() { |
| 60 | 71 | |
| 61 | 72 | /** 创建${table.classComment} */ |
| 62 | 73 | function handleCreate() { |
| 63 | - formModalApi.setData({}).open(); | |
| 74 | + formModalApi.setData(null).open(); | |
| 64 | 75 | } |
| 65 | 76 | |
| 66 | 77 | /** 编辑${table.classComment} */ |
| 67 | -function handleEdit(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 78 | +function handleEdit(row: ${apiName}.${simpleClassName}) { | |
| 68 | 79 | formModalApi.setData(row).open(); |
| 69 | 80 | } |
| 70 | - | |
| 71 | 81 | #if (${table.templateType} == 2)## 树表特有:新增下级 |
| 82 | + | |
| 72 | 83 | /** 新增下级${table.classComment} */ |
| 73 | -function handleAppend(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 84 | +function handleAppend(row: ${apiName}.${simpleClassName}) { | |
| 74 | 85 | formModalApi.setData({ ${treeParentColumn.javaField}: row.id }).open(); |
| 75 | 86 | } |
| 76 | 87 | #end |
| 77 | 88 | |
| 78 | 89 | /** 删除${table.classComment} */ |
| 79 | -async function handleDelete(row: ${simpleClassName}Api.${simpleClassName}) { | |
| 90 | +async function handleDelete(row: ${apiName}.${simpleClassName}) { | |
| 80 | 91 | const hideLoading = message.loading({ |
| 81 | 92 | content: $t('ui.actionMessage.deleting', [row.id]), |
| 82 | - key: 'action_key_msg', | |
| 83 | 93 | }); |
| 84 | 94 | try { |
| 85 | 95 | await delete${simpleClassName}(row.id as number); |
| 86 | - message.success({ | |
| 87 | - content: $t('ui.actionMessage.deleteSuccess', [row.id]), | |
| 88 | - key: 'action_key_msg', | |
| 89 | - }); | |
| 96 | + message.success($t('ui.actionMessage.deleteSuccess', [row.id])); | |
| 90 | 97 | onRefresh(); |
| 91 | 98 | } finally { |
| 92 | 99 | hideLoading(); |
| ... | ... | @@ -96,30 +103,27 @@ async function handleDelete(row: ${simpleClassName}Api.${simpleClassName}) { |
| 96 | 103 | #if ($table.templateType != 2 && $deleteBatchEnable) |
| 97 | 104 | /** 批量删除${table.classComment} */ |
| 98 | 105 | async function handleDeleteBatch() { |
| 106 | + await confirm($t('ui.actionMessage.deleteBatchConfirm')); | |
| 99 | 107 | const hideLoading = message.loading({ |
| 100 | - content: $t('ui.actionMessage.deleting'), | |
| 101 | - key: 'action_key_msg', | |
| 108 | + content: $t('ui.actionMessage.deletingBatch'), | |
| 102 | 109 | }); |
| 103 | 110 | try { |
| 104 | 111 | await delete${simpleClassName}List(checkedIds.value); |
| 105 | 112 | checkedIds.value = []; |
| 106 | - message.success({ | |
| 107 | - content: $t('ui.actionMessage.deleteSuccess'), | |
| 108 | - key: 'action_key_msg', | |
| 109 | - }); | |
| 113 | + message.success($t('ui.actionMessage.deleteSuccess')); | |
| 110 | 114 | onRefresh(); |
| 111 | 115 | } finally { |
| 112 | 116 | hideLoading(); |
| 113 | 117 | } |
| 114 | 118 | } |
| 115 | 119 | |
| 116 | -const checkedIds = ref<number[]>([]) | |
| 120 | +const checkedIds = ref<number[]>([]); | |
| 117 | 121 | function handleRowCheckboxChange({ |
| 118 | 122 | records, |
| 119 | 123 | }: { |
| 120 | - records: ${simpleClassName}Api.${simpleClassName}[]; | |
| 124 | + records: ${apiName}.${simpleClassName}[]; | |
| 121 | 125 | }) { |
| 122 | - checkedIds.value = records.map((item) => item.id); | |
| 126 | + checkedIds.value = records.map((item) => item.id!); | |
| 123 | 127 | } |
| 124 | 128 | #end |
| 125 | 129 | |
| ... | ... | @@ -152,9 +156,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 152 | 156 | enabled: false, |
| 153 | 157 | }, |
| 154 | 158 | #else## 标准表设置 |
| 155 | - pagerConfig: { | |
| 156 | - enabled: true, | |
| 157 | - }, | |
| 159 | + keepSource: true, | |
| 158 | 160 | #end |
| 159 | 161 | proxyConfig: { |
| 160 | 162 | ajax: { |
| ... | ... | @@ -184,19 +186,19 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 184 | 186 | refresh: true, |
| 185 | 187 | search: true, |
| 186 | 188 | }, |
| 187 | - } as VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>, | |
| 189 | + } as VxeTableGridOptions<${apiName}.${simpleClassName}>, | |
| 188 | 190 | #if (${table.templateType} == 11 || $deleteBatchEnable) |
| 189 | - gridEvents:{ | |
| 190 | - #if(${table.templateType} == 11) | |
| 191 | - cellClick: ({ row }: { row: ${simpleClassName}Api.${simpleClassName}}) => { | |
| 191 | + gridEvents: { | |
| 192 | + #if(${table.templateType} == 11) | |
| 193 | + cellClick: ({ row }: { row: ${apiName}.${simpleClassName}}) => { | |
| 192 | 194 | select${simpleClassName}.value = row; |
| 193 | 195 | }, |
| 194 | - #end | |
| 195 | - #if(${table.templateType} != 2 && $deleteBatchEnable) | |
| 196 | - checkboxAll: handleRowCheckboxChange, | |
| 197 | - checkboxChange: handleRowCheckboxChange, | |
| 198 | - #end | |
| 199 | - } | |
| 196 | + #end | |
| 197 | + #if(${table.templateType} != 2 && $deleteBatchEnable) | |
| 198 | + checkboxAll: handleRowCheckboxChange, | |
| 199 | + checkboxChange: handleRowCheckboxChange, | |
| 200 | + #end | |
| 201 | + }, | |
| 200 | 202 | #end |
| 201 | 203 | }); |
| 202 | 204 | </script> |
| ... | ... | @@ -255,8 +257,8 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 255 | 257 | type: 'primary', |
| 256 | 258 | danger: true, |
| 257 | 259 | icon: ACTION_ICON.DELETE, |
| 258 | - disabled: isEmpty(checkedIds), | |
| 259 | 260 | auth: ['${table.moduleName}:${simpleClassName_strikeCase}:delete'], |
| 261 | + disabled: isEmpty(checkedIds), | |
| 260 | 262 | onClick: handleDeleteBatch, |
| 261 | 263 | }, |
| 262 | 264 | #end |
| ... | ... | @@ -297,7 +299,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 297 | 299 | /> |
| 298 | 300 | </template> |
| 299 | 301 | </Grid> |
| 300 | - | |
| 301 | 302 | #if ($table.templateType == 11) ## erp情况 |
| 302 | 303 | <!-- 子表的表单 --> |
| 303 | 304 | <Tabs v-model:active-key="subTabsName" class="mt-2"> |
| ... | ... | @@ -314,4 +315,4 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 314 | 315 | </div> |
| 315 | 316 | #end |
| 316 | 317 | </Page> |
| 317 | 318 | -</template> |
| 319 | +</template> | |
| 318 | 320 | \ No newline at end of file | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/form_sub_erp.vue.vm
| ... | ... | @@ -2,8 +2,9 @@ |
| 2 | 2 | #set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 |
| 3 | 3 | #set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 |
| 4 | 4 | #set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) |
| 5 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 5 | 6 | <script lang="ts" setup> |
| 6 | - import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 7 | + import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 7 | 8 | |
| 8 | 9 | import { useVbenModal } from '@vben/common-ui'; |
| 9 | 10 | import { message } from 'ant-design-vue'; |
| ... | ... | @@ -16,7 +17,7 @@ |
| 16 | 17 | import { use${subSimpleClassName}FormSchema } from '../data'; |
| 17 | 18 | |
| 18 | 19 | const emit = defineEmits(['success']); |
| 19 | - const formData = ref<${simpleClassName}Api.${subSimpleClassName}>(); | |
| 20 | + const formData = ref<${apiName}.${subSimpleClassName}>(); | |
| 20 | 21 | const getTitle = computed(() => { |
| 21 | 22 | return formData.value?.id |
| 22 | 23 | ? $t('ui.actionTitle.edit', ['${subTable.classComment}']) |
| ... | ... | @@ -45,7 +46,7 @@ |
| 45 | 46 | |
| 46 | 47 | modalApi.lock(); |
| 47 | 48 | // 提交表单 |
| 48 | - const data = (await formApi.getValues()) as ${simpleClassName}Api.${subSimpleClassName}; | |
| 49 | + const data = (await formApi.getValues()) as ${apiName}.${subSimpleClassName}; | |
| 49 | 50 | data.${subJoinColumn.javaField} = formData.value?.${subJoinColumn.javaField}; |
| 50 | 51 | try { |
| 51 | 52 | await (formData.value?.id ? update${subSimpleClassName}(data) : create${subSimpleClassName}(data)); |
| ... | ... | @@ -64,7 +65,7 @@ |
| 64 | 65 | } |
| 65 | 66 | |
| 66 | 67 | // 加载数据 |
| 67 | - let data = modalApi.getData<${simpleClassName}Api.${subSimpleClassName}>(); | |
| 68 | + let data = modalApi.getData<${apiName}.${subSimpleClassName}>(); | |
| 68 | 69 | if (!data) { |
| 69 | 70 | return; |
| 70 | 71 | } | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/form_sub_normal.vue.vm
| ... | ... | @@ -4,8 +4,9 @@ |
| 4 | 4 | #set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) |
| 5 | 5 | #set ($subClassNameVar = $subClassNameVars.get($subIndex)) |
| 6 | 6 | #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 |
| 7 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 7 | 8 | <script lang="ts" setup> |
| 8 | - import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 9 | + import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 9 | 10 | |
| 10 | 11 | import { computed, ref, h, onMounted,watch,nextTick } from 'vue'; |
| 11 | 12 | import { $t } from '#/locales'; |
| ... | ... | @@ -33,7 +34,7 @@ const props = defineProps<{ |
| 33 | 34 | function onActionClick({ |
| 34 | 35 | code, |
| 35 | 36 | row, |
| 36 | -}: OnActionClickParams<${simpleClassName}Api.${subSimpleClassName}>) { | |
| 37 | +}: OnActionClickParams<${apiName}.${subSimpleClassName}>) { | |
| 37 | 38 | switch (code) { |
| 38 | 39 | case 'delete': { |
| 39 | 40 | onDelete(row); |
| ... | ... | @@ -63,20 +64,20 @@ gridOptions: { |
| 63 | 64 | |
| 64 | 65 | /** 添加${subTable.classComment} */ |
| 65 | 66 | const onAdd = async () => { |
| 66 | - await gridApi.grid.insertAt({} as ${simpleClassName}Api.${subSimpleClassName}, -1); | |
| 67 | + await gridApi.grid.insertAt({} as ${apiName}.${subSimpleClassName}, -1); | |
| 67 | 68 | } |
| 68 | 69 | |
| 69 | 70 | /** 删除${subTable.classComment} */ |
| 70 | -const onDelete = async (row: ${simpleClassName}Api.${subSimpleClassName}) => { | |
| 71 | +const onDelete = async (row: ${apiName}.${subSimpleClassName}) => { | |
| 71 | 72 | await gridApi.grid.remove(row); |
| 72 | 73 | } |
| 73 | 74 | |
| 74 | 75 | /** 提供获取表格数据的方法供父组件调用 */ |
| 75 | 76 | defineExpose({ |
| 76 | - getData: (): ${simpleClassName}Api.${subSimpleClassName}[] => { | |
| 77 | - const data = gridApi.grid.getData() as ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 78 | - const removeRecords = gridApi.grid.getRemoveRecords() as ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 79 | - const insertRecords = gridApi.grid.getInsertRecords() as ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 77 | + getData: (): ${apiName}.${subSimpleClassName}[] => { | |
| 78 | + const data = gridApi.grid.getData() as ${apiName}.${subSimpleClassName}[]; | |
| 79 | + const removeRecords = gridApi.grid.getRemoveRecords() as ${apiName}.${subSimpleClassName}[]; | |
| 80 | + const insertRecords = gridApi.grid.getInsertRecords() as ${apiName}.${subSimpleClassName}[]; | |
| 80 | 81 | return data |
| 81 | 82 | .filter((row) => !removeRecords.some((removed) => removed.id === row.id)) |
| 82 | 83 | .concat(insertRecords.map((row: any) => ({ ...row, id: undefined }))); | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/modules/list_sub_erp.vue.vm
| ... | ... | @@ -5,9 +5,10 @@ |
| 5 | 5 | #set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 |
| 6 | 6 | #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($subIndex)) |
| 7 | 7 | #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 |
| 8 | +#set ($apiName = "${table.moduleName.substring(0,1).toUpperCase()}${table.moduleName.substring(1)}${simpleClassName}Api") | |
| 8 | 9 | <script lang="ts" setup> |
| 9 | 10 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 10 | -import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 11 | +import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; | |
| 11 | 12 | |
| 12 | 13 | #if ($table.templateType == 11) ## erp |
| 13 | 14 | import ${subSimpleClassName}Form from './${subSimpleClassName_strikeCase}-form.vue' |
| ... | ... | @@ -51,12 +52,12 @@ function handleCreate() { |
| 51 | 52 | } |
| 52 | 53 | |
| 53 | 54 | /** 编辑${subTable.classComment} */ |
| 54 | -function handleEdit(row: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 55 | +function handleEdit(row: ${apiName}.${subSimpleClassName}) { | |
| 55 | 56 | formModalApi.setData(row).open(); |
| 56 | 57 | } |
| 57 | 58 | |
| 58 | 59 | /** 删除${subTable.classComment} */ |
| 59 | -async function handleDelete(row: ${simpleClassName}Api.${subSimpleClassName}) { | |
| 60 | +async function handleDelete(row: ${apiName}.${subSimpleClassName}) { | |
| 60 | 61 | const hideLoading = message.loading({ |
| 61 | 62 | content: $t('ui.actionMessage.deleting', [row.id]), |
| 62 | 63 | key: 'action_process_msg', |
| ... | ... | @@ -97,7 +98,7 @@ const checkedIds = ref<number[]>([]) |
| 97 | 98 | function handleRowCheckboxChange({ |
| 98 | 99 | records, |
| 99 | 100 | }: { |
| 100 | - records: ${simpleClassName}Api.${subSimpleClassName}[]; | |
| 101 | + records: ${apiName}.${subSimpleClassName}[]; | |
| 101 | 102 | }) { |
| 102 | 103 | checkedIds.value = records.map((item) => item.id); |
| 103 | 104 | } |
| ... | ... | @@ -149,7 +150,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ |
| 149 | 150 | keyField: 'id', |
| 150 | 151 | isHover: true, |
| 151 | 152 | }, |
| 152 | - } as VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>, | |
| 153 | + } as VxeTableGridOptions<${apiName}.${subSimpleClassName}>, | |
| 153 | 154 | #if (${table.templateType} == 11 && $deleteBatchEnable) |
| 154 | 155 | gridEvents:{ |
| 155 | 156 | checkboxAll: handleRowCheckboxChange, | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/data.ts.vm
| ... | ... | @@ -3,7 +3,7 @@ import type { VbenFormSchema } from '#/adapter/form'; |
| 3 | 3 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 4 | 4 | import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; |
| 5 | 5 | |
| 6 | -import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps, } from '#/utils'; | |
| 6 | +import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; | |
| 7 | 7 | #if(${table.templateType} == 2)## 树表需要导入这些 |
| 8 | 8 | import { get${simpleClassName}List } from '#/api/${table.moduleName}/${table.businessName}'; |
| 9 | 9 | import { handleTree } from '@vben/utils'; | ... | ... |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_ele/schema/views/index.vue.vm
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| 4 | 4 | import type { ${apiName} } from '#/api/${table.moduleName}/${table.businessName}'; |
| 5 | 5 | |
| 6 | -import { ref#if ($table.templateType == 2), computed#end } from 'vue'; | |
| 6 | +import { ref } from 'vue'; | |
| 7 | 7 | |
| 8 | 8 | import {#if ($table.templateType != 2 && $deleteBatchEnable) confirm,#end Page, useVbenModal } from '@vben/common-ui'; |
| 9 | 9 | import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; | ... | ... |