| | |
| | | import React, { useState, useRef, useEffect } from 'react'; |
| | | import { Col, Form, Input, Row, Checkbox, Slider, Select, Drawer, Space, Button, InputNumber, Card } from 'antd'; |
| | | import { message, Form, Input, Row, Checkbox, Slider, Select, Drawer, Space, Button, InputNumber, Card } from 'antd'; |
| | | import { FormattedMessage, useIntl, useModel } from '@umijs/max'; |
| | | import { createStyles } from 'antd-style'; |
| | | import * as Utils from '../utils' |
| | | import * as PIXI from 'pixi.js'; |
| | | |
| | | const useStyles = createStyles(({ token, css }) => { |
| | | |
| | |
| | | const { styles } = useStyles(); |
| | | const { curSprite, configForm: form } = props; |
| | | |
| | | const [showLiftNoItem, setShowLiftNoItem] = React.useState(false); |
| | | const [showConveyorNoItem, setShowConveyorNoItem] = React.useState(false); |
| | | |
| | | useEffect(() => { |
| | | }, []); |
| | | form.resetFields(); |
| | | if (curSprite) { |
| | | form.setFieldsValue({ |
| | | shelfType: Utils.SHELF_TYPE.STORE, |
| | | ...curSprite.data |
| | | }) |
| | | setShowLiftNoItem(form.getFieldValue('shelfType') === Utils.SHELF_TYPE.LIFT); |
| | | setShowConveyorNoItem(form.getFieldValue('shelfType') === Utils.SHELF_TYPE.CONVEYOR); |
| | | } |
| | | }, [props, form]); |
| | | |
| | | const formValuesChange = (changeList) => { |
| | | if (curSprite && changeList && changeList.length > 0) { |
| | |
| | | const bay = form.getFieldValue('bay') |
| | | if (value && bay) { |
| | | form.setFieldsValue({ |
| | | shelfNo: Utils.pureNumStr(value) + '-' + Utils.pureNumStr(bay) |
| | | no: Utils.pureNumStr(value) + '-' + Utils.pureNumStr(bay) |
| | | }); |
| | | } else { |
| | | form.setFieldsValue({ |
| | | shelfNo: '' |
| | | no: '' |
| | | }); |
| | | } |
| | | break; |
| | |
| | | const row = form.getFieldValue('row') |
| | | if (value && row) { |
| | | form.setFieldsValue({ |
| | | shelfNo: Utils.pureNumStr(row) + '-' + Utils.pureNumStr(value) |
| | | no: Utils.pureNumStr(row) + '-' + Utils.pureNumStr(value) |
| | | }); |
| | | } else { |
| | | form.setFieldsValue({ |
| | | shelfNo: '' |
| | | no: '' |
| | | }); |
| | | } |
| | | break; |
| | | case 'vertical': |
| | | const horizontal = form.getFieldValue('horizontal') |
| | | if (value && horizontal) { |
| | | form.setFieldsValue({ |
| | | no: Utils.pureNumStr(value) + '-' + Utils.pureNumStr(horizontal) |
| | | }); |
| | | } else { |
| | | form.setFieldsValue({ |
| | | no: '' |
| | | }); |
| | | } |
| | | break; |
| | | case 'horizontal': |
| | | const vertical = form.getFieldValue('vertical') |
| | | if (value && vertical) { |
| | | form.setFieldsValue({ |
| | | no: Utils.pureNumStr(vertical) + '-' + Utils.pureNumStr(value) |
| | | }); |
| | | } else { |
| | | form.setFieldsValue({ |
| | | no: '' |
| | | }); |
| | | } |
| | | break; |
| | | case 'shelfType': |
| | | const shelfType = form.getFieldValue('shelfType'); |
| | | setShowLiftNoItem(shelfType === Utils.SHELF_TYPE.LIFT); |
| | | setShowConveyorNoItem(shelfType === Utils.SHELF_TYPE.CONVEYOR); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | // execute where the form was finished |
| | | const confirmSettings = () => { |
| | | if (curSprite && curSprite?.data?.type) { |
| | | switch (curSprite.data.type) { |
| | | case Utils.SENSOR_TYPE.SHELF: |
| | | curSprite.data.shelfNo = values.shelfNo; |
| | | curSprite.data.row = values.row; |
| | | curSprite.data.bay = values.bay; |
| | | break; |
| | | case Utils.SENSOR_TYPE.AGV: |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | curSprite.data = { ...curSprite.data, ...values }; |
| | | Utils.showSheflType(curSprite); |
| | | } |
| | | message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '操作成功' })); |
| | | } |
| | | |
| | | console.log(values); |
| | | props.onSubmit({ ...values }, confirmSettings); |
| | | } |
| | | |
| | |
| | | disabled={false} |
| | | layout='horizontal' |
| | | labelCol={{ |
| | | span: 4, |
| | | span: 5, |
| | | }} |
| | | wrapperCol={{ |
| | | span: 20, |
| | | span: 19, |
| | | }} |
| | | > |
| | | <br /> |
| | |
| | | <span>{curSprite?.data?.type}</span> |
| | | </Form.Item> |
| | | <Form.Item |
| | | label={intl.formatMessage({ id: 'map.settings.uuid', defaultMessage: '编号' })} |
| | | label={intl.formatMessage({ id: 'map.settings.uuid', defaultMessage: '图号' })} |
| | | > |
| | | <span>{curSprite?.data?.uuid}</span> |
| | | </Form.Item> |
| | |
| | | </> |
| | | )} |
| | | |
| | | {curSprite?.data?.type === Utils.SENSOR_TYPE.SHUTTLE && ( |
| | | <> |
| | | |
| | | </> |
| | | )} |
| | | |
| | | {curSprite?.data?.type === Utils.SENSOR_TYPE.SHELF && ( |
| | | <> |
| | | <Form.Item |
| | | name='row' |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.row', defaultMessage: '排' })} |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.location', defaultMessage: '库位' })} |
| | | > |
| | | <Space.Compact> |
| | | <Form.Item |
| | | name='row' |
| | | noStyle |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.settings.shelf.row' defaultMessage='排' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='bay' |
| | | noStyle |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.settings.shelf.bay' defaultMessage='列' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </Space.Compact> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='shelfType' |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.type', defaultMessage: '类型' })} |
| | | rules={[ |
| | | { |
| | | required: true, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | <Select |
| | | style={{ width: 120 }} |
| | | options={[ |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.shelf.store', defaultMessage: '库位' }), |
| | | value: Utils.SHELF_TYPE.STORE |
| | | }, |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.shelf.track', defaultMessage: '轨道' }), |
| | | value: Utils.SHELF_TYPE.TRACK |
| | | }, |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.shelf.lift', defaultMessage: '提升机' }), |
| | | value: Utils.SHELF_TYPE.LIFT |
| | | }, |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.shelf.charge', defaultMessage: '充电站' }), |
| | | value: Utils.SHELF_TYPE.CHARGE |
| | | }, |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.shelf.conveyor', defaultMessage: '输送线' }), |
| | | value: Utils.SHELF_TYPE.CONVEYOR |
| | | }, |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.shelf.diable', defaultMessage: '禁用' }), |
| | | value: Utils.SHELF_TYPE.DISABLE |
| | | }, |
| | | ]} |
| | | /> |
| | | </Form.Item> |
| | | |
| | | {showLiftNoItem && ( |
| | | <> |
| | | <Form.Item |
| | | name='liftNo' |
| | | label={intl.formatMessage({ id: 'map.settings.lift.no', defaultMessage: '提升机编号' })} |
| | | rules={[ |
| | | { |
| | | required: true, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </> |
| | | )} |
| | | |
| | | {showConveyorNoItem && ( |
| | | <> |
| | | <Form.Item |
| | | name='conveyorNo' |
| | | label={intl.formatMessage({ id: 'map.settings.conveyor.no', defaultMessage: '输送站号' })} |
| | | rules={[ |
| | | { |
| | | required: true, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='conveyorHasGo' |
| | | label={intl.formatMessage({ id: 'map.settings.conveyor.hasGo', defaultMessage: '小车可走' })} |
| | | valuePropName="checked" |
| | | > |
| | | <Checkbox |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </> |
| | | )} |
| | | |
| | | <Form.Item |
| | | name='bay' |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.bay', defaultMessage: '列' })} |
| | | rules={[ |
| | | { |
| | | required: true, |
| | | }, |
| | | ]} |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.space', defaultMessage: '间距' })} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | <Space.Compact> |
| | | <Form.Item |
| | | name='top' |
| | | noStyle |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.settings.shelf.top' defaultMessage='上' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='bottom' |
| | | noStyle |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.settings.shelf.bottom' defaultMessage='下' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </Space.Compact> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='shelfNo' |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.no', defaultMessage: '货架号' })} |
| | | rules={[ |
| | | { |
| | | required: true, |
| | | }, |
| | | ]} |
| | | label={' '} |
| | | > |
| | | <Space.Compact> |
| | | <Form.Item |
| | | name='left' |
| | | noStyle |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.settings.shelf.left' defaultMessage='左' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='right' |
| | | noStyle |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.settings.shelf.right' defaultMessage='右' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </Space.Compact> |
| | | </Form.Item> |
| | | <Form.Item |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.reference', defaultMessage: '基准值' })} |
| | | > |
| | | <Space.Compact> |
| | | <Form.Item |
| | | name='refx' |
| | | noStyle |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.x' defaultMessage='x' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='refy' |
| | | noStyle |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | addonBefore={<Space.Compact><FormattedMessage id='map.y' defaultMessage='y' /></Space.Compact>} |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </Space.Compact> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='value' |
| | | label={intl.formatMessage({ id: 'map.settings.shelf.value', defaultMessage: '地图值' })} |
| | | > |
| | | <Input |
| | | style={{ |
| | |
| | | </> |
| | | )} |
| | | |
| | | {curSprite?.data?.type === Utils.SENSOR_TYPE.CONVEYOR && ( |
| | | <> |
| | | <Form.Item |
| | | name='plcNo' |
| | | label={intl.formatMessage({ id: 'map.settings.conveyor.plc.no', defaultMessage: 'PLC编号' })} |
| | | rules={[ |
| | | { |
| | | required: true, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </> |
| | | )} |
| | | |
| | | {curSprite?.data?.type === Utils.SENSOR_TYPE.POINT && ( |
| | | <> |
| | | <Form.Item |
| | | name='vertical' |
| | | label={intl.formatMessage({ id: 'map.settings.point.vertical', defaultMessage: '纵向' })} |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | <Form.Item |
| | | name='horizontal' |
| | | label={intl.formatMessage({ id: 'map.settings.point.horizontal', defaultMessage: '横向' })} |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <InputNumber |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </> |
| | | )} |
| | | |
| | | <Form.Item |
| | | name='no' |
| | | label={intl.formatMessage({ id: 'map.settings.no', defaultMessage: '编号' })} |
| | | rules={[ |
| | | { |
| | | required: false, |
| | | }, |
| | | ]} |
| | | > |
| | | <Input |
| | | style={{ |
| | | width: '50%', |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | |
| | | <Form.Item |
| | | wrapperCol={{ |
| | | offset: 4, |