New file |
| | |
| | | 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; |