From a65ca60179efb2bd6e1c8907a42285463512d3e2 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 19 三月 2025 08:05:51 +0800 Subject: [PATCH] 修改 # 前端添加字典选择 --- rsf-admin/src/page/basicInfo/loc/LocList.jsx | 101 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 98 insertions(+), 3 deletions(-) diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx index 5ef83f5..b9b2578 100644 --- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx @@ -31,6 +31,8 @@ ReferenceArrayInput, AutocompleteInput, DeleteButton, + useRefresh, + Button } from 'react-admin'; import { Box, Typography, Card, Stack } from '@mui/material'; import { styled } from '@mui/material/styles'; @@ -39,10 +41,15 @@ import EmptyData from "../../components/EmptyData"; import MyCreateButton from "../../components/MyCreateButton"; import MyExportButton from '../../components/MyExportButton'; +import InitButton from './InitButton'; +import BatchModal from './BatchModal'; import PageDrawer from "../../components/PageDrawer"; import MyField from "../../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; +import DashboardIcon from '@mui/icons-material/Dashboard'; +import EditIcon from '@mui/icons-material/Edit'; +import request from '@/utils/request'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -98,6 +105,7 @@ const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); + return ( <Box display="flex"> <List @@ -116,6 +124,7 @@ actions={( <TopToolbar> <FilterButton /> + <InitButton /> <MyCreateButton onClick={() => { setCreateDialog(true) }} /> <SelectColumnsButton preferenceKey='loc' /> <MyExportButton /> @@ -125,10 +134,14 @@ > <StyledDatagrid preferenceKey='loc' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} - rowClick={(id, resource, record) => false} + bulkActionButtons={ + <> + <BatchButton /> + <BulkDeleteButton /> + </> + } + rowClick={() => false} expand={() => <LocPanel />} - expandSingle={true} omit={['id', 'createTime', 'createBy', 'memo']} > <NumberField source="id" /> @@ -165,6 +178,7 @@ <WrapperField cellClassName="opt" label="common.field.opt"> <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */} + <EnableButton /> </WrapperField> </StyledDatagrid> </List> @@ -183,3 +197,84 @@ } export default LocList; + +const EnableButton = () => { + const record = useRecordContext(); + const notify = useNotify(); + const refresh = useRefresh(); + const enable = async () => { + const res = await request.post('/loc/update', { + ...record, + status: +!record.status + }); + if (res?.data?.code === 200) { + refresh() + } else { + notify(res.data.msg); + } + } + return ( + record.status === 1 ? + (<Button onClick={enable} label={"toolbar.unenable"}> + <DashboardIcon /> + </Button>) : (<Button onClick={enable} label={"toolbar.enable"}> + <DashboardIcon /> + </Button>) + + ) +} + +const BatchButton = () => { + const record = useRecordContext(); + const notify = useNotify(); + const refresh = useRefresh(); + const { selectedIds } = useListContext(); + console.log(selectedIds) + + const [createDialog, setCreateDialog] = useState(false); + + return ( + <> + <Button onClick={() => setCreateDialog(true)} label={"toolbar.batch"}> + <EditIcon /> + </Button> + + <BatchModal + open={createDialog} + setOpen={setCreateDialog} + /> + </> + + ) +} +const CustomBulkActionButton = () => { + const { selectedIds } = useListContext(); + const notify = useNotify(); + const refresh = useRefresh(); + + const handleCustomBulkAction = async () => { + if (selectedIds.length === 0) { + notify('璇烽�夋嫨瑕佹搷浣滅殑璁板綍'); + return; + } + // 杩欓噷鍐欏叿浣撶殑鎵归噺鎿嶄綔閫昏緫锛屼緥濡傚悜鏈嶅姟鍣ㄥ彂閫佽姹� + try { + const res = await request.post('/loc/bulk-action', { ids: selectedIds }); + if (res?.data?.code === 200) { + refresh(); + notify('鎵归噺鎿嶄綔鎴愬姛'); + } else { + notify(res.data.msg); + } + } catch (error) { + notify('鎵归噺鎿嶄綔澶辫触锛岃绋嶅悗閲嶈瘯'); + } + }; + + return ( + <Button onClick={handleCustomBulkAction} label="鑷畾涔夋壒閲忔搷浣�"> + {/* 鍙互娣诲姞鑷畾涔夊浘鏍� */} + <EditIcon /> + </Button> + ); +}; \ No newline at end of file -- Gitblit v1.9.1