/*
|
* @Company: hugeInfo
|
* @Author: ldh
|
* @Date: 2022-02-20 20:26:41
|
* @LastEditTime: 2022-08-02 16:51:06
|
* @LastEditors: ldh
|
* @Version: 1.0.0
|
* @Description: 人员信息
|
*/
|
import React, { useState, useEffect } from 'react';
|
import * as $$ from '../../../utils/utility';
|
import Page from '../../../components/Page';
|
import { AddOrEditPerson, PersonnelPage, PostModal } from '../../../components/basicInformation/personnel';
|
|
// 查询人员信息
|
function getPersonsApi(data) {
|
return $$.ax.request({ url: 'ctUser/pageQuery', type: 'get', data, service: 'cust' });
|
}
|
|
// 批量删除 or 单个删除人员
|
function delPersonsApi(data) {
|
return $$.ax.request({ url: `ctUser/removeByIds`, type: 'post', data, service: 'cust' });
|
}
|
|
// 获取角色,组织下拉框内容
|
function getSelectOptionDataApi() {
|
return $$.ax.request({ url: 'ctUser/listSelectTerm', type: 'get', service: 'cust' });
|
}
|
|
// 获取岗位
|
function getPostDataApi() {
|
return $$.ax.request({ url: 'ctPost/getByUnitId', type: 'get', service: 'cust' });
|
}
|
|
// 新增岗位
|
function addPostApi(data) {
|
return $$.ax.request({ url: 'ctPost/saveCtPost', type: 'post', data, service: 'cust' });
|
}
|
|
// 删除岗位
|
function delPostApi(id) {
|
return $$.ax.request({ url: 'ctPost/removeByIds', type: 'get', data: { ids: id }, service: 'cust' });
|
}
|
|
// 新增 or 修改
|
function editPersonsApi(data) {
|
return $$.ax.request({ url: 'ctUser/saveCtUser', type: 'post', data, service: 'cust' });
|
}
|
|
// 停用 or 启用
|
function setPersonStatusApi(data) {
|
return $$.ax.request({ url: 'ctUser/updateCtUserStatus', type: 'get', data, service: 'cust' });
|
}
|
|
const Personnel = ({ changeHeaderUserName }) => {
|
// 新增 or 修改页面显隐
|
const [isAddOrEditPerson, setIsAddOrEditPerson] = useState(false);
|
|
// 搜索数据
|
const [searchData, setSearchData] = useState({ page: 1, size: 10 });
|
|
// 人员数据
|
const [tableData, setTableData] = useState({ total: 0, countZzStatus: 0, data: [] });
|
|
// 新增 or 修改对象
|
const [editData, setEditData] = useState({ type: 'add', data: {} });
|
|
// table选择数据
|
const [selectedRowsObj, setSelectedRowsObj] = useState({});
|
|
// 角色,组织部门,岗位下拉框数据
|
const [selectData, setSelectData] = useState({ roles: [], units: [] });
|
const [post, setPost] = useState([]);
|
|
// 岗位modal
|
const [postModal, setPostModal] = useState(false);
|
|
// 获取table选择数据
|
function handleGetSelectedRowKeys(type) {
|
let arr = [];
|
for (let item in selectedRowsObj) {
|
arr = arr.concat(selectedRowsObj[item][type]);
|
}
|
return arr;
|
}
|
const selectedRowKeys = handleGetSelectedRowKeys('selectedRowKeys');
|
|
// 重置 or 搜索 or 分页搜索
|
function handleSearch(type, values) {
|
let data = {};
|
if (type === 'reset') {
|
data = { page: 1, size: 10 };
|
} else if (type === 'search') {
|
data = { ...searchData, ...values, page: 1 };
|
} else if (type === 'page') {
|
data = { ...searchData, page: values.page, size: values.size };
|
} else if (type === 'reload') {
|
data = searchData;
|
}
|
getPersons(data);
|
}
|
|
// 点击新增 or 修改 or 停用 or 启用
|
function handleEditPerson(types, values) {
|
if (types === 'add') {
|
setIsAddOrEditPerson(true);
|
setEditData({ type: types, data: {} });
|
} else if (types === 'change') {
|
setIsAddOrEditPerson(true);
|
setEditData({ type: types, data: { ...values } });
|
} else if (types === 'stop') {
|
setPersonStatus({ id: values.id, status: '2' });
|
} else if (types === 'open') {
|
setPersonStatus({ id: values.id, status: '1' });
|
}
|
}
|
|
// 查看岗位
|
function handleTableIconClick() {
|
setPostModal(true);
|
getPostData();
|
}
|
|
// 获取下拉数据组织,角色,部门
|
async function getSelectOptionData() {
|
const res = await getSelectOptionDataApi();
|
if (res.type) {
|
setSelectData(res.data);
|
}
|
}
|
|
// 获取岗位
|
async function getPostData() {
|
global.setSpinning(true);
|
const res = await getPostDataApi();
|
global.setSpinning(false);
|
if (res.type) {
|
setPost(res.data || []);
|
}
|
}
|
|
// 获取人员信息
|
async function getPersons(data) {
|
global.setSpinning(true);
|
const res = await getPersonsApi(data);
|
global.setSpinning(false);
|
if (res.type) {
|
let resData = res.data || {};
|
tableData.countZzStatus = resData.countZzStatus;
|
tableData.total = resData.ctUserPage?.totalElements;
|
tableData.data = resData.ctUserPage?.content;
|
setTableData({ ...tableData });
|
setSearchData({ ...data });
|
}
|
}
|
|
// 新增岗位
|
async function addPost(name) {
|
global.setSpinning(true);
|
const res = await addPostApi({ name });
|
global.setSpinning(false);
|
if (res.type) {
|
getPostData();
|
}
|
}
|
|
// 删除岗位
|
async function delPost(id) {
|
global.setSpinning(true);
|
const res = await delPostApi(id);
|
global.setSpinning(false);
|
if (res.type) {
|
getPostData();
|
getPersons(searchData);
|
}
|
}
|
|
// 设置人员的状态:正常 or 停用
|
async function setPersonStatus(data) {
|
global.setSpinning(true);
|
const res = await setPersonStatusApi(data);
|
global.setSpinning(false);
|
if (res.type) {
|
$$.infoSuccess({ content: '操作成功' });
|
getPersons(searchData);
|
}
|
}
|
|
// 新增 or 修改人员
|
async function editPersons(submitType, data, form) {
|
let submitData = data.id ? { ...editData.data, ...data } : data;
|
global.setSpinning(true);
|
const res = await editPersonsApi(submitData);
|
global.setSpinning(false);
|
if (res.type) {
|
$$.infoSuccess({ content: '操作成功' });
|
let userInfo = $$.getLocal('customerSystemUser');
|
if (submitData.id === userInfo?.userId) {
|
userInfo.trueName = submitData.trueName;
|
$$.setLocal('customerSystemUser', userInfo);
|
changeHeaderUserName();
|
}
|
if (submitType === '1') {
|
setIsAddOrEditPerson(false);
|
} else if (submitType === '2') {
|
form.resetFields();
|
}
|
getPersons(searchData);
|
}
|
}
|
|
// 删除人员
|
async function delPersons(id) {
|
global.setSpinning(true);
|
let data = '';
|
if (id) {
|
data = [id];
|
} else {
|
data = selectedRowKeys;
|
}
|
const res = await delPersonsApi(data);
|
global.setSpinning(false);
|
if (res.type) {
|
$$.infoSuccess({ content: '删除成功!' });
|
setSelectedRowsObj({});
|
getPersons(searchData);
|
}
|
}
|
|
useEffect(() => {
|
getPostData();
|
getSelectOptionData();
|
getPersons(searchData);
|
}, []);
|
|
return (
|
<Page
|
pageHead={
|
!isAddOrEditPerson
|
? { breadcrumbData: [{ title: '基础信息管理' }, { title: '人员信息' }], title: '人员信息' }
|
: {
|
breadcrumbData: [
|
{ title: '基础信息管理' },
|
{ title: '人员信息', click: () => setIsAddOrEditPerson(false) },
|
{ title: editData.type === 'add' ? '新增人员' : '修改人员' },
|
],
|
title: editData.type === 'add' ? '新增人员' : editData.data.trueName,
|
handleReturn: () => setIsAddOrEditPerson(false),
|
}
|
}
|
>
|
<PersonnelPage
|
isAddOrEditPerson={isAddOrEditPerson}
|
searchData={searchData}
|
tableData={tableData}
|
editData={editData}
|
selectedRowKeys={selectedRowKeys}
|
selectData={selectData}
|
handleSearch={handleSearch}
|
handleEditPerson={handleEditPerson}
|
handleDelPerson={delPersons}
|
handleSelectRow={(selectedRowKeys, selectedRows) => {
|
let obj = {};
|
obj[searchData.page] = {
|
selectedRowKeys,
|
selectedRows,
|
};
|
setSelectedRowsObj({ ...selectedRowsObj, ...obj });
|
}}
|
handleTableIconClick={handleTableIconClick}
|
/>
|
{/* 新增 or 修改page */}
|
<AddOrEditPerson
|
isAddOrEditPerson={isAddOrEditPerson}
|
type={editData.type}
|
formData={editData.data}
|
selectData={selectData}
|
post={post}
|
handleSubmit={(submitType, values, form) => editPersons(submitType, values, form)}
|
handleIsAddOrEditPerson={(visible) => setIsAddOrEditPerson(visible)}
|
handleAddPost={(name) => addPost(name)}
|
/>
|
{/* 岗位列表modal */}
|
{postModal && (
|
<PostModal
|
data={post}
|
visible={postModal}
|
handleDel={(id) => delPost(id)}
|
handleAdd={(name) => addPost(name)}
|
handleCancel={() => setPostModal(false)}
|
/>
|
)}
|
</Page>
|
);
|
};
|
|
export default Personnel;
|