| | |
| | | </> |
| | | )} |
| | | |
| | | {curSprite?.data?.type === Utils.SENSOR_TYPE.SHUTTLE && ( |
| | | <> |
| | | |
| | | </> |
| | | )} |
| | | |
| | | {curSprite?.data?.type === Utils.SENSOR_TYPE.SHELF && ( |
| | | <> |
| | | <Form.Item |
| | |
| | | </Form.Item> |
| | | </Col> |
| | | |
| | | {autoIncrement && curSprite?.data?.type === Utils.SENSOR_TYPE.SHUTTLE && ( |
| | | <> |
| | | <Col span={24}> |
| | | <Form.Item |
| | | name='incrementValue' |
| | | label={intl.formatMessage({ id: 'map.settings.sub.copy.increment-value', defaultMessage: '自增长值' })} |
| | | labelCol={{ span: 8 }} |
| | | initialValue='no' |
| | | > |
| | | <Segmented |
| | | block |
| | | options={[ |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.no', defaultMessage: '编号' }), |
| | | value: 'no' |
| | | }, |
| | | ]} |
| | | onChange={(value) => { |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={24}> |
| | | <Form.Item |
| | | name='incrementMode' |
| | | label={intl.formatMessage({ id: 'map.settings.sub.copy.increment.mode', defaultMessage: '增长方式' })} |
| | | labelCol={{ span: 8 }} |
| | | > |
| | | <Segmented |
| | | block |
| | | options={[ |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.sub.copy.ascend', defaultMessage: '升序' }), |
| | | value: 'ascending' |
| | | }, |
| | | { |
| | | label: intl.formatMessage({ id: 'map.settings.sub.copy.descend', defaultMessage: '降序' }), |
| | | value: 'descending' |
| | | }, |
| | | ]} |
| | | onChange={(value) => { |
| | | }} |
| | | /> |
| | | </Form.Item> |
| | | </Col> |
| | | </> |
| | | )} |
| | | |
| | | {autoIncrement && curSprite?.data?.type === Utils.SENSOR_TYPE.AGV && ( |
| | | <> |
| | | <Col span={24}> |
| | |
| | | copiedSprite.data.no = Utils.pureNumStr(copiedSprite.data.vertical) + '-' + Utils.pureNumStr(copiedSprite.data.horizontal); |
| | | } |
| | | break; |
| | | case Utils.SENSOR_TYPE.SHUTTLE: |
| | | if (values.incrementValue === 'no') { |
| | | if (values.incrementMode === 'descending') { |
| | | copiedSprite.data.no = Number(curSprite.data.no) - i - 1; |
| | | } else { |
| | | copiedSprite.data.no = Number(curSprite.data.no) + i + 1; |
| | | } |
| | | } |
| | | break; |
| | | case Utils.SENSOR_TYPE.AGV: |
| | | if (values.incrementValue === 'no') { |
| | | if (values.incrementMode === 'descending') { |
| | |
| | | import ShelfDrawer from './shelf'; |
| | | import AgvDrawer from './agv'; |
| | | import PointDrawer from './point' |
| | | import ShuttleDrawer from './shuttle' |
| | | |
| | | const useStyles = createStyles(({ token, css }) => { |
| | | |
| | |
| | | /> |
| | | </> |
| | | )} |
| | | {props.curSprite?.data?.type === Utils.SENSOR_TYPE.SHUTTLE && ( |
| | | <> |
| | | <ShuttleDrawer |
| | | curSprite={curSprite} |
| | | /> |
| | | </> |
| | | )} |
| | | {props.curSprite?.data?.type === Utils.SENSOR_TYPE.POINT && ( |
| | | <> |
| | | <PointDrawer |
New file |
| | |
| | | import React, { useState, useRef, useEffect } from 'react'; |
| | | import { Card, Form, Button } from 'antd'; |
| | | import { FormattedMessage, useIntl, useModel } from '@umijs/max'; |
| | | import { createStyles } from 'antd-style'; |
| | | import * as Utils from '../../utils' |
| | | import Http from '@/utils/http'; |
| | | import ShowJson from '../showJson'; |
| | | |
| | | const useStyles = createStyles(({ token, css }) => { |
| | | |
| | | }) |
| | | |
| | | const ShuttleDrawer = (props) => { |
| | | const intl = useIntl(); |
| | | const { styles } = useStyles(); |
| | | const [activeTabKey, setActiveTabKey] = useState('json'); |
| | | |
| | | const contentList = { |
| | | json: ( |
| | | <ShowJson |
| | | data={props.curSprite.data} |
| | | /> |
| | | ), |
| | | }; |
| | | |
| | | return ( |
| | | <> |
| | | <Card |
| | | className='drawer-card' |
| | | hoverable |
| | | bordered={false} |
| | | type='inner' |
| | | tabList={[ |
| | | { |
| | | key: 'json', |
| | | tab: intl.formatMessage({ id: 'map.drawer.json', defaultMessage: 'JSON' }), |
| | | }, |
| | | ]} |
| | | activeTabKey={activeTabKey} |
| | | onTabChange={(key) => { |
| | | setActiveTabKey(key) |
| | | }} |
| | | tabProps={{ |
| | | centered: true, |
| | | size: 'large', |
| | | type: "card", |
| | | style: { |
| | | } |
| | | }} |
| | | style={{ |
| | | height: '100%' |
| | | }} |
| | | > |
| | | {contentList[activeTabKey]} |
| | | </Card> |
| | | </> |
| | | ) |
| | | } |
| | | |
| | | export default ShuttleDrawer; |
| | |
| | | ) |
| | | }) |
| | | break; |
| | | case Utils.SENSOR_TYPE.SHUTTLE: |
| | | options.push({ |
| | | value: value, |
| | | label: |
| | | ( |
| | | <> |
| | | <span style={{ fontWeight: 'bold' }} >{intl.formatMessage({ id: 'map.sensor.type.shuttle', defaultMessage: '穿梭车' })}</span> |
| | | </> |
| | | ) |
| | | }) |
| | | break; |
| | | case Utils.SENSOR_TYPE.AGV: |
| | | options.push({ |
| | | value: value, |
| | |
| | | }) |
| | | |
| | | export const SENSOR_TYPE = Object.freeze({ |
| | | SHUTTLE: "SHUTTLE", |
| | | SHELF: "SHELF", |
| | | SHUTTLE: "SHUTTLE", |
| | | POINT: "POINT", |
| | | AGV: "AGV", |
| | | }) |
| | | |
| | | export const SENSOR_ZINDEX = Object.freeze({ |
| | | SHELF: 1, |
| | | POINT: 1, |
| | | SHUTTLE: 100, |
| | | AGV: 100, |
| | | }) |
| | | |
| | | export const SHELF_TYPE = Object.freeze({ |
| | |
| | | sprite = new PIXI.Sprite(PIXI.Texture.from(shuttle, { resourceOptions: { scale: 5 } })); |
| | | sprite.width = 50; |
| | | sprite.height = 50; |
| | | sprite.zIndex = 100; |
| | | sprite.zIndex = SENSOR_ZINDEX.SHUTTLE; |
| | | break; |
| | | case SENSOR_TYPE.AGV: |
| | | sprite = new PIXI.Sprite(PIXI.Texture.from(agv, { resourceOptions: { scale: 5 } })); |
| | | sprite.width = 50; |
| | | sprite.height = 50; |
| | | sprite.zIndex = 100; |
| | | sprite.zIndex = SENSOR_ZINDEX.AGV; |
| | | break; |
| | | case SENSOR_TYPE.SHELF: |
| | | sprite = new PIXI.Sprite(PIXI.Texture.from(shelf, { resourceOptions: { scale: 1 } })); |
| | | sprite.width = 60; |
| | | sprite.height = 60; |
| | | sprite.zIndex = 1; |
| | | sprite.zIndex = SENSOR_ZINDEX.SHELF; |
| | | break; |
| | | case SENSOR_TYPE.POINT: |
| | | sprite = new PIXI.Sprite(PIXI.Texture.from(point, { resourceOptions: { scale: 5 } })); |
| | | sprite.width = 10; |
| | | sprite.height = 10; |
| | | sprite.zIndex = 1; |
| | | sprite.zIndex = SENSOR_ZINDEX.POINT; |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | effectHalfCircle.endFill(); |
| | | effectHalfCircle.position.set(sprite.x, sprite.y); |
| | | effectHalfCircle.scale.set(1 / scale); |
| | | effectHalfCircle.zIndex = 9999; |
| | | |
| | | effectRectangle = new PIXI.Graphics(); |
| | | effectRectangle.lineStyle(5 * scale, color, 1); |
| | | effectRectangle.drawRoundedRect(0, 0, sideLen, sideLen, 16 * scale); |
| | | effectRectangle.endFill(); |
| | | effectRectangle.mask = effectHalfCircle; |
| | | effectRectangle.zIndex = 9999; |
| | | |
| | | const scaledWidth = sideLen * (1 / scale); |
| | | const scaledHeight = sideLen * (1 / scale); |
| | |
| | | copiedSprite.rotation = sprite.rotation; |
| | | copiedSprite.data = deepCopy(sprite.data); |
| | | copiedSprite.data.uuid = generateID(); |
| | | showSheflType(copiedSprite); |
| | | if (copiedSprite.data.type === SENSOR_TYPE.SHELF) { |
| | | showSheflType(copiedSprite); |
| | | } |
| | | return copiedSprite; |
| | | } |
| | | |
| | |
| | | label: intl.formatMessage({ id: 'map.sensor.type.shelf', defaultMessage: '货架' }) |
| | | }) |
| | | break; |
| | | case SENSOR_TYPE.SHUTTLE: |
| | | options.push({ |
| | | value: value, |
| | | label: intl.formatMessage({ id: 'map.sensor.type.shuttle', defaultMessage: '穿梭车' }) |
| | | }) |
| | | break; |
| | | case SENSOR_TYPE.AGV: |
| | | options.push({ |
| | | value: value, |