广州市综治平台前端
xusd
2025-06-07 ee685c9f350ec9241107d4e8a05799768a0bce9a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-03-27 20:39:46
 * @LastEditTime: 2024-05-08 10:46:32
 * @LastEditors: dminyi 1301963064@qq.com
 * @Version: 1.0.0
 * @Description: 新增 or 修改部门
 */
import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
import { Button, Input, Form, Row, Col, Select } from 'antd';
import * as $$ from '../../../utils/utility';
 
const { Option } = Select;
/*
 * isAddOrEditDept, // 是否显示该页面, 'changeDept':'修改';'addOneDept':'新增部门';'addSubordinateDept':'新增下级部门'
 * deptActive, // 当前部门信息
 * unMatchUsers, // 组织下无部门人员
 * handleFinishForm, // 新增组织 or 修改组织
 */
const AddOrEditDept = ({ isAddOrEditDept, deptActive, unMatchUsers, handleFinishForm }) => {
    const [form] = Form.useForm();
 
    const [submitType, setSubmitType] = useState('1');
 
    // 表单信息
    const [formData, setFormData] = useState({});
 
    // select下拉框选择时
    function handleValuesChange(type, values) {
        let obj = {};
        obj[type] = values;
        setFormData({ ...formData, ...obj });
    }
 
    // 重置
    function handleReset() {
        let obj = Object.assign({}, deptActive);
        if (isAddOrEditDept === 'changeDept') {
            obj.matchUsersId = deptActive.matchUsers?.map((x) => x.id) || [];
            form.setFieldsValue({ ...obj });
        } else {
            form.resetFields();
        }
        setFormData(obj);
    }
 
    // 提交表单
    function handleSubmit(type) {
        setSubmitType(type);
        form.submit();
    }
 
    // useEffect(() => {
    //     handleReset();
    // }, [isAddOrEditDept]);
 
    return (
        <div style={{ display: !isAddOrEditDept ? 'none' : '' }}>
            <div className="organization-edit">
                <div className="organization-edit-bg">
                    <Form
                        layout="vertical"
                        form={form}
                        onFinish={(values) => {
                            let formDataCopy = formData;
                            formDataCopy.canFieldName = formDataCopy.canFieldOption?.map((x) => x.children)?.toString() || formDataCopy.canFieldName;
                            formDataCopy.goodFieldName = formDataCopy.goodFieldOption?.map((x) => x.children)?.toString() || formDataCopy.goodFieldName;
                            values.matchUsers =
                                values.matchUsersId?.map((x) => {
                                    return { id: x };
                                }) || [];
                            let submitData = { ...formDataCopy, ...values };
                            delete submitData.matchUsersId;
                            handleFinishForm(submitType, submitData, form);
                        }}
                        onFinishFailed={({ values, errorFields }) => $$.info({ type: 'error', content: errorFields[0].errors })}
                    >
                        <Row gutter={[24, 16]}>
                            <Col span={12}>
                                <Form.Item label="部门名称" name="name" required rules={[{ required: true }]}>
                                    <Input placeholder="请输入" allowClear />
                                </Form.Item>
                            </Col>
                            <Col span={12}>
                                <Form.Item label="部门描述" name="des">
                                    <Input placeholder="请输入" allowClear />
                                </Form.Item>
                            </Col>
                            <Col span={24}>
                                <Form.Item label="部门人员" name="matchUsersId">
                                    <Select
                                        mode="multiple"
                                        placeholder="请选择(可多选)"
                                        filterOption={(inputValue, option) => (option.children.indexOf(inputValue) !== -1 ? true : false)}
                                        allowClear
                                    >
                                        {unMatchUsers.concat(deptActive.matchUsers || []).map((x, t) => {
                                            return <Option key={x.id}>{x.trueName}</Option>;
                                        })}
                                    </Select>
                                </Form.Item>
                            </Col>
                            <Col span={24}>
                                <Form.Item>
                                    <Button type="primary" onClick={() => handleSubmit('1')} className="public-buttonMargin">
                                        {isAddOrEditDept === 'changeDept' ? '保存' : '提交'}
                                    </Button>
                                    {isAddOrEditDept !== 'changeDept' ? (
                                        <Button onClick={() => handleSubmit('2')} className="public-buttonMargin">
                                            提交并继续
                                        </Button>
                                    ) : null}
                                    <Button onClick={handleReset}>重置</Button>
                                </Form.Item>
                            </Col>
                        </Row>
                    </Form>
                </div>
            </div>
        </div>
    );
};
 
AddOrEditDept.propTypes = {
    isAddOrEdit: PropTypes.any,
    deptActive: PropTypes.object,
    unMatchUsers: PropTypes.array,
    handleFinishForm: PropTypes.func,
};
 
export default AddOrEditDept;