import React, { useState, useRef, useEffect } from 'react'; 
 | 
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 ShuttleHandle = (props) => { 
 | 
    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(() => { 
 | 
  
 | 
    }, []); 
 | 
  
 | 
    const handleCancel = () => { 
 | 
        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; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    const shuttleMoveLocClose = async () => { 
 | 
        try { 
 | 
            const resp = await Http.doPost('api/basShuttle/moveLocClose', { 
 | 
                shuttleNo: currentData.shuttleNo, 
 | 
            }); 
 | 
            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={420} 
 | 
                closable={false} 
 | 
                open={props.open} 
 | 
                getContainer={props.refCurr} 
 | 
                rootStyle={{ position: "absolute" }} 
 | 
                onClose={handleCancel} 
 | 
                extra={ 
 | 
                    <Space> 
 | 
                        <Button onClick={handleCancel}> 
 | 
                            <FormattedMessage id='common.cancel' defaultMessage='取消' /> 
 | 
                        </Button> 
 | 
                    </Space> 
 | 
                } 
 | 
            > 
 | 
  
 | 
                <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: '子轨道循环跑' }, 
 | 
                                        { value: '4', label: '取放货' } 
 | 
                                    ]} 
 | 
                                /> 
 | 
                            </div> 
 | 
                            <Button onClick={() => shuttleMoveLoc()}>跑库</Button> 
 | 
                            <Button onClick={() => shuttleMoveLocClose()}>跑库关闭</Button> 
 | 
                        </div> 
 | 
                    </Card> 
 | 
                </div> 
 | 
  
 | 
            </Drawer> 
 | 
        </> 
 | 
    ) 
 | 
  
 | 
} 
 | 
  
 | 
export default ShuttleHandle 
 |