import React, { useState, useRef, useEffect } from 'react';
|
import { Col, Form, Input, Row, Switch, Slider, message, Drawer, Space, Button, InputNumber, Segmented } 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 MapCopySettings = (props) => {
|
const intl = useIntl();
|
const { styles } = useStyles();
|
const { curSprite } = props;
|
const [form] = Form.useForm();
|
const [autoIncrement, setAutoIncrement] = useState(false);
|
const [autoIncrementError, setAutoIncrementError] = useState(null);
|
|
useEffect(() => {
|
setAutoIncrement(false);
|
form.resetFields();
|
if (curSprite && props) {
|
form.setFieldsValue({
|
...props.values,
|
});
|
}
|
}, [form, props]);
|
|
useEffect(() => {
|
if (autoIncrement === true && curSprite) {
|
switch (curSprite.data?.type) {
|
case Utils.SENSOR_TYPE.SHELF:
|
if (!curSprite.data?.row || !curSprite.data?.bay) {
|
setAutoIncrementError(intl.formatMessage({ id: 'map.settings.sub.copy.warn.config.shelf', defaultMessage: '请先设置货架参数!' }));
|
} else {
|
setAutoIncrementError(null);
|
}
|
break;
|
default:
|
break;
|
}
|
} else {
|
setAutoIncrementError(null);
|
}
|
}, [autoIncrement])
|
|
const handleCancel = () => {
|
props.onClose();
|
}
|
|
const handleOk = () => {
|
form.submit();
|
}
|
|
const handleFinish = (values) => {
|
props.submit({
|
...values
|
, ...props.values
|
, autoIncrement: autoIncrement
|
, type: curSprite?.data?.type
|
})
|
}
|
|
return (
|
<>
|
<Drawer
|
title={intl.formatMessage({ id: 'map.settings.sub.copy.rule', defaultMessage: '复制规则' })}
|
width={350}
|
closable={false}
|
open={props.open}
|
getContainer={props.refCurr}
|
rootStyle={{ position: "absolute" }}
|
onClose={handleCancel}
|
extra={
|
<Space>
|
<Button onClick={handleCancel}>
|
<FormattedMessage id='common.cancel' defaultMessage='取消' />
|
</Button>
|
<Button onClick={handleOk} type="primary">
|
<FormattedMessage id='common.submit' defaultMessage='确定' />
|
</Button>
|
</Space>
|
}
|
>
|
<Form
|
form={form}
|
initialValues={{
|
copyGap: 0,
|
autoIncrement: false,
|
incrementMode: 'ascending',
|
}}
|
onFinish={handleFinish}
|
autoComplete="off"
|
style={{
|
maxWidth: 300,
|
}}
|
size='default'
|
variant='filled'
|
labelWrap
|
disabled={false}
|
layout='horizontal'
|
>
|
<Row gutter={[16, 0]}>
|
|
<Col span={24}>
|
<Form.Item
|
label={intl.formatMessage({ id: 'map.settings.sub.copy.dire', defaultMessage: '方向' })}
|
labelCol={{ span: 8 }}
|
>
|
<span>{props?.values?.copyDire}</span>
|
</Form.Item>
|
</Col>
|
|
<Col span={24}>
|
<Form.Item
|
label={intl.formatMessage({ id: 'map.settings.sub.copy.count', defaultMessage: '数量' })}
|
labelCol={{ span: 8 }}
|
>
|
<span>{props?.values?.copyCount}</span>
|
</Form.Item>
|
</Col>
|
|
<Col span={24}>
|
<Form.Item
|
name='copyGap'
|
label={intl.formatMessage({ id: 'map.settings.sub.copy.gap', defaultMessage: '间距' })}
|
labelCol={{ span: 8 }}
|
>
|
<InputNumber
|
style={{
|
width: '60%',
|
}}
|
// min={0}
|
/>
|
</Form.Item>
|
</Col>
|
|
{/* switch auto increment */}
|
<Col span={24}>
|
<Form.Item
|
label={intl.formatMessage({ id: 'map.settings.sub.copy.shelf.auto-increment', defaultMessage: '自增长' })}
|
labelCol={{ span: 8 }}
|
help={autoIncrementError}
|
validateStatus={autoIncrementError ? "error" : null}
|
>
|
<Switch value={autoIncrement} onChange={setAutoIncrement} />
|
</Form.Item>
|
</Col>
|
|
{autoIncrement && curSprite?.data?.type === Utils.SENSOR_TYPE.AGV && (
|
<>
|
<Col span={24}>
|
<Form.Item
|
name='incrementValue'
|
label={intl.formatMessage({ id: 'map.settings.sub.copy.shelf.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.SHELF && (
|
<>
|
<Col span={24}>
|
<Form.Item
|
name='incrementValue'
|
label={intl.formatMessage({ id: 'map.settings.sub.copy.shelf.increment-value', defaultMessage: '自增长值' })}
|
labelCol={{ span: 8 }}
|
initialValue='row'
|
>
|
<Segmented
|
block
|
options={[
|
{
|
label: intl.formatMessage({ id: 'map.settings.shelf.row', defaultMessage: '排' }),
|
value: 'row'
|
},
|
{
|
label: intl.formatMessage({ id: 'map.settings.shelf.bay', defaultMessage: '列' }),
|
value: 'bay'
|
},
|
]}
|
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>
|
</>
|
)}
|
|
</Row>
|
</Form>
|
</Drawer>
|
</>
|
)
|
}
|
|
export default MapCopySettings;
|