From 9483baffba9a24a2a36fc8739fc65b59317d9142 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 03 七月 2025 14:18:46 +0800 Subject: [PATCH] 队列拆分 --- zy-acs-flow/src/map/header/MoreOperate.jsx | 85 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 68 insertions(+), 17 deletions(-) diff --git a/zy-acs-flow/src/map/header/MoreOperate.jsx b/zy-acs-flow/src/map/header/MoreOperate.jsx index f3d7e4e..c210132 100644 --- a/zy-acs-flow/src/map/header/MoreOperate.jsx +++ b/zy-acs-flow/src/map/header/MoreOperate.jsx @@ -1,24 +1,30 @@ import React, { useState, useRef, useEffect, useMemo } from "react"; import { useTranslate } from "react-admin"; import { + Box, Select, MenuItem, Button, useTheme, ListItemIcon, ListItemText, + CircularProgress, } from '@mui/material'; -import { handleRePositionAll } from "../http"; +import { locateAllAgv, startPatrolBatch, cancelPatrolBatch } from "../http"; import GpsFixedIcon from '@mui/icons-material/GpsFixed'; +import { VERIFY_PASSWORD } from '@/config/setting'; +import TimelineIcon from '@mui/icons-material/Timeline'; +import CloseIcon from '@mui/icons-material/Close'; const MoreOperate = ({ }) => { const translate = useTranslate(); const theme = useTheme(); + const [loading, setLoading] = useState(false); const verifyPassword = (fn) => { let pass = true; const pwd = prompt("please enter password:"); - if (pwd === 'xltys1995') { + if (pwd === VERIFY_PASSWORD) { pass = true; } else { pass = false; @@ -33,8 +39,25 @@ } } + const debounced = async (fn) => { + setLoading(true); + try { + await fn(); + } finally { + setLoading(false); + } + } + const handleLocateAll = () => { - alert('瀹氫綅鎴愬姛'); + debounced(locateAllAgv); + } + + const handleStartPatrolBatch = () => { + debounced(startPatrolBatch); + } + + const handleCancelPatrolBatch = () => { + debounced(cancelPatrolBatch); } return ( @@ -42,13 +65,18 @@ <Select value={translate('page.map.action.moreOperation')} onChange={(event) => { - console.log(event.target.value); }} - renderValue={(selected) => - translate('page.map.action.moreOperation') - } + renderValue={() => ( + <Box sx={{ display: 'flex', alignItems: 'center' }}> + {loading && ( + <CircularProgress size={20} sx={{ mr: 1 }} /> + )} + {translate('page.map.action.moreOperation')} + </Box> + )} variant="outlined" size="small" + disabled={loading} sx={{ ml: 2, backgroundColor: theme.palette.background.paper, @@ -61,23 +89,46 @@ onClick={() => { verifyPassword(handleLocateAll); }} + disabled={loading} > <ListItemIcon> - <GpsFixedIcon fontSize="small" /> + {loading + ? <CircularProgress size={20} /> + : <GpsFixedIcon fontSize="small" /> + } </ListItemIcon> <ListItemText>{translate('page.map.action.oneClickLocate')}</ListItemText> </MenuItem> + <MenuItem + onClick={() => { + verifyPassword(handleStartPatrolBatch); + }} + disabled={loading} + > + <ListItemIcon> + {loading + ? <CircularProgress size={20} /> + : <TimelineIcon fontSize="small" /> + } + </ListItemIcon> + <ListItemText>{translate('page.map.action.oneClickPatrol')}</ListItemText> + </MenuItem> + <MenuItem + onClick={() => { + verifyPassword(handleCancelPatrolBatch); + }} + disabled={loading} + > + <ListItemIcon> + {loading + ? <CircularProgress size={20} /> + : <CloseIcon fontSize="small" /> + } + </ListItemIcon> + <ListItemText>{translate('page.map.action.cancelPatrol')}</ListItemText> + </MenuItem> </Select> - {/* <Button - variant="contained" - color="primary" - onClick={handleToggle} - sx={{ mr: 2 }} - > - 閲嶆柊瀹氫綅 - </Button> */} </> - ); } -- Gitblit v1.9.1