import React, { useState, useEffect, useRef } from 'react';
import { Form, Input, Button, Table, Select, Pagination, Space, Menu, Dropdown, Modal, Breadcrumb, message, Row, Col } from 'antd';
import { DownOutlined, PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
import AddUser from './addUser'
import '@common/common.less';
import { useSelector } from 'react-redux'
import apiObj from '@api/index';
import UserContext from './user-context';
const { post, api, xPost } = apiObj;
const { Option } = Select;
function UserManager() {
useEffect(() => {
getUserPage();
}, []);
const [userList, setUserList] = useState([]);
const [title, setTitle] = useState("");
const [visible, setVisible] = useState(false);
const [userId, setUserId] = useState("");
const [msvisible, setMsvisible] = useState(false);
const [modalType, setModalType] = useState("");
const [type, setType] = useState("");
const [formData, setFormData] = useState(null);
const [username, setUsername] = useState(null);
const [roleList, setRoleList] = useState([]);
const [total, setTotal] = useState(0);
const [form] = Form.useForm();
const tipText = {
1: '确定要删除该用户?',
2: '禁用后该用户将无法登录,确定要禁用该用户?',
3: '确定要重置该用户密码?',
};
const staticInfo = useSelector(state => {
return state.staticInfo;
});
let list = []
let params = {
pages: 1,
current: 1,
size: 15
}
const { statusList } = staticInfo;
//新增弹窗
const showModal = (name, type, flag, userId) => {
setVisible(type);
setTitle(name);
setType(flag)
setUserId(userId)
if (flag == 1) {
setFormData({
status: '1'
})
}
if (flag == 3 || flag == 2) {
getUserById(userId)
}
}
//表格数据
function getUserPage() {
post(api.getUserPage, params).then((res) => {
if (res.data.code === 200) {
const data = res.data.data;
setUserList(data.records);
setTotal(data.total)
}
})
}
//查看用户
function getUserById(userId) {
xPost(api.getUserById, { userId: userId }).then((res) => {
if (res.data.code === 200) {
const data = res.data.data;
let roles = []
data.roles.forEach(item => {
roles.push(item.roleId)
})
const arr = {
username: data.username,
mobilePhone: data.mobilePhone,
password: data.password,
againpassword: data.password,
name: data.name,
idcard: data.idcard,
addHospitalTreeVO: getHospitals(data.hospitals),
titleId: data.titleId,
jobNo: data.jobNo,
roles: roles,
orderNo: data.orderNo,
status: data.status,
}
setRoleList(data.roles)
setFormData(arr)
}
})
}
// 处理组织结构数据回显
function getHospitals(arr) {
arr.forEach((item, i, array) => {
item.value = item.hospitalId
item.title = item.hospitalName
if (!item.children && item.depts) {
item.depts.forEach(it => {
it.value = item.parentId + '-' + it.deptId
if (it.relation == 1) {
list.push(it.value)
}
})
}
if (item.type != 0 && item.relation == 1) {
list.push(item.value)
console.log(list)
}
if (item.children) {
getHospitals(item.children)
}
})
return list
}
// 禁用/启用接口
function disableUser(userId, status) {
const param = { userId: userId, status: status };
xPost(api.disableUser, param).then((res) => {
if (res.data.code === 200) {
getUserPage();
setMsvisible(false);
message.success((status ? '启用' : '禁用') + "成功");
} else {
message.warning(res.data.msg || '操作失败');
}
}).catch(() => {
message.error("接口出错");
});
}
//重置密码
function onResetPsd() {
// const param = { HospitalId: operId };
// xPost(api.disableHospital, param).then((res) => {
// if (res.data.code === 200) {
// getUserPage();
// message.success("重置成功");
// } else {
// message.warning(res.data.msg || '操作失败');
// }
// }).catch(() => {
// message.error("接口出错");
// });
}
//删除
function deleteUser() {
const param = { userId: userId };
xPost(api.deleteUser, param).then((res) => {
if (res.data.code === 200) {
getUserPage();
setMsvisible(false);
message.success("删除成功");
} else {
message.warning(res.data.msg || '操作失败');
}
}).catch(() => {
message.error("接口出错");
});
}
function onSizeChange(current, pageSize) {
params.current = current
params.size = pageSize
getUserPage()
}
function changePage(page, pageSize) {
params.current = page
params.size = pageSize
getUserPage()
}
const onFinish = (value) => {
params = {
...params,
...value
}
getUserPage();
};
const onReset = () => {
form.resetFields();
getUserPage();
};
const messageBox = (type, id) => {
setMsvisible(true)
setUserId(id)
setModalType(type)
}
//提示框确认事件
function handleOk() {
if (modalType == 1) {
deleteUser(userId)
} else if (modalType == 2) {
disableUser(userId, 0)
} else if (modalType == 3) {
onResetPsd();
}
}
//提示框取消
function handleCancel() {
setMsvisible(false);
}
function cancel() {
setVisible(false)
setFormData(null)
}
function userChange() {
setVisible(false)
}
const columns = [
{ title: '用户名', dataIndex: 'username', key: 'index' },
{ title: '姓名', dataIndex: 'name', key: 'index' },
{ title: '所属组织', dataIndex: 'hospitalName', key: 'index' },
{ title: '工号', dataIndex: 'jobNo', key: 'index' },
{
title: '状态', dataIndex: 'status', key: 'status', render: (text, record) => (