|  |  | 
 |  |  | 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 |