From 21b80e79792b800eb3e409340d31be1354878a24 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 17 六月 2025 12:03:34 +0800
Subject: [PATCH] 1
---
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