From 99411967019bbf0d7b0b971eae0db2c2c58025f0 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期六, 30 八月 2025 16:27:47 +0800
Subject: [PATCH] 修改任务状态
---
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