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/MapSearch.jsx | 151 +++++++++++++++++++++++++-------------------------
1 files changed, 76 insertions(+), 75 deletions(-)
diff --git a/zy-acs-flow/src/map/header/MapSearch.jsx b/zy-acs-flow/src/map/header/MapSearch.jsx
index c3f0e09..6d473b1 100644
--- a/zy-acs-flow/src/map/header/MapSearch.jsx
+++ b/zy-acs-flow/src/map/header/MapSearch.jsx
@@ -7,38 +7,21 @@
InputAdornment,
IconButton,
useTheme,
+ Stack,
+ Typography,
} from '@mui/material';
import { useTranslate } from 'react-admin';
import CloseIcon from '@mui/icons-material/Close';
import { MAP_MODE, DEVICE_TYPE } from "../constants";
import * as Tool from "../tool";
-const renderTitle = (title, uuid) => (
- <>
- <span style={{ fontWeight: 'bold' }}>{title}</span>
- <span style={{ float: 'right', opacity: 0.3 }}>{uuid}</span>
- </>
-);
-
const deviceTypeSelectOptionsFn = (translate) => {
const deviceTypes = [
- {
- key: DEVICE_TYPE.SHELF,
- id: 'page.map.devices.shelf',
- },
- {
- key: DEVICE_TYPE.STATION,
- id: 'page.map.devices.station',
- },
- {
- key: DEVICE_TYPE.AGV,
- id: 'page.map.devices.agv',
- },
- {
- key: DEVICE_TYPE.POINT,
- id: 'page.map.devices.point',
- },
- // Add other sensor types if needed
+ { key: DEVICE_TYPE.SHELF, id: 'page.map.devices.shelf' },
+ { key: DEVICE_TYPE.AGV, id: 'page.map.devices.agv' },
+ { key: DEVICE_TYPE.STATION, id: 'page.map.devices.station' },
+ { key: DEVICE_TYPE.POINT, id: 'page.map.devices.point' },
+ // ... other devices
];
return deviceTypes.map(({ key, id }) => ({
@@ -47,41 +30,21 @@
}));
};
-const getAllDeviceList = (curDeviceType) => {
- const children = Tool.getMapContainer()?.children || [];
- return children.reduce((list, child) => {
- if (child?.data) {
- const { data } = child;
- if (data.type === curDeviceType && data.no) {
- list.push({
- value: data.no,
- label: renderTitle(data.no, data.uuid),
- });
- }
- }
- return list;
- }, []);
-};
-
const MapSearch = (props) => {
const {
mode,
setMode,
+ dataFetched,
curZone,
+ curSprite,
setCurSprite,
- setSpriteSettings,
} = props;
const theme = useTheme();
- const themeMode = theme.palette.mode;
const translate = useTranslate();
- // type
const deviceTypeOptions = deviceTypeSelectOptionsFn(translate);
- const [curDeviceType, setCurDeviceType] = useState(
- deviceTypeOptions[0]?.value || ''
- );
- // list
+ const [curDeviceType, setCurDeviceType] = useState(deviceTypeOptions[0]?.value || '');
const [deviceList, setDeviceList] = useState([]);
const [filterDeviceList, setFilterDeviceList] = useState([]);
const [inputValue, setInputValue] = useState('');
@@ -96,11 +59,16 @@
};
useEffect(() => {
- if (!Tool.getMapContainer()) return;
- setTimeout(() => {
+ if (dataFetched) {
resetSearch();
- }, 200);
- }, [curDeviceType, curZone]);
+ }
+ }, [curDeviceType, dataFetched, curZone]);
+
+ useEffect(() => {
+ if (!curSprite) {
+ resetSearch();
+ }
+ }, [curSprite]);
useEffect(() => {
if (!Tool.getMapContainer()) return;
@@ -111,62 +79,88 @@
} else {
setFilterDeviceList(deviceList);
}
- }, [inputValue]);
+ }, [inputValue, deviceList]);
const onSecondSelect = (option) => {
if (!option) return;
- const uuid = option.label.props.children[1]?.props?.children;
+ const uuid = option.uuid;
const selectSprite = Tool.findSpriteByUuid(uuid);
if (selectSprite) {
Tool.focusSprite(selectSprite);
}
switch (mode) {
- case MAP_MODE.OBSERVER_MODE:
- setCurSprite(selectSprite);
- break;
+ // case MAP_MODE.OBSERVER_MODE:
+ // case MAP_MODE.SETTINGS_MODE:
+ // break;
case MAP_MODE.MOVABLE_MODE:
setMode(MAP_MODE.SETTINGS_MODE);
setTimeout(() => {
- setSpriteSettings(selectSprite);
+ setCurSprite(selectSprite);
}, 200);
break;
- case MAP_MODE.SETTINGS_MODE:
- setSpriteSettings(selectSprite);
- break;
default:
+ setCurSprite(selectSprite);
break;
}
};
+ const getAllDeviceList = (curDeviceType) => {
+ const children = Tool.getMapContainer()?.children || [];
+ return children.reduce((list, child) => {
+ if (child?.data) {
+ const { data } = child;
+ if (data.type === curDeviceType && data.no) {
+ list.push({
+ value: data.no,
+ label: data.no,
+ uuid: data.uuid,
+ });
+ }
+ }
+ return list;
+ }, []);
+ };
+
return (
- <>
+ <Stack direction="row" spacing={1} alignItems="center">
<Select
- className="map-header-select"
- variant="filled"
- style={{ width: 160, marginRight: 8 }}
- size="medium"
+ variant="outlined"
+ size="small"
value={curDeviceType}
onChange={(event) => setCurDeviceType(event.target.value)}
+ sx={{ minWidth: 160 }}
>
{deviceTypeOptions.map((option) => (
<MenuItem key={option.value} value={option.value}>
- <span style={{ fontWeight: 'bold' }}>{option.label}</span>
+ <Typography variant="body1" fontWeight="bold">
+ {option.label}
+ </Typography>
</MenuItem>
))}
</Select>
<Autocomplete
- className="map-header-select"
- style={{ width: 360 }}
- size="medium"
+ size="small"
options={filterDeviceList}
getOptionLabel={(option) => option.value}
- renderOption={(props, option) => (
- <li {...props}>{option.label}</li>
- )}
+ renderOption={(optionProps, option) => {
+ const { key, ...otherProps } = optionProps;
+ return (
+ <li key={option.uuid} {...otherProps}>
+ <Stack direction="row" justifyContent="space-between" width="100%">
+ <Typography variant="body1" fontWeight="bold">
+ {option.label}
+ </Typography>
+ <Typography variant="body2" color="text.secondary">
+ {option.uuid}
+ </Typography>
+ </Stack>
+ </li>
+ )
+ }}
renderInput={(params) => (
<TextField
{...params}
- variant="filled"
+ variant="outlined"
placeholder={translate('common.msg.placeholder')}
InputProps={{
...params.InputProps,
@@ -176,17 +170,23 @@
{inputValue && (
<InputAdornment position="end">
<IconButton
+ size="small"
onClick={() => {
setInputValue('');
setSelectedOption(null);
+ setCurSprite(null);
}}
>
- <CloseIcon />
+ <CloseIcon fontSize="small" />
</IconButton>
</InputAdornment>
)}
</>
),
+ }}
+ sx={{
+ minWidth: 360,
+ marginBottom: '7px',
}}
/>
)}
@@ -199,8 +199,9 @@
onInputChange={(event, newInputValue) => {
setInputValue(newInputValue);
}}
+ disableClearable
/>
- </>
+ </Stack>
);
};
--
Gitblit v1.9.1