From 71b4dd3185bbf141fda4b155b0bb759f669b9d69 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 23 九月 2024 14:14:59 +0800 Subject: [PATCH] # --- zy-acs-flow/src/page/bus/BusList.jsx | 8 +- zy-acs-flow/src/page/bus/BusListAside.jsx | 143 +++++++++++++++++++++++++++++++++++++++++++++++ zy-acs-flow/src/page/bus/BusPanel.jsx | 2 3 files changed, 149 insertions(+), 4 deletions(-) diff --git a/zy-acs-flow/src/page/bus/BusList.jsx b/zy-acs-flow/src/page/bus/BusList.jsx index b84793c..66f853e 100644 --- a/zy-acs-flow/src/page/bus/BusList.jsx +++ b/zy-acs-flow/src/page/bus/BusList.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 BusListAside from "./BusListAside"; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -51,10 +52,10 @@ cursor: 'auto' }, '& .column-busNo': { - minWidth: '18em', + minWidth: '16em', }, '& .column-tasksNum': { - maxWidth: '6em', + maxWidth: '8em', }, '& .column-memo': { maxWidth: '12em', @@ -68,7 +69,7 @@ })); const filters = [ - <SearchInput source="condition" alwaysOn />, + // <SearchInput source="condition" alwaysOn />, <DateInput label='common.time.after' source="timeStart" alwaysOn />, <DateInput label='common.time.before' source="timeEnd" alwaysOn />, @@ -122,6 +123,7 @@ </TopToolbar> )} perPage={25} + aside={<BusListAside />} > <StyledDatagrid preferenceKey='bus' diff --git a/zy-acs-flow/src/page/bus/BusListAside.jsx b/zy-acs-flow/src/page/bus/BusListAside.jsx new file mode 100644 index 0000000..cb3afa6 --- /dev/null +++ b/zy-acs-flow/src/page/bus/BusListAside.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 BusListAside = (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 BusListAside; \ No newline at end of file diff --git a/zy-acs-flow/src/page/bus/BusPanel.jsx b/zy-acs-flow/src/page/bus/BusPanel.jsx index dbffa3f..937db12 100644 --- a/zy-acs-flow/src/page/bus/BusPanel.jsx +++ b/zy-acs-flow/src/page/bus/BusPanel.jsx @@ -61,7 +61,7 @@ </Typography> </Grid> </Grid> - <Box height={20}> </Box> + <Box height={10}> </Box> <Box> <Table size="small"> <TableHead> -- Gitblit v1.9.1