diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/api/api.ts.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/api/api.ts.vm index d3342f1fc8..cc4c3ed69b 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/api/api.ts.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/api/api.ts.vm @@ -5,14 +5,30 @@ import { requestClient } from '#/api/request'; #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") export namespace ${simpleClassName}Api { -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) - #set ($index = $foreach.count - 1) - #set ($subSimpleClassName = $subSimpleClassNames.get($index)) - #set ($subColumns = $subColumnsList.get($index))##当前字段数组 - /** ${subTable.classComment}信息 */ - export interface ${subSimpleClassName} { - #foreach ($column in $subColumns) + ## 特殊:主子表专属逻辑 + #foreach ($subTable in $subTables) + #set ($index = $foreach.count - 1) + #set ($subSimpleClassName = $subSimpleClassNames.get($index)) + #set ($subColumns = $subColumnsList.get($index))##当前字段数组 + /** ${subTable.classComment}信息 */ + export interface ${subSimpleClassName} { + #foreach ($column in $subColumns) + #if ($column.createOperation || $column.updateOperation) + #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") + ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment} + #elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime") + ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: string | Dayjs; // ${column.columnComment} + #else + ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: ${column.javaType.toLowerCase()}; // ${column.columnComment} + #end + #end + #end + } + + #end + /** ${table.classComment}信息 */ + export interface ${simpleClassName} { + #foreach ($column in $columns) #if ($column.createOperation || $column.updateOperation) #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment} @@ -23,37 +39,21 @@ export namespace ${simpleClassName}Api { #end #end #end - } - -#end - /** ${table.classComment}信息 */ - export interface ${simpleClassName} { -#foreach ($column in $columns) -#if ($column.createOperation || $column.updateOperation) -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: number; // ${column.columnComment} -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime") - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: string | Dayjs; // ${column.columnComment} -#else - ${column.javaField}#if($column.updateOperation && !$column.primaryKey && !$column.nullable)?#end: ${column.javaType.toLowerCase()}; // ${column.columnComment} -#end -#end -#end -#if ( $table.templateType == 2 ) - children?: ${simpleClassName}[]; -#end -## 特殊:主子表专属逻辑 -#if ( $table.templateType == 10 || $table.templateType == 12 ) - #foreach ($subTable in $subTables) - #set ($index = $foreach.count - 1) - #set ($subSimpleClassName = $subSimpleClassNames.get($index)) - #if ( $subTable.subJoinMany ) - ${subSimpleClassName.toLowerCase()}s?: ${subSimpleClassName}[] - #else - ${subSimpleClassName.toLowerCase()}?: ${subSimpleClassName} + #if ( $table.templateType == 2 ) + children?: ${simpleClassName}[]; + #end + ## 特殊:主子表专属逻辑 + #if ( $table.templateType == 10 || $table.templateType == 12 ) + #foreach ($subTable in $subTables) + #set ($index = $foreach.count - 1) + #set ($subSimpleClassName = $subSimpleClassNames.get($index)) + #if ( $subTable.subJoinMany ) + ${subSimpleClassName.toLowerCase()}s?: ${subSimpleClassName}[] + #else + ${subSimpleClassName.toLowerCase()}?: ${subSimpleClassName} + #end + #end #end - #end -#end } } @@ -89,6 +89,13 @@ export function delete${simpleClassName}(id: number) { return requestClient.delete(`${baseURL}/delete?id=${id}`); } +#if ( $table.templateType != 2 && $deleteBatchEnable) +/** 批量删除${table.classComment} */ +export function delete${simpleClassName}ListByIds(ids: number[]) { + return requestClient.delete(`${baseURL}/delete-list?ids=${ids.join(',')}`) +} +#end + /** 导出${table.classComment} */ export function export${simpleClassName}(params: any) { return requestClient.download('${baseURL}/export-excel', params); @@ -96,58 +103,65 @@ export function export${simpleClassName}(params: any) { ## 特殊:主子表专属逻辑 #foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) -#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) -#set ($subClassNameVar = $subClassNameVars.get($index)) + #set ($index = $foreach.count - 1) + #set ($subSimpleClassName = $subSimpleClassNames.get($index)) + #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 + #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 + #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 + #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) + #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) + #set ($subClassNameVar = $subClassNameVars.get($index)) // ==================== 子表($subTable.classComment) ==================== -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) -/** 获得${subTable.classComment}分页 */ -export function get${subSimpleClassName}Page(params: PageParam) { - return requestClient.get>(`${baseURL}/${subSimpleClassName_strikeCase}/page`, { params }); -} -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) -/** 获得${subTable.classComment}列表 */ -export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}: number) { - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}[]>(`${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); -} + ## 情况一:MASTER_ERP 时,需要分查询页子表 + #if ( $table.templateType == 11 ) + /** 获得${subTable.classComment}分页 */ + export function get${subSimpleClassName}Page(params: PageParam) { + return requestClient.get>(`${baseURL}/${subSimpleClassName_strikeCase}/page`, { params }); + } + ## 情况二:非 MASTER_ERP 时,需要列表查询子表 #else -/** 获得${subTable.classComment} */ -export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}: number) { - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); -} + #if ( $subTable.subJoinMany ) + /** 获得${subTable.classComment}列表 */ + export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}: number) { + return requestClient.get<${simpleClassName}Api.${subSimpleClassName}[]>(`${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); + } + #else + /** 获得${subTable.classComment} */ + export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}: number) { + return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=${${subJoinColumn.javaField}}`); + } + #end + #end + ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 + #if ( $table.templateType == 11 ) + /** 新增${subTable.classComment} */ + export function create${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { + return requestClient.post(`${baseURL}/${subSimpleClassName_strikeCase}/create`, data); + } + + /** 修改${subTable.classComment} */ + export function update${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { + return requestClient.put(`${baseURL}/${subSimpleClassName_strikeCase}/update`, data); + } + + /** 删除${subTable.classComment} */ + export function delete${subSimpleClassName}(id: number) { + return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete?id=${id}`); + } + + #if ($deleteBatchEnable) + /** 批量删除${subTable.classComment} */ + export function delete${subSimpleClassName}ListByIds(ids: number[]) { + return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete-list?ids=${ids.join(',')}`) + } + #end + + /** 获得${subTable.classComment} */ + export function get${subSimpleClassName}(id: number) { + return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`); + } #end #end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) -/** 新增${subTable.classComment} */ -export function create${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { - return requestClient.post(`${baseURL}/${subSimpleClassName_strikeCase}/create`, data); -} - -/** 修改${subTable.classComment} */ -export function update${subSimpleClassName}(data: ${simpleClassName}Api.${subSimpleClassName}) { - return requestClient.put(`${baseURL}/${subSimpleClassName_strikeCase}/update`, data); -} - -/** 删除${subTable.classComment} */ -export function delete${subSimpleClassName}(id: number) { - return requestClient.delete(`${baseURL}/${subSimpleClassName_strikeCase}/delete?id=${id}`); -} - -/** 获得${subTable.classComment} */ -export function get${subSimpleClassName}(id: number) { - return requestClient.get<${simpleClassName}Api.${subSimpleClassName}>(`${baseURL}/${subSimpleClassName_strikeCase}/get?id=${id}`); -} -#end -#end diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/index.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/index.vue.vm index 1888a7c37f..c70bca31e8 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/index.vue.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/index.vue.vm @@ -8,7 +8,7 @@ import { Button, message,Tabs,Pagination,Form,RangePicker,DatePicker,Select,Inpu import { DictTag } from '#/components/dict-tag'; import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; import ${simpleClassName}Form from './modules/form.vue'; -import { Download, Plus, RefreshCw, Search } from '@vben/icons'; +import { Download, Plus, RefreshCw, Search, Trash2 } from '@vben/icons'; import { ContentWrap } from '#/components/content-wrap'; import { VxeColumn, VxeTable } from '#/adapter/vxe-table'; import { TableToolbar } from '#/components/table-toolbar'; @@ -29,7 +29,8 @@ import { $t } from '#/locales'; import { handleTree,isEmpty } from '@vben/utils' import { get${simpleClassName}List, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; #else## 标准表接口 -import { get${simpleClassName}Page, delete${simpleClassName}, export${simpleClassName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; +import { isEmpty } from '@vben/utils'; +import { get${simpleClassName}Page, delete${simpleClassName},#if ($deleteBatchEnable) delete${simpleClassName}ListByIds,#end export${simpleClassName} } from '#/api/${table.moduleName}/${table.businessName}'; #end import { downloadFileFromBlobPart } from '@vben/utils'; @@ -152,11 +153,38 @@ async function onDelete(row: ${simpleClassName}Api.${simpleClassName}) { key: 'action_process_msg', }); await getList(); - } catch { + } finally { hideLoading(); } } +#if ($table.templateType != 2 && $deleteBatchEnable) +/** 批量删除${table.classComment} */ +async function onDeleteBatch() { + const hideLoading = message.loading({ + content: $t('ui.actionMessage.deleting'), + duration: 0, + key: 'action_process_msg', + }); + try { + await delete${simpleClassName}ListByIds(deleteIds.value); + message.success( $t('ui.actionMessage.deleteSuccess') ); + await getList(); + } finally { + hideLoading(); + } +} + +const deleteIds = ref([]) // 待删除${table.classComment} ID +function setDeleteIds({ + records, +}: { + records: ${simpleClassName}Api.${simpleClassName}[]; +}) { + deleteIds.value = records.map((item) => item.id); +} +#end + /** 导出表格 */ async function onExport() { try { @@ -302,6 +330,19 @@ onMounted(() => { > {{ $t('ui.actionTitle.export') }} + #if ($table.templateType != 2 && $deleteBatchEnable) + + #end { #end show-overflow :loading="loading" +#if ($table.templateType != 2 && $deleteBatchEnable) + @checkboxAll="setDeleteIds" + @checkboxChange="setDeleteIds" +#end > +#if ($table.templateType != 2 && $deleteBatchEnable) + +#end ## 特殊:主子表专属逻辑 #if ( $table.templateType == 12 && $subTables && $subTables.size() > 0 ) @@ -421,7 +469,6 @@ onMounted(() => { #end - #if ($table.templateType == 11) ## erp情况 diff --git a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/list_sub_erp.vue.vm b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/list_sub_erp.vue.vm index 9ee3364b5b..5e69257458 100644 --- a/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/list_sub_erp.vue.vm +++ b/yudao-module-infra/src/main/resources/codegen/vue3_vben5_antd/general/views/modules/list_sub_erp.vue.vm @@ -10,7 +10,7 @@ import type { VxeTableInstance } from '#/adapter/vxe-table'; import { DictTag } from '#/components/dict-tag'; - import { DICT_TYPE, getDictOptions } from '#/utils'; + import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; import { VxeColumn, VxeTable } from '#/adapter/vxe-table'; import { reactive,ref, h, nextTick,watch,onMounted } from 'vue'; import { cloneDeep, formatDateTime } from '@vben/utils'; @@ -22,15 +22,15 @@ import { Tinymce as RichTextarea } from '#/components/tinymce'; import { ImageUpload, FileUpload } from "#/components/upload"; import { message,Button, Tabs,Pagination, Form, Input, Textarea, Select, RadioGroup, Radio, CheckboxGroup, Checkbox,RangePicker, DatePicker, TreeSelect } from 'ant-design-vue'; - import { DICT_TYPE, getDictOptions, getRangePickerDefaultProps } from '#/utils'; - import { Plus } from '@vben/icons'; + import { Plus, Trash2 } from '@vben/icons'; import { $t } from '#/locales'; import { TableToolbar } from '#/components/table-toolbar'; import { useTableToolbar } from '#/hooks'; #end #if ($table.templateType == 11) ## erp - import { delete${subSimpleClassName}, get${subSimpleClassName}Page } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; + import { delete${subSimpleClassName},#if ($deleteBatchEnable) delete${subSimpleClassName}ListByIds,#end get${subSimpleClassName}Page } from '#/api/${table.moduleName}/${table.businessName}'; + import { isEmpty } from '@vben/utils'; #else #if ($subTable.subJoinMany) ## 一对多 import { get${subSimpleClassName}ListBy${SubJoinColumnName} } from '#/api/${table.moduleName}/${simpleClassName_strikeCase}'; @@ -76,11 +76,38 @@ async function onDelete(row: ${simpleClassName}Api.${subSimpleClassName}) { content: $t('ui.actionMessage.deleteSuccess', [row.id]), key: 'action_process_msg', }); - getList(); - } catch { + await getList(); + } finally { hideLoading(); } } + +#if ($deleteBatchEnable) +/** 批量删除${subTable.classComment} */ +async function onDeleteBatch() { + const hideLoading = message.loading({ + content: $t('ui.actionMessage.deleting'), + duration: 0, + key: 'action_process_msg', + }); + try { + await delete${subSimpleClassName}ListByIds(deleteIds.value); + message.success( $t('ui.actionMessage.deleteSuccess') ); + await getList(); + } finally { + hideLoading(); + } +} + +const deleteIds = ref([]) // 待删除${subTable.classComment} ID +function setDeleteIds({ + records, +}: { + records: ${simpleClassName}Api.${subSimpleClassName}[]; +}) { + deleteIds.value = records.map((item) => item.id); +} +#end #end const loading = ref(true) // 列表的加载中 @@ -277,6 +304,19 @@ onMounted(() => { > {{ $t('ui.actionTitle.create', ['${table.classComment}']) }} + #if ($deleteBatchEnable) + + #end { :data="list" show-overflow :loading="loading" + #if ($deleteBatchEnable) + @checkboxAll="setDeleteIds" + @checkboxChange="setDeleteIds" + #end > + #if ($deleteBatchEnable) + + #end #foreach($column in $subColumns) #if ($column.listOperationResult) #set ($dictType=$column.dictType)