Commit 6dee926253c86790aa0ea88b2b27a981a7d49794
1 parent
9295d610
feat:【INFRA 基础设施】新增 vben5-antd-schema 模板代码生成时,可生成批量删除
Showing
3 changed files
with
59 additions
and
6 deletions
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm
| @@ -89,6 +89,13 @@ export function delete${simpleClassName}(id: number) { | @@ -89,6 +89,13 @@ export function delete${simpleClassName}(id: number) { | ||
| 89 | return requestClient.delete(`${baseURL}/delete?id=${id}`); | 89 | return requestClient.delete(`${baseURL}/delete?id=${id}`); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | +#if ( $table.templateType != 2 && $table.deleteBatch) | ||
| 93 | +// 批量删除${table.classComment} | ||
| 94 | +export function delete${simpleClassName}ByIds(ids: number[]) { | ||
| 95 | + return requestClient.delete(`${baseURL}/delete-batch?ids=${ids.join(',')}`) | ||
| 96 | +} | ||
| 97 | +#end | ||
| 98 | + | ||
| 92 | /** 导出${table.classComment} */ | 99 | /** 导出${table.classComment} */ |
| 93 | export function export${simpleClassName}(params: any) { | 100 | export function export${simpleClassName}(params: any) { |
| 94 | return requestClient.download('${baseURL}/export-excel', params); | 101 | return requestClient.download('${baseURL}/export-excel', params); |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm
| @@ -193,6 +193,9 @@ export function useGridColumns( | @@ -193,6 +193,9 @@ export function useGridColumns( | ||
| 193 | onActionClick?: OnActionClickFn<${simpleClassName}Api.${simpleClassName}>, | 193 | onActionClick?: OnActionClickFn<${simpleClassName}Api.${simpleClassName}>, |
| 194 | ): VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>['columns'] { | 194 | ): VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>['columns'] { |
| 195 | return [ | 195 | return [ |
| 196 | +#if ($table.templateType != 2 && $table.deleteBatch) | ||
| 197 | + { type: 'checkbox', width: 40 }, | ||
| 198 | +#end | ||
| 196 | #if ($table.templateType == 12) ## 内嵌情况 | 199 | #if ($table.templateType == 12) ## 内嵌情况 |
| 197 | { type: 'expand', width: 80, slots: { content: 'expand_content' } }, | 200 | { type: 'expand', width: 80, slots: { content: 'expand_content' } }, |
| 198 | #end | 201 | #end |
yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm
| @@ -4,7 +4,7 @@ import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.bu | @@ -4,7 +4,7 @@ import type { ${simpleClassName}Api } from '#/api/${table.moduleName}/${table.bu | ||
| 4 | 4 | ||
| 5 | import { Page, useVbenModal } from '@vben/common-ui'; | 5 | import { Page, useVbenModal } from '@vben/common-ui'; |
| 6 | import { Button, message,Tabs } from 'ant-design-vue'; | 6 | import { Button, message,Tabs } from 'ant-design-vue'; |
| 7 | -import { Download, Plus } from '@vben/icons'; | 7 | +import { Download, Plus, Trash2 } from '@vben/icons'; |
| 8 | import Form from './modules/form.vue'; | 8 | import Form from './modules/form.vue'; |
| 9 | 9 | ||
| 10 | ## 特殊:主子表专属逻辑 | 10 | ## 特殊:主子表专属逻辑 |
| @@ -16,15 +16,15 @@ import Form from './modules/form.vue'; | @@ -16,15 +16,15 @@ import Form from './modules/form.vue'; | ||
| 16 | #end | 16 | #end |
| 17 | #end | 17 | #end |
| 18 | 18 | ||
| 19 | -import { ref, h } from 'vue'; | 19 | +import { ref, h, computed } from 'vue'; |
| 20 | import { $t } from '#/locales'; | 20 | import { $t } from '#/locales'; |
| 21 | import { useVbenVxeGrid } from '#/adapter/vxe-table'; | 21 | import { useVbenVxeGrid } from '#/adapter/vxe-table'; |
| 22 | #if (${table.templateType} == 2)## 树表接口 | 22 | #if (${table.templateType} == 2)## 树表接口 |
| 23 | import { get${simpleClassName}List, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | 23 | import { get${simpleClassName}List, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; |
| 24 | #else## 标准表接口 | 24 | #else## 标准表接口 |
| 25 | -import { get${simpleClassName}Page, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; | 25 | +import { get${simpleClassName}Page, delete${simpleClassName},delete${simpleClassName}ByIds, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; |
| 26 | #end | 26 | #end |
| 27 | -import { downloadFileFromBlobPart } from '@vben/utils'; | 27 | +import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; |
| 28 | 28 | ||
| 29 | import { useGridColumns, useGridFormSchema } from './data'; | 29 | import { useGridColumns, useGridFormSchema } from './data'; |
| 30 | 30 | ||
| @@ -87,11 +87,31 @@ async function onDelete(row: ${simpleClassName}Api.${simpleClassName}) { | @@ -87,11 +87,31 @@ async function onDelete(row: ${simpleClassName}Api.${simpleClassName}) { | ||
| 87 | await delete${simpleClassName}(row.id as number); | 87 | await delete${simpleClassName}(row.id as number); |
| 88 | message.success( $t('ui.actionMessage.deleteSuccess', [row.id]) ); | 88 | message.success( $t('ui.actionMessage.deleteSuccess', [row.id]) ); |
| 89 | onRefresh(); | 89 | onRefresh(); |
| 90 | - } catch { | 90 | + } finally { |
| 91 | hideLoading(); | 91 | hideLoading(); |
| 92 | } | 92 | } |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | +#if ($table.templateType != 2 && $table.deleteBatch) | ||
| 96 | +const deleteIds = ref<number[]>([]) // 待删除${table.classComment} ID | ||
| 97 | +const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); | ||
| 98 | +/** 批量删除${table.classComment} */ | ||
| 99 | +async function onDeleteBatch() { | ||
| 100 | + const hideLoading = message.loading({ | ||
| 101 | + content: $t('ui.actionMessage.deleting'), | ||
| 102 | + duration: 0, | ||
| 103 | + key: 'action_process_msg', | ||
| 104 | + }); | ||
| 105 | + try { | ||
| 106 | + await delete${simpleClassName}ByIds(deleteIds.value); | ||
| 107 | + message.success( $t('ui.actionMessage.deleteSuccess') ); | ||
| 108 | + onRefresh(); | ||
| 109 | + } finally { | ||
| 110 | + hideLoading(); | ||
| 111 | + } | ||
| 112 | +} | ||
| 113 | +#end | ||
| 114 | + | ||
| 95 | /** 导出表格 */ | 115 | /** 导出表格 */ |
| 96 | async function onExport() { | 116 | async function onExport() { |
| 97 | const data = await export${simpleClassName}(await gridApi.formApi.getValues()); | 117 | const data = await export${simpleClassName}(await gridApi.formApi.getValues()); |
| @@ -177,11 +197,21 @@ const [Grid, gridApi] = useVbenVxeGrid({ | @@ -177,11 +197,21 @@ const [Grid, gridApi] = useVbenVxeGrid({ | ||
| 177 | search: true, | 197 | search: true, |
| 178 | }, | 198 | }, |
| 179 | } as VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>, | 199 | } as VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>, |
| 180 | -#if (${table.templateType} == 11) | 200 | +#if (${table.templateType} == 11 || $table.deleteBatch) |
| 181 | gridEvents:{ | 201 | gridEvents:{ |
| 202 | + #if(${table.templateType} == 11) | ||
| 182 | cellClick: ({ row }: { row: ${simpleClassName}Api.${simpleClassName}}) => { | 203 | cellClick: ({ row }: { row: ${simpleClassName}Api.${simpleClassName}}) => { |
| 183 | select${simpleClassName}.value = row; | 204 | select${simpleClassName}.value = row; |
| 184 | }, | 205 | }, |
| 206 | + #end | ||
| 207 | + #if($table.deleteBatch) | ||
| 208 | + checkboxAll: ({records,}: { records: ${simpleClassName}Api.${simpleClassName}[];}) => { | ||
| 209 | + deleteIds.value = records.map((item) => item.id); | ||
| 210 | + }, | ||
| 211 | + checkboxChange: ({records,}: { records: ${simpleClassName}Api.${simpleClassName}[];}) => { | ||
| 212 | + deleteIds.value = records.map((item) => item.id); | ||
| 213 | + }, | ||
| 214 | + #end | ||
| 185 | } | 215 | } |
| 186 | #end | 216 | #end |
| 187 | }); | 217 | }); |
| @@ -229,6 +259,19 @@ const [Grid, gridApi] = useVbenVxeGrid({ | @@ -229,6 +259,19 @@ const [Grid, gridApi] = useVbenVxeGrid({ | ||
| 229 | > | 259 | > |
| 230 | {{ $t('ui.actionTitle.export') }} | 260 | {{ $t('ui.actionTitle.export') }} |
| 231 | </Button> | 261 | </Button> |
| 262 | +#if ($table.templateType != 2 && $table.deleteBatch) | ||
| 263 | + <Button | ||
| 264 | + :icon="h(Trash2)" | ||
| 265 | + type="primary" | ||
| 266 | + danger | ||
| 267 | + class="ml-2" | ||
| 268 | + :disabled="showDeleteBatchBtn" | ||
| 269 | + @click="onDeleteBatch" | ||
| 270 | + v-access:code="['${table.moduleName}:${simpleClassName_strikeCase}:delete']" | ||
| 271 | + > | ||
| 272 | + 批量删除 | ||
| 273 | + </Button> | ||
| 274 | +#end | ||
| 232 | </template> | 275 | </template> |
| 233 | </Grid> | 276 | </Grid> |
| 234 | 277 |