|  |  |  | 
|---|
|  |  |  | import React, { useState, useRef, useEffect } from 'react'; | 
|---|
|  |  |  | import { Col, Form, Input, Row, Switch, Slider, message, Drawer, Space, Button, InputNumber, Segmented } from 'antd'; | 
|---|
|  |  |  | import { Card, Form, Input, Row, Switch, Slider, message, Drawer, Space, Button, InputNumber, Select } from 'antd'; | 
|---|
|  |  |  | import { FormattedMessage, useIntl, useModel } from '@umijs/max'; | 
|---|
|  |  |  | import { createStyles } from 'antd-style'; | 
|---|
|  |  |  | import Http from '@/utils/http'; | 
|---|
|  |  |  | import { log } from 'three/examples/jsm/nodes/Nodes.js'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const useStyles = createStyles(({ token, css }) => { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | const intl = useIntl(); | 
|---|
|  |  |  | const { styles } = useStyles(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { shuttleNo } = props; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const [sourceLoc, setSourceLoc] = useState(null); | 
|---|
|  |  |  | const [targetLoc, setTargetLoc] = useState(null); | 
|---|
|  |  |  | const [xStart, setXStart] = useState(null); | 
|---|
|  |  |  | const [xTarget, setXTarget] = useState(null); | 
|---|
|  |  |  | const [yStart, setYStart] = useState(null); | 
|---|
|  |  |  | const [yTarget, setYTarget] = useState(null); | 
|---|
|  |  |  | const [moveLocType, setMoveLocType] = useState(1); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEffect(() => { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, []); | 
|---|
|  |  |  | 
|---|
|  |  |  | props.onClose(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const shuttleOperator = async (type) => { | 
|---|
|  |  |  | if (type == 'moveLoc') { | 
|---|
|  |  |  | if (!targetLoc) { | 
|---|
|  |  |  | message.warning('请输入目标位置'); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (type == 'takeMove') { | 
|---|
|  |  |  | if (!sourceLoc) { | 
|---|
|  |  |  | message.warning('请输入起始位置'); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!targetLoc) { | 
|---|
|  |  |  | message.warning('请输入目标位置'); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | const resp = await Http.doPost('api/basShuttle/operator/shuttle', { | 
|---|
|  |  |  | shuttleNo: shuttleNo, | 
|---|
|  |  |  | shuttleTaskMode: type, | 
|---|
|  |  |  | sourceLocNo: sourceLoc, | 
|---|
|  |  |  | targetLocNo: targetLoc, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (resp.code === 200) { | 
|---|
|  |  |  | message.success("请求成功"); | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | message.warning(resp.msg); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | message.warning("请求失败"); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const shuttleMoveLoc = async () => { | 
|---|
|  |  |  | if (!xStart || !xTarget || !yStart || !yTarget) { | 
|---|
|  |  |  | message.warning('请输入参数'); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | const resp = await Http.doPost('api/basShuttle/moveLoc', { | 
|---|
|  |  |  | shuttleNo: shuttleNo, | 
|---|
|  |  |  | moveType: moveLocType, | 
|---|
|  |  |  | startX: xStart, | 
|---|
|  |  |  | targetX: xTarget, | 
|---|
|  |  |  | startY: yStart, | 
|---|
|  |  |  | targetY: yTarget, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (resp.code === 200) { | 
|---|
|  |  |  | message.success("请求成功"); | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | message.warning(resp.msg); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | message.warning("请求失败"); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <> | 
|---|
|  |  |  | <Drawer | 
|---|
|  |  |  | title={intl.formatMessage({ id: 'map.command', defaultMessage: '命令' })} | 
|---|
|  |  |  | width={350} | 
|---|
|  |  |  | width={420} | 
|---|
|  |  |  | closable={false} | 
|---|
|  |  |  | open={props.open} | 
|---|
|  |  |  | getContainer={props.refCurr} | 
|---|
|  |  |  | 
|---|
|  |  |  | <Button onClick={handleCancel}> | 
|---|
|  |  |  | <FormattedMessage id='common.cancel' defaultMessage='取消' /> | 
|---|
|  |  |  | </Button> | 
|---|
|  |  |  | {/* <Button onClick={handleOk} type="primary"> | 
|---|
|  |  |  | <FormattedMessage id='common.submit' defaultMessage='确定' /> | 
|---|
|  |  |  | </Button> */} | 
|---|
|  |  |  | </Space> | 
|---|
|  |  |  | } | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <h1>asds</h1> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <h2 style={{ marginBottom: '15px' }}>{shuttleNo}号四向车</h2> | 
|---|
|  |  |  | <div style={{ marginBottom: '15px' }}> | 
|---|
|  |  |  | <Card title="移动指令"> | 
|---|
|  |  |  | <p> | 
|---|
|  |  |  | <Input addonBefore="起始位置" value={sourceLoc} onChange={e => setSourceLoc(e.target.value)} /> | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | <p> | 
|---|
|  |  |  | <Input addonBefore="目标位置" value={targetLoc} onChange={e => setTargetLoc(e.target.value)} /> | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | <p> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('moveLoc')}>移动到目标位置</Button> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('takeMove')} style={{ marginLeft: '30px' }}>取放货作业</Button> | 
|---|
|  |  |  | </p> | 
|---|
|  |  |  | </Card> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div style={{ marginBottom: '15px' }}> | 
|---|
|  |  |  | <Card title="相关指令" > | 
|---|
|  |  |  | <div className="commandItem"> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('palletLift')}>托盘顶升</Button> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('palletDown')}>托盘下降</Button> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('chargeOpen')}>充电开</Button> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('chargeClose')}>充电关</Button> | 
|---|
|  |  |  | <Button onClick={() => shuttleOperator('reset')}>复位</Button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </Card> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div style={{ marginBottom: '15px' }}> | 
|---|
|  |  |  | <Card title="跑库系统" > | 
|---|
|  |  |  | <div className="commandItem"> | 
|---|
|  |  |  | <div><Input addonBefore="X起点" defaultValue="1" value={xStart} onChange={e => setXStart(e.target.value)} /></div> | 
|---|
|  |  |  | <div><Input addonBefore="X终点" defaultValue="1" value={xTarget} onChange={e => setXTarget(e.target.value)} /></div> | 
|---|
|  |  |  | <div><Input addonBefore="Y起点" defaultValue="1" value={yStart} onChange={e => setYStart(e.target.value)} /></div> | 
|---|
|  |  |  | <div><Input addonBefore="Y终点" defaultValue="1" value={yTarget} onChange={e => setYTarget(e.target.value)} /></div> | 
|---|
|  |  |  | <div> | 
|---|
|  |  |  | <Select | 
|---|
|  |  |  | defaultValue="0" | 
|---|
|  |  |  | onChange={setMoveLocType} | 
|---|
|  |  |  | style={{ width: 120 }} | 
|---|
|  |  |  | options={[ | 
|---|
|  |  |  | { value: '0', label: '跑轨道' }, | 
|---|
|  |  |  | { value: '1', label: '跑库位' }, | 
|---|
|  |  |  | { value: '2', label: '母轨道循环跑' }, | 
|---|
|  |  |  | { value: '3', label: '子轨道循环跑' } | 
|---|
|  |  |  | ]} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <Button onClick={() => shuttleMoveLoc()}>跑库</Button> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </Card> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </Drawer> | 
|---|
|  |  |  | </> | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default ShuttleHandle; | 
|---|
|  |  |  | export default ShuttleHandle | 
|---|