ViewModal.jsx 5.05 KB
Newer Older
DarkForst's avatar
DarkForst committed
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 134 135 136 137 138 139 140 141 142 143 144 145
import React, { useState,useEffect } from 'react';
import { TreeSelect, Modal, Form, Input, Button, Select, Row, Col } from 'antd';
import { connect } from 'umi';
import { dispatchHandle } from "@/utils/publicHandle";
import useUpdateEffect from '@/useHooks/useUpdateEffect';
import { getChildById } from '@/utils/common';
import { dicFindUtils,DictBizType,ApproveType,convertFieldToNum, } from '@/utils/utils';
const { Option } = Select;
const { TreeNode } = TreeSelect;

const ViewModal = (props) => {
    const [form] = Form.useForm();
    const [have, setHave] = useState(undefined);
    const [initDetail, setInitDetail] = useState({});
    const {
        viewVisible,
        modalType,
        dispatch,
        InfoModel: { infoRuleDetail },
        user: { userTree },
        dict: {
            dicTotalsList
        }
    } = props;
   const  postTypeArr = dicTotalsList && dicFindUtils(dicTotalsList, DictBizType.postType) || []; // 岗位数据

    useUpdateEffect(() => {
        form.resetFields();

    }, [props.InfoModel.infoRuleDetail.id]);

    const handleClose = () => {
        props.handleClose();
    }
    const selectTree = value => {
        setHave({ value });
    };
    const formItemLayout = {
        labelCol: { span: 6 },
        wrapperCol: { span: 16 }
    };
    const formItemLayout2 = {
        labelCol: { span: 5 },
        wrapperCol: { span: 18 }
    };
    let allUser = [];
     const initTreeData = (tree) => {
        if (!tree || tree?.length === 0) return;
        return tree && tree.length && tree.map(item => {
            const users = item?.userList || []
            let children = initTreeData(item.subList);
            if (users.length > 0) {
                const userList = users.map(user => ({
                    title: user?.name,
                    key: `user-${user?.id}`,
                    id: user?.id,
                    avatarUrl: user?.avatarUrl,
                    selectable: true
                }))
                children = children?.length > 0 ? children.concat(userList) : userList
                allUser = allUser.concat(item.userList)
            }
            return {
                title: item?.name,
                key: item?.id,
                id: item?.id,
                children,
                //selectable: false
            }
        })
    }
    console.log(`infoRuleDetail is`, infoRuleDetail);
    useEffect(() => {
        const {
            user: {
                userTree
            },
            
        } = props;
        const newTree = initTreeData(userTree);

        let allNodes = [];
        const areaIdAndSub = infoRuleDetail?.areaIdAndSub || [];
        const users = infoRuleDetail?.users || [];
        const roleIds = infoRuleDetail?.roleIds || [];
        allNodes = [
            ...areaIdAndSub,
            ...users
        ];
        const areaIdAndSubArr = [], roleNameArr = [];
        console.log(`newTree is:`, newTree);
        allNodes && allNodes.forEach(item => {
            let nodeResult = getChildById(newTree, item);
            areaIdAndSubArr.push(nodeResult?.title);
        });
        roleIds && roleIds.forEach(item => {
            let nodeResult = getChildById(postTypeArr, item);
            roleNameArr.push(nodeResult?.dicValue);
        });

        let detail = {
            ...infoRuleDetail,
            areaIdAndSubArr,
            roleNameArr
        };
        console.log(`after detail is:`, detail);
        setInitDetail(detail);
    }, [infoRuleDetail]);
    return (
        <Modal
            title='查看'
            visible={viewVisible}
            footer={null}
            onCancel={handleClose}
        >
            <Form form={form}>
                <Row>
                    <Col span={24}>
                        <Form.Item  label='通知规则名称' {...formItemLayout} rules={[{ required: true, message: `请选择通知规则` }]}>
                            {initDetail?.ruleName}
                        </Form.Item>
                    </Col>
                    <Col span={24}>
                        <Form.Item label='选择发布平台' {...formItemLayout} rules={[{ required: true, message: `请选择发布平台` }]}>
                            {initDetail?.publishPlatformStr }
                        </Form.Item>
                    </Col>
                    <Col span={24}>
                        <Form.Item label='信息通知对象' {...formItemLayout} rules={[{ required: true, message: `请选择信息通知对象` }]}>
                            {initDetail?.areaIdAndSubArr?.join(',') || '暂无'}
                        </Form.Item>
                    </Col>
                    <Col span={24}>
                        <Form.Item label='信息通知岗位' {...formItemLayout} rules={[{ required: true, message: `请选择信息通知岗位` }]}>
                            {initDetail?.roleNameArr?.join(',') || '暂无'}
                        </Form.Item>
                    </Col>
                </Row>
            </Form>
        </Modal>
    )
}
export default connect(({ InfoModel,user,dict }) => ({
    InfoModel,user,dict
}))(ViewModal);