import React, { useEffect, useState } from "react"
import { Form, Select, TreeSelect, Input, Modal, message } from "antd"
import { useRequest, useModel } from 'umi';
import { screenSave } from '../service';

import style from "../index.less"

const { Option } = Select

const AddPageModal = ({ setAddPageModalShow , isShow , formValues, selectTreeData, onSubmit,selectArea }) => {
    const pageTypeList = ["前台", "后台"]
    const pageSizeList = ["自定义", "1920*1080", "1080*560"]
    // 新页面创建表单
    const [form] = Form.useForm()
    
    const [confirmLoading, setConfirmLoading] = useState(false);
    const [measurement, setMeasurement] = useState(formValues?.measurement);

    const {initialState} = useModel('@@initialState')


    useEffect(() => {
        setMeasurement(formValues?.measurement)
        form.resetFields();
    }, [formValues]);

    // 点击弹框取消按钮
    const addModalHide = () => {
        setAddPageModalShow(false)
    }

    const fetchSave = useRequest(screenSave, {
        manual: true,
        onSuccess: res => {
          message.success('操作成功')
          setAddPageModalShow(false);
          setConfirmLoading(false);
          onSubmit();    
        }
      });

    // 点击弹框确定按钮
    const addModalShow = (e) => {
        e.preventDefault();
        setConfirmLoading(true);
        form.validateFields()
            .then((values) => {
                fetchSave.run({ projectId: initialState.currentUser?.currentProjectId, screenMode: {}, ...(formValues || {}), ...values });
            })
            .catch((info) => {
                console.log('Validate Failed:', info);
        });
    }

    const handleMeasurementChange = (value) => {
        if (value.indexOf('*') > -1) {
            const values = value.split('*')
            form.setFieldsValue({wight: values[0], high: values[1]})
        } else {

        }
        setMeasurement(value)
    }

    return <Modal
        title={<span style={{fontWeight: 'bold'}}>{(formValues && formValues.id) ? '修改' : '创建' }页面</span>}
        onOk={addModalShow}
        onCancel={addModalHide}
        confirmLoading={confirmLoading}
        visible={isShow}
        className={style.new_page_modal}
    >
        <Form form={form} initialValues={ formValues }>
            <Form.Item label="id" name="id" style={{ display: 'none' }}>
                <Input placeholder="请输入" />
            </Form.Item>
            <Form.Item label="页面名称" name="name" rules={[{ required: true, message: "输入不能为空!" }]}>
                <Input placeholder="请输入" />
            </Form.Item>
            <Form.Item label="编号" name="identifierID" rules={[{ required: true, message: "输入不能为空!" }]}>
                <Input placeholder="请输入" />
            </Form.Item>
            <Form.Item label="页面类型" name="type" rules={[{ required: true, message: "输入不能为空!" }]}>
                <Select>
                    {
                        pageTypeList.map(i => {
                            return <Option key={i}>{i}</Option>
                        })
                    }
                </Select>
            </Form.Item>
            <Form.Item label="所属系统" name="systemId" rules={[{ required: true, message: "输入不能为空!" }]}>
                <TreeSelect
                    treeData={ selectTreeData }
                />
            </Form.Item>
            <Form.Item label="页面尺寸" name="measurement" rules={[{ required: true, message: "输入不能为空!" }]}>
                <Select onChange={ handleMeasurementChange }>
                    {
                        pageSizeList.map(i => {
                            return <Option key={i}>{i}</Option>
                        })
                    }
                </Select>
            </Form.Item>
            <Form.Item label="宽度" name="wight" rules={[{ required: true, message: "输入不能为空!" }]}>
                <Input placeholder="请输入" readOnly={measurement !== '自定义'} />
            </Form.Item>
            <Form.Item label="高度" name="high" rules={[{ required: true, message: "输入不能为空!" }]}>
                <Input placeholder="请输入" readOnly={measurement !== '自定义'} />
            </Form.Item>
            <Form.Item label="所属部门" name="organizationId" rules={[{ required: false, message: "输入不能为空!" }]}>
                <TreeSelect
                    filterTreeNode
                    treeNodeFilterProp="title"
                    showSearch
                    allowClear
                    treeDefaultExpandAll
                    style={{ width: '100%' }}
                    dropdownMatchSelectWidth = {350}
                    dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
                    placeholder="请选择所在部门"
                    treeData={selectArea}
                />
            </Form.Item>
        </Form>
    </Modal>
}

export default AddPageModal;