Junjie
2024-03-19 ec2e79e0d510568d51714a7121e4a32c026e6d44
zy-asrs-flow/src/pages/map/components/mapCopySettings.jsx
@@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from 'react';
import { Col, Form, Input, Row, Checkbox, Slider, Select, Drawer, Space, Button, InputNumber, Switch } from 'antd';
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'
@@ -14,16 +14,36 @@
    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,
                copyGap: 0
            });
        }
    }, [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();
@@ -34,11 +54,12 @@
    }
    const handleFinish = (values) => {
        props.submit({ ...values, ...props.values })
    }
    const formValuesChange = () => {
        props.submit({
            ...values
            , ...props.values
            , autoIncrement: autoIncrement
            , type: curSprite?.data?.type
        })
    }
    return (
@@ -64,8 +85,10 @@
            >
                <Form
                    form={form}
                    onFieldsChange={formValuesChange}
                    initialValues={{
                        copyGap: 0,
                        autoIncrement: false,
                        incrementMode: 'ascending',
                    }}
                    onFinish={handleFinish}
                    autoComplete="off"
@@ -108,26 +131,121 @@
                                    style={{
                                        width: '60%',
                                    }}
                                    // min={0}
                                // min={0}
                                />
                            </Form.Item>
                        </Col>
                        {curSprite?.data?.type === 'AGV' && (
                            <Col span={24}>
                                <Form.Item
                                    name='id'
                                    label={intl.formatMessage({ id: 'map.settings.sub.copy.id', 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>