forked from Gitlink/forgeplus-react
修改权限管理+后台改版issue
This commit is contained in:
parent
672726d683
commit
735b096894
|
@ -70,27 +70,25 @@ export default (props) => {
|
|||
function getMenuList(menus) {
|
||||
return menus.map(function (item) {
|
||||
if(item.hidden === 1){
|
||||
let title = (
|
||||
<span>
|
||||
{item.icon && <i className={"left-icon iconfont " + item.icon}></i>}
|
||||
<span>{item.title}</span>
|
||||
</span>
|
||||
);
|
||||
if (Array.isArray(item.children) && item.children.length > 0) {
|
||||
let title = (
|
||||
<span>
|
||||
{item.icon && <i className={"left-icon iconfont " + item.icon}></i>}
|
||||
<span>{item.title}</span>
|
||||
</span>
|
||||
);
|
||||
return (
|
||||
<SubMenu title={item.title} key={item.key} children={item.children} title={title}>{getMenuList(item.children)}</SubMenu>
|
||||
<SubMenu key={item.key} children={item.children} title={title}>{getMenuList(item.children)}</SubMenu>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<Menu.Item title={item.title} key={item.key}>
|
||||
{/* <Link to={item.location} onClick={() => { itemClick(item) }}>{item.title}</Link> */}
|
||||
<Menu.Item title={title} key={item.key}>
|
||||
{item.location ? <Link to={item.location} onClick={() => { itemClick(item) }}>{item.title}</Link>
|
||||
: item.title}
|
||||
: title}
|
||||
</Menu.Item>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -101,7 +99,6 @@ export default (props) => {
|
|||
}
|
||||
|
||||
function iframeLoad() {
|
||||
console.log('iframeLoad----------iframeLoad');
|
||||
try {
|
||||
let myIframe=document.getElementById("iframe");
|
||||
myIframe.height = myIframe.contentWindow.top.document.documentElement.scrollHeight;
|
||||
|
@ -130,7 +127,6 @@ export default (props) => {
|
|||
})
|
||||
}, [history]);
|
||||
|
||||
console.log(acitve);
|
||||
return (
|
||||
<Fragment>
|
||||
<div className="layouts">
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
.menuDetail{
|
||||
.has-error .ant-form-explain{
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
}
|
||||
.ant-row{
|
||||
margin-top: 24px;
|
||||
|
|
|
@ -9,7 +9,7 @@ import '../index.scss';
|
|||
const Option = Select.Option;
|
||||
|
||||
export default Form.create()(({ form}) => {
|
||||
const { getFieldDecorator, setFieldsValue, getFieldsValue } = form;
|
||||
const { getFieldDecorator, setFieldsValue, getFieldsValue, validateFields } = form;
|
||||
const [reload, setReload] = useState();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
|
@ -47,11 +47,13 @@ export default Form.create()(({ form}) => {
|
|||
{
|
||||
title: '路由',
|
||||
dataIndex: 'location',
|
||||
width: "20%",
|
||||
render: (text, record) => (text || '--'),
|
||||
},
|
||||
{
|
||||
title: '前端图标',
|
||||
dataIndex: 'icon',
|
||||
width: "20%",
|
||||
render: (text, record) => {return text || '--'}
|
||||
},
|
||||
{
|
||||
|
@ -106,7 +108,7 @@ export default Form.create()(({ form}) => {
|
|||
{helper(
|
||||
"路由",
|
||||
"location",
|
||||
[],
|
||||
[{ max: 100, message: '长度不能超过100个字符' }],
|
||||
<Input
|
||||
placeholder="请输入前端路由"
|
||||
/>
|
||||
|
@ -114,7 +116,7 @@ export default Form.create()(({ form}) => {
|
|||
{helper(
|
||||
"前端图标",
|
||||
"icon",
|
||||
[],
|
||||
[{ max: 100, message: '长度不能超过100个字符' }],
|
||||
<Input
|
||||
placeholder="请输入前端图标"
|
||||
/>
|
||||
|
@ -156,23 +158,26 @@ export default Form.create()(({ form}) => {
|
|||
}
|
||||
|
||||
function addMenu(){
|
||||
// 获取用户输入的内容
|
||||
let values = getFieldsValue(['menuName', 'parentKey', 'location', 'icon', 'hidden', 'urlType']);
|
||||
const params = {
|
||||
name: values.menuName,
|
||||
title: values.menuName,
|
||||
parentKey: parseInt(values.parentKey || 0),
|
||||
location: values.location,
|
||||
icon: values.icon,
|
||||
hidden: values.hidden,
|
||||
level: parseInt(values.parentKey)+1,
|
||||
urlType:values.urlType,
|
||||
}
|
||||
createMenu(params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("菜单新建成功");
|
||||
setReload(Math.random());
|
||||
setMenuDetailModal(false);
|
||||
validateFields((error, values) => {
|
||||
if(!error){
|
||||
// 获取用户输入的内容
|
||||
const params = {
|
||||
name: values.menuName,
|
||||
title: values.menuName,
|
||||
parentKey: parseInt(values.parentKey || 0),
|
||||
location: values.location,
|
||||
icon: values.icon,
|
||||
hidden: values.hidden,
|
||||
level: parseInt(values.parentKey)+1,
|
||||
urlType:values.urlType,
|
||||
}
|
||||
createMenu(params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("菜单新建成功");
|
||||
setReload(Math.random());
|
||||
setMenuDetailModal(false);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -203,21 +208,26 @@ export default Form.create()(({ form}) => {
|
|||
});
|
||||
setEditMenuModal(true);
|
||||
}
|
||||
|
||||
// 编辑菜单信息
|
||||
function editMenu(){
|
||||
// 获取用户输入的内容
|
||||
let values = getFieldsValue(['menuName', 'parentKey', 'location', 'icon', 'hidden', 'urlType']);
|
||||
const params = {
|
||||
...values,
|
||||
title: values.menuName,
|
||||
}
|
||||
updateMenu(editMenuId, params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
setReload(Math.random());
|
||||
setEditMenuModal(false);
|
||||
message.success("菜单更新成功");
|
||||
}else{
|
||||
message.error('菜单更新失败');
|
||||
validateFields((error, values) => {
|
||||
if(!error){
|
||||
// 获取用户输入的内容
|
||||
const params = {
|
||||
...values,
|
||||
title: values.menuName,
|
||||
name: values.menuName,
|
||||
}
|
||||
updateMenu(editMenuId, params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
setReload(Math.random());
|
||||
setEditMenuModal(false);
|
||||
message.success("菜单更新成功");
|
||||
}else{
|
||||
message.error('菜单更新失败');
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -252,7 +262,7 @@ export default Form.create()(({ form}) => {
|
|||
<div className='management-content-head'>
|
||||
<p className='font-18'>菜单列表</p>
|
||||
<div className="search-list" >
|
||||
<Button className='c2a3 full' onClick={()=>{setMenuDetailModal(true);setFieldsValue({hidden: 1,menuName: '',parentKey: undefined,location: '',icon: '', urlType: "self"}) }}>新增</Button>
|
||||
<Button className='c2a3 full' onClick={()=>{setFieldsValue({hidden: 1,menuName: '',parentKey: undefined,location: '',icon: '', urlType: "self"}); setMenuDetailModal(true);}}>新增</Button>
|
||||
<Modal visible={menuDetailModal} title="新增菜单" content={menuDetail} onOk={addMenu} onCancel={()=>setMenuDetailModal(false)}/>
|
||||
<Modal visible={editMenuModal} title="编辑菜单" content={menuDetail} onOk={editMenu} onCancel={()=>setEditMenuModal(false)}/>
|
||||
</div>
|
||||
|
|
|
@ -9,7 +9,7 @@ import { createRole, deleteRole, roleList, updateRoleStatus, updateRole, treeLis
|
|||
const { TextArea } = Input;
|
||||
|
||||
export default Form.create()(({form}) => {
|
||||
const { getFieldDecorator, setFieldsValue, getFieldsValue } = form;
|
||||
const { getFieldDecorator, setFieldsValue, getFieldsValue, validateFields } = form;
|
||||
const [reload, setReload] = useState();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
|
@ -27,6 +27,10 @@ export default Form.create()(({form}) => {
|
|||
const [roleId, setRoleId] = useState(undefined);
|
||||
//选中的菜单项
|
||||
const [selectedMenu, setSelectedMenu] = useState(undefined);
|
||||
// 选中的菜单项(子菜单项未选中,带父菜单项)
|
||||
const [selectedMenuFa, setSelectedMenuFa] = useState(undefined);
|
||||
// 一级菜单项
|
||||
let oneTree = [];
|
||||
|
||||
const helper = useCallback(
|
||||
(label, name, rules, widget, initialValue) => (
|
||||
|
@ -51,10 +55,7 @@ export default Form.create()(({form}) => {
|
|||
{
|
||||
title: '描述',
|
||||
dataIndex: 'description',
|
||||
},
|
||||
{
|
||||
title: '用户数',
|
||||
dataIndex: 'adminCount',
|
||||
width: "20%"
|
||||
},
|
||||
{
|
||||
title: '添加时间',
|
||||
|
@ -98,7 +99,8 @@ export default Form.create()(({form}) => {
|
|||
[{ max: 20, message: '长度不能超过20个字符'},
|
||||
{ required: true, message: "角色名称不能为空"},
|
||||
{ validator: (rule, value, callback)=>{
|
||||
const filter = dataList.filter(item=>{ return item.name === value});
|
||||
// 角色名称是否存在 要过滤掉编辑菜单项的初始值
|
||||
const filter = dataList.filter(item=>{ return item.id !== editRoleId && item.name === value});
|
||||
filter.length>0 ? callback('此角色名称已存在'):callback();
|
||||
}}],
|
||||
<Input
|
||||
|
@ -108,10 +110,10 @@ export default Form.create()(({form}) => {
|
|||
{helper(
|
||||
"描述",
|
||||
"description",
|
||||
[],
|
||||
[{ max: 500, message: '长度不能超过500个字符'}],
|
||||
<TextArea rows={4}/>,
|
||||
)}
|
||||
{helper(
|
||||
{false && helper(
|
||||
"是否启用",
|
||||
"status",
|
||||
[],
|
||||
|
@ -128,26 +130,31 @@ export default Form.create()(({form}) => {
|
|||
<Tree
|
||||
checkable
|
||||
treeData={menuTreeData}
|
||||
onCheck={(selectedKeys)=>{setSelectedMenu(selectedKeys)}}
|
||||
onCheck={(checkedKeys, info)=>{const keys = [...checkedKeys, ...info.halfCheckedKeys]; setSelectedMenu(checkedKeys); setSelectedMenuFa(keys)}}
|
||||
checkedKeys={selectedMenu}
|
||||
/>
|
||||
)
|
||||
|
||||
function addRole(){
|
||||
// 获取用户输入的内容
|
||||
let values = getFieldsValue(['name', 'description', 'status']);
|
||||
const params = {
|
||||
...values
|
||||
}
|
||||
createRole(params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("角色新建成功");
|
||||
setReload(Math.random());
|
||||
setRoleDetailModal(false);
|
||||
}else{
|
||||
message.error('角色新建失败');
|
||||
validateFields((error, values) => {
|
||||
if(!error){
|
||||
// 获取用户输入的内容
|
||||
// let values = getFieldsValue(['name', 'description']);
|
||||
const params = {
|
||||
...values
|
||||
}
|
||||
createRole(params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("角色新建成功");
|
||||
setReload(Math.random());
|
||||
setRoleDetailModal(false);
|
||||
}else{
|
||||
message.error('角色新建失败');
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
//删除角色
|
||||
|
@ -179,25 +186,27 @@ export default Form.create()(({form}) => {
|
|||
setFieldsValue({
|
||||
name: roleDetail.name,
|
||||
description: roleDetail.description,
|
||||
status: roleDetail.status,
|
||||
});
|
||||
setEditRoleModal(true);
|
||||
}
|
||||
|
||||
// 编辑角色信息
|
||||
function editRole(){
|
||||
// 获取用户输入的内容
|
||||
let values = getFieldsValue(['name', 'description', 'status']);
|
||||
const params = {
|
||||
...values
|
||||
}
|
||||
updateRole(editRoleId, params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("角色更新成功");
|
||||
setReload(Math.random());
|
||||
setEditRoleModal(false);
|
||||
}else{
|
||||
message.error('角色更新失败');
|
||||
validateFields((error, values) => {
|
||||
if(!error){
|
||||
// 获取用户输入的内容
|
||||
const params = {
|
||||
...values
|
||||
}
|
||||
updateRole(editRoleId, params).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("角色更新成功");
|
||||
setReload(Math.random());
|
||||
setEditRoleModal(false);
|
||||
}else{
|
||||
message.error('角色更新失败');
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -206,7 +215,8 @@ export default Form.create()(({form}) => {
|
|||
function menuListByRole(roleId){
|
||||
listMenu(roleId).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
const keys = response.data.map(item=>{return item.key.toString()});
|
||||
// 过滤掉一级菜单项
|
||||
const keys = response.data.map(item=>{return oneTree.indexOf(item.key.toString()) === -1 ? item.key.toString() : null});
|
||||
setSelectedMenu(keys);
|
||||
setRoleId(roleId);
|
||||
setMenuModal(true);
|
||||
|
@ -216,7 +226,7 @@ export default Form.create()(({form}) => {
|
|||
|
||||
// 分配菜单
|
||||
function allotMenu(){
|
||||
allocMenu(roleId, selectedMenu).then(response=>{
|
||||
allocMenu(roleId, selectedMenuFa).then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
message.success("分配成功");
|
||||
setMenuModal(false);
|
||||
|
@ -229,6 +239,7 @@ export default Form.create()(({form}) => {
|
|||
useEffect(()=>{
|
||||
treeList().then(response=>{
|
||||
if(response && response.message=='success'){
|
||||
oneTree = response.data.map(item=>{return item.key.toString()});
|
||||
setMenuTreeData(response.data);
|
||||
}
|
||||
}).finally(()=>{
|
||||
|
@ -252,7 +263,7 @@ export default Form.create()(({form}) => {
|
|||
<div className='management-content-head'>
|
||||
<p className='font-18'>角色列表</p>
|
||||
<div className="search-list">
|
||||
<Button className='c2a3 full' onClick={()=>{setRoleDetailModal(true); }}>新增</Button>
|
||||
<Button className='c2a3 full' onClick={()=>{setRoleDetailModal(true); setEditRoleId(undefined); setFieldsValue({name: '',description: ''})}}>新增</Button>
|
||||
<Modal visible={roleDetailModal} title="添加角色" content={roleDetail} onOk={addRole} onCancel={()=>setRoleDetailModal(false)}/>
|
||||
<Modal visible={editRoleModal} title="编辑角色" content={roleDetail} onOk={editRole} onCancel={()=>setEditRoleModal(false)}/>
|
||||
<Modal visible={menuModal} title="分配菜单" content={menuTree} onOk={allotMenu} onCancel={()=>setMenuModal(false)}/>
|
||||
|
|
|
@ -327,6 +327,7 @@ function RegisterList({ showNotification }) {
|
|||
style={{ width: "300px" }}
|
||||
placeholder="请输入专家姓名或手机号"
|
||||
onSearch={(value) => { setSearchInput(value); setCurPage(1); }}
|
||||
allowClear
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
|
|
|
@ -62,6 +62,11 @@ export default Form.create()((props) => {
|
|||
}
|
||||
|
||||
function uploadAgree(item) {
|
||||
// 清空文件列表
|
||||
setFileList(null);
|
||||
setFieldsValue({
|
||||
files: ''
|
||||
});
|
||||
setVisibleAgree(true);
|
||||
setTaskId(item.id);
|
||||
setCheckItem(item);
|
||||
|
|
|
@ -24,6 +24,11 @@ export default Form.create()((props) => {
|
|||
|
||||
function deal(item) {
|
||||
setCheckedItem(item);
|
||||
// 重置处理申诉弹框各项内容
|
||||
setFieldsValue({
|
||||
isAccepted: '',
|
||||
reason: '',
|
||||
});
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ export default (props) => {
|
|||
<span className="fl color-grey-9 mt3">{timeAgo(item.createdAt)}</span>
|
||||
<span className="fr">
|
||||
{item.status > 2 && item.status !== 9 && <span className="spanTitle color-grey-6 fl ml20">已同意</span>}
|
||||
{item.status === 9 && <span className="spanTitle color-yellow fl ml20">已处理</span>}
|
||||
{item.status === 9 && <span className="spanTitle color-yellow fl ml20">待修缮</span>}
|
||||
{item.status === 2 && <span className="spanTitle color-red fl ml20">已拒绝</span>}
|
||||
|
||||
{
|
||||
|
|
|
@ -145,7 +145,7 @@ export default Form.create()(({ form, showNotification, history}) => {
|
|||
render: (text, record) => {
|
||||
return text !== 2 ? paperComplainStatus[text] : <React.Fragment>
|
||||
<Button className="mr5 font-12" type="primary" size="small" onClick={() => { checkPaperItem(record.id, 1) }}>通过</Button>
|
||||
<Button className="mr5 font-12" type="info" size="small" onClick={() => { setActiveId(record.id); setVisible(true) }}>不通过</Button>
|
||||
<Button className="mr5 font-12" type="info" size="small" onClick={() => { setActiveId(record.id); setFieldsValue({message: ''}); setVisible(true) }}>不通过</Button>
|
||||
</React.Fragment>
|
||||
}
|
||||
},
|
||||
|
|
|
@ -20,7 +20,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [searchObj, setSearchObj] = useState({
|
||||
checkStatus: '0',
|
||||
checkStatus: '2',
|
||||
parentId: 0,
|
||||
});
|
||||
const [curPage, setCurPage] = useState(1);
|
||||
|
@ -144,7 +144,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
title: '审核状态',
|
||||
dataIndex: 'checkStatus',
|
||||
render: (text, record) => {
|
||||
return text === 0 ? <React.Fragment>
|
||||
return text === 2 ? <React.Fragment>
|
||||
<Button className="mr5 font-12" type="primary" size="small" onClick={() => { checkPaperItem(record.id, true) }}>通过</Button>
|
||||
<Button className="mr5 font-12" type="info" size="small" onClick={() => { disagree(record) }}>不通过</Button>
|
||||
</React.Fragment> : checkStatusArr[text]
|
||||
|
@ -192,7 +192,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
function changeStatus(e) {
|
||||
setSearchObj({
|
||||
...searchObj,
|
||||
checkStatus: e,
|
||||
checkStatus: e === '0,1,2' ? '' : e,
|
||||
});
|
||||
setCurPage(1);
|
||||
}
|
||||
|
@ -210,7 +210,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
<div className="center-screen" >
|
||||
<div className="center-left-but">
|
||||
{helper(
|
||||
"",
|
||||
"审核状态",
|
||||
"checkStatus",
|
||||
[],
|
||||
<Select
|
||||
|
@ -225,11 +225,11 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
})
|
||||
}
|
||||
</Select>,
|
||||
'0'
|
||||
'2'
|
||||
)}
|
||||
|
||||
{helper(
|
||||
"",
|
||||
"审核类型",
|
||||
"parentId",
|
||||
[],
|
||||
<Select
|
||||
|
|
|
@ -25,7 +25,7 @@ export default Form.create()(({ current_user, form, showNotification, match, his
|
|||
...searchObj,
|
||||
status:approve,
|
||||
type:'',
|
||||
currentPage:curPage,
|
||||
curPage,
|
||||
pageSize: 10,
|
||||
};
|
||||
setLoading(true);
|
||||
|
|
|
@ -109,8 +109,22 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
startTime: '',
|
||||
endTime: '',
|
||||
nameInput: '',
|
||||
enterpriseNameInput: ''
|
||||
enterpriseNameInput: '',
|
||||
taskMode: '0,1,2,3,4,5,6,7,8,9',
|
||||
showUserMode: '0,1,2',
|
||||
publishMode1: '0,1',
|
||||
expertReviewStatus: '-1',
|
||||
showStatus: '0',
|
||||
isRecommend: 'all',
|
||||
sortBy: 'createdAt'
|
||||
});
|
||||
setStatusString('0,1,2,3,4,5,6,7,8,9');
|
||||
setShowUserMode('0,1,2');
|
||||
setPublishMode('0,1');
|
||||
setExpertReview('-1');
|
||||
setIsDelete('0');
|
||||
setRecommend('');
|
||||
setOrder("createdAt");
|
||||
setSearchObj({});
|
||||
}
|
||||
|
||||
|
@ -552,7 +566,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
})
|
||||
}
|
||||
</Select>,
|
||||
'0,1,2,3,4,5,6,7,8,9'
|
||||
'0,1,2,3,4,5,6,7,8,9'
|
||||
)}
|
||||
|
||||
{helper(
|
||||
|
@ -563,7 +577,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
className="column-select"
|
||||
showArrow
|
||||
placeholder="请选择审核状态"
|
||||
onChange={setShowUserMode}
|
||||
onChange={(value)=>{setShowUserMode(value);setCurPage1(1);}}
|
||||
>
|
||||
<Option key={'0,1,2'}>全部</Option>
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue