From 51ba2a9f70863036c720156cd8b9e0c2be08139b Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 24 三月 2026 18:37:48 +0800
Subject: [PATCH] Revert "#打印+导出"
---
rsf-admin/src/page/components/MyExportButton.jsx | 87 ++++++++++++++++++-------------------------
1 files changed, 36 insertions(+), 51 deletions(-)
diff --git a/rsf-admin/src/page/components/MyExportButton.jsx b/rsf-admin/src/page/components/MyExportButton.jsx
index 1e132f1..a684e47 100644
--- a/rsf-admin/src/page/components/MyExportButton.jsx
+++ b/rsf-admin/src/page/components/MyExportButton.jsx
@@ -1,4 +1,5 @@
import * as React from "react";
+import { useCallback } from "react";
import DownloadIcon from "@mui/icons-material/GetApp";
import {
Button,
@@ -7,11 +8,6 @@
useListContext,
useUnselectAll,
} from "react-admin";
-import { useListReportActionParams } from "./listReport/useListReportOutput";
-import {
- downloadBlobFile,
- resolveReportMeta,
-} from "./listReport/listReportUtils";
const MyExportButton = (props) => {
const {
@@ -22,73 +18,62 @@
icon = defaultIcon,
exporter: customExporter,
meta,
- reportConfig,
- onExport,
- loading = false,
- filename,
...rest
} = props;
const { filter, selectedIds, filterValues, resource, sort, total } = useListContext();
- const { visibleColumns, params } = useListReportActionParams(reportConfig, { ids });
const unSelect = useUnselectAll(resource);
const dataProvider = useDataProvider();
const notify = useNotify();
- const handleClick = async (event) => {
- try {
- const hasReportConfig = Boolean(reportConfig?.resource && Array.isArray(reportConfig?.columns));
- if (hasReportConfig) {
- const actionParams = {
- ...params,
- columns: visibleColumns,
- };
- if (typeof onExport === "function") {
- await onExport(actionParams, event);
- } else {
- const resolvedResource = reportConfig.resource || params.resource;
- const response = await dataProvider.export(resolvedResource, {
- sort: actionParams.sort,
- ids: actionParams.ids,
- filter: actionParams.filter
- ? { ...actionParams.filterValues, ...actionParams.filter }
- : actionParams.filterValues,
- pagination: { page: 1, perPage: maxResults },
- meta,
- columns: visibleColumns,
- reportMeta: resolveReportMeta(reportConfig, actionParams),
- });
- downloadBlobFile(
- response,
- filename || reportConfig.exportFileName || `${resolvedResource}.xlsx`,
- );
- }
- } else {
- const response = await dataProvider.export(resource, {
+ const handleClick =
+ // useCallback(
+ (event) => {
+ dataProvider
+ .export(resource, {
sort,
- ids: ids ?? selectedIds,
+ ids: selectedIds,
filter: filter ? { ...filterValues, ...filter } : filterValues,
pagination: { page: 1, perPage: maxResults },
meta,
+ })
+ .then((res) => {
+ const url = window.URL.createObjectURL(
+ new Blob([res.data], { type: res.headers["content-type"] }),
+ );
+ const link = document.createElement("a");
+ link.href = url;
+ link.setAttribute("download", `${resource}.xlsx`);
+ document.body.appendChild(link);
+ link.click();
+ link.remove();
+ unSelect();
+ })
+ .catch((error) => {
+ console.error(error);
+ notify("ra.notification.http_error", { type: "error" });
});
- downloadBlobFile(response, filename || `${resource}.xlsx`);
- }
- unSelect();
if (typeof onClick === "function") {
onClick(event);
}
- } catch (error) {
- console.error(error);
- notify("ra.notification.http_error", { type: "error" });
}
- };
-
- const disabled = total === 0 || loading || (reportConfig?.columns && visibleColumns.length === 0);
+ // [
+ // dataProvider,
+ // filter,
+ // filterValues,
+ // maxResults,
+ // notify,
+ // onClick,
+ // resource,
+ // sort,
+ // meta,
+ // ],
+ // );
return (
<Button
onClick={handleClick}
label={label}
- disabled={disabled}
+ disabled={total === 0}
{...sanitizeRestProps(rest)}
>
{icon}
--
Gitblit v1.9.1