import React, { useState, useEffect, useContext } from 'react'; import { Modal, Form, Input, Select, Button, Switch, TreeSelect, message, Space } from 'antd'; import apiObj from '@api/index'; import utils from '@utils/index' import UserContext from './user-context'; import { useSelector } from 'react-redux' import Item from 'antd/lib/list/Item'; const { post, api, xPost } = apiObj; const { Option, OptGroup } = Select; const { organizationData } = utils; const { SHOW_PARENT } = TreeSelect; function AddUser(props) { useEffect(() => { getHospitalTree(); getCreateRoles() }, []); const [form] = Form.useForm(); const { userId, type, formData, roleList } = useContext(UserContext); const [treeData, setTreeData] = useState([]); const [treeRloe, setTreeRloe] = useState([]); const [addHospitalTreeVO, setAddHospitalTreeVO] = useState({ depts: [], hospitals: [] }); const staticInfo = useSelector(state => { return state.staticInfo; }); const { titleList } = staticInfo; const initialValues = formData; console.log(form.getFieldsValue()) let addHospitalTreeVOs = { depts: [], hospitals: [], } //获取当前用户组织 function getHospitalTree() { post(api.getHospitalTree).then((res) => { if (res.data.code === 200) { const data = res.data.data; const treeData = organizationData(data) setTreeData(treeData) } }) } function addAttr(data) { for (var j = 0; j < data.length; j++) { data[j].title = data[j].name //添加title属性 data[j].key = data[j].code //添加key属性 if (data[j].children.length > 0) { addAttr(data[j].children) } } return data } //获取当前用于所属角色 function getCreateRoles() { const params = { softwareId: '' } xPost(api.getCreateRoles, params).then((res) => { if (res.data.code === 200) { const data = res.data.data; let arr = JSON.parse(JSON.stringify(data).replaceAll(/name/g, 'title').replaceAll(/id/g, 'value')) setTreeRloe(arr) } }) } // 去重 function unique(arr) { return arr.filter(function (item, index, arr) { return arr.indexOf(item, 0) === index; }); } function swichChange(val) { form.setFieldsValue({ status: val ? 1 : 0 }) } // 判断元素存在格式 function getSameNum(val, arr) { let processArr = arr.filter(function (value) { return value == val; }) return processArr.length; } //递归获取科室 function gethospitals(arr, val) { arr.forEach(item => { if (item.value == val) { if (item.children) { getdepts(item.children) } if (item.children && item.depts) { item.children.forEach(item => { addHospitalTreeVOs.depts.push(item.value.split('-')[1]) }) } } else { if (item.children) { gethospitals(item.children, val) } } }) } //递归获取医院 function getdepts(arr) { arr.forEach(item => { if (JSON.stringify(item.value).indexOf('-') < 0) { addHospitalTreeVOs.hospitals.push(item.value) } if (item.children && item.depts) { item.children.forEach(it => { addHospitalTreeVOs.depts.push(it.value.split('-')[1]) }) return } if (item.children) { getdepts(item.children) } }) } const onChange = value => { value.forEach(it => { if (JSON.stringify(it).indexOf('-') > 0) { addHospitalTreeVOs.depts.push(it.split('-')[1]) } else { addHospitalTreeVOs.hospitals.push(it) gethospitals(treeData, it) } }) setAddHospitalTreeVO(addHospitalTreeVOs) console.log(form.getFieldsValue()) }; const onChangeRloe = value => { form.setFieldsValue({ roles: value }) }; const onFinish = values => { let params = values addHospitalTreeVO.hospitals = unique(addHospitalTreeVO.hospitals) params.addHospitalTreeVO = addHospitalTreeVO if (type == 2) { params.id = userId editUser(params) } else { addUser(params) } }; function addUser(param) { post(api.addUser, param).then((res) => { if (res.data.code === 200) { props.userChange() message.success(res.data.message); form.resetFields(); } else { message.error(res.data.message); } }) } function editUser(param) { post(api.updateUser, param).then((res) => { if (res.data.code === 200) { props.userChange() message.success(res.data.message); form.resetFields(); } else { message.error(res.data.message); } }) } function cancel() { props.userChange() } return ( <>