pyt
2025-02-26 403da33c30fc628c1608b96d95efdc12e70c3b06
management/src/pages/setting/user/components/addAndEdit.jsx
@@ -1,7 +1,7 @@
import { Form, Input, Modal, Tree, Button, Spin, Row, Col, Select } from 'antd';
import { Form, Input, Modal, Tree, Button, Spin, Row, Col, Select, Radio } from 'antd';
import { forwardRef, useImperativeHandle, useState } from 'react';
import { useEffect } from 'react';
import { getTree, getAddTree } from '../service';
import { getDepartmentList } from '../service';
import { Color } from 'antd/es/color-picker';
const formItemLayout = {
    labelCol: { span: 8 },
@@ -27,7 +27,7 @@
    //所属角色
    const [roleList, setRoleList] = useState([])
    //账号层级
    const [levelList, setLevelList] = useState([])
    const [levelList, setLevelList] = useState([{ name: '市级账号', value: 1 }, { name: '区县账号', value: 2 }, { name: '街道账号', value: 3 }, { name: '社区账号', value: 4 }, { name: '党员账号', value: 5 }])
    //所属区县
    const [countyList, setCountyList] = useState([])
    //所属街道
@@ -39,9 +39,18 @@
    useEffect(() => {
        // 获取权限树
        getAddTree().then(res => {
            setTreeData(res.data)
        // 获取单位
        getDepartmentList(1).then(res => {
            setOneCompanyList(() => res.data)
        })
        getDepartmentList(2).then(res => {
            setTwoCompanyList(() => res.data)
        })
        getDepartmentList(3).then(res => {
            setThreeCompanyList(() => res.data)
        })
        getDepartmentList(4).then(res => {
            setThreeCompanyList(() => res.data)
        })
    }, [])
@@ -119,7 +128,7 @@
                <Row>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="oneDepartmentId"
                            label="所属一级单位"
                            rules={[{ required: true, message: '请选择所属一级单位' }]}
                        >
@@ -127,7 +136,7 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={oneCompanyList}
                                options={oneCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -136,15 +145,14 @@
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="twoDepartmentId"
                            label="所属二级单位"
                            rules={[{ required: true, message: '请选择所属二级单位' }]}
                        >
                            <Select
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={twoCompanyList}
                                options={twoCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -153,15 +161,14 @@
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="threeDepartmentId"
                            label="所属三级单位"
                            rules={[{ required: true, message: '请选择所属三级单位' }]}
                        >
                            <Select
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={threeCompanyList}
                                options={threeCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -172,15 +179,14 @@
                <Row>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="fourDepartmentId"
                            label="所属四级单位"
                            rules={[{ required: true, message: '请选择所属四级单位' }]}
                        >
                            <Select
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={fourCompanyList}
                                options={fourCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -191,7 +197,7 @@
                <Row>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="systemPostId"
                            label="所属职位"
                            rules={[{ required: true, message: '请选择所属职位' }]}
                        >
@@ -199,7 +205,7 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={positionList}
                                options={positionList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -208,7 +214,7 @@
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="systemRoleId"
                            label="所属角色"
                            rules={[{ required: true, message: '请选择所属角色' }]}
                        >
@@ -216,7 +222,7 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={roleList}
                                options={roleList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -227,7 +233,7 @@
                <Row>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="accountLevel"
                            label="账号层级"
                            rules={[{ required: true, message: '请选择账号层级' }]}
                        >
@@ -235,51 +241,43 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={levelList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                                options={levelList}
                                fieldNames={{ label: 'name', value: 'value' }}
                            // filterOption={false}
                            >
                            </Select >
                        </Form.Item>
                    </Col>
                    <Col span={16}>
                        {/* <div style={{ display: "flex",flex:1 }}> */}
                        <Form.Item
                            label="是否管理员"
                            labelCol={{ span: 4 }}
                            wrapperCol={{ span: 20 }}
                            style={{marginBottom:0}}
                            style={{ marginBottom: 0 }}
                        >
                            <div style={{ display: "flex", flex: 1 }}>
                                <Form.Item
                                    name="name"
                                    rules={[{ required: true, message: '请选择账号层级' }]}
                                    name="isAdmin"
                                    rules={[{ required: true, message: '是否管理员' }]}
                                >
                                    <Select
                                        key="searchSelect"
                                        allowClear
                                        style={{width:'280px'}}
                                        placeholder="请选择"
                                        dataSource={levelList}
                                        fieldNames={{ label: 'name', value: 'id' }}
                                        filterOption={false}
                                    >
                                    </Select >
                                    <Radio.Group
                                        // style={style}
                                        // onChange={onChange}
                                        // value={value}
                                        options={[{ value: 1, label: '否', }, { value: 2, label: '是', },
                                        ]}
                                    />
                                </Form.Item>
                                <div style={{fontSize:'12px',Color:"rgba(0,0,0,0.5)"}}>管理员主要用于接收实现临期提醒,以及上级端登录</div>
                                <div style={{ fontSize: '12px', color: "rgba(0,0,0,0.5)", marginLeft: "10px" }}>管理员主要用于接收实现临期提醒,以及上级端登录</div>
                            </div>
                        </Form.Item>
                        {/* <div>管理员主要用于接收实现临期提醒,以及上级端登录</div>
                        </div> */}
                    </Col>
                </Row>
                <Row>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="districts"
                            label="所属区县"
                            rules={[{ required: true, message: '请选择所属区县' }]}
                        >
@@ -287,7 +285,7 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={oneCompanyList}
                                options={oneCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -296,7 +294,7 @@
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="street"
                            label="所属街道"
                            rules={[{ required: true, message: '请选择所属街道' }]}
                        >
@@ -304,7 +302,7 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={twoCompanyList}
                                options={twoCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -313,7 +311,7 @@
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="name"
                            name="community"
                            label="所属社区"
                            rules={[{ required: true, message: '请选择所属社区' }]}
                        >
@@ -321,7 +319,7 @@
                                key="searchSelect"
                                allowClear
                                placeholder="请选择"
                                dataSource={threeCompanyList}
                                options={threeCompanyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
@@ -331,18 +329,91 @@
                </Row>
                <Row>
                    <Col span={16}>
                        <div style={{ display: 'flex' }}>
                        </div>
                        <Form.Item
                            label="联系方式"
                            labelCol={{ span: 4 }}
                            wrapperCol={{ span: 20 }}
                            style={{ marginBottom: 0 }}
                        >
                            <div style={{ display: "flex", flex: 1 }}>
                                <Form.Item
                                    name="phone"
                                    rules={[{
                                        validator: (rule, value) => {
                                            return new Promise((resolve, reject) => {
                                                if (!value) {
                                                    reject('请输入联系方式');
                                                }
                                                const phoneRegex = /^((\+86)?(13|14|15|16|17|18|19)[0-9]{9})|((\+86)?(0[0-9]{2,3})?([2-9][0-9]{6,7}))$/;
                                                if (!phoneRegex.test(value)) {
                                                    reject('请输入正确的电话号码');
                                                }
                                                resolve('');
                                            });
                                        },
                                    }]}
                                >
                                    <Input disabled={detailType} placeholder='请输入联系方式' />
                                </Form.Item>
                                <div style={{ fontSize: '12px', color: "rgba(0,0,0,0.5)", marginLeft: "10px" }}>联系方式将作为登录账号使用</div>
                            </div>
                        </Form.Item>
                    </Col>
                </Row>
                <Row>
                    <Col span={8}>
                        <Form.Item
                            required
                            name="password"
                            label="登录密码"
                            rules={[{
                                validator: (rule, value) => {
                                    return new Promise((resolve, reject) => {
                                        if (!value) {
                                            reject('请输入新密码');
                                        }
                                        const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
                                        if (!passwordRegex.test(value)) {
                                            reject('密码需要包含大小写字母,数字和特殊符号,且长度为8位以上');
                                        }
                                        resolve('');
                                    });
                                },
                            }]}
                        >
                            <Input.Password disabled={detailType} placeholder='请输入' />
                        </Form.Item>
                    </Col>
                    <Col span={8}>
                    </Col>
                    <Col span={8}>
                    <Col span={16}>
                        <Form.Item
                            label="确认密码"
                            required
                            labelCol={{ span: 4 }}
                            wrapperCol={{ span: 20 }}
                            style={{ marginBottom: 0 }}
                        >
                            <div style={{ display: "flex", flex: 1 }}>
                                <Form.Item
                                    name="surePassword"
                                    rules={[{
                                        validator: (rule, value) => {
                                            return new Promise((resolve, reject) => {
                                                if (!value) {
                                                    reject('请再次输入新密码');
                                                }
                                                if (value != form.getFieldValue('password')) {
                                                    reject('两次密码请保持一致');
                                                }
                                                resolve('');
                                            });
                                        },
                                    },]}
                                >
                                    <Input.Password disabled={detailType} placeholder='请输入' />
                                </Form.Item>
                                <div style={{ fontSize: '12px', color: "rgba(0,0,0,0.5)", marginLeft: "10px" }}>密码需要包含大小写字母,数字和特殊符号,且长度为8位以上</div>
                            </div>
                        </Form.Item>
                    </Col>
                </Row>