#
luxiaotao1123
2024-09-23 81e9d4fe8a49801e3c171daeca0beae45c5bddeb
#
1个文件已修改
1个文件已添加
145 ■■■■■ 已修改文件
zy-acs-flow/src/page/task/TaskList.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/page/task/TaskListAside.jsx 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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'
zy-acs-flow/src/page/task/TaskListAside.jsx
New file
@@ -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;