From 4065387b543ffbaf1b1dbb66e2bec06b06fb4ddb Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Tue, 15 Nov 2022 14:51:39 +0800 Subject: [PATCH] feat: export --- yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts | 16 +++++++++++++++- .../src/views/system/loginlog/index.vue | 14 ++++---------- .../src/views/system/operatelog/index.vue | 14 ++++---------- .../src/views/system/post/index.vue | 10 ++++------ 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts b/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts index 50b822d3c..56597ce39 100644 --- a/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts +++ b/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts @@ -4,6 +4,7 @@ import { useAppStore } from '@/store/modules/app' import { VxeAllSchemas } from './useVxeCrudSchemas' import { useI18n } from '@/hooks/web/useI18n' import { useMessage } from '@/hooks/web/useMessage' +import download from '@/utils/download' const { t } = useI18n() const message = useMessage() // 消息弹窗 @@ -144,11 +145,24 @@ export const useVxeGrid = (config?: UseVxeGridConfig) => { }) }) } + // 导出 + const exportList = async (ref, fileName?: string) => { + await nextTick() + const queryParams = Object.assign( + {}, + JSON.parse(JSON.stringify(ref.value?.getProxyInfo()?.form)) + ) + message.exportConfirm().then(async () => { + const res = await (config?.exportListApi && config?.exportListApi(queryParams)) + download.excel(res as unknown as Blob, fileName ? fileName : 'excel.xls') + }) + } return { gridOptions, reloadList, getSearchData, - delList + delList, + exportList } } diff --git a/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue b/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue index abe983f8d..f0200ba3a 100644 --- a/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue +++ b/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue @@ -30,21 +30,19 @@ // 全局相关的 import import { ref } from 'vue' import { useI18n } from '@/hooks/web/useI18n' -import { useMessage } from '@/hooks/web/useMessage' import { useVxeGrid } from '@/hooks/web/useVxeGrid' import { VxeGridInstance } from 'vxe-table' // 业务相关的 import import { allSchemas } from './loginLog.data' import { getLoginLogPageApi, exportLoginLogApi, LoginLogVO } from '@/api/system/loginLog' -import download from '@/utils/download' const { t } = useI18n() // 国际化 -const message = useMessage() // 消息弹窗 // 列表相关的变量 const xGrid = ref() // 列表 Grid Ref -const { gridOptions, getSearchData } = useVxeGrid({ +const { gridOptions, exportList } = useVxeGrid({ allSchemas: allSchemas, - getListApi: getLoginLogPageApi + getListApi: getLoginLogPageApi, + exportListApi: exportLoginLogApi }) // 详情操作 @@ -60,10 +58,6 @@ const handleDetail = async (row: LoginLogVO) => { // 导出操作 const handleExport = async () => { - message.exportConfirm().then(async () => { - const queryParams = await getSearchData(xGrid) - const res = await exportLoginLogApi(queryParams) - download.excel(res, '登录列表.xls') - }) + exportList(xGrid, '登录列表.xls') } diff --git a/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue b/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue index 3c85c2f87..e51da43ea 100644 --- a/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue +++ b/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue @@ -45,21 +45,19 @@ // 全局相关的 import import { ref } from 'vue' import { useI18n } from '@/hooks/web/useI18n' -import { useMessage } from '@/hooks/web/useMessage' import { useVxeGrid } from '@/hooks/web/useVxeGrid' import { VxeGridInstance } from 'vxe-table' // 业务相关的 import import * as OperateLogApi from '@/api/system/operatelog' import { allSchemas } from './operatelog.data' -import download from '@/utils/download' const { t } = useI18n() // 国际化 -const message = useMessage() // 消息弹窗 // 列表相关的变量 const xGrid = ref() // 列表 Grid Ref -const { gridOptions, getSearchData } = useVxeGrid({ +const { gridOptions, exportList } = useVxeGrid({ allSchemas: allSchemas, - getListApi: OperateLogApi.getOperateLogPageApi + getListApi: OperateLogApi.getOperateLogPageApi, + exportListApi: OperateLogApi.exportOperateLogApi }) // 弹窗相关的变量 @@ -76,10 +74,6 @@ const handleDetail = (row: OperateLogApi.OperateLogVO) => { // 导出操作 const handleExport = async () => { - message.exportConfirm().then(async () => { - const queryParams = await getSearchData(xGrid) - const res = await OperateLogApi.exportOperateLogApi(queryParams) - download.excel(res, '岗位列表.xls') - }) + exportList(xGrid, '岗位列表.xls') } diff --git a/yudao-ui-admin-vue3/src/views/system/post/index.vue b/yudao-ui-admin-vue3/src/views/system/post/index.vue index bfcb3f8a4..c8723793c 100644 --- a/yudao-ui-admin-vue3/src/views/system/post/index.vue +++ b/yudao-ui-admin-vue3/src/views/system/post/index.vue @@ -84,16 +84,16 @@ import { FormExpose } from '@/components/Form' // 业务相关的 import import * as PostApi from '@/api/system/post' import { rules, allSchemas } from './post.data' -import download from '@/utils/download' const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 // 列表相关的变量 const xGrid = ref() // 列表 Grid Ref -const { gridOptions, reloadList, delList, getSearchData } = useVxeGrid({ +const { gridOptions, reloadList, delList, exportList } = useVxeGrid({ allSchemas: allSchemas, getListApi: PostApi.getPostPageApi, - delListApi: PostApi.deletePostApi + delListApi: PostApi.deletePostApi, + exportListApi: PostApi.exportPostApi }) // 弹窗相关的变量 const dialogVisible = ref(false) // 是否显示弹出层 @@ -117,9 +117,7 @@ const handleCreate = () => { // 导出操作 const handleExport = async () => { - const queryParams = await getSearchData(xGrid) - const res = await PostApi.exportPostApi(queryParams) - download.excel(res, '岗位列表.xls') + await exportList(xGrid, '岗位列表.xls') } // 修改操作