| | |
| | | import AreaBasicTab from './AreaBasicTab'; |
| | | import AreaAdvancedTab from './AreaAdvancedTab'; |
| | | import { getAreaInfo, fetchAgvListAll, updateAreaData, removeArea } from '../http'; |
| | | import * as Tool from '../tool'; |
| | | |
| | | const getAgvOptionId = (option) => { |
| | | if (option == null) { |
| | |
| | | const [code, setCode] = useState(''); |
| | | const [maxCount, setMaxCount] = useState(''); |
| | | const [speedLimit, setSpeedLimit] = useState(''); |
| | | const [memo, setMemo] = useState(''); |
| | | const [startPoint, setStartPoint] = useState({ x: '', y: '' }); |
| | | const [endPoint, setEndPoint] = useState({ x: '', y: '' }); |
| | | const [priority, setPriority] = useState(''); |
| | | const [memo, setMemo] = useState(''); |
| | | const [agvOptions, setAgvOptions] = useState([]); |
| | | const [initialBasic, setInitialBasic] = useState({ name: '', agvIds: [] }); |
| | | const [curAreaInfo, setCurAreaInfo] = useState(null); |
| | |
| | | setCode(''); |
| | | setMaxCount(''); |
| | | setSpeedLimit(''); |
| | | setMemo(''); |
| | | setStartPoint({ x: '', y: '' }); |
| | | setEndPoint({ x: '', y: '' }); |
| | | setPriority(''); |
| | | setMemo(''); |
| | | setAgvList([]); |
| | | setCodeList([]); |
| | | setInitialBasic({ name: '', agvIds: [] }); |
| | |
| | | setCode(curAreaInfo.code || ''); |
| | | setMaxCount(curAreaInfo.maxCount ?? ''); |
| | | setSpeedLimit(curAreaInfo.speedLimit ?? ''); |
| | | setMemo(curAreaInfo.memo || ''); |
| | | setStartPoint({ |
| | | x: curAreaInfo.start?.x ?? '', |
| | | y: curAreaInfo.start?.y ?? '', |
| | | }); |
| | | setEndPoint({ |
| | | x: curAreaInfo.end?.x ?? '', |
| | | y: curAreaInfo.end?.y ?? '', |
| | | }); |
| | | setPriority(curAreaInfo.priority ?? ''); |
| | | setMemo(curAreaInfo.memo || ''); |
| | | |
| | | const selected = curAreaInfo.agvList || []; |
| | | const normalizedSelection = mapSelectionToOptions(selected, agvOptions); |
| | |
| | | setActiveTab(newValue); |
| | | }; |
| | | |
| | | const handleSaveBasic = async () => { |
| | | console.log(agvList); |
| | | const submitAreaUpdate = async (payload = {}) => { |
| | | const id = sprite?.data?.id; |
| | | if (!id) { |
| | | return; |
| | | } |
| | | const payload = { |
| | | id, |
| | | name, |
| | | agvIds: agvList.map(getAgvOptionId), |
| | | }; |
| | | const data = await updateAreaData(payload); |
| | | const data = await updateAreaData({ id, ...payload }); |
| | | if (data) { |
| | | setCurAreaInfo(data); |
| | | if (sprite) { |
| | | Tool.updateAreaSpriteName(sprite, data.name || name); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | const handleSaveBasic = async () => { |
| | | await submitAreaUpdate({ |
| | | name, |
| | | agvIds: agvList.map(getAgvOptionId), |
| | | }); |
| | | }; |
| | | |
| | | const handleSaveAdvanced = async () => { |
| | | await submitAreaUpdate({ |
| | | name, |
| | | agvIds: agvList.map(getAgvOptionId), |
| | | code, |
| | | maxCount, |
| | | speedLimit, |
| | | priority, |
| | | memo, |
| | | start: startPoint, |
| | | end: endPoint, |
| | | }); |
| | | }; |
| | | |
| | | const handleDeleteArea = async () => { |
| | |
| | | } |
| | | const success = await removeArea(id); |
| | | if (success) { |
| | | if (sprite) { |
| | | Tool.removeAreaSprite(sprite); |
| | | } |
| | | onCancel?.(); |
| | | } |
| | | }; |
| | | |
| | | const handleSaveAdvanced = () => { |
| | | // placeholder for save logic |
| | | }; |
| | | |
| | | const basicDirty = name !== initialBasic.name |
| | |
| | | <Typography variant="h6" flex="1"> |
| | | {sprite |
| | | ? translate(`page.map.devices.${sprite?.data?.type?.toLowerCase()}`) + ' - ' + sprite?.data?.name |
| | | : translate('page.map.settings.title')} |
| | | : translate('page.map.area.title')} |
| | | </Typography> |
| | | <IconButton onClick={handleClose} size="small"> |
| | | <CloseIcon /> |
| | |
| | | variant="fullWidth" |
| | | sx={{ mb: 0 }} |
| | | > |
| | | <Tab label={translate('page.map.area.basic', { _: '基础' })} /> |
| | | <Tab label={translate('page.map.area.advanced', { _: '高级' })} /> |
| | | <Tab label={translate('page.map.area.tabs.basic')} /> |
| | | <Tab label={translate('page.map.area.tabs.advanced')} /> |
| | | </Tabs> |
| | | |
| | | <Divider /> |
| | |
| | | setMaxQty={setMaxCount} |
| | | speedLimit={speedLimit} |
| | | setSpeedLimit={setSpeedLimit} |
| | | shapeData={memo} |
| | | setShapeData={setMemo} |
| | | startPoint={startPoint} |
| | | endPoint={endPoint} |
| | | priority={priority} |
| | | setPriority={setPriority} |
| | | memo={memo} |
| | | setMemo={setMemo} |
| | | onSave={handleSaveAdvanced} |
| | | /> |
| | | )} |