|
@@ -1,79 +1,192 @@
|
|
|
-import React, { useState, useEffect } from 'react';
|
|
|
-import { Form, Input, Button, Table, Select, Pagination, Breadcrumb, Space, Menu, Dropdown } from 'antd';
|
|
|
-import { DownOutlined, PlusOutlined } from '@ant-design/icons';
|
|
|
-import NormalPlayer from './testComponent/testComponent'
|
|
|
+import React, { useState, useEffect, useRef } from 'react';
|
|
|
+import { Form, Input, Button, Table, Select, Pagination, Space, Menu, Dropdown, Modal, Breadcrumb, message } from 'antd';
|
|
|
+import { DownOutlined, PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
|
|
|
+import NormalPlayer from './addUser'
|
|
|
import '@common/common.less';
|
|
|
import apiObj from '@api/index';
|
|
|
-const { post, api } = apiObj;
|
|
|
+const { post, api, xPost } = apiObj;
|
|
|
const { Option } = Select;
|
|
|
function UserManager() {
|
|
|
+ const parentRef = useRef();
|
|
|
useEffect(() => {
|
|
|
getUserPage();
|
|
|
}, []);
|
|
|
const [userList, setUserList] = useState([]);
|
|
|
const [title, setTitle] = useState("");
|
|
|
const [visible, setVisible] = useState(false);
|
|
|
- const onFinish = (values) => {
|
|
|
- console.log('Success:', values);
|
|
|
- }
|
|
|
- const ChildrenChange =(val)=> {//这个val就是子组件传来的
|
|
|
+ const [userId, setUserId] = useState("");
|
|
|
+ const [msvisible, setMsvisible] = useState(false);
|
|
|
+ const [modalType, setModalType] = useState("");
|
|
|
+ const [type, setType] = useState("");
|
|
|
+ const [form] = Form.useForm();
|
|
|
+ const tipText = {
|
|
|
+ 1: '确定要删除该用户?',
|
|
|
+ 2: '禁用后该用户将无法登录,确定要禁用该用户?',
|
|
|
+ 3: '确定要重置该用户密码?',
|
|
|
+ };
|
|
|
+ const ChildrenChange = (val) => {
|
|
|
setVisible(false);
|
|
|
+ getUserPage()
|
|
|
+ }
|
|
|
+ const getChildrenMsg = (result, msg) => {
|
|
|
+ // console.log(result, msg)
|
|
|
+ // 很奇怪这里的result就是子组件那bind的第一个参数this,msg是第二个参数
|
|
|
}
|
|
|
- const showModal = (name,type) => {
|
|
|
+ //新增弹窗
|
|
|
+ const showModal = (name, type, flag) => {
|
|
|
setVisible(type);
|
|
|
setTitle(name);
|
|
|
+ setType(flag)
|
|
|
+ if (flag == 3) {
|
|
|
+ getUserById()
|
|
|
+ }
|
|
|
}
|
|
|
+ //表格数据
|
|
|
function getUserPage(param = {}) {
|
|
|
//const param = filterData;
|
|
|
post(api.getUserPage, param).then((res) => {
|
|
|
if (res.data.code === 200) {
|
|
|
const data = res.data.data;
|
|
|
- console.log(data)
|
|
|
setUserList(data.records);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- const menu = (
|
|
|
- <Menu>
|
|
|
- <Menu.Item key="0">
|
|
|
- <a target="_blank" rel="noopener noreferrer" href="https://www.antgroup.com">
|
|
|
- 重置密码
|
|
|
- </a>
|
|
|
- </Menu.Item>
|
|
|
- <Menu.Item key="1">
|
|
|
- <a target="_blank" rel="noopener noreferrer" href="https://www.aliyun.com">
|
|
|
- 禁用
|
|
|
- </a>
|
|
|
- </Menu.Item>
|
|
|
- <Menu.Item key="2">
|
|
|
- <a target="_blank" rel="noopener noreferrer" href="https://www.aliyun.com">
|
|
|
- 删除
|
|
|
- </a>
|
|
|
- </Menu.Item>
|
|
|
- </Menu>
|
|
|
- )
|
|
|
+ //查看用户
|
|
|
+ function getUserById() {
|
|
|
+ xPost(api.getUserById, { userId: 39 }).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 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 enable(userId, status) {
|
|
|
+ disableUser(userId, status)
|
|
|
+ }
|
|
|
+ //重置密码
|
|
|
+ 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 onDelete() {
|
|
|
+ const param = { userId: userId };
|
|
|
+ xPost(api.deleteHospital, param).then((res) => {
|
|
|
+ if (res.data.code === 200) {
|
|
|
+ getUserPage();
|
|
|
+ message.success("删除成功");
|
|
|
+ } else {
|
|
|
+ message.warning(res.data.msg || '操作失败');
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ message.error("接口出错");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 确定按钮
|
|
|
+ function addUser(param = {}) {
|
|
|
+ //const param = filterData;
|
|
|
+ post(api.addUser, param).then((res) => {
|
|
|
+ if (res.data.code === 200) {
|
|
|
+ message.success(res.data.message);
|
|
|
+ form.resetFields();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const onFinish = (value) => {
|
|
|
+ getUserPage(value);
|
|
|
+ };
|
|
|
+ const onReset = () => {
|
|
|
+ form.resetFields();
|
|
|
+ getUserPage();
|
|
|
+ };
|
|
|
+ const messageBox = (type, id) => {
|
|
|
+ setMsvisible(true)
|
|
|
+ setUserId(id)
|
|
|
+ setModalType(type)
|
|
|
+ };
|
|
|
+ // 新增
|
|
|
+ const submit = () => {
|
|
|
+ console.log(parentRef.current)
|
|
|
+ form
|
|
|
+ .validateFields()
|
|
|
+ .then((values) => {
|
|
|
+ let params = parentRef.current.form
|
|
|
+ parentRef.current.addHospitalTreeVO.hospitals = unique(parentRef.current.addHospitalTreeVO.hospitals)
|
|
|
+ params.addHospitalTreeVO = parentRef.current.addHospitalTreeVO
|
|
|
+ addUser(params)
|
|
|
+ })
|
|
|
+ .catch((info) => {
|
|
|
+ console.log('Validate Failed:', info);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ // 去重
|
|
|
+ function unique(arr) {
|
|
|
+ return arr.filter(function (item, index, arr) {
|
|
|
+ return arr.indexOf(item, 0) === index;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //提示框确认事件
|
|
|
+ function handleOk() {
|
|
|
+ if (modalType == 2) {
|
|
|
+ disableUser(userId, 0)
|
|
|
+ } else if (modalType == 2) {
|
|
|
+ disableUser(userId, 0)
|
|
|
+ } else if (modalType == 3) {
|
|
|
+ onResetPsd();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //提示框取消
|
|
|
+ function handleCancel() {
|
|
|
+ setMsvisible(false);
|
|
|
+ }
|
|
|
const columns = [
|
|
|
- { title: '用户名', dataIndex: 'key' },
|
|
|
- { title: '姓名', dataIndex: 'key' },
|
|
|
- { title: '所属组织', dataIndex: 'key' },
|
|
|
- { title: '工号', dataIndex: 'key' },
|
|
|
+ { title: '用户名', dataIndex: 'username', key: 'index' },
|
|
|
+ { title: '姓名', dataIndex: 'name', key: 'index' },
|
|
|
+ { title: '所属组织', dataIndex: 'hospitalName', key: 'index' },
|
|
|
+ { title: '工号', dataIndex: 'jobNo', key: 'index' },
|
|
|
{
|
|
|
- title: '状态', dataIndex: 'key', render: (text, record) => (
|
|
|
+ title: '状态', dataIndex: 'status', key: 'status', render: (text, record) => (
|
|
|
<Space size="middle">
|
|
|
- {record.age == 1 ? (
|
|
|
- <a>查看</a>
|
|
|
- ) : (
|
|
|
- <a >修改</a>
|
|
|
- )}
|
|
|
+ {record.status == 1 ?
|
|
|
+ <span className="Enable">启用</span>
|
|
|
+ :
|
|
|
+ <span className="Disable">禁用</span>
|
|
|
+ }
|
|
|
</Space>
|
|
|
)
|
|
|
},
|
|
|
{
|
|
|
- title: '操作', dataIndex: 'key', render: () => (
|
|
|
+ title: '操作', dataIndex: 'key', render: (text, record) => (
|
|
|
<Space size="middle">
|
|
|
- <a>查看</a>
|
|
|
- <a onClick={e => showModal('修改用户', true)} >修改</a>
|
|
|
- <Dropdown overlay={menu}>
|
|
|
+ <a onClick={e => showModal('查看用户', true, 3)}>查看</a>
|
|
|
+ <a onClick={e => showModal('修改用户', true, 2)} >修改</a>
|
|
|
+ <Dropdown overlay={menu.bind(this, record)} record={record}>
|
|
|
<a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
|
|
|
更多 <DownOutlined />
|
|
|
</a>
|
|
@@ -82,53 +195,57 @@ function UserManager() {
|
|
|
)
|
|
|
}
|
|
|
]
|
|
|
- const data = [];
|
|
|
- for (let i = 0; i < 100; i++) {
|
|
|
- data.push({
|
|
|
- key: i,
|
|
|
- name: 'John Brown',
|
|
|
- age: i + 1,
|
|
|
- street: 'Lake Park',
|
|
|
- building: 'C',
|
|
|
- number: 2035,
|
|
|
- companyAddress: 'Lake Street 42',
|
|
|
- companyName: 'SoftLake Co',
|
|
|
- gender: 'M',
|
|
|
- });
|
|
|
+ const menu = (record) => {
|
|
|
+ return (
|
|
|
+ <Menu>
|
|
|
+ <Menu.Item key="0">
|
|
|
+ <a target="_blank" rel="noopener noreferrer" href="https://www.antgroup.com">
|
|
|
+ 重置密码
|
|
|
+ </a>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item key="1">
|
|
|
+ {record.status === '1' ? (<a onClick={() => messageBox(2, record.userId)}>禁用</a>) : (<a onClick={() => enable(record.userId, 1)}>启用</a>)}
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item key="2">
|
|
|
+ <a target="_blank" rel="noopener noreferrer" href="https://www.aliyun.com">
|
|
|
+ 删除
|
|
|
+ </a>
|
|
|
+ </Menu.Item>
|
|
|
+ </Menu>
|
|
|
+ )
|
|
|
}
|
|
|
return (
|
|
|
<div className="wrapper">
|
|
|
<Form
|
|
|
+ form={form}
|
|
|
name="normal_login"
|
|
|
- className="login-form"
|
|
|
className="basic"
|
|
|
layout="inline"
|
|
|
- initialValues={{ remember: true }}
|
|
|
onFinish={onFinish}
|
|
|
+ initialValues={{ status: '' }}
|
|
|
>
|
|
|
<div className="basic-left">
|
|
|
- <Form.Item label="用户名">
|
|
|
- <Input placeholder="Basic usage" />
|
|
|
+ <Form.Item label="用户名" name="username">
|
|
|
+ <Input placeholder="用户名" />
|
|
|
</Form.Item>
|
|
|
- <Form.Item label="姓名">
|
|
|
- <Input placeholder="Basic usage" />
|
|
|
+ <Form.Item label="姓名" name="name">
|
|
|
+ <Input placeholder="姓名" />
|
|
|
</Form.Item>
|
|
|
- <Form.Item label="当前状态">
|
|
|
+ <Form.Item label="当前状态" name="status">
|
|
|
<Select
|
|
|
style={{ width: 200 }}
|
|
|
placeholder="Select a person"
|
|
|
- defaultValue="全部"
|
|
|
>
|
|
|
- <Option value="全部">全部</Option>
|
|
|
- <Option value="启用">启用</Option>
|
|
|
- <Option value="禁用">禁用</Option>
|
|
|
+ <Option value="">全部</Option>
|
|
|
+ <Option value="1">启用</Option>
|
|
|
+ <Option value="0" >禁用</Option>
|
|
|
</Select>
|
|
|
</Form.Item>
|
|
|
|
|
|
</div>
|
|
|
<Form.Item>
|
|
|
<Space size="middle">
|
|
|
- <Button htmlType="submit">
|
|
|
+ <Button onClick={onReset}>
|
|
|
重置
|
|
|
</Button>
|
|
|
<Button type="primary" htmlType="submit">
|
|
@@ -143,22 +260,41 @@ function UserManager() {
|
|
|
<Breadcrumb>
|
|
|
<Breadcrumb.Item>用户管理</Breadcrumb.Item>
|
|
|
</Breadcrumb>
|
|
|
- <Button type="primary" icon={<PlusOutlined />} onClick={e => showModal('新增用户', true)}>新增用户</Button>
|
|
|
+ <Button type="primary" icon={<PlusOutlined />} onClick={e => showModal('新增用户', true, 1)}>新增用户</Button>
|
|
|
</div>
|
|
|
|
|
|
<Table
|
|
|
columns={columns}
|
|
|
- dataSource={data}
|
|
|
+ dataSource={userList}
|
|
|
+ rowKey={record => record.userId}
|
|
|
pagination={{
|
|
|
showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`,
|
|
|
pageSizeOptions: ['15', '30', '60', '120'],
|
|
|
pageSize: 5,
|
|
|
}} />
|
|
|
</div>
|
|
|
- <div>
|
|
|
- <NormalPlayer changeData={ChildrenChange} title={title} visible={visible}></NormalPlayer>
|
|
|
- </div>
|
|
|
-
|
|
|
+ <Modal
|
|
|
+ title="提示"
|
|
|
+ okText='确定'
|
|
|
+ cancelText='取消'
|
|
|
+ width={400}
|
|
|
+ visible={visible}
|
|
|
+ onOk={submit}
|
|
|
+ onCancel={handleCancel}
|
|
|
+ >
|
|
|
+ <NormalPlayer title={title} visible={visible} type={type} ref={parentRef}></NormalPlayer>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ title="提示"
|
|
|
+ okText='确定'
|
|
|
+ cancelText='取消'
|
|
|
+ width={400}
|
|
|
+ visible={msvisible}
|
|
|
+ onOk={handleOk}
|
|
|
+ onCancel={handleCancel}
|
|
|
+ >
|
|
|
+ <p>{tipText[modalType]}</p>
|
|
|
+ </Modal>
|
|
|
</div >
|
|
|
)
|
|
|
}
|