import React, { useState, useEffect, useRef } from 'react';
import {
Button,
Popconfirm,
Modal,
Form,
Input,
message,
Radio,
Select,
List,
Row,
Col,
Card,
Tree,
Checkbox,
} from 'antd';
import { PlusOutlined } from '@ant-design/icons';
import { getCooperativeList } from '@/services/cooperative';
import {
getUserList,
addUser,
deleteUser,
updateUser,
getDefaultPassword,
getUserDetail,
} from '@/services/user';
import { getRoleList } from '@/services/role';
import { getUserRoleList, addUserUserRole, deleteUserRole } from '@/services/userRole';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import PageTable from '@/components/PageTable';
import moment from 'moment';
import Search from '@/components/CooperativeSearch';
import './index.less';
const FormItem = Form.Item;
const { Option } = Select;
const formatterTime = (val) => {
return val && val !== '-' ? moment(val).format('YYYY-MM-DD') : '-';
};
export default (props) => {
//编辑弹窗
const formItemLayout = { labelCol: { span: 6 }, wrapperCol: { span: 14 } };
const [form] = Form.useForm();
const [editModal, setEditModal] = useState(false);
const [loading, setLoading] = useState(false);
const [userId, setuserId] = useState();
const [password, setPassWord] = useState('');
const [cooperativeList, setCooperativeList] = useState([]);
const [editRoleModal, setEditRoleModal] = useState(false);
const [rLoading, setRLoading] = useState(false);
const [rUserId, setRUserId] = useState();
const [roleList, setRoleList] = useState([]);
const [currentCheckbox, setCurrentCheckbox] = useState();
//列表数据
const actionRef = useRef();
const [data, setData] = useState([]);
const [orgId, setOrgId] = useState();
// 动态生成树
const handelNode = (item) => {
let node = (
{item.title}
);
return node;
};
const onSelect = (checkedKeys, info) => {
if (info.selected) {
setOrgId(info.node.key);
} else {
setOrgId();
}
};
// 编辑弹窗的表单提交
const Submit = (values) => {
const newData = { ...values };
if (!newData.sex && newData.sex !== 0) {
newData.sex = 1;
}
setLoading(true);
if (!/^1[0-9]{10}$/.test(newData.phone)) {
message.warning('请输入正确的十一位手机号');
setLoading(false);
return false;
}
if (
!/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
newData.idCard,
)
) {
message.warning('请输入正确的身份证号');
setLoading(false);
return false;
}
if (userId) {
updateUser(userId, newData)
.then(() => {
setLoading(false);
message.success(`修改成功`);
onCancel();
actionRef.current.reload();
})
.catch((err) => {
setLoading(false);
console.log(err.message);
});
} else {
addUser(newData)
.then(() => {
setLoading(false);
message.success(`保存成功`);
onCancel();
actionRef.current.reload();
})
.catch((err) => {
setLoading(false);
message.error(err.message || err);
});
}
};
//表单点击取消按钮
const onCancel = () => {
setuserId();
form.resetFields();
setEditModal(false);
};
// 弹窗表单中合作社搜索框改变事件目前没用
const handelChange = () => {};
// 列表点击编辑按钮
const handleEdit = (val) => {
setuserId(val.userId);
setEditModal(true);
};
//列表点击删除按钮
const handleDelete = (id) => {
deleteUser(id)
.then(() => {
message.success('删除成功');
actionRef.current.reload();
})
.catch((err) => {
console.log(err.message);
});
};
//列表切换人员状态方法
const handleOK = (record, data) => {
const title = record.status
? '您确定要将该人员状态变更为禁用吗? 禁用后该人员将不能登录'
: '您确定要将该人员状态变更为启用吗? 启用后该人员可以登录!';
Modal.confirm({
title: title,
okText: '确认',
cancelText: '取消',
onOk() {
updateUser(record.userId, { ...record, status: record.status === 1 ? 0 : 1 })
.then((res) => {
message.success('操作成功');
actionRef.current.reload();
})
.catch((err) => {
console.log(err.message);
});
},
});
};
//点击授权角色方法
const handleRole = (val) => {
setRUserId(val.userId);
getUserRoleList({ user_id: val.userId })
.then((res) => {
if (res.length !== 0) {
setCurrentCheckbox(res.map((item) => item.roleId));
}
})
.catch((err) => {
console.log(err.message);
});
setEditRoleModal(true);
};
//授权弹窗点击取消按钮
const onRoleCancel = () => {
setRUserId();
setCurrentCheckbox();
form.resetFields();
setEditRoleModal(false);
};
const handelOk = () => {
if (!currentCheckbox) {
message.info('请选择角色');
return;
}
setRLoading(true);
if (currentCheckbox.length === 0) {
deleteUserRole(rUserId)
.then(() => {
message.success('取消授权角色成功');
setRLoading(false);
onRoleCancel();
})
.catch((err) => {
console.log(err.message);
setRLoading(false);
});
} else {
addUserUserRole(
rUserId,
currentCheckbox.map((item) => {
return { userId: rUserId, roleId: item };
}),
)
.then(() => {
message.success('授权角色成功');
setRLoading(false);
onRoleCancel();
})
.catch((err) => {
console.log(err.message);
setRLoading(false);
});
}
};
const handleCheckboxChange = (list) => {
setCurrentCheckbox(list);
};
useEffect(() => {
//获取账号默认密码
getDefaultPassword()
.then((res) => {
setPassWord(res);
})
.catch((err) => {
console.log(err.message);
});
//获取合作社列表数据
getCooperativeList({ pageSize: 999 })
.then((res) => {
setCooperativeList(res.records);
const list = res.records?.map((item) => {
return { title: item.name, key: item.orgId };
});
setData(list);
})
.catch((err) => {
console.log(err.message);
});
//获取角色列表数据
getRoleList({ pageSize: 999 })
.then((res) => {
setRoleList(res.records);
})
.catch((err) => {
console.log(err.message);
});
}, []);
useEffect(() => {
if (userId) {
getUserDetail(userId)
.then((res) => {
if (res.orgId === '-1') {
form.setFieldsValue({ ...res, orgId: cooperativeList[0].orgId });
} else {
form.setFieldsValue(res);
}
})
.catch((err) => {
console.log(err.message);
});
} else {
form.resetFields();
}
}, [userId]);
const actions = () => [
} onClick={() => setEditModal(true)}>
新增
,
];
const columns = [
{
title: '姓名',
dataIndex: 'userName',
key: 'userName',
},
{
title: '昵称',
dataIndex: 'nickName',
key: 'nickName',
search: false,
},
{
title: '性别',
dataIndex: 'sex',
key: 'sex',
width: 80,
render: (_, record) => {
return record.sex === 1 ? '男' : record.sex === 0 ? '女' : '未知';
},
search: false,
},
{
title: '手机号',
dataIndex: 'phone',
key: 'phone',
width: 120,
},
{
title: '注册时间',
dataIndex: 'createDate',
key: 'createDate',
render: formatterTime,
search: false,
width: 80,
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
width: 80,
search: false,
render: (_, record) => {
return record.status === 1 ? '启用' : '未启用';
},
},
{
title: '管理员',
dataIndex: 'isOrgManager',
key: 'isOrgManager',
width: 80,
search: false,
render: (_, record) => {
return record.isOrgManager && record.isOrgManager == 1 ? '管理员' : '非管理员';
},
},
{
title: '操作',
valueType: 'option',
width: 160,
render: (_, record) => [
,
,
,
handleDelete(record.userId)}
okText="确定"
cancelText="取消"
>
,
],
},
];
return (
handelNode(data)}
treeData={data}
/>
(
{item.name}
)}
/>
);
};