Browse Source

人员及角色

release_0.0.2
deartibers 2 years ago
parent
commit
6fc20ce0f7
  1. BIN
      web/client/assets/images/install/cardBackground.png
  2. BIN
      web/client/assets/images/install/cardBackground01.png
  3. BIN
      web/client/assets/images/install/cardBackground02.png
  4. BIN
      web/client/assets/images/install/cardBackground03.png
  5. BIN
      web/client/assets/images/install/cardBackground04.png
  6. BIN
      web/client/assets/images/install/cardBackground05.png
  7. BIN
      web/client/assets/images/install/greyBackground.png
  8. BIN
      web/client/assets/images/install/setPermissionsGrey.png
  9. 2
      web/client/src/layout/components/footer/index.jsx
  10. 30
      web/client/src/sections/install/actions/roles.js
  11. 134
      web/client/src/sections/install/components/adminModal.jsx
  12. 213
      web/client/src/sections/install/components/memberModal.jsx
  13. 207
      web/client/src/sections/install/containers/roles.jsx
  14. 2
      web/client/src/utils/webapi.js

BIN
web/client/assets/images/install/cardBackground.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

BIN
web/client/assets/images/install/cardBackground01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
web/client/assets/images/install/cardBackground02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
web/client/assets/images/install/cardBackground03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
web/client/assets/images/install/cardBackground04.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
web/client/assets/images/install/cardBackground05.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
web/client/assets/images/install/greyBackground.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

BIN
web/client/assets/images/install/setPermissionsGrey.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

2
web/client/src/layout/components/footer/index.jsx

@ -7,7 +7,7 @@ export default class Footer extends React.Component {
// const { } = this.props;
return (
<div style={{ textAlign: 'center', lineHeight: '32px' }}>
<div style={{ textAlign: 'center', lineHeight: '32px',fontSize:13,color:'rgb(139, 139, 139)' }}>
Copyright © {moment().year()} All Rights Reserved 版权所有· 江西飞尚科技有限公司
</div>
);

30
web/client/src/sections/install/actions/roles.js

@ -25,9 +25,9 @@ export function getOrganizationUser (query) {//获取成员列表
reducer: { name: "OrganizationUser", params: { noClear: true } },
});
}
export function putOrganizationUser(data) {//更新成员状态
let pomsUserId=''
if(data){
export function putOrganizationUser (data) {//更新成员状态
let pomsUserId = ''
if (data) {
pomsUserId = data.pomsUserId
}
return (dispatch) =>
@ -40,4 +40,28 @@ export function putOrganizationUser(data) {//更新成员状态
msg: { option: "更新成员状态" }, //更新成员状态
reducer: {},
});
}
export function postOrganizationUser (data) {//添加/编辑成员
return (dispatch) =>
basicAction({
type: "post",
dispatch: dispatch,
data,
actionType: "POST_ORGANIZATION_USER",
url: `${ApiTable.postOrganizationUser}`,
msg: { option: "添加/编辑成员" }, //添加/编辑成员
reducer: { name: "" },
});
}
export function deteleOrganizationAdmin(orgId) {
return (dispatch) =>
basicAction({
type: "del",
dispatch: dispatch,
actionType: "DEL_ORGANIZATION_ADMIN",
url: `${ApiTable.deteleOrganizationAdmin.replace("{pomsUserId}", orgId)}`,
msg: { option: "删除管理员" }, //删除管理员
reducer: {},
});
}

134
web/client/src/sections/install/components/adminModal.jsx

@ -1,30 +1,57 @@
import React, { useState, useRef, useEffect } from "react";
import { connect } from "react-redux";
import { Modal, Spin,Input } from "@douyinfe/semi-ui";
import { Modal, Form } from "@douyinfe/semi-ui";
import { IconAlertCircle } from '@douyinfe/semi-icons';
function remarksModal (props) {
function adminModal (props) {
const {
close,
visible,
dispatch,
pepList,
actions,
adminEdit,//
editObj,
} = props;
const { equipmentWarehouse } = actions;
const { install } = actions;
const form = useRef();//
const [disablePeople, setDisablePeople] = useState(true); //
const [peopleList, setPeopleList] = useState([]); //List
const [departmentId, setDepartmentId] = useState(); //id
const [peopleId, setPeopleId] = useState(); //id
//
useEffect(() => {
if (editObj.id) {
let departmentList = []
for (let i = 0; i < pepList.length; i++) {
if (pepList[i].id == editObj.departments[0].id) {
departmentList = pepList[i].users
}
}
setPeopleList(departmentList)
setDepartmentId(editObj.departments[0].id)
setPeopleId(editObj.id)
setDisablePeople(false)
}
}, []);
function handleOk () {
//
// dispatch(
// equipmentWarehouse.postCameraRemark({
// cameraId:rowId,
// remark:showScrollList
// })
// ).then((res) => {
// close();
// })
form.current
.validate()
.then((values) => {
if (adminEdit) {
dispatch(install.postOrganizationUser({ role: ['admin'], pepUserId: values.pepUserId })).then((res) => {//(PEP)
close();
})
}
else {
dispatch(install.postOrganizationUser({ role: ['admin'], pepUserId: values.pepUserId })).then((res) => {//(PEP)
close();
})
}
})
}
function handleCancel () {
close();
@ -33,16 +60,89 @@ function remarksModal (props) {
return (
<>
<Modal
title="备注管理"
title="管理员设置"
okText="确定"
cancelText="取消"
visible={visible}
onOk={handleOk}
width={763}
width={607}
onCancel={handleCancel}
>
<div style={{margin:"2px 14px 18px 29px",display:'flex'}}>
<div style={{ margin: "0px 25px" }}>
<div style={{ width: '100%', height: 32, background: '#F4F8FF', borderRadius: 2, border: '1px solid #C7E1FF', display: 'flex', alignItems: 'center' }}>
<div style={{ display: 'flex', alignItems: 'center', marginLeft: 12 }}><IconAlertCircle style={{ color: '#0F7EFB' }} /></div>
<div style={{ color: '#0F7EFB', fontSize: 12, marginLeft: 8 }}>成员成为管理员后拥有平台所有权限和项目不再拥有成员角色</div>
</div>
<Form
allowEmpty
labelPosition="left"
labelAlign="right"
labelWidth="90px"
onValueChange={(values, field) => {
if (values.department >= 0) {
let departmentList = []
for (let i = 0; i < pepList.length; i++) {
if (pepList[i].id == values.department) {
departmentList = pepList[i].users
}
}
setPeopleList(departmentList)
setDisablePeople(false)
// if(disablePeople){
// form.current.setValue(pepUserId, undefined);
// }
}
else {
setPeopleList([])
setDisablePeople(true)
}
}}
getFormApi={(formApi) => (form.current = formApi)}
>
<div>
<Form.Select
label="选择部门:"
field="department"
placeholder="请选择部门"
style={{ width: 417 }}
rules={[{ required: true, message: "请选择部门" }]}
initValue={departmentId || ""}
showClear
>
{
pepList.map((item, index) => {
return (
<Form.Select.Option key={index} value={item.id}>
{item.name}
</Form.Select.Option>
)
})
}
</Form.Select>
</div>
<div>
<Form.Select
label="选择人员:"
field="pepUserId"
placeholder="请选择人员"
style={{ width: 417 }}
rules={[{ required: true, message: "请选择人员" }]}
initValue={peopleId || ""}
showClear
disabled={disablePeople}
>
{
peopleList.map((item, index) => {
return (
<Form.Select.Option key={item.id} value={item.id}>
{item.name}
</Form.Select.Option>
)
})
}
</Form.Select>
</div>
</Form>
</div>
</Modal>
</>
@ -58,4 +158,4 @@ function mapStateToProps (state) {
};
}
export default connect(mapStateToProps)(remarksModal);
export default connect(mapStateToProps)(adminModal);

213
web/client/src/sections/install/components/memberModal.jsx

@ -0,0 +1,213 @@
import React, { useState, useRef, useEffect } from "react";
import { connect } from "react-redux";
import { Modal, Form, CheckboxGroup, Checkbox } from "@douyinfe/semi-ui";
import { IconAlertCircle } from '@douyinfe/semi-icons';
function memberModal (props) {
const {
close,
visible,
dispatch,
pepList,
actions,
editObj,
memberEdit,
} = props;
const { install } = actions;
const form = useRef();//
const [disablePeople, setDisablePeople] = useState(true); //
const [peopleList, setPeopleList] = useState([]); //List
const [departmentId, setDepartmentId] = useState(); //id
const [jurisdiction, setJurisdiction] = useState([
{
label: '数据分析师',
value: 'data_analyst',
text: '拥有数据分析、工单管理的权限、资料相关的权限'
}, {
label: '售后运维',
value: 'after_sale',
text: '拥有设备、问题、工单、资料相关的权限'
}, {
label: '资源管理者',
value: 'resource_manage',
text: '拥有资料、设备、工单相关的权限'
}, {
label: '客户服务',
value: 'customer_service',
text: '拥有服务、工单、资料相关的权限'
},
]); //
//
useEffect(() => {
if(editObj.id){
let departmentList = []
for (let i = 0; i < pepList.length; i++) {
if (pepList[i].id == editObj.departments[0].id) {
departmentList = pepList[i].users
}
}
setDepartmentId(editObj.departments[0].id)
setPeopleList(departmentList)
}
}, []);
function handleOk () {
//
form.current
.validate()
.then((values) => {
dispatch(install.postOrganizationUser({ role: values.role, pepUserId: values.pepUserId })).then((res) => {//(PEP)
close();
})
})
}
function handleCancel () {
close();
//
}
return (
<>
<Modal
title="成员设置"
okText="确定"
cancelText="取消"
visible={visible}
onOk={handleOk}
width={607}
onCancel={handleCancel}
>
<div style={{ margin: "0px 25px" }}>
<div style={{ width: '100%', height: 32, background: '#F4F8FF', borderRadius: 2, border: '1px solid #C7E1FF', display: 'flex', alignItems: 'center' }}>
<div style={{ display: 'flex', alignItems: 'center', marginLeft: 12 }}><IconAlertCircle style={{ color: '#0F7EFB' }} /></div>
<div style={{ color: '#0F7EFB', fontSize: 12, marginLeft: 8 }}>成员成为管理员后拥有平台所有权限和项目不再拥有成员角色</div>
</div>
<Form
allowEmpty
labelPosition="left"
labelAlign="right"
labelWidth="90px"
onValueChange={(values, field) => {
for(var key in field){
if(key=='department'){
if (values.department >= 0) {
setDisablePeople(false)
setPeopleList(pepList[values.department].users)
}
else {
setPeopleList([])
setDisablePeople(true)
}
}
}
}}
getFormApi={(formApi) => (form.current = formApi)}
>
<div>
<Form.Select
label="选择部门:"
field="department"
placeholder="请选择部门"
style={{ width: 417 }}
rules={[{ required: true, message: "请选择部门" }]}
showClear
initValue={departmentId || ""}
disabled={memberEdit}
>
{
pepList.map((item, index) => {
return (
<Form.Select.Option key={item.id} value={index}>
{item.name}
</Form.Select.Option>
)
})
}
</Form.Select>
</div>
<div>
<Form.Select
label="选择人员:"
field="pepUserId"
placeholder="请选择人员"
style={{ width: 417 }}
rules={[{ required: true, message: "请选择人员" }]}
showClear
initValue={editObj.id || ""}
disabled={disablePeople}
>
{
peopleList.map((item, index) => {
return (
<Form.Select.Option key={item.id} value={item.id}>
{item.name}
</Form.Select.Option>
)
})
}
</Form.Select>
</div>
<div>
<Form.CheckboxGroup
field="role"
label='权限配置:'
showClear
initValue={editObj.role||[]}
>
{
jurisdiction.map((item, index) => {
return (
<Checkbox value={item.value} key={index} >
<div style={{ display: 'flex' }}>
<div style={{ fontSize: 13, color: '#4A4A4A' }}>
{item.label}
</div>
<div style={{ fontSize: 12, color: '#969799', marginLeft: 12 }}>
{item.text}
</div>
</div>
</Checkbox>
)
})
}
</Form.CheckboxGroup>
</div>
<div>
<Form.Select
label="关联项目:"
field="correlationProject"
multiple
// placeholder=""
style={{ width: 417 }}
// rules={[{ required: true, message: "" }]}
showClear
>
{/* {
pepList.map((item, index) => {
return (
<Form.Select.Option key={item.id} value={index}>
{item.name}
</Form.Select.Option>
)
})
} */}
</Form.Select>
</div>
</Form>
</div>
</Modal>
</>
);
}
function mapStateToProps (state) {
const { auth, global, members } = state;
return {
// loading: members.isRequesting,
user: auth.user,
actions: global.actions,
// members: members.data,
};
}
export default connect(mapStateToProps)(memberModal);

207
web/client/src/sections/install/containers/roles.jsx

@ -3,22 +3,48 @@ import { connect } from 'react-redux';
import { Skeleton, Table, RadioGroup, Radio, Button, Pagination, Popconfirm, Tooltip } from '@douyinfe/semi-ui';
import { SkeletonScreen, } from "$components";
import AdminModal from '../components/adminModal';
import MemberModal from '../components/memberModal';
import '../style.less'
const Roles = (props) => {
const { dispatch, actions, user, loading, socket } = props
const { install } = actions;
const [roleAssignment, setRoleAssignment] = useState([])//
const [notCreated, setNotCreated] = useState([])//
const [roleChoose, setRoleChoose] = useState('')//
const [query, setQuery] = useState({ limit: 10, page: 0 }); //
const [adminModal, setAdminModal] = useState(false);
const [columns, setColumns] = useState([
const [adminModal, setAdminModal] = useState(false);//
const [adminEdit, setAdminEdit] = useState(false);//
const [editObj, setEditObj] = useState({});//
const [memberModal, setMemberModal] = useState(false);//
const [memberEdit, setMemberEdit] = useState(false);//
const [columns, setColumns] = useState([//
{
title: '成员',
render: (_, row) => {
let departmentsArr = []
for (let i = 0; i < row.departments.length; i++) {
departmentsArr.push(row.departments[i].name)
}
return (
'text'
<div style={{ display: 'flex', alignItems: 'center' }}>
<div>
{row.name}
</div>
<div style={{ padding: '2px 4px', background: '#E8F3FF', borderRadius: 2, fontSize: 12, color: '#005ABD', marginLeft: 4 }}>
{row.departments[0].name}
</div>
{
row.departments.length > 1 ? (
<Tooltip content={departmentsArr.join(',')} trigger="click">
<div style={{ fontSize: 14, color: '#005ABD', marginLeft: 8, cursor: "pointer", }}>
+{row.departments.length - 1}
</div>
</Tooltip>
) : ('')
}
</div>
)
}
},
@ -26,7 +52,17 @@ const Roles = (props) => {
title: '项目名称',
render: (_, row) => {
return (
'name'
<div>
{
row.correlationProject.map((item, index) => {
return (
<div key={index}>
{item}
</div>
)
})
}
</div>
)
}
},
@ -197,8 +233,9 @@ const Roles = (props) => {
<Button
theme="borderless"
onClick={() => {
// setSideSheet(true);
// setRowId(row.id);
setMemberModal(true);
setEditObj(row)
setMemberEdit(true)
}}
>
编辑
@ -209,7 +246,7 @@ const Roles = (props) => {
showArrow={true}
position="topRight"
onConfirm={() => {
dispatch(install.putOrganizationUser({ pomsUserId: row?.id, disabled: !row?.disabled })).then(() => {
dispatch(install.putOrganizationUser({ pomsUserId: row?.id, deleted: true })).then(() => {
if (page.current > 0 && limits.current < 2) {
setQuery({ limit: 10, page: page.current - 1 })
} else {
@ -225,29 +262,30 @@ const Roles = (props) => {
},
},
])
const [data, setdata] = useState([])
const page = useRef(query.page);
// const [data, setdata] = useState([])//
const tableData = useRef([]); //
const page = useRef(query.page);//
const limits = useRef(); //
const [pepList, setPepList] = useState([])//
useEffect(() => {
getUserList();
}, [query, roleChoose]);
useEffect(() => {
dispatch(install.getOrganizationDeps()).then((res)=>{//(PEP)
console.log('resresres',res.payload.data);
dispatch(install.getOrganizationDeps()).then((res) => {//(PEP)
setPepList(res.payload.data)
})
getUserList()
}, [])
function getUserList () {
let searchData = { ...query, role: roleChoose }
dispatch(install.getOrganizationUser(searchData)).then((res) => {//
setdata(res.payload.data.users.rows);
setRoleAssignment(res.payload.data.admin)
tableData.current = res.payload.data.users.rows;
let notCreatedArr = []
let notCreatedNum = 5 - res.payload.data.admin.length
for (let i = 0; i < notCreatedNum; i++) {
notCreatedArr.push('')
}
setNotCreated(notCreatedArr)
setRoleAssignment(res.payload.data.admin.concat(notCreatedArr))
limits.current = res.payload.data.users.count
})
}
@ -281,74 +319,82 @@ const Roles = (props) => {
return (
<div key={index} style={{
width: 312, height: 127, boxShadow: '0px 0px 12px 2px rgba(220,222,224,0.2)',
borderRadius: 2, background: "url(/assets/images/install/cardBackground.png)",
borderRadius: 2, background: "url(/assets/images/install/cardBackground0" + (index + 1) + '.png)',
backgroundSize: "100% 100%", marginRight: 20, marginBottom: 20,
}}>
<div style={{
{
item.id ? (
<div style={{ display: 'flex', marginLeft: 21, }}>
{
item.departments?.map((itm, idx) => {
return (
<div key={idx} style={{
background: '#52A4F6', borderRadius: 2, height: 18, padding: '2px 4px',
fontSize: 10, marginTop: 17, marginLeft: 21, width: 'max-content', color: '#FFFFFF',
display: 'flex', alignItems: 'center',
fontSize: 10, marginTop: 17, width: 'max-content', color: '#FFFFFF',
display: 'flex', alignItems: 'center', marginRight: 4,
}}>
{'系统管理员0' + (index + 1)}
</div>
<div style={{ marginTop: 5, display: 'flex', justifyContent: 'space-between', padding: '0px 21px' }}>
<div style={{ marginTop: 9 }}>
<div style={{ display: 'flex' }}>
<div style={{ fontSize: 14, color: '#4A4A4A', }}>行业服务部-刘昊然</div>
<div style={{ marginLeft: 4, cursor: "pointer", }}>
<img src="/assets/images/install/icon_edit.png" alt="" style={{ height: 18, width: 18 }} />
</div>
<div style={{ marginLeft: 4, cursor: "pointer", }}>
<img src="/assets/images/install/icon_detele.png" alt="" style={{ height: 18, width: 18 }} />
</div>
</div>
<div style={{ fontSize: 12, color: '#969799', marginTop: 20 }}>角色说明拥有全平台的权限</div>
</div>
<div>
<img src="/assets/images/install/setPermissions.png" alt="" style={{ height: 63, width: 61 }} />
</div>
</div>
{itm.name}
</div>
)
})
}
{
notCreated.map((item, index) => {
return (
// <div key={index} style={{
// width: 312, height: 127, boxShadow: '0px 0px 12px 2px rgba(220,222,224,0.2)',
// borderRadius: 2, background: "url(/assets/images/install/greyBackground.png)",
// backgroundSize: "100% 100%", marginRight: 20, marginBottom: 20, textAlign: 'center',
// cursor: "pointer",
// }} onClick={setAdminModal}>
// <div style={{ marginTop: 23 }}>
// <img src="/assets/images/install/roleAdd.png" alt="" style={{ height: 37, width: 32 }} />
// </div>
// <div style={{ color: '#4A4A4A', fontSize: 12, marginTop: 26 }}>
//
// </div>
// </div>
<div key={index} style={{
width: 312, height: 127, boxShadow: '0px 0px 12px 2px rgba(220,222,224,0.2)',
borderRadius: 2, background: "url(/assets/images/install/cardBackground.png)",
backgroundSize: "100% 100%", marginRight: 20, marginBottom: 20,
}}>
</div>
) : (
<div style={{
background: '#52A4F6', borderRadius: 2, height: 18, padding: '2px 4px',
fontSize: 10, marginTop: 17, marginLeft: 21, width: 'max-content', color: '#FFFFFF',
display: 'flex', alignItems: 'center',
}}>
{'系统管理员0' + (index + 1)}
部门
</div>
<div style={{ marginTop: 5, display: 'flex', justifyContent: 'space-between', padding: '0px 21px' }}>
)
}
<div style={{ marginTop: 5, display: 'flex', justifyContent: 'space-between', padding: '0px 17px 0px 21px' }}>
<div style={{ marginTop: 9 }}>
<div style={{ display: 'flex' }}>
<div style={{ fontSize: 14, color: '#4A4A4A', }}>虚席以待</div>
<div style={{ marginLeft: 4, cursor: "pointer", }} onClick={()=>{setAdminModal(true)}}>
{
item.id ? (
<div style={{ fontSize: 14, color: '#4A4A4A', fontWeight: 600 }}>{item.name}</div>
) : (
<div style={{ fontSize: 14, color: '#4A4A4A', fontWeight: 600 }}>虚席以待</div>
)
}
<div style={{ marginLeft: 4, cursor: "pointer", }} onClick={() => {
if (item.id) {
setEditObj(item)
setAdminEdit(true)
}
else {
setEditObj({})
setAdminEdit(false)
}
setAdminModal(true)
}}>
<img src="/assets/images/install/icon_edit.png" alt="" style={{ height: 18, width: 18 }} />
</div>
{
item.id ? (
<Popconfirm
title="是否要移除管理员"
arrowPointAtCenter={false}
showArrow={true}
position="topRight"
onConfirm={() => {
dispatch(install.deteleOrganizationAdmin(item?.id)).then(() => getUserList())
}}
>
<div style={{ marginLeft: 4, cursor: "pointer", }}>
<img src="/assets/images/install/icon_detele.png" alt="" style={{ height: 18, width: 18 }} />
</div>
</Popconfirm>
) : ('')
}
</div>
<div style={{ fontSize: 12, color: '#969799', marginTop: 20 }}>角色说明拥有全平台的权限</div>
<div style={{ fontSize: 12, color: '#969799', marginTop: 28, marginLeft: 50 }}>角色说明拥有全平台的权限</div>
</div>
<div>
<img src="/assets/images/install/setPermissions.png" alt="" style={{ height: 63, width: 61 }} />
@ -368,7 +414,7 @@ const Roles = (props) => {
<div style={{ marginLeft: 6, fontSize: 12, color: '#969799', fontFamily: "DINExp", }}>MANAGEMENT OF MEMBERS</div>
</div>
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 20 }}>
<div style={{ fontSize: 12, color: '#646566' }}>平台有4种类型的成员角色分别是数据分析师售后运维资源管理者和客户服务每名项目成员可拥有多种成员角色</div>
<div style={{ fontSize: 12, color: '#8B8B8B' }}>平台有4种类型的成员角色分别是数据分析师售后运维资源管理者和客户服务每名项目成员可拥有多种成员角色</div>
<div className='roleRadio' style={{ display: 'flex', alignItems: 'center' }}>
<div>
<RadioGroup onChange={roleOnChange} value={roleChoose} aria-label="单选组合示例" name="demo-radio-group">
@ -390,10 +436,9 @@ const Roles = (props) => {
marginLeft: 40
}}
onClick={() => {
// api.current.validate().then((v) => {
// setSearch(v);
// setQuery({ limit: 10, page: 0 })
// });
setEditObj({})
setMemberEdit(false)
setMemberModal(true);
}}
>
添加成员
@ -408,7 +453,7 @@ const Roles = (props) => {
>
<Table
columns={columns}
dataSource={data}
dataSource={tableData.current}
bordered={false}
onRow={handleRow}
empty="暂无数据"
@ -422,7 +467,7 @@ const Roles = (props) => {
padding: "20px 20px",
}}
>
<span style={{ lineHeight: "30px" }}>
<span style={{ lineHeight: "30px", fontSize: 13, color: 'rgba(0,90,189,0.8)' }}>
{limits.current}条信息
</span>
<Pagination
@ -438,16 +483,32 @@ const Roles = (props) => {
/>
</div>
</div>
{
{//
adminModal ?
<AdminModal
visible={true}
pepList={pepList}
adminEdit={adminEdit}
editObj={editObj}
close={() => {
setAdminModal(false);
// equipmentGetCamera();
getUserList()
}} >
</AdminModal> : ''
}
{//
memberModal ?
<MemberModal
visible={true}
pepList={pepList}
memberEdit={memberEdit}
editObj={editObj}
close={() => {
setMemberModal(false);
getUserList()
}} >
</MemberModal> : ''
}
</>
)
}

2
web/client/src/utils/webapi.js

@ -19,6 +19,8 @@ export const ApiTable = {
getOrganizationDeps:'organization/deps',//获取项企(PEP)全部部门及其下用户
getOrganizationUser:'organization/user',//获取成员列表
putOrganizationUser:'organization/user/{pomsUserId}',//更新成员状态
postOrganizationUser:'organization/user',//添加/编辑成员
deteleOrganizationAdmin:'organization/admin/{pomsUserId}',//删除管理员
};
export const RouteTable = {
apiRoot: "/api/root",

Loading…
Cancel
Save