From 27f59f44345d044967e2048f09dbd704f90ce3db Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 25 四月 2025 17:51:20 +0800
Subject: [PATCH] #新增  1. 新增波次功能  2. 库区新增优化

---
 rsf-admin/src/page/components/MyExportButton.jsx |  153 +++++++++++++++++++++++++-------------------------
 1 files changed, 77 insertions(+), 76 deletions(-)

diff --git a/rsf-admin/src/page/components/MyExportButton.jsx b/rsf-admin/src/page/components/MyExportButton.jsx
index 143bdc1..a684e47 100644
--- a/rsf-admin/src/page/components/MyExportButton.jsx
+++ b/rsf-admin/src/page/components/MyExportButton.jsx
@@ -1,87 +1,88 @@
-import * as React from 'react';
-import { useCallback } from 'react';
-import DownloadIcon from '@mui/icons-material/GetApp';
+import * as React from "react";
+import { useCallback } from "react";
+import DownloadIcon from "@mui/icons-material/GetApp";
 import {
-    Button, useDataProvider, useNotify, useListContext
-} from 'react-admin';
+  Button,
+  useDataProvider,
+  useNotify,
+  useListContext,
+  useUnselectAll,
+} from "react-admin";
 
 const MyExportButton = (props) => {
-    const {
-        maxResults = 1000,
-        onClick,
-        label = 'ra.action.export',
-        icon = defaultIcon,
-        exporter: customExporter,
-        meta,
-        ...rest
-    } = props;
+  const {
+    maxResults = 1000,
+    onClick,
+    ids,
+    label = "ra.action.export",
+    icon = defaultIcon,
+    exporter: customExporter,
+    meta,
+    ...rest
+  } = props;
 
-    const {
-        filter,
-        filterValues,
-        resource,
-        sort,
-        total,
-    } = useListContext();
+  const { filter, selectedIds, filterValues, resource, sort, total } = useListContext();
+  const unSelect = useUnselectAll(resource);
+  const dataProvider = useDataProvider();
+  const notify = useNotify();
+  const handleClick = 
+  // useCallback(
+    (event) => {
+      dataProvider
+        .export(resource, {
+          sort,
+          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" });
+        });
+      if (typeof onClick === "function") {
+        onClick(event);
+      }
+    }
+    // [
+    //   dataProvider,
+    //   filter,
+    //   filterValues,
+    //   maxResults,
+    //   notify,
+    //   onClick,
+    //   resource,
+    //   sort,
+    //   meta,
+    // ],
+  // );
 
-    const dataProvider = useDataProvider();
-    const notify = useNotify();
-
-    const handleClick = useCallback(
-        event => {
-            dataProvider.export(resource, {
-                sort,
-                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();
-            }).catch(error => {
-                console.error(error);
-                notify('ra.notification.http_error', { type: 'error' });
-            });
-            if (typeof onClick === 'function') {
-                onClick(event);
-            }
-        },
-        [
-            dataProvider,
-            filter,
-            filterValues,
-            maxResults,
-            notify,
-            onClick,
-            resource,
-            sort,
-            meta,
-        ]
-    );
-
-    return (
-        <Button
-            onClick={handleClick}
-            label={label}
-            disabled={total === 0}
-            {...sanitizeRestProps(rest)}
-        >
-            {icon}
-        </Button>
-    );
+  return (
+    <Button
+      onClick={handleClick}
+      label={label}
+      disabled={total === 0}
+      {...sanitizeRestProps(rest)}
+    >
+      {icon}
+    </Button>
+  );
 };
 
 const defaultIcon = <DownloadIcon />;
 
-const sanitizeRestProps = ({
-    resource,
-    ...rest
-}) => rest;
+const sanitizeRestProps = ({ resource, ...rest }) => rest;
 
 export default MyExportButton;

--
Gitblit v1.9.1