diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm index d3342f1fc8..6b071bed07 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/api/api.ts.vm +++ b/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) { return requestClient.delete(`${baseURL}/delete?id=${id}`); } +#if ( $table.templateType != 2 && $table.deleteBatch) +// 批量删除${table.classComment} +export function delete${simpleClassName}ByIds(ids: number[]) { + return requestClient.delete(`${baseURL}/delete-batch?ids=${ids.join(',')}`) +} +#end + /** 导出${table.classComment} */ export function export${simpleClassName}(params: any) { return requestClient.download('${baseURL}/export-excel', params); diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm index e45fbcd28e..7daa12423f 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/data.ts.vm @@ -193,6 +193,9 @@ export function useGridColumns( onActionClick?: OnActionClickFn<${simpleClassName}Api.${simpleClassName}>, ): VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>['columns'] { return [ +#if ($table.templateType != 2 && $table.deleteBatch) + { type: 'checkbox', width: 40 }, +#end #if ($table.templateType == 12) ## 内嵌情况 { type: 'expand', width: 80, slots: { content: 'expand_content' } }, #end diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm index 1d8700eaa2..e1d79bc972 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/schema/views/index.vue.vm +++ b/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 import { Page, useVbenModal } from '@vben/common-ui'; import { Button, message,Tabs } from 'ant-design-vue'; -import { Download, Plus } from '@vben/icons'; +import { Download, Plus, Trash2 } from '@vben/icons'; import Form from './modules/form.vue'; ## 特殊:主子表专属逻辑 @@ -16,15 +16,15 @@ import Form from './modules/form.vue'; #end #end -import { ref, h } from 'vue'; +import { ref, h, computed } from 'vue'; import { $t } from '#/locales'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; #if (${table.templateType} == 2)## 树表接口 import { get${simpleClassName}List, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; #else## 标准表接口 -import { get${simpleClassName}Page, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; +import { get${simpleClassName}Page, delete${simpleClassName},delete${simpleClassName}ByIds, export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; #end -import { downloadFileFromBlobPart } from '@vben/utils'; +import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; import { useGridColumns, useGridFormSchema } from './data'; @@ -87,11 +87,31 @@ async function onDelete(row: ${simpleClassName}Api.${simpleClassName}) { await delete${simpleClassName}(row.id as number); message.success( $t('ui.actionMessage.deleteSuccess', [row.id]) ); onRefresh(); - } catch { + } finally { hideLoading(); } } +#if ($table.templateType != 2 && $table.deleteBatch) +const deleteIds = ref([]) // 待删除${table.classComment} ID +const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); +/** 批量删除${table.classComment} */ +async function onDeleteBatch() { + const hideLoading = message.loading({ + content: $t('ui.actionMessage.deleting'), + duration: 0, + key: 'action_process_msg', + }); + try { + await delete${simpleClassName}ByIds(deleteIds.value); + message.success( $t('ui.actionMessage.deleteSuccess') ); + onRefresh(); + } finally { + hideLoading(); + } +} +#end + /** 导出表格 */ async function onExport() { const data = await export${simpleClassName}(await gridApi.formApi.getValues()); @@ -177,11 +197,21 @@ const [Grid, gridApi] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions<${simpleClassName}Api.${simpleClassName}>, -#if (${table.templateType} == 11) +#if (${table.templateType} == 11 || $table.deleteBatch) gridEvents:{ + #if(${table.templateType} == 11) cellClick: ({ row }: { row: ${simpleClassName}Api.${simpleClassName}}) => { select${simpleClassName}.value = row; }, + #end + #if($table.deleteBatch) + checkboxAll: ({records,}: { records: ${simpleClassName}Api.${simpleClassName}[];}) => { + deleteIds.value = records.map((item) => item.id); + }, + checkboxChange: ({records,}: { records: ${simpleClassName}Api.${simpleClassName}[];}) => { + deleteIds.value = records.map((item) => item.id); + }, + #end } #end }); @@ -229,6 +259,19 @@ const [Grid, gridApi] = useVbenVxeGrid({ > {{ $t('ui.actionTitle.export') }} +#if ($table.templateType != 2 && $table.deleteBatch) + +#end