From e246aa751c6a8b36721e8acf70acc238188f49dc Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 15 十二月 2025 11:12:25 +0800
Subject: [PATCH] #
---
zy-acs-flow/src/map/areaSettings/index.jsx | 61 ++++++++++++++++++++++--------
1 files changed, 44 insertions(+), 17 deletions(-)
diff --git a/zy-acs-flow/src/map/areaSettings/index.jsx b/zy-acs-flow/src/map/areaSettings/index.jsx
index 11dd4a1..3871dfb 100644
--- a/zy-acs-flow/src/map/areaSettings/index.jsx
+++ b/zy-acs-flow/src/map/areaSettings/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react';
+import React, { useState, useEffect, useMemo } from 'react';
import { useTranslate } from "react-admin";
import {
Drawer,
@@ -19,6 +19,13 @@
import AreaAdvancedTab from './AreaAdvancedTab';
import { getAreaInfo } from '../http';
+const getAgvOptionId = (option) => {
+ if (typeof option === 'string') {
+ return option;
+ }
+ return option?.value ?? option?.id ?? option?.agvNo ?? option?.code ?? option?.name ?? '';
+};
+
const AreaSettings = (props) => {
const { open, onCancel, sprite, width = PAGE_DRAWER_WIDTH } = props;
const theme = useTheme();
@@ -31,7 +38,7 @@
const [activeTab, setActiveTab] = useState(0);
const [areaName, setAreaName] = useState('');
- const [agvList, setAgvList] = useState('');
+ const [selectedAgvs, setSelectedAgvs] = useState([]);
const [barcodeList, setBarcodeList] = useState('');
const [areaCode, setAreaCode] = useState('');
const [maxQty, setMaxQty] = useState('');
@@ -48,29 +55,49 @@
}
useEffect(() => {
- if (sprite?.data) {
- console.log(sprite.data);
+ if (sprite?.data?.id) {
fetchAreaInfo(sprite.data.id);
-
- setAreaName(sprite.data.name || '');
- setAreaCode(sprite.data.code || '');
- setMaxQty(sprite.data.maxQty || '');
- setSpeedLimit(sprite.data.speedLimit || '');
- setShapeData(sprite.data.shape || '');
- setPriority(sprite.data.priority || '');
- setAgvList((sprite.data.agvs || []).join(', '));
- setBarcodeList((sprite.data.barcodes || []).join('\n'));
} else {
+ setCurAreaInfo(null);
setAreaName('');
setAreaCode('');
setMaxQty('');
setSpeedLimit('');
setShapeData('');
setPriority('');
- setAgvList('');
+ setSelectedAgvs([]);
setBarcodeList('');
}
}, [sprite]);
+
+ const agvOptions = useMemo(() => {
+ if (!curAreaInfo) {
+ return [];
+ }
+ return curAreaInfo.agvOptions || curAreaInfo.agvCandidates || curAreaInfo.agvList || [];
+ }, [curAreaInfo]);
+
+ useEffect(() => {
+ if (curAreaInfo) {
+ setAreaName(curAreaInfo.name || '');
+ setAreaCode(curAreaInfo.code || '');
+ setMaxQty(curAreaInfo.maxQty || '');
+ setSpeedLimit(curAreaInfo.speedLimit || '');
+ setShapeData(curAreaInfo.shape || '');
+ setPriority(curAreaInfo.priority || '');
+
+ const selected = curAreaInfo.selectedAgvs || curAreaInfo.agvs || [];
+ if (Array.isArray(selected) && Array.isArray(agvOptions) && agvOptions.length > 0) {
+ const optionMap = new Map(agvOptions.map(option => [getAgvOptionId(option), option]));
+ setSelectedAgvs(selected.map(item => optionMap.get(getAgvOptionId(item)) || item));
+ } else {
+ setSelectedAgvs(selected);
+ }
+
+ const barcodes = curAreaInfo.barcodes || curAreaInfo.barcodeList || [];
+ setBarcodeList(Array.isArray(barcodes) ? barcodes.join('\n') : (barcodes || ''));
+ }
+ }, [curAreaInfo, agvOptions]);
const handleTabChange = (event, newValue) => {
setActiveTab(newValue);
@@ -140,10 +167,10 @@
<AreaBasicTab
areaName={areaName}
setAreaName={setAreaName}
- agvList={agvList}
- setAgvList={setAgvList}
+ agvOptions={agvOptions}
+ selectedAgvs={selectedAgvs}
+ setSelectedAgvs={setSelectedAgvs}
barcodeList={barcodeList}
- setBarcodeList={setBarcodeList}
onSave={handleSaveBasic}
/>
)}
--
Gitblit v1.9.1