diff --git a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue index a4875abc0..aed80c887 100644 --- a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue +++ b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue @@ -276,7 +276,7 @@ const reload = () => { } // 删除 -const deleteData = async (ids: string | number) => { +const deleteData = async (id: string | number) => { const g = unref(xGrid) if (!g) { return @@ -288,7 +288,7 @@ const deleteData = async (ids: string | number) => { } return new Promise(async () => { message.delConfirm().then(async () => { - await (options?.deleteApi && options?.deleteApi(ids)) + await (options?.deleteApi && options?.deleteApi(id)) message.success(t('common.delSuccess')) // 刷新列表 reload() @@ -296,6 +296,49 @@ const deleteData = async (ids: string | number) => { }) } +// 批量删除 +const deleteList = async () => { + const g = unref(xGrid) + if (!g) { + return + } + const rows = g.getCheckboxRecords() || g.getRadioRecord() + let ids: any[] = [] + if (rows.length == 0) { + message.error('请选择数据') + return + } else { + rows.forEach((row) => { + ids.push(row.id) + }) + } + const options = innerProps.value || props.options + if (options.deleteListApi) { + return new Promise(async () => { + message.delConfirm().then(async () => { + await (options?.deleteListApi && options?.deleteListApi(ids)) + message.success(t('common.delSuccess')) + // 刷新列表 + reload() + }) + }) + } else if (options.deleteApi) { + return new Promise(async () => { + message.delConfirm().then(async () => { + ids.forEach(async (id) => { + await (options?.deleteApi && options?.deleteApi(id)) + }) + message.success(t('common.delSuccess')) + // 刷新列表 + reload() + }) + }) + } else { + console.error('未传入delListApi') + return + } +} + // 导出 const exportList = async (fileName?: string) => { const g = unref(xGrid) @@ -360,6 +403,7 @@ emit('register', { getSearchData, setProps, deleteData, + deleteList, exportList, getCurrentColumn, getRadioRecord, diff --git a/yudao-ui-admin-vue3/src/components/XTable/src/type.ts b/yudao-ui-admin-vue3/src/components/XTable/src/type.ts index 5214d62e4..5e5251e48 100644 --- a/yudao-ui-admin-vue3/src/components/XTable/src/type.ts +++ b/yudao-ui-admin-vue3/src/components/XTable/src/type.ts @@ -10,6 +10,7 @@ export type XTableProps = VxeGridProps & { getListApi?: Function // 获取列表接口 getAllListApi?: Function // 获取全部数据接口 用于 vxe 导出 deleteApi?: Function // 删除接口 + deleteListApi?: Function // 批量删除接口 exportListApi?: Function // 导出接口 exportName?: string // 导出文件夹名称 params?: any // 其他查询参数 diff --git a/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts b/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts index 0dbda77e6..dee259753 100644 --- a/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts +++ b/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts @@ -4,7 +4,8 @@ import { XTableProps } from '@/components/XTable/src/type' export interface tableMethod { reload: () => void // 刷新表格 setProps: (props: XTableProps) => void - deleteData: (ids: string | number) => void // 删除数据 + deleteData: (id: string | number) => void // 删除数据 + deleteList: () => void // 批量删除 exportList: (fileName?: string) => void // 导出列表 getCurrentColumn: () => void // 获取当前列 getRadioRecord: () => void // 获取当前选中列,redio @@ -28,7 +29,8 @@ export const useXTable = (props: XTableProps): [Function, tableMethod] => { const methods: tableMethod = { reload: () => getInstance().reload(), setProps: (props) => getInstance().setProps(props), - deleteData: (ids: string | number) => getInstance().deleteData(ids), + deleteData: (id: string | number) => getInstance().deleteData(id), + deleteList: () => getInstance().deleteList(), exportList: (fileName?: string) => getInstance().exportList(fileName), getCurrentColumn: () => getInstance().getCheckboxRecords(), getRadioRecord: () => getInstance().getRadioRecord(),