From 81e9d4fe8a49801e3c171daeca0beae45c5bddeb Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 23 九月 2024 09:18:48 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/task/TaskListAside.jsx |  143 +++++++++++++++++++++++++++++++++++++++++++++++
 zy-acs-flow/src/page/task/TaskList.jsx      |    2 
 2 files changed, 145 insertions(+), 0 deletions(-)

diff --git a/zy-acs-flow/src/page/task/TaskList.jsx b/zy-acs-flow/src/page/task/TaskList.jsx
index 70a5c42..8bb60ee 100644
--- a/zy-acs-flow/src/page/task/TaskList.jsx
+++ b/zy-acs-flow/src/page/task/TaskList.jsx
@@ -42,6 +42,7 @@
 import MyField from "../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE } from '@/config/setting';
 import * as Common from '@/utils/common';
+import TaskListAside from "./TaskListAside";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -150,6 +151,7 @@
                     </TopToolbar>
                 )}
                 perPage={25}
+                aside={<TaskListAside />}
             >
                 <StyledDatagrid
                     preferenceKey='task'
diff --git a/zy-acs-flow/src/page/task/TaskListAside.jsx b/zy-acs-flow/src/page/task/TaskListAside.jsx
new file mode 100644
index 0000000..9226abb
--- /dev/null
+++ b/zy-acs-flow/src/page/task/TaskListAside.jsx
@@ -0,0 +1,143 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import {
+    SavedQueriesList,
+    FilterLiveSearch,
+    FilterList,
+    FilterListItem,
+    useTheme,
+    useStore,
+} from 'react-admin';
+import { Box, Typography, Card, CardContent } from '@mui/material';
+import * as Common from '@/utils/common';
+import WcIcon from '@mui/icons-material/Wc';
+import BookmarkIcon from '@mui/icons-material/BookmarkBorder';
+import StyleIcon from '@mui/icons-material/Style';
+import AccessTimeIcon from '@mui/icons-material/AccessTime';
+import {
+    endOfYesterday,
+    startOfWeek,
+    subWeeks,
+    startOfMonth,
+    subMonths,
+} from 'date-fns';
+import request from '@/utils/request'
+
+const TaskListAside = (props) => {
+    const theme = useTheme();
+    const [roles, setRoles] = React.useState([]);
+
+    React.useEffect(() => {
+        request.post('/role/list', {}).then(res => {
+            if (res?.data?.code === 200) {
+                setRoles(res.data.data);
+            }
+        })
+    }, [])
+
+    const isSelected = (value, filters) => {
+        const roleIds = filters.roleIds || [];
+        return roleIds.includes(value.roleId);
+    };
+
+    const toggleFilter = (value, filters) => {
+        const roleIds = filters.roleIds || [];
+        return {
+            ...filters,
+            roleIds: roleIds.includes(value.roleId)
+                ? roleIds.filter(v => v !== value.roleId)
+                // : [...roleIds, value.roleId],
+                : [value.roleId],
+        };
+    };
+
+
+    return (
+        <Card
+            sx={{
+                display: { xs: 'none', md: 'block', },
+                order: -1,
+                mr: 2,
+                mt: 8,
+                alignSelf: 'flex-start',
+                border: theme[0] === 'light' && '1px solid #e0e0e3',
+                // width: 200
+            }}
+        >
+            <CardContent>
+                <SavedQueriesList icon={<BookmarkIcon />} />
+                <FilterLiveSearch source='condition' hiddenLabel />
+
+                <FilterList
+                    label="filters.lastCreated"
+                    icon={<AccessTimeIcon />}
+                >
+                    <FilterListItem
+                        label="filters.today"
+                        value={{
+                            timeStart: endOfYesterday().toISOString(),
+                            timeEnd: undefined,
+                        }}
+                    />
+                    <FilterListItem
+                        label="filters.thisWeek"
+                        value={{
+                            timeStart: startOfWeek(new Date()).toISOString(),
+                            timeEnd: undefined,
+                        }}
+                    />
+                    <FilterListItem
+                        label="filters.lastWeek"
+                        value={{
+                            timeStart: subWeeks(startOfWeek(new Date()), 1).toISOString(),
+                            timeEnd: startOfWeek(new Date()).toISOString(),
+                        }}
+                    />
+                    <FilterListItem
+                        label="filters.thisMonth"
+                        value={{
+                            timeStart: startOfMonth(new Date()).toISOString(),
+                            timeEnd: undefined,
+                        }}
+                    />
+                    <FilterListItem
+                        label="filters.lastMonth"
+                        value={{
+                            timeStart: subMonths(startOfMonth(new Date()), 1).toISOString(),
+                            timeEnd: startOfMonth(new Date()).toISOString(),
+                        }}
+                    />
+                    <FilterListItem
+                        label="filters.earlier"
+                        value={{
+                            timeStart: undefined,
+                            timeEnd: subMonths(startOfMonth(new Date()), 1).toISOString(),
+                        }}
+                    />
+                </FilterList>
+
+                <FilterList label="table.field.user.sex" icon={<WcIcon />}>
+                    <FilterListItem label="table.field.user.sexes.female" value={{ sex: '2' }} />
+                    <FilterListItem label="table.field.user.sexes.male" value={{ sex: '1' }} />
+                    <FilterListItem label="table.field.user.sexes.unknown" value={{ sex: '0' }} />
+                </FilterList>
+
+                <FilterList label="table.field.user.role" icon={<StyleIcon />}>
+                    {roles.map(role => {
+                        return (
+                            <FilterListItem
+                                key={role.id}
+                                label={`${role.name}`}
+                                value={{ roleId: role.id }}
+                                isSelected={isSelected}
+                                toggleFilter={toggleFilter}
+                            />
+                        )
+                    })}
+                </FilterList>
+
+            </CardContent>
+        </Card>
+    )
+}
+
+export default TaskListAside;
\ No newline at end of file

--
Gitblit v1.9.1