From b699ead5892f3c89d869e836d348ae9eba558d09 Mon Sep 17 00:00:00 2001 From: likunming Date: Sat, 29 Jun 2024 15:09:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E4=BC=98=E5=8C=96=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- io.sc.platform.core.frontend/package.json | 2 +- .../src/platform/components/grid/WGrid.vue | 40 ++++++++++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json index 830c41bc..7c6f106c 100644 --- a/io.sc.platform.core.frontend/package.json +++ b/io.sc.platform.core.frontend/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.1.245", + "version": "8.1.246", "description": "前端核心包,用于快速构建前端的脚手架", "//main": "库的主文件", "main": "dist/platform-core.js", diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue index 16596b1b..c8129042 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue @@ -633,6 +633,17 @@ const resetDefaultValues = () => { console.error(error); }); }; +const showLoading = (msg: string = '正在处理,请稍等...') => { + $q.loading.show({ + message: msg, + boxClass: 'bg-grey-2 text-grey-9', + spinnerColor: 'primary', + }); +}; +const hideLoading = () => { + $q.loading.hide(); +}; + const buttonObj = reactive({ separator: 'separator', query: { @@ -791,10 +802,19 @@ const buttonObj = reactive({ icon: 'file_download', labelI18nKey: 'action.export', label: t('action.export'), - click: () => { + click: async () => { + showLoading(); + let exportData = table.rows; + // 判断是否配置了 url, 配置了以不分页形式请求后端获取全部数据一把导出。 + if (!Tools.isEmpty(props.fetchDataUrl) || !Tools.isEmpty(props.dataUrl)) { + const fetchResult = await getExportData(); + if (fetchResult && fetchResult.length > 0) { + exportData = fetchResult; + } + } const content = [tableColumns.value.map((col) => wrapCsvValue(col.label))] .concat( - table.rows.map((row) => + exportData.map((row) => tableColumns.value .map((col) => wrapCsvValue(typeof col.field === 'function' ? col.field(row) : row[col.field === void 0 ? col.name : col.field], col.format, row)) .join(','), @@ -811,6 +831,7 @@ const buttonObj = reactive({ if (status !== true) { NotifyManager.error(t('action.export.failed')); } + hideLoading(); }, }, addTop: { @@ -890,6 +911,21 @@ const expandFun = (arr, treeExpand) => { } }); }; +const getExportData = async () => { + let resultData = []; + const reqParams: any = { pageable: false }; + let urlSearchParams = buildQueryCriterias(reqParams); + const resp = await axios.get(url.fetchDataUrl || url.dataUrl, { params: urlSearchParams }); + if (resp && resp.data) { + const responseData = resp.data; + if (Array.isArray(responseData)) { + resultData = responseData; + } else if (typeof responseData === 'object' && responseData.content) { + resultData = responseData.content; + } + } + return resultData; +}; const screenCols = { xs: 1, sm: 2, md: 3, lg: 4, xl: 6 }; const queryFormColsNumComputed = computed(() => {