From 3c190ac12e00e0f3435984c5d57351d136530c09 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 15 三月 2024 15:51:26 +0800
Subject: [PATCH] #
---
zy-asrs-flow/src/pages/map/header/search.jsx | 121 ++++++++++++++++++++++++++++++++--------
1 files changed, 96 insertions(+), 25 deletions(-)
diff --git a/zy-asrs-flow/src/pages/map/header/search.jsx b/zy-asrs-flow/src/pages/map/header/search.jsx
index 3d2a7df..d59615c 100644
--- a/zy-asrs-flow/src/pages/map/header/search.jsx
+++ b/zy-asrs-flow/src/pages/map/header/search.jsx
@@ -1,31 +1,103 @@
import React, { useState, useRef, useEffect } from 'react';
-import { Layout, Button, Flex, Row, Col, FloatButton, Select, Spin, AutoComplete } from 'antd';
-import { FormattedMessage, useIntl, useModel } from '@umijs/max';
-import {
- CloseOutlined
-} from '@ant-design/icons';
+import { Select, AutoComplete } from 'antd';
+import { FormattedMessage, useIntl } from '@umijs/max';
+import { CloseOutlined } from '@ant-design/icons';
import * as Utils from '../utils'
-const MapSearch = (props) => {
- const intl = useIntl();
+const renderTitle = (title, uuid) => (
+ <>
+ <span style={{ fontWeight: 'bold' }} >{title}</span>
+ <span style={{ float: 'right', opacity: .3 }} >{uuid}</span>
+ </>
+);
- const sensorTypeSelectOptions = Utils.sensorTypeSelectOptions(intl);
-
- const [curSensorType, setCurSensorType] = React.useState(sensorTypeSelectOptions?.[0]?.value);
-
- useEffect(() => {
- }, [props]);
-
- React.useEffect(() => {
- switch (curSensorType) {
+const sensorTypeSelectOptionsFn = (intl) => {
+ let options = [];
+ Object.entries(Utils.SENSOR_TYPE).forEach(([key, value]) => {
+ switch (key) {
case Utils.SENSOR_TYPE.SHELF:
+ options.push({
+ value: value,
+ label:
+ (
+ <>
+ <span style={{ fontWeight: 'bold' }} >{intl.formatMessage({ id: 'map.sensor.type.shelf', defaultMessage: '璐ф灦' })}</span>
+ </>
+ )
+ })
break;
case Utils.SENSOR_TYPE.AGV:
+ options.push({
+ value: value,
+ label:
+ (
+ <>
+ <span style={{ fontWeight: 'bold' }} >{intl.formatMessage({ id: 'map.sensor.type.agv', defaultMessage: '鏃犱汉灏忚溅' })}</span>
+ </>
+ )
+ })
break;
default:
break;
}
+
+ })
+ return options;
+}
+
+function getAllSensorList(curSensorType) {
+ let sensorListAll = [];
+ Utils.getMapContainer().children.forEach(child => {
+ if (child?.data?.type === curSensorType && child?.data?.no) {
+ sensorListAll.push({
+ value: child.data.no,
+ label: renderTitle(child.data.no, child.data.uuid)
+ })
+ }
+ });
+ return sensorListAll;
+}
+
+const MapSearch = (props) => {
+ const intl = useIntl();
+ const { curSprite: curSensor, setCurSPrite: setCurSensor } = props;
+
+ const sensorTypeSelectOptions = sensorTypeSelectOptionsFn(intl);
+ const [curSensorType, setCurSensorType] = React.useState(sensorTypeSelectOptions?.[0]?.value);
+
+ const [sensorList, setSensorList] = React.useState([]);
+ const [filterSensorList, setFilterSensorList] = React.useState([]);
+ const [curSensorLabel, setCurSensorLabel] = React.useState(null);
+
+ // useEffect(() => {
+ // const intervalID = setInterval(() => {
+ // if (!curSensorLabel) {
+ // let sensorListAll = getAllSensorList(curSensorType);
+ // setSensorList(sensorListAll);
+ // setFilterSensorList(sensorListAll);
+ // }
+ // }, 1000)
+
+ // return () => clearInterval(intervalID);
+ // }, [props]);
+
+ // first select
+ React.useEffect(() => {
+ if (!Utils.getMapContainer()) { return; }
+ let sensorListAll = getAllSensorList(curSensorType);
+ setSensorList(sensorListAll);
+ setFilterSensorList(sensorListAll);
+ setCurSensorLabel(null);
}, [curSensorType])
+
+ // second select
+ React.useEffect(() => {
+ if (!Utils.getMapContainer()) { return; }
+ if ((curSensorLabel !== null || curSensorLabel != undefined)
+ && sensorList && sensorList.length > 0) {
+ setFilterSensorList(sensorList.filter(item => item.value.includes(curSensorLabel)));
+ }
+ }, [curSensorLabel])
return (
<>
@@ -51,15 +123,14 @@
allowClear={{
clearIcon: <CloseOutlined />
}}
- onSearch={() => { }}
- options={[
- {
- value: 'text 1',
- },
- {
- value: 'text 2',
- },
- ]}
+ popupMatchSelectWidth={500}
+ options={filterSensorList}
+ value={curSensorLabel}
+ onSelect={(value, option) => {
+ const uuid = option.label?.props?.children?.[1].props.children;
+ setCurSensor(Utils.findSpriteByUuid(uuid));
+ }}
+ onChange={setCurSensorLabel}
/>
</>
)
--
Gitblit v1.9.1