Commit fb53a2a2 authored by 张烨's avatar 张烨
parents 8884edef bba774f2
...@@ -21,6 +21,7 @@ export const checkChildrenByCondition = (item, fn, tag = 'every') => { ...@@ -21,6 +21,7 @@ export const checkChildrenByCondition = (item, fn, tag = 'every') => {
}; };
const ListCard = props => { const ListCard = props => {
console.log(props, 'props');
const { const {
ouid, ouid,
searchWord, searchWord,
...@@ -85,7 +86,7 @@ const ListCard = props => { ...@@ -85,7 +86,7 @@ const ListCard = props => {
/> />
)) ))
) : ( ) : (
<Empty /> <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
)} )}
</> </>
)} )}
......
...@@ -25,7 +25,12 @@ ...@@ -25,7 +25,12 @@
.divSingle{ .divSingle{
border: none; border: none;
margin-top: 20px; margin-top: 20px;
flex:0 0 180px; min-width: 180px;
flex-grow: 0;
flex-shrink: 0;
// flex:0 0 auto;
// flex-basis: auto;
margin-right: 10px;
background: transparent; background: transparent;
} }
.isSearch{ .isSearch{
......
...@@ -153,7 +153,7 @@ const AppMenu = () => { ...@@ -153,7 +153,7 @@ const AppMenu = () => {
</> </>
), ),
key: menu.menuID, key: menu.menuID,
icon: menu.leaf ? <FileOutlined /> : <FolderOpenOutlined />, // icon: menu.leaf ? <FileOutlined /> : <FolderOpenOutlined />,
// 判断它是否存在子集,若果存在就进行再次进行遍历操作,知道不存在子集便对其他的元素进行操作 // 判断它是否存在子集,若果存在就进行再次进行遍历操作,知道不存在子集便对其他的元素进行操作
children: haveChildren ? menu.children.map(i => mapTree(i)) : [], children: haveChildren ? menu.children.map(i => mapTree(i)) : [],
}; };
......
...@@ -48,13 +48,13 @@ const MongDBTable = props => { ...@@ -48,13 +48,13 @@ const MongDBTable = props => {
setTableLoading(false); setTableLoading(false);
if (res.success) { if (res.success) {
notification.success({ notification.success({
message: '通知', message: '提示',
description: res.message || '连接成功', description: '连接成功',
duration: 3, duration: 3,
}); });
} else { } else {
notification.error({ notification.error({
message: '通知', message: '提示',
description: res.message || '连接失败', description: res.message || '连接失败',
duration: 3, duration: 3,
}); });
......
...@@ -48,15 +48,15 @@ const MySQLTable = props => { ...@@ -48,15 +48,15 @@ const MySQLTable = props => {
setTableLoading(false); setTableLoading(false);
if (res.success) { if (res.success) {
notification.success({ notification.success({
message: '通知', message: '提示',
description: res.message || '连接成功', description: '连接成功',
duration: 3, duration: 3,
}); });
} else { } else {
notification.error({ notification.error({
message: '通知', message: '提示',
description: res.message || '连接失败', description: res.message || '连接失败',
duration: 3, duration: 15,
}); });
} }
}) })
......
...@@ -48,13 +48,13 @@ const OracleTable = props => { ...@@ -48,13 +48,13 @@ const OracleTable = props => {
setTableLoading(false); setTableLoading(false);
if (res.success) { if (res.success) {
notification.success({ notification.success({
message: '通知', message: '提示',
description: res.message || '连接成功', description: '连接成功',
duration: 3, duration: 3,
}); });
} else { } else {
notification.error({ notification.error({
message: '通知', message: '提示',
description: res.message || '连接失败', description: res.message || '连接失败',
duration: 3, duration: 3,
}); });
......
...@@ -48,13 +48,13 @@ const SQLServerTable = props => { ...@@ -48,13 +48,13 @@ const SQLServerTable = props => {
setTableLoading(false); setTableLoading(false);
if (res.success) { if (res.success) {
notification.success({ notification.success({
message: '通知', message: '提示',
description: '连接成功', description: '连接成功',
duration: 3, duration: 3,
}); });
} else { } else {
notification.error({ notification.error({
message: '通知', message: '提示',
description: res.message || '连接失败', description: res.message || '连接失败',
duration: 3, duration: 3,
}); });
......
...@@ -7,7 +7,7 @@ import SiteConfig from './SiteConfig'; ...@@ -7,7 +7,7 @@ import SiteConfig from './SiteConfig';
import MenuConfig from './menuconfig/MenuConfig'; import MenuConfig from './menuconfig/MenuConfig';
const { TabPane } = Tabs; const { TabPane } = Tabs;
const MobileConfigPage = props => { const MobileConfigPage = props => {
const [activeKey, setActiveKey] = useState('1'); // tabs活动页 const [activeKey, setActiveKey] = useState('0'); // tabs活动页
const [miniTitle, setMiniTitle] = useState(''); const [miniTitle, setMiniTitle] = useState('');
const [flag, setFlag] = useState(1); const [flag, setFlag] = useState(1);
useEffect(() => { useEffect(() => {
......
...@@ -25,7 +25,11 @@ ...@@ -25,7 +25,11 @@
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
.ant-checkbox-group-item{ .ant-checkbox-group-item{
flex:0 0 150px; flex:0 0 auto;
flex-shrink: 0;
flex-grow: 0;
margin-right: 60px;
// min-width: 180px;
margin-bottom: 5px; margin-bottom: 5px;
} }
} }
......
...@@ -14,10 +14,15 @@ import { ...@@ -14,10 +14,15 @@ import {
Tabs, Tabs,
Button, Button,
Spin, Spin,
Dropdown,
Menu,
} from 'antd'; } from 'antd';
import { import {
UserAddOutlined,
UsergroupAddOutlined, UsergroupAddOutlined,
EditOutlined,
EditTwoTone, EditTwoTone,
DeleteOutlined,
DeleteTwoTone, DeleteTwoTone,
ShareAltOutlined, ShareAltOutlined,
UnlockOutlined, UnlockOutlined,
...@@ -25,12 +30,14 @@ import { ...@@ -25,12 +30,14 @@ import {
StopOutlined, StopOutlined,
DoubleLeftOutlined, DoubleLeftOutlined,
DoubleRightOutlined, DoubleRightOutlined,
DownOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import PageContainer from '@/components/BasePageContainer'; import PageContainer from '@/components/BasePageContainer';
import voca from 'voca'; import voca from 'voca';
import zhCN from 'antd/es/locale/zh_CN'; import zhCN from 'antd/es/locale/zh_CN';
import { import {
addToOrg, addToOrg,
addToOrgs,
editOrgInfo, editOrgInfo,
getOneOUUserListNew, getOneOUUserListNew,
getUserByKey, getUserByKey,
...@@ -44,7 +51,9 @@ import { ...@@ -44,7 +51,9 @@ import {
deleteOrg as postDeleteOrg, deleteOrg as postDeleteOrg,
updateUserPassword, updateUserPassword,
setUserRelation, setUserRelation,
multiDeleteUsers,
} from '@/services/userCenter/userManage/api'; } from '@/services/userCenter/userManage/api';
import classnames from 'classnames';
import ListCardItem from '../orgnazation/listCardItem'; import ListCardItem from '../orgnazation/listCardItem';
import styles from './UserManage.less'; import styles from './UserManage.less';
...@@ -52,12 +61,13 @@ const UserManage = () => { ...@@ -52,12 +61,13 @@ const UserManage = () => {
const [treeLoading, setTreeLoading] = useState(false); const [treeLoading, setTreeLoading] = useState(false);
const [tableLoading, setTableLoading] = useState(false); const [tableLoading, setTableLoading] = useState(false);
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);
const [multiOperate, setMultiOperate] = useState(true); // 是否禁用用户批量操作
const [multiOperateButtonType, setMultiOperateButtonType] = useState(''); // 更改批量操作按钮样式
const [treeData, setTreeData] = useState([]); // 用户机构树 const [treeData, setTreeData] = useState([]); // 用户机构树
const [expandedKeys, setExpandedKeys] = useState(['']); // const [expandedKeys, setExpandedKeys] = useState(['']);
const [treeDataCopy, setTreeDataCopy] = useState([]); // 机构树数据备份,用于更改机构 const [treeDataCopy, setTreeDataCopy] = useState([]); // 机构树数据备份,用于更改机构
const [treeState, setTreeState] = useState(true); // 树第一次加载 const [treeState, setTreeState] = useState(true); // 树第一次加载
// const [treeDispaly, setTreeDispaly] = useState(''); // 1
const [treeVisible, setTreeVisible] = useState(true); // 树是否可见 const [treeVisible, setTreeVisible] = useState(true); // 树是否可见
const [tableData, setTableData] = useState([]); // 用户表 const [tableData, setTableData] = useState([]); // 用户表
const [orgFilters, setOrgFilters] = useState([]); // 用户列筛选 const [orgFilters, setOrgFilters] = useState([]); // 用户列筛选
...@@ -77,12 +87,17 @@ const UserManage = () => { ...@@ -77,12 +87,17 @@ const UserManage = () => {
const [freezeUserVisible, setFreezeUserVisible] = useState(false); // 冻结用户 const [freezeUserVisible, setFreezeUserVisible] = useState(false); // 冻结用户
const [deleteUserVisible, setDeleteUserVisible] = useState(false); // 删除用户 const [deleteUserVisible, setDeleteUserVisible] = useState(false); // 删除用户
const [orgTitle, setOrgTitle] = useState('机构'); // 弹框标题 const [orgTitle, setOrgTitle] = useState('当前机构'); // 弹框标题
const [tableLength, setTableLength] = useState(0); // 表格标题 const [tableLength, setTableLength] = useState(0); // 表格标题
const [orgID, setOrgID] = useState(); // 机构ID const [orgID, setOrgID] = useState(); // 机构ID
const [newOrgID, setNewOrgID] = useState(); // 更改机构新选择的ID const [newOrgID, setNewOrgID] = useState(); // 更改机构新选择的ID
const [currentUser, setCurrentUser] = useState({}); // 当前用户 const [currentUser, setCurrentUser] = useState({}); // 当前用户
const [userIDs, setUserIDs] = useState(''); // 批量删除的用户
const [orgIDs, setOrgIDs] = useState(''); // 批量操作的机构
const [multiDelete, setMultiDelete] = useState(false); // 是否批量删除用户
const [multiChangeOrgs, setMultiChangeOrgs] = useState(false); // 是否批量更改机构
const [rolelist, setRolelist] = useState([]); // 角色列表 const [rolelist, setRolelist] = useState([]); // 角色列表
const [stationlist, setStationlist] = useState([]); // 站点列表 const [stationlist, setStationlist] = useState([]); // 站点列表
const [roleValueList, setRoleValueList] = useState({}); // 勾选的角色列表 const [roleValueList, setRoleValueList] = useState({}); // 勾选的角色列表
...@@ -165,20 +180,44 @@ const UserManage = () => { ...@@ -165,20 +180,44 @@ const UserManage = () => {
dataIndex: 'ddid', dataIndex: 'ddid',
key: 'ddid', key: 'ddid',
width: 100, width: 100,
render: record => {
if (record) {
return (
<Tooltip title={record}>
<span style={{ color: '#50aefc', cursor: 'pointer' }}>
已绑定
</span>
</Tooltip>
);
}
return <span>未绑定</span>;
},
}, },
{ {
title: '微信账户', title: '微信账户',
dataIndex: 'wxid', dataIndex: 'wxid',
key: 'wxid', key: 'wxid',
width: 100, width: 100,
render: record => {
if (record) {
return (
<Tooltip title={record}>
<span style={{ color: '#50aefc', cursor: 'pointer' }}>
已绑定
</span>
</Tooltip>
);
}
return <span>未绑定</span>;
},
}, },
{ {
title: '操作', title: '操作',
key: 'action', key: 'action',
fixed: 'right', fixed: 'right',
width: 250, width: 210,
align: 'center', align: 'center',
render: (text, record) => ( render: record => (
<Space size="middle"> <Space size="middle">
<Tooltip title="关联角色"> <Tooltip title="关联角色">
<ShareAltOutlined <ShareAltOutlined
...@@ -238,11 +277,18 @@ const UserManage = () => { ...@@ -238,11 +277,18 @@ const UserManage = () => {
const [selectionType] = useState('checkbox'); const [selectionType] = useState('checkbox');
const rowSelection = { const rowSelection = {
onChange: (selectedRowKeys, selectedRows) => { onChange: (selectedRowKeys, selectedRows) => {
console.log( console.log(selectedRowKeys.toString());
`selectedRowKeys: ${selectedRowKeys}`, console.log(selectedRows.map(item => item.OUID).toString());
'selectedRows: ', setUserIDs(selectedRowKeys.toString());
selectedRows, setOrgIDs(selectedRows.map(item => item.OUID).toString());
); // 选中行数大于1时设置批量操作可行
if (selectedRows.length > 1) {
setMultiOperate(false);
setMultiOperateButtonType('primary');
} else {
setMultiOperate(true);
setMultiOperateButtonType('default');
}
}, },
getCheckboxProps: record => ({ getCheckboxProps: record => ({
name: record.name, name: record.name,
...@@ -322,9 +368,8 @@ const UserManage = () => { ...@@ -322,9 +368,8 @@ const UserManage = () => {
setTableLength(temp.length); setTableLength(temp.length);
const table = temp.map((item, index) => { const table = temp.map((item, index) => {
item.key = index; item.key = index;
item.phoneCopy = item.phone;
item.phone = item.phone || '-'; item.phone = item.phone || '-';
item.ddid = item.ddid ? '已绑定' : '未绑定';
item.wxid = item.wxid ? '已绑定' : '未绑定';
return item; return item;
}); });
setTableData(table); setTableData(table);
...@@ -365,15 +410,22 @@ const UserManage = () => { ...@@ -365,15 +410,22 @@ const UserManage = () => {
const addUser = () => { const addUser = () => {
setUserVisible(true); setUserVisible(true);
}; };
// 在根目录下添加机构 // 添加顶级机构
const addOrg = (title, id) => { const addOrg = () => {
setAddOrgVisible(true); setAddOrgVisible(true);
setOrgTitle(title); setOrgID('-1');
setOrgID(id); addOrgForm.setFieldsValue({
OUName: '',
desrciption: '',
});
}; };
// 添加下级机构 // 添加下级机构
const addSubOrg = () => { const addSubOrg = () => {
setAddOrgVisible(true); setAddOrgVisible(true);
addOrgForm.setFieldsValue({
OUName: '',
desrciption: '',
});
}; };
// 编辑机构 // 编辑机构
const editOrg = () => { const editOrg = () => {
...@@ -396,6 +448,22 @@ const UserManage = () => { ...@@ -396,6 +448,22 @@ const UserManage = () => {
} }
}, [currentUser]); }, [currentUser]);
/** ***用户批量操作****** */
// 用户关联
const relateRoles = () => {
setRoleVisible(true);
};
// 更改机构
const changeOrgs = () => {
setChangeOrgVisible(true);
setMultiChangeOrgs(true);
};
// 删除用户
const deleteUsers = () => {
setDeleteUserVisible(true);
setMultiDelete(true);
};
/** ***右侧表格相关操作****** */ /** ***右侧表格相关操作****** */
// 用户关联 // 用户关联
const relateRole = record => { const relateRole = record => {
...@@ -413,6 +481,8 @@ const UserManage = () => { ...@@ -413,6 +481,8 @@ const UserManage = () => {
setPasswordVisible(true); setPasswordVisible(true);
passwordForm.setFieldsValue({ passwordForm.setFieldsValue({
oldpassword: record.password, oldpassword: record.password,
newPassword: '',
passwordConfirm: '',
}); });
setCurrentUser(record); setCurrentUser(record);
}; };
...@@ -423,7 +493,7 @@ const UserManage = () => { ...@@ -423,7 +493,7 @@ const UserManage = () => {
editUserForm.setFieldsValue({ editUserForm.setFieldsValue({
loginName: voca.stripTags(record.loginName), loginName: voca.stripTags(record.loginName),
userName: voca.stripTags(record.userName), userName: voca.stripTags(record.userName),
phone: record.phone || '', phone: record.phoneCopy || '',
email: record.email || '', email: record.email || '',
}); });
setCurrentUser(record); setCurrentUser(record);
...@@ -504,11 +574,13 @@ const UserManage = () => { ...@@ -504,11 +574,13 @@ const UserManage = () => {
message: '提交成功', message: '提交成功',
}); });
// 重新获取机构树与用户表 // 重新获取机构树与用户表
updateTrees().then(() => { updateTrees();
// 只能是字符串,数字没有选择效果
onSelect([`${res.OUID}`]); onSelect([`${res.OUID}`]);
setExpandedKeys([`${res.OUID}`]); // updateTrees().then(() => {
}); // // 只能是字符串,数字没有选择效果
// onSelect([`${res.OUID}`]);
// // setExpandedKeys([`${res.OUID}`]);
// });
} else { } else {
notification.error({ notification.error({
message: '提交失败', message: '提交失败',
...@@ -538,7 +610,7 @@ const UserManage = () => { ...@@ -538,7 +610,7 @@ const UserManage = () => {
// 重新获取机构树与用户表 // 重新获取机构树与用户表
updateTrees(); updateTrees();
onSelect([orgID]); onSelect([orgID]);
setExpandedKeys([`${orgID}`]); // setExpandedKeys([`${orgID}`]);
} else { } else {
notification.error({ notification.error({
message: '提交失败', message: '提交失败',
...@@ -611,7 +683,7 @@ const UserManage = () => { ...@@ -611,7 +683,7 @@ const UserManage = () => {
setRoleVisible(false); setRoleVisible(false);
// 跳转到新组织机构下的用户表 // 跳转到新组织机构下的用户表
onSelect([`${currentUser.OUID}`]); onSelect([`${currentUser.OUID}`]);
setExpandedKeys([`${currentUser.OUID}`]); // setExpandedKeys([`${currentUser.OUID}`]);
notification.success({ notification.success({
message: '提交成功', message: '提交成功',
}); });
...@@ -634,7 +706,28 @@ const UserManage = () => { ...@@ -634,7 +706,28 @@ const UserManage = () => {
setChangeOrgVisible(false); setChangeOrgVisible(false);
// 跳转到新组织机构下的用户表 // 跳转到新组织机构下的用户表
onSelect([newOrgID]); onSelect([newOrgID]);
setExpandedKeys([`${newOrgID}`]); // setExpandedKeys([`${newOrgID}`]);
notification.success({
message: '提交成功',
});
} else {
notification.error({
message: '提交失败',
description: res.message,
});
}
})
.catch(err => {
message.error(err);
});
// 提交-批量更改机构
const submitChangeOrgs = () =>
addToOrgs(userIDs, orgIDs, newOrgID)
.then(res => {
if (res.code === 0) {
setChangeOrgVisible(false);
// 跳转到新组织机构下的用户表
onSelect([newOrgID]);
notification.success({ notification.success({
message: '提交成功', message: '提交成功',
}); });
...@@ -649,12 +742,16 @@ const UserManage = () => { ...@@ -649,12 +742,16 @@ const UserManage = () => {
message.error(err); message.error(err);
}); });
// 提交-修改密码 // 提交-修改密码
const submitChangePassword = () => const submitChangePassword = () => {
const password = passwordForm.getFieldValue('password');
const newPassword = passwordForm.getFieldValue('newPassword');
const passwordConfirm = passwordForm.getFieldValue('passwordConfirm');
if (newPassword && passwordConfirm && newPassword === passwordConfirm) {
updateUserPassword( updateUserPassword(
currentUser.userID, currentUser.userID,
passwordForm.getFieldValue('password'), password,
passwordForm.getFieldValue('newPassword'), newPassword,
passwordForm.getFieldValue('passwordConfirm'), passwordConfirm,
) )
.then(res => { .then(res => {
if (res.success) { if (res.success) {
...@@ -672,6 +769,18 @@ const UserManage = () => { ...@@ -672,6 +769,18 @@ const UserManage = () => {
.catch(err => { .catch(err => {
message.error(err); message.error(err);
}); });
} else if (newPassword === '' || passwordConfirm === '') {
notification.error({
message: '提交失败',
description: '带*号为必填项,不能为空',
});
} else {
notification.error({
message: '提交失败',
description: '确认密码不一致!',
});
}
};
// 提交-编辑用户 // 提交-编辑用户
const submitEditUser = () => const submitEditUser = () =>
postEditUser( postEditUser(
...@@ -686,7 +795,7 @@ const UserManage = () => { ...@@ -686,7 +795,7 @@ const UserManage = () => {
setEditUserVisible(false); setEditUserVisible(false);
// 重新获取用户表 // 重新获取用户表
onSelect([`${currentUser.OUID}`]); onSelect([`${currentUser.OUID}`]);
setExpandedKeys([`${currentUser.OUID}`]); // setExpandedKeys([`${currentUser.OUID}`]);
notification.success({ notification.success({
message: '提交成功', message: '提交成功',
}); });
...@@ -715,7 +824,7 @@ const UserManage = () => { ...@@ -715,7 +824,7 @@ const UserManage = () => {
setFreezeUserVisible(false); setFreezeUserVisible(false);
// 重新获取用户表 // 重新获取用户表
onSelect([`${currentUser.OUID}`]); onSelect([`${currentUser.OUID}`]);
setExpandedKeys([`${currentUser.OUID}`]); // setExpandedKeys([`${currentUser.OUID}`]);
notification.success({ notification.success({
message: '提交成功', message: '提交成功',
}); });
...@@ -731,6 +840,7 @@ const UserManage = () => { ...@@ -731,6 +840,7 @@ const UserManage = () => {
message.error(err); message.error(err);
}); });
}; };
// 提交-删除用户
const submitDeleteUser = () => { const submitDeleteUser = () => {
postDeleteUser(currentUser.userID) postDeleteUser(currentUser.userID)
.then(res => { .then(res => {
...@@ -741,7 +851,32 @@ const UserManage = () => { ...@@ -741,7 +851,32 @@ const UserManage = () => {
}); });
// 重新获取用户表 // 重新获取用户表
onSelect([`${currentUser.OUID}`]); onSelect([`${currentUser.OUID}`]);
setExpandedKeys([`${currentUser.OUID}`]); // setExpandedKeys([`${currentUser.OUID}`]);
} else {
notification.error({
message: '提交失败',
description: res.message,
});
}
})
.catch(err => {
setTableLoading(false);
message.error(err);
});
};
// 提交-批量删除用户
const submitDeleteUsers = () => {
const temp = orgIDs.split(',');
const [org] = temp;
multiDeleteUsers(userIDs, org)
.then(res => {
if (res.code === 0) {
setDeleteUserVisible(false);
notification.success({
message: '提交成功',
});
// 重新获取用户表
onSelect([currentSelectOrg]);
} else { } else {
notification.error({ notification.error({
message: '提交失败', message: '提交失败',
...@@ -755,17 +890,56 @@ const UserManage = () => { ...@@ -755,17 +890,56 @@ const UserManage = () => {
}); });
}; };
/** ***操作按钮**** */
// 机构操作
const orgButtonMenu = (
<Menu>
<Menu.Item key="1" onClick={addUser} icon={<UserAddOutlined />}>
添加用户
</Menu.Item>
<hr />
<Menu.Item key="2" onClick={addSubOrg} icon={<UsergroupAddOutlined />}>
添加机构
</Menu.Item>
<Menu.Item key="3" onClick={editOrg} icon={<EditOutlined />}>
编辑机构
</Menu.Item>
<Menu.Item key="4" onClick={deleteOrg} icon={<DeleteOutlined />}>
删除机构
</Menu.Item>
</Menu>
);
// 用户批量操作
const userButtonMenu = (
<Menu>
<Menu.Item key="1" onClick={relateRoles} icon={<ShareAltOutlined />}>
批量关联角色
</Menu.Item>
<Menu.Item key="2" onClick={changeOrgs} icon={<ApartmentOutlined />}>
批量更改机构
</Menu.Item>
<Menu.Item key="3" onClick={deleteUsers} icon={<DeleteOutlined />}>
批量删除用户
</Menu.Item>
</Menu>
);
return ( return (
<PageContainer className={styles.userManageContainer}> <PageContainer className={styles.userManageContainer}>
<div className={styles.contentContainer}> <div className={styles.contentContainer}>
{/* 左侧机构树 */} {/* 左侧机构树 */}
<Spin spinning={treeLoading} tip="loading..."> <Spin spinning={treeLoading} tip="loading...">
<div className={treeVisible ? styles.orgContainer : styles.hide}> <div
{/* <div className={styles.orgContainer} style={{ display: treeDispaly }}> */} className={classnames({
[styles.orgContainer]: true,
[styles.orgContainerHide]: !treeVisible,
})}
>
<div>
<span style={{ margin: '10px' }}>机构列表</span> <span style={{ margin: '10px' }}>机构列表</span>
<Tooltip title="添加机构"> <Tooltip title="添加顶级机构">
<UsergroupAddOutlined <UsergroupAddOutlined
onClick={() => addOrg('根目录', '-1')} onClick={() => addOrg()}
style={{ style={{
float: 'right', float: 'right',
color: '#1890FF', color: '#1890FF',
...@@ -786,58 +960,47 @@ const UserManage = () => { ...@@ -786,58 +960,47 @@ const UserManage = () => {
/> />
)} )}
</div> </div>
</Spin>
<div style={{ color: '#1890FF', marginTop: '35vh', fontSize: '18px' }}> <div className={styles.switcher}>
{treeVisible && ( {treeVisible && (
<Tooltip title="隐藏机构列表"> <Tooltip title="隐藏机构列表">
<DoubleLeftOutlined <DoubleLeftOutlined onClick={() => setTreeVisible(false)} />
onClick={() => {
setTreeVisible(false);
// setTreeDispaly('none');
}}
/>
</Tooltip> </Tooltip>
)} )}
{!treeVisible && ( {!treeVisible && (
<Tooltip title="显示机构列表"> <Tooltip title="显示机构列表">
<DoubleRightOutlined <DoubleRightOutlined onClick={() => setTreeVisible(true)} />
onClick={() => {
setTreeVisible(true);
// setTreeDispaly('block');
}}
/>
</Tooltip> </Tooltip>
)} )}
</div> </div>
</div>
</Spin>
{/* 右侧用户表 */} {/* 右侧用户表 */}
<div className={styles.userContainer}> <div className={styles.userContainer}>
<div style={{ height: '50px' }}> <div style={{ height: '50px' }}>
<p style={{ margin: '16px 0 10px 16px', display: 'inline-block' }}> <p style={{ margin: '16px 0 10px 16px', display: 'inline-block' }}>
用户数量( {orgTitle}(共{tableLength}人)
<span className={styles.redText}>{tableLength}</span>
</p> </p>
<span style={{ float: 'right', margin: '10px' }}> <span style={{ float: 'right', margin: '10px' }}>
<Search <Search
style={{ width: 266 }} style={{ width: 300 }}
placeholder="搜索登录名称/用户名称/手机号" placeholder="请输入登录名称/用户名称/手机号"
onSearch={submitSearchUser} onSearch={submitSearchUser}
onChange={e => handleSearch(e)} onChange={e => handleSearch(e)}
enterButton enterButton
value={searchWord} value={searchWord}
/> />
<Button type="primary" onClick={addUser}> <Dropdown overlay={orgButtonMenu}>
添加用户 <Button type="primary">
</Button> 机构操作 <DownOutlined />
<Button type="primary" onClick={addSubOrg}>
添加机构
</Button>
<Button type="primary" onClick={editOrg}>
编辑机构
</Button> </Button>
<Button type="primary" onClick={deleteOrg}> </Dropdown>
删除机构 <Dropdown overlay={userButtonMenu} disabled={multiOperate}>
<Button type={multiOperateButtonType}>
用户批量操作 <DownOutlined />
</Button> </Button>
</Dropdown>
</span> </span>
</div> </div>
<Table <Table
...@@ -854,8 +1017,10 @@ const UserManage = () => { ...@@ -854,8 +1017,10 @@ const UserManage = () => {
loading={tableLoading} loading={tableLoading}
scroll={{ x: 'max-content' }} scroll={{ x: 'max-content' }}
pagination={{ pagination={{
showTotal: () => `共${tableLength}条`, showTotal: (total, range) =>
`第${range[0]}-${range[1]} 条/共 ${total} 条`,
pageSizeOptions: [10, 20, 50, 100], pageSizeOptions: [10, 20, 50, 100],
defaultPageSize: 20,
showQuickJumper: true, showQuickJumper: true,
showSizeChanger: true, showSizeChanger: true,
}} }}
...@@ -877,9 +1042,9 @@ const UserManage = () => { ...@@ -877,9 +1042,9 @@ const UserManage = () => {
<Form.Item <Form.Item
name="loginName" name="loginName"
label="登录名称" label="登录名称"
rules={[{ required: true, message: '不能为空' }]} rules={[{ required: true, message: '不能为空且不支持中文' }]}
> >
<Input placeholder="请输入登录名称" /> <Input placeholder="登录名称不支持中文" />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
name="password" name="password"
...@@ -895,17 +1060,35 @@ const UserManage = () => { ...@@ -895,17 +1060,35 @@ const UserManage = () => {
> >
<Input placeholder="请输入用户姓名" /> <Input placeholder="请输入用户姓名" />
</Form.Item> </Form.Item>
<Form.Item name="phone" label="手机号码"> <Form.Item
name="phone"
label="手机号码"
rules={[
{
pattern: new RegExp(/^1(3|4|5|6|7|8|9)\d{9}$/),
message: '请输入有效的手机号码!',
},
]}
>
<Input placeholder="请输入手机号码" /> <Input placeholder="请输入手机号码" />
</Form.Item> </Form.Item>
<Form.Item name="email" label="电子邮箱"> <Form.Item
<Input placeholder="请输入电子邮箱" /> name="email"
label="电子邮箱"
rules={[
{
type: 'email',
message: '请输入有效的电子邮箱!',
},
]}
>
<Input placeholder="请输入电子邮箱" autoComplete="off" />
</Form.Item> </Form.Item>
</Form> </Form>
</Modal> </Modal>
{/* 添加下级机构 */} {/* 添加下级机构 */}
<Modal <Modal
title={`在${orgTitle}下添加机构`} title={orgID === '-1' ? '添加顶级机构' : `在${orgTitle}下添加机构`}
visible={addOrgVisible} visible={addOrgVisible}
onOk={submitAddOrg} onOk={submitAddOrg}
onCancel={() => setAddOrgVisible(false)} onCancel={() => setAddOrgVisible(false)}
...@@ -1000,8 +1183,11 @@ const UserManage = () => { ...@@ -1000,8 +1183,11 @@ const UserManage = () => {
<Modal <Modal
title="更改机构" title="更改机构"
visible={changeOrgVisible} visible={changeOrgVisible}
onOk={submitChangeOrg} onOk={multiChangeOrgs ? submitChangeOrgs : submitChangeOrg}
onCancel={() => setChangeOrgVisible(false)} onCancel={() => {
setChangeOrgVisible(false);
setMultiChangeOrgs(false);
}}
okText="确认" okText="确认"
cancelText="取消" cancelText="取消"
width="330px" width="330px"
...@@ -1076,11 +1262,29 @@ const UserManage = () => { ...@@ -1076,11 +1262,29 @@ const UserManage = () => {
> >
<Input placeholder="请输入用户姓名" /> <Input placeholder="请输入用户姓名" />
</Form.Item> </Form.Item>
<Form.Item name="phone" label="手机号码"> <Form.Item
name="phone"
label="手机号码"
rules={[
{
pattern: new RegExp(/^1(3|4|5|6|7|8|9)\d{9}$/),
message: '请输入有效的手机号码!',
},
]}
>
<Input placeholder="请输入手机号码" /> <Input placeholder="请输入手机号码" />
</Form.Item> </Form.Item>
<Form.Item name="email" label="电子邮箱"> <Form.Item
<Input placeholder="请输入电子邮箱" /> name="email"
label="电子邮箱"
rules={[
{
type: 'email',
message: '请输入有效的电子邮箱!',
},
]}
>
<Input placeholder="请输入电子邮箱" autoComplete="off" />
</Form.Item> </Form.Item>
</Form> </Form>
</Modal> </Modal>
...@@ -1104,8 +1308,11 @@ const UserManage = () => { ...@@ -1104,8 +1308,11 @@ const UserManage = () => {
<Modal <Modal
title="确认删除用户" title="确认删除用户"
visible={deleteUserVisible} visible={deleteUserVisible}
onOk={submitDeleteUser} onOk={multiDelete ? submitDeleteUsers : submitDeleteUser}
onCancel={() => setDeleteUserVisible(false)} onCancel={() => {
setDeleteUserVisible(false);
setMultiDelete(false);
}}
okText="确认" okText="确认"
cancelText="取消" cancelText="取消"
> >
......
...@@ -30,7 +30,15 @@ ...@@ -30,7 +30,15 @@
display: block; display: block;
} }
} }
.ant-pagination-prev,.ant-pagination-next{
line-height: 8px !important;
}
.ant-input-search-button{
line-height: 1;
}
.ant-dropdown-menu-item > .anticon:first-child {
vertical-align: 0.15em !important;
}
} }
.redText{ .redText{
color: red; color: red;
...@@ -78,9 +86,13 @@ ...@@ -78,9 +86,13 @@
height: calc(100vh - 74px); height: calc(100vh - 74px);
float: left; float: left;
padding: 10px; padding: 10px;
width: 200px; padding-right: 22px;
width: 240px;
background: white; background: white;
overflow: auto; overflow: auto;
margin-right:10px;
transform: translateX(0px);
transition: transform 0.5s;
.ant-tree{ .ant-tree{
padding-top: 6px; padding-top: 6px;
.ant-tree-switcher{ .ant-tree-switcher{
...@@ -91,14 +103,23 @@ ...@@ -91,14 +103,23 @@
} }
} }
} }
.switcher{
color: #1890FF;
font-size: 18px;
position: absolute;
left: 220px;
top: 46%;
}
} }
.hide{
display: none; .orgContainerHide{
transform: translateX(-230px);
} }
.userContainer{ .userContainer{
height: calc(100vh - 168px) !important; height: calc(100vh - 74px) !important;
flex: 1; flex: 1;
min-width: 840px; min-width: 760px;
background: white; background: white;
.ant-table-pagination{ .ant-table-pagination{
padding-right: 12px; padding-right: 12px;
...@@ -106,14 +127,13 @@ ...@@ -106,14 +127,13 @@
margin: 1px 0; margin: 1px 0;
padding:8px; padding:8px;
padding-right: 20px; padding-right: 20px;
.ant-pagination-prev,.ant-pagination-next{
line-height: 8px !important;
}
} }
.ant-btn{
margin: 0px 10px;
.ant-btn-primary{ .ant-btn-primary{
margin-left: 20px;
background: #50aefc; background: #50aefc;
} }
}
.ant-input-search-button{ .ant-input-search-button{
margin-left: 0px !important; margin-left: 0px !important;
} }
...@@ -133,6 +153,10 @@ ...@@ -133,6 +153,10 @@
border-right: white; border-right: white;
overflow: auto !important; overflow: auto !important;
} }
.ant-pagination{
z-index: 999;
border-top: 1px solid #f0eded;
}
} }
} }
} }
......
...@@ -16,6 +16,7 @@ import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons'; ...@@ -16,6 +16,7 @@ import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons';
import { import {
setMenuToRole, setMenuToRole,
getRoleGroupList, getRoleGroupList,
getMenuByRoleWithLevel,
} from '@/services/userCenter/roleManage/api'; } from '@/services/userCenter/roleManage/api';
import ListCard, { import ListCard, {
checkChildrenByCondition, checkChildrenByCondition,
...@@ -28,7 +29,6 @@ import AddModal from './AddModal'; ...@@ -28,7 +29,6 @@ import AddModal from './AddModal';
import DelModal from './DelModal'; import DelModal from './DelModal';
import EditModal from './EditModal'; import EditModal from './EditModal';
import EditGroup from './EditGroup'; import EditGroup from './EditGroup';
import { get } from '@/services';
import userStyles from '../UserManage.less'; import userStyles from '../UserManage.less';
const { Search } = Input; const { Search } = Input;
...@@ -79,7 +79,7 @@ const SiteManage = () => { ...@@ -79,7 +79,7 @@ const SiteManage = () => {
}; };
useEffect(() => { useEffect(() => {
setSpinLoading(true); setSpinLoading(true);
getRoleGroupList({ userID: 1 }).then(res => { getRoleGroupList({ userID: '1' }).then(res => {
setSpinLoading(false); setSpinLoading(false);
if (res.code === 0) { if (res.code === 0) {
const { roleList } = res.data; const { roleList } = res.data;
...@@ -114,8 +114,7 @@ const SiteManage = () => { ...@@ -114,8 +114,7 @@ const SiteManage = () => {
title: '默认组', title: '默认组',
id: '', id: '',
}; };
getMenuByRoleWithLevel({
get('/Cityinterface/rest/services/OMS.svc/W4_GetMenuByRoleWithLevel', {
roleID: itemObj.roleID, roleID: itemObj.roleID,
subSystemValue: itemObj.subSystemValue, subSystemValue: itemObj.subSystemValue,
subSystemName: itemObj.subSystemValue, subSystemName: itemObj.subSystemValue,
...@@ -168,14 +167,28 @@ const SiteManage = () => { ...@@ -168,14 +167,28 @@ const SiteManage = () => {
// 树形数据转换; // 树形数据转换;
const transTree = val => { const transTree = val => {
let arr = val; let arr = val;
let arr2 = arr.map(item => { let newArr = [];
let arr2 = arr.filter(item => {
if (item.child && item.child.length > 0) { if (item.child && item.child.length > 0) {
item.child.forEach(itemC => { item.child.forEach(itemC => {
item.roleList.unshift(itemC); item.roleList.unshift(itemC);
}); });
} }
return item; if (item.visibleTitle === '手持系统') {
newArr[0] = item;
}
if (item.visibleTitle === '小程序') {
newArr[1] = item;
}
return (
item.visibleTitle !== '其它角色' &&
item.visibleTitle !== '运维管理' &&
item.visibleTitle !== '手持系统' &&
item.visibleTitle !== '小程序'
);
}); });
arr2 = arr2.concat(newArr);
console.log(arr2, 'arr2');
let arr3 = arr2.map(item => { let arr3 = arr2.map(item => {
item.title = item.visibleTitle || ''; item.title = item.visibleTitle || '';
item.key = item.visibleValue || ''; item.key = item.visibleValue || '';
...@@ -288,9 +301,8 @@ const SiteManage = () => { ...@@ -288,9 +301,8 @@ const SiteManage = () => {
}; };
return ( return (
<PageContainer> <PageContainer>
{/* <GridContent> */}
<Row gutter={0}> <Row gutter={0}>
<Col lg={mulu ? 5 : 0}> <Col span={mulu ? 5 : 0}>
<Card className={styles.cardBox}> <Card className={styles.cardBox}>
<Spin <Spin
tip="loading...." tip="loading...."
...@@ -338,21 +350,28 @@ const SiteManage = () => { ...@@ -338,21 +350,28 @@ const SiteManage = () => {
confirmModal={groupModal} confirmModal={groupModal}
/> />
</Card> </Card>
</Col> <div>
<Col>
{mulu && ( {mulu && (
<Tooltip title="隐藏角色栏" className={styles.hide}> <Tooltip title="隐藏角色栏" className={styles.hide}>
<DoubleLeftOutlined onClick={() => handleHide()} /> <DoubleLeftOutlined onClick={() => handleHide()} />
</Tooltip> </Tooltip>
)} )}
</div>
</Col>
<Col span={mulu ? 0 : 1}>
{/* {mulu && (
<Tooltip title="隐藏角色栏" className={styles.hide}>
<DoubleLeftOutlined onClick={() => handleHide()} />
</Tooltip>
)} */}
{!mulu && ( {!mulu && (
<Tooltip title="显示角色栏" className={styles.hide}> <Tooltip title="显示角色栏" className={styles.hide}>
<DoubleRightOutlined onClick={() => handleHide()} /> <DoubleRightOutlined onClick={() => handleHide()} />
</Tooltip> </Tooltip>
)} )}
</Col> </Col>
<Col lg={mulu ? 18 : 23}> <Col span={mulu ? 19 : 23}>
<Card style={{ marginBottom: '10px' }}> <Card style={{ marginBottom: '10px', minWidth: '870px' }}>
<Row align="middle"> <Row align="middle">
<Col span={1}>搜索</Col> <Col span={1}>搜索</Col>
<Col span={8}> <Col span={8}>
...@@ -385,6 +404,7 @@ const SiteManage = () => { ...@@ -385,6 +404,7 @@ const SiteManage = () => {
编辑角色 编辑角色
</Button> </Button>
<Button <Button
type="primary"
danger danger
onClick={() => { onClick={() => {
handleDel(); handleDel();
...@@ -421,7 +441,6 @@ const SiteManage = () => { ...@@ -421,7 +441,6 @@ const SiteManage = () => {
</Card> </Card>
</Col> </Col>
</Row> </Row>
{/* </GridContent> */}
</PageContainer> </PageContainer>
); );
}; };
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
min-height: calc(100vh - 80px); min-height: calc(100vh - 80px);
max-height: calc(100vh - 80px); max-height: calc(100vh - 80px);
overflow-y: scroll; overflow-y: scroll;
margin-right: 20px;
} }
.ant-tree-node-content-wrapper-open{ .ant-tree-node-content-wrapper-open{
display: flex; display: flex;
...@@ -26,6 +27,7 @@ ...@@ -26,6 +27,7 @@
align-items: center; align-items: center;
} }
.cardBoxR{ .cardBoxR{
min-width: 870px;
min-height: calc(100vh - 172px); min-height: calc(100vh - 172px);
max-height: calc(100vh - 172px); max-height: calc(100vh - 172px);
overflow-y: scroll; overflow-y: scroll;
...@@ -43,10 +45,11 @@ ...@@ -43,10 +45,11 @@
.hide{ .hide{
display: block; display: block;
position: relative; position: absolute;
font-size: 20px; font-size: 20px;
color: #1890FF!important; color: #1890FF!important;
top: 45%; top: 45%;
left: 50%; right:0;
transform: translate(-50%,-50%); transform: translate(0%,-50%);
z-index: 2;
} }
...@@ -11,20 +11,17 @@ import { ...@@ -11,20 +11,17 @@ import {
List, List,
Space, Space,
} from 'antd'; } from 'antd';
import { import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons';
FileAddTwoTone,
EditTwoTone,
DeleteTwoTone,
DoubleLeftOutlined,
DoubleRightOutlined,
} from '@ant-design/icons';
import { GridContent } from '@ant-design/pro-layout';
import PageContainer from '@/components/BasePageContainer'; import PageContainer from '@/components/BasePageContainer';
import { import {
getWebModuleTree, getWebModuleTree,
chooseUserToStation, chooseUserToStation,
getUserByStation,
} from '@/services/userCenter/siteManage/api'; } from '@/services/userCenter/siteManage/api';
import ListCard from '@/pages/orgnazation/ListCard'; import ListCard, {
checkChildrenByCondition,
getId,
} from '@/components/CheckGroup';
import styles from '@/pages/userCenter/siteManage/SiteManage.less'; import styles from '@/pages/userCenter/siteManage/SiteManage.less';
import qs from 'qs'; import qs from 'qs';
import classnames from 'classnames'; import classnames from 'classnames';
...@@ -46,6 +43,9 @@ const SiteManage = () => { ...@@ -46,6 +43,9 @@ const SiteManage = () => {
const [subList, setSubList] = useState([]); // 选中的数组 const [subList, setSubList] = useState([]); // 选中的数组
const [spinLoading, setSpinLoading] = useState(false); const [spinLoading, setSpinLoading] = useState(false);
const [btnLoading, setBtnLoading] = useState(false); const [btnLoading, setBtnLoading] = useState(false);
const [valueList, setValueList] = useState([]);
const [dataList, setdataList] = useState([]);
const [loading, setLoading] = useState(true);
const [mulu, setMulu] = useState(true); const [mulu, setMulu] = useState(true);
useEffect(() => { useEffect(() => {
...@@ -81,38 +81,68 @@ const SiteManage = () => { ...@@ -81,38 +81,68 @@ const SiteManage = () => {
console.error(err); console.error(err);
}); });
}, [flag]); }, [flag]);
useEffect(() => {
const Title = props => { if (!currentStation.stationID) return;
const { text } = props; setLoading(true);
return ( const defaultConfig = {};
<div className={styles.treeTitle}> getUserByStation({
{text} stationID: currentStation.stationID,
<div className={styles.titleBox}> _version: 9999,
<Tooltip title="新增站点"> _dc: new Date().getTime(),
<FileAddTwoTone })
onClick={() => { .then(res => {
handleAdd(props); const list = [];
}} // eslint-disable-next-line no-unused-expressions
/> res &&
</Tooltip> res.forEach(item => {
<Tooltip title="编辑站点"> list.push({ ...defaultConfig, ...item });
<EditTwoTone });
onClick={() => { const finalList = buildMap(list);
handleEdit(props); setdataList(finalList);
}} setValueList(
/> finalList
</Tooltip> .map(l =>
<Tooltip title="删除站点"> checkChildrenByCondition(
<DeleteTwoTone l,
onClick={() => { it => (it.isChecked ? [getId(it)] : []),
handleDel(props); 'map',
}} ).flat(Infinity),
/> )
</Tooltip> .flat(Infinity)
</div> .filter(Boolean),
</div>
); );
setLoading(false);
})
.catch(err => {
setLoading(false);
});
}, [currentStation]);
const buildMap = list => {
const obj = {
type: 'widgetGroup',
searchWord,
children: '',
text: '',
itemid: '',
}; };
let arr = list.map(item => {
item.id = item.OUID * 10000;
item.text = item.OUName;
item.type = 'widgetGroup';
item.children = item.userList.map(u => ({
...u,
text: u.userName,
type: 'widgetChild',
}));
return item;
});
console.log(arr);
return arr.filter(item => item.userList.length > 0);
};
// 新增站点
const handleAdd = e => { const handleAdd = e => {
console.log(e); console.log(e);
setModalVisible(true); setModalVisible(true);
...@@ -125,21 +155,6 @@ const SiteManage = () => { ...@@ -125,21 +155,6 @@ const SiteManage = () => {
const handleEdit = e => { const handleEdit = e => {
setEditVisible(true); setEditVisible(true);
}; };
// 树形数据转换
const transTree = val => {
let arr = val;
return arr.map((item, index) => {
item.title = Title(item) || item.text;
item.key = item.stationID || '';
let obj = {};
if (Array.isArray(item.children) && item.children.length > 0) {
transTree(item.children);
obj = item;
return obj;
}
return item;
});
};
// 获取搜索框的值 // 获取搜索框的值
const handleSearch = value => { const handleSearch = value => {
setSearchWord(value); setSearchWord(value);
...@@ -163,12 +178,12 @@ const SiteManage = () => { ...@@ -163,12 +178,12 @@ const SiteManage = () => {
const valueCallback = valueObj => { const valueCallback = valueObj => {
setSubList(valueObj); setSubList(valueObj);
}; };
const handleCommit = value => { const handleCommit = results => {
let arr = Object.values(subList);
setBtnLoading(true); setBtnLoading(true);
chooseUserToStation( chooseUserToStation(
qs.stringify({ qs.stringify({
userList: String(arr.flat()), // userList: String(arr.flat()),
userList: String(results.flat()),
stationID: currentStation.stationID, stationID: currentStation.stationID,
}), }),
{ {
...@@ -188,7 +203,7 @@ const SiteManage = () => { ...@@ -188,7 +203,7 @@ const SiteManage = () => {
} else { } else {
notification.error({ notification.error({
message: '提示', message: '提示',
duration: 3, duration: 15,
description: res.message, description: res.message,
}); });
} }
...@@ -219,10 +234,13 @@ const SiteManage = () => { ...@@ -219,10 +234,13 @@ const SiteManage = () => {
return ( return (
<PageContainer> <PageContainer>
<GridContent> <Row>
<Row gutter={0}> <Col span={mulu ? 5 : 0}>
<Col lg={mulu ? 5 : 0}> <Card
<Card className={styles.cardBox}> className={classnames({
[styles.cardBox]: true,
})}
>
<Spin <Spin
tip="loading...." tip="loading...."
spinning={spinLoading} spinning={spinLoading}
...@@ -251,13 +269,25 @@ const SiteManage = () => { ...@@ -251,13 +269,25 @@ const SiteManage = () => {
confirmModal={editModal} confirmModal={editModal}
/> />
</Card> </Card>
</Col> <div>
<Col>
{mulu && ( {mulu && (
<Tooltip title="隐藏站点" className={styles.hide}> <Tooltip title="隐藏站点" className={styles.hide}>
<DoubleLeftOutlined onClick={() => handleHide()} /> <DoubleLeftOutlined onClick={() => handleHide()} />
</Tooltip> </Tooltip>
)} )}
{/* {!mulu && (
<Tooltip title="显示站点" className={styles.hide}>
<DoubleRightOutlined onClick={() => handleHide()} />
</Tooltip>
)} */}
</div>
</Col>
<Col span={mulu ? 0 : 1}>
{/* {mulu && (
<Tooltip title="隐藏站点" className={styles.hide}>
<DoubleLeftOutlined onClick={() => handleHide()} />
</Tooltip>
)} */}
{!mulu && ( {!mulu && (
<Tooltip title="显示站点" className={styles.hide}> <Tooltip title="显示站点" className={styles.hide}>
<DoubleRightOutlined onClick={() => handleHide()} /> <DoubleRightOutlined onClick={() => handleHide()} />
...@@ -265,8 +295,8 @@ const SiteManage = () => { ...@@ -265,8 +295,8 @@ const SiteManage = () => {
)} )}
</Col> </Col>
<Col lg={mulu ? 18 : 23}> <Col span={mulu ? 19 : 23}>
<Card style={{ marginBottom: '10px' }}> <Card style={{ marginBottom: '10px', minWidth: '600px' }}>
<Row align="middle"> <Row align="middle">
<Col span={1}>搜索</Col> <Col span={1}>搜索</Col>
<Col span={8}> <Col span={8}>
...@@ -300,6 +330,7 @@ const SiteManage = () => { ...@@ -300,6 +330,7 @@ const SiteManage = () => {
</Button> </Button>
<Button <Button
danger danger
type="primary"
onClick={() => { onClick={() => {
handleDel(currentStation.stationID); handleDel(currentStation.stationID);
}} }}
...@@ -314,9 +345,10 @@ const SiteManage = () => { ...@@ -314,9 +345,10 @@ const SiteManage = () => {
<Card className={styles.cardBoxR}> <Card className={styles.cardBoxR}>
{currentStation.stationID && ( {currentStation.stationID && (
<ListCard <ListCard
ouid={currentStation.stationID} loading={loading}
checkList={valueList}
dataList={dataList}
searchWord={searchWord} searchWord={searchWord}
valueCallback={valueCallback}
onCommit={handleCommit} onCommit={handleCommit}
btnLoading={btnLoading} btnLoading={btnLoading}
/> />
...@@ -324,7 +356,6 @@ const SiteManage = () => { ...@@ -324,7 +356,6 @@ const SiteManage = () => {
</Card> </Card>
</Col> </Col>
</Row> </Row>
</GridContent>
</PageContainer> </PageContainer>
); );
}; };
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
min-height: calc(100vh - 80px); min-height: calc(100vh - 80px);
max-height: calc(100vh - 80px); max-height: calc(100vh - 80px);
overflow: auto; overflow: auto;
margin-right: 20px;
} }
.siteTitle{ .siteTitle{
font-size: 16px; font-size: 16px;
margin: 0 0 6px 0; margin: 0 0 6px 0;
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
.cardBoxR{ .cardBoxR{
min-height: calc(100vh - 172px); min-height: calc(100vh - 172px);
max-height: calc(100vh - 172px); max-height: calc(100vh - 172px);
min-width: 600px;
overflow-y: scroll; overflow-y: scroll;
} }
.ant-tree-node-content-wrapper-open{ .ant-tree-node-content-wrapper-open{
...@@ -53,10 +54,14 @@ ...@@ -53,10 +54,14 @@
.hide{ .hide{
display: block; display: block;
position: relative; position: absolute;
font-size: 20px; font-size: 20px;
color: #1890FF!important; color: #1890FF!important;
top: 45%; top: 45%;
left: 50%; right: 0;
transform: translate(-50%,-50%); transform: translate(0%,-50%);
z-index: 2;
} }
// .hide{
// left: 0;
// }
\ No newline at end of file
...@@ -80,7 +80,7 @@ export default { ...@@ -80,7 +80,7 @@ export default {
// }, // },
{ {
path: '/dbm/dbInit', path: '/dbm/dbInit',
name: '数据库初始化', name: '数据库连接',
authority: adminAuthority, authority: adminAuthority,
component: InitDataBase, component: InitDataBase,
}, },
......
...@@ -53,3 +53,7 @@ export const deleteRole = params => ...@@ -53,3 +53,7 @@ export const deleteRole = params =>
// 编辑分组名称 // 编辑分组名称
export const setRoleGroupName = params => export const setRoleGroupName = params =>
get('/Cityinterface/rest/services/OMS.svc/P_SetRoleGroupName', params); get('/Cityinterface/rest/services/OMS.svc/P_SetRoleGroupName', params);
// 保存选择的功能
export const getMenuByRoleWithLevel = params =>
get('/Cityinterface/rest/services/OMS.svc/W4_GetMenuByRoleWithLevel', params);
...@@ -29,3 +29,7 @@ export const chooseUserToStation = (params, options) => ...@@ -29,3 +29,7 @@ export const chooseUserToStation = (params, options) =>
params, params,
options, options,
); );
// 获取人员
export const getUserByStation = params =>
get('/Cityinterface/rest/services/OMS.svc/P_GetUserByStation', params);
...@@ -100,6 +100,15 @@ export const addToOrg = (userID, orgID, newOrgID) => ...@@ -100,6 +100,15 @@ export const addToOrg = (userID, orgID, newOrgID) =>
oldOUID: orgID, oldOUID: orgID,
newOUID: newOrgID, newOUID: newOrgID,
}); });
// 批量更改机构
export const addToOrgs = (userIDs, orgIDs, newOrgID) =>
get(`${PUBLISH_SERVICE}/UserCenter/ModifyUserRole`, {
_version: 9999,
_dc: Date.now(),
userIds: userIDs,
oldGroupIds: orgIDs,
newGroupId: newOrgID,
});
export const updateUserPassword = ( export const updateUserPassword = (
userID, userID,
...@@ -141,6 +150,14 @@ export const deleteUser = userID => ...@@ -141,6 +150,14 @@ export const deleteUser = userID =>
_dc: Date.now(), _dc: Date.now(),
userID, userID,
}); });
// 批量删除用户
export const multiDeleteUsers = (userIDs, orgIDs) =>
get(`${PUBLISH_SERVICE}/UserCenter/DeleteUsers`, {
_version: 9999,
_dc: Date.now(),
userIds: userIDs,
groupId: orgIDs,
});
export const setUserRelation = (userID, roleList = [], stationList) => export const setUserRelation = (userID, roleList = [], stationList) =>
post( post(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment