feat: export

pull/2/head
xingyu4j 2022-11-15 14:51:39 +08:00
parent 9794d1cfd7
commit 4065387b54
4 changed files with 27 additions and 27 deletions

View File

@ -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 = <T = any>(config?: UseVxeGridConfig<T>) => {
})
})
}
// 导出
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
}
}

View File

@ -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<VxeGridInstance>() // Grid Ref
const { gridOptions, getSearchData } = useVxeGrid<LoginLogVO>({
const { gridOptions, exportList } = useVxeGrid<LoginLogVO>({
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')
}
</script>

View File

@ -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<VxeGridInstance>() // Grid Ref
const { gridOptions, getSearchData } = useVxeGrid<OperateLogApi.OperateLogVO>({
const { gridOptions, exportList } = useVxeGrid<OperateLogApi.OperateLogVO>({
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')
}
</script>

View File

@ -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<VxeGridInstance>() // Grid Ref
const { gridOptions, reloadList, delList, getSearchData } = useVxeGrid<PostApi.PostVO>({
const { gridOptions, reloadList, delList, exportList } = useVxeGrid<PostApi.PostVO>({
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')
}
//