Commit 01dbcb9b by chengming
parents 8e951492 d29fc66b
/**
* @file @/common/permissions/AuthContext.jsx
* @description 权限上下文
* @param {Object} props - 组件属性
* @param {React.ReactNode} props.children - 子组件
* @returns {React.ReactNode} - 包含权限信息的上下文提供者
* @author Lichen
* @date 2025/09/28
* @example
* import { AuthProvider } from '@/common/permissions/AuthContext';
* <AuthProvider>
* <App />
* </AuthProvider>
*/
import React, { createContext, useState, useEffect } from "react";
export const AuthContext = createContext();
export const AuthProvider = ({ children }) => {
const [userPermissions, setUserPermissions] = useState([]);
useEffect(() => {
const perms = JSON.parse(localStorage.getItem("userPermissions") || "[]");
setUserPermissions(perms);
}, []);
return (
<AuthContext.Provider value={{ userPermissions }}>
{children}
</AuthContext.Provider>
);
};
/**
* @file @/common/permissions/Permission.jsx
* @description 控制组件渲染权限
* @param {Object} props - 组件属性
* @param {React.ReactNode} props.children - 需要权限控制的子组件
* @param {string|string[]} props.permission - 所需权限字符串或数组
* @param {'or' | 'and'} [props.mode='or'] - 权限匹配模式,'or' 表示满足任一权限即可,'and' 表示需满足所有权限
* @param {React.ReactNode} [props.fallback=null] - 无权限时显示的替代组件,默认为 null(不显示)
* @returns {React.ReactNode} - 根据权限渲染子组件或替代组件
* @author Lichen
* @date 2025/09/28
* @example
* import Permission from '@/common/permissions/Permission';
* <Permission permission="edu_site_admin">
* <button>用户管理</button>
* </Permission>
*
* <Permission permission={['edu_site_admin']} mode="and" fallback={<span>无权限</span>}>
* <button>删除用户</button>
* </Permission> // mode="and" 表示权限全部满足时才显示组件,否则显示 fallback
*
* <Permission permission={['edu_site_admin']} mode="or">
* <button>修改用户</button>
* </Permission> // mode="or" 表示权限满足其一时显示组件,否则显示 fallback
*/
import usePermission from "./usePermission";
const Permission = ({ children, permission, mode = "or", fallback = null }) => {
const hasPermission = usePermission();
return hasPermission(permission, mode) ? children : fallback;
};
export default Permission;
/**
* @file @/common/permissions/usePermission.js
* @description 权限检查 Hook
* @param {string|string[]} permission - 权限字符串或数组
* @param {'or' | 'and'} [mode='or'] - 权限匹配模式,'or' 表示满足任一权限即可,'and' 表示需满足所有权限
* @returns {Function} - 检查权限的函数
* @author Lichen
* @date 2025/09/28
* @example
* import usePermission from '@/common/permissions/usePermission';
* const hasPermission = usePermission();
* hasPermission('edu_general_user:one'); // true 或 false
* hasPermission(['edu_general_user:one', 'edu_site_admin'], 'and'); // true 或 false
* hasPermission(['edu_general_user:one', 'edu_site_admin'], 'or'); // true 或 false
*/
import { useContext } from "react";
import { AuthContext } from "./AuthContext";
const usePermission = () => {
const { userPermissions } = useContext(AuthContext);
/**
* 检查权限
* @param {string|string[]} permission - 权限字符串或数组
* @param {'or' | 'and'} mode - 匹配模式,默认 'or'
* @returns {boolean}
*/
const hasPermission = (permission, mode = "or") => {
if (!userPermissions || !Array.isArray(userPermissions)) return false;
if (typeof permission === "string") {
return userPermissions.includes(permission);
}
if (Array.isArray(permission)) {
if (mode === "and") {
return permission.every(p => userPermissions.includes(p));
} else {
return permission.some(p => userPermissions.includes(p));
}
}
return false;
};
return hasPermission;
};
export default usePermission;
...@@ -6,4 +6,11 @@ ...@@ -6,4 +6,11 @@
import React from "react"; import React from "react";
import ReactDOM from "react-dom"; import ReactDOM from "react-dom";
import App from "./app.js"; import App from "./app.js";
ReactDOM.render(<App />, document.getElementById("root")); // 引入权限上下文
import { AuthProvider } from "@/common/permissions/AuthContext";
ReactDOM.render(
<AuthProvider>
<App />
</AuthProvider>,
document.getElementById("root")
);
...@@ -51,6 +51,12 @@ export function exfetchR(data, cb, check) { ...@@ -51,6 +51,12 @@ export function exfetchR(data, cb, check) {
data, data,
}).then(res => { }).then(res => {
if (res.success) { if (res.success) {
let userPermissions = "";
const authRole = res?.data?.authRole || [];
if (authRole.length > 0) {
userPermissions = JSON.stringify(authRole.map(role => role.code));
}
window.localStorage.setItem("userPermissions", userPermissions);
//只有社群的话直接滚走去社群 //只有社群的话直接滚走去社群
if (res.data.isOnlyCommunity) { if (res.data.isOnlyCommunity) {
sessionStorage.setItem("mgtk", res.data.Authorization); sessionStorage.setItem("mgtk", res.data.Authorization);
......
import React, { Component } from "react"; import React, { Component } from "react";
import styles from "./Bread.less"; import styles from "./Bread.less";
import { connect } from "react-redux"; import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import { import {
Divider, Divider,
Popover, Popover,
...@@ -24,10 +25,7 @@ class Breadcrumb extends Component { ...@@ -24,10 +25,7 @@ class Breadcrumb extends Component {
const { collapsed, title } = this.props; const { collapsed, title } = this.props;
return ( return (
<div <div className={collapsed ? styles.collapsed : styles.bread}>
className={collapsed ? styles.collapsed : styles.bread}
>
<span <span
style={{ style={{
fontSize: "20px", fontSize: "20px",
...@@ -36,15 +34,31 @@ class Breadcrumb extends Component { ...@@ -36,15 +34,31 @@ class Breadcrumb extends Component {
lineHeight: "60px", lineHeight: "60px",
marginLeft: "32px", marginLeft: "32px",
backgroundColor: "#FFF", backgroundColor: "#FFF",
marginRight: '20px', marginRight: "20px",
}} }}
> >
菜单管理 菜单管理
</span> </span>
<Button type="primary" style={{ right: '30px', top: '15px', position: 'absolute' }} onClick={() => { this.props.showModal('',"add") }}>新建一级菜单</Button> <Permission
permission={[
</div > "edu_party_member:two",
) "edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button
type="primary"
style={{ right: "30px", top: "15px", position: "absolute" }}
onClick={() => {
this.props.showModal("", "add");
}}
>
新建一级菜单
</Button>
</Permission>
</div>
);
} }
} }
......
...@@ -26,6 +26,7 @@ import { ...@@ -26,6 +26,7 @@ import {
postUpDown, postUpDown,
getSortListUpDown, getSortListUpDown,
} from "./redux/actions"; } from "./redux/actions";
import Permission from "@/common/permissions/Permission";
const FormItem = Form.Item; const FormItem = Form.Item;
const RadioGroup = Radio.Group; const RadioGroup = Radio.Group;
...@@ -106,11 +107,22 @@ class MenuManager extends React.Component { ...@@ -106,11 +107,22 @@ class MenuManager extends React.Component {
key: "action", key: "action",
render: (text, record, index) => ( render: (text, record, index) => (
<span> <span>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<Popconfirm <Popconfirm
title="确定执行此操作?" title="确定执行此操作?"
onConfirm={() => this.onDelete(record)} onConfirm={() => this.onDelete(record)}
> >
<a className={styles.handle_button}>{record.enabled == 1 ? '禁用' : "启用"}</a> <a className={styles.handle_button}>
{record.enabled == 1 ? "禁用" : "启用"}
</a>
</Popconfirm> </Popconfirm>
<a <a
...@@ -126,12 +138,16 @@ class MenuManager extends React.Component { ...@@ -126,12 +138,16 @@ class MenuManager extends React.Component {
下移 下移
</a> </a>
<Dropdown overlay={() => { <Dropdown
return (<Menu > overlay={() => {
return (
<Menu>
<Menu.Item key="0"> <Menu.Item key="0">
<a onClick={() => this.showModal(record, 'edit')} >修改</a> <a onClick={() => this.showModal(record, "edit")}>
修改
</a>
</Menu.Item> </Menu.Item>
{!record.childrenMenus && {!record.childrenMenus && (
<Menu.Item key="3"> <Menu.Item key="3">
<Popconfirm <Popconfirm
title="是否删除?" title="是否删除?"
...@@ -140,19 +156,28 @@ class MenuManager extends React.Component { ...@@ -140,19 +156,28 @@ class MenuManager extends React.Component {
<a className={styles.handle_button}>删除</a> <a className={styles.handle_button}>删除</a>
</Popconfirm> </Popconfirm>
</Menu.Item> </Menu.Item>
} )}
{record.menuType == 0 && {record.menuType == 0 && (
<Menu.Item key="1"> <Menu.Item key="1">
<a onClick={() => this.showModal(record, 'child')} >添加子菜单</a> <a onClick={() => this.showModal(record, "child")}>
添加子菜单
</a>
</Menu.Item> </Menu.Item>
} )}
</Menu>) </Menu>
} );
} trigger={['click']}> }}
<a className={styles.handle_button} onClick={e => e.preventDefault()}> trigger={["click"]}
更多<Icon type="down" /> >
<a
className={styles.handle_button}
onClick={e => e.preventDefault()}
>
更多
<Icon type="down" />
</a> </a>
</Dropdown> </Dropdown>
</Permission>
</span> </span>
), ),
}, },
......
...@@ -20,6 +20,7 @@ import { ...@@ -20,6 +20,7 @@ import {
import { getIficationList } from "../Information/redux/action"; import { getIficationList } from "../Information/redux/action";
import moment from "moment"; import moment from "moment";
import Styles from "./style.less"; import Styles from "./style.less";
import Permission from "@/common/permissions/Permission";
class Atricle extends React.Component { class Atricle extends React.Component {
constructor(props) { constructor(props) {
...@@ -470,6 +471,15 @@ class Atricle extends React.Component { ...@@ -470,6 +471,15 @@ class Atricle extends React.Component {
render: (text, record) => { render: (text, record) => {
return ( return (
<div> <div>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{record.state == "2" && ( {record.state == "2" && (
<div style={{ display: "inline" }}> <div style={{ display: "inline" }}>
<a <a
...@@ -555,6 +565,7 @@ class Atricle extends React.Component { ...@@ -555,6 +565,7 @@ class Atricle extends React.Component {
</Popconfirm> </Popconfirm>
</div> </div>
)} )}
</Permission>
</div> </div>
); );
}, },
......
...@@ -18,6 +18,7 @@ import { ...@@ -18,6 +18,7 @@ import {
} from "./redux/actions"; } from "./redux/actions";
import EditBanner from "./editBanner"; import EditBanner from "./editBanner";
import Breadcrumb from "@/common/Breadcrumb"; import Breadcrumb from "@/common/Breadcrumb";
import Permission from '@/common/permissions/Permission';
const Option = Select.Option; const Option = Select.Option;
const textOver = { const textOver = {
...@@ -131,7 +132,22 @@ class Banner extends React.PureComponent { ...@@ -131,7 +132,22 @@ class Banner extends React.PureComponent {
render: (text, record) => { render: (text, record) => {
return ( return (
<div> <div>
{" "} <Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={
<span
onClick={() => this.toEditBanner(record, "look")}
style={{ ...buttonStyle }}
>
查看
</span>
}
>
{/* record.state == "1" 为上架状态 */} {/* record.state == "1" 为上架状态 */}
<span <span
onClick={() => onClick={() =>
...@@ -160,6 +176,7 @@ class Banner extends React.PureComponent { ...@@ -160,6 +176,7 @@ class Banner extends React.PureComponent {
) : ( ) : (
"" ""
)} )}
</Permission>
</div> </div>
); );
}, },
...@@ -364,6 +381,7 @@ class Banner extends React.PureComponent { ...@@ -364,6 +381,7 @@ class Banner extends React.PureComponent {
</Col> </Col>
<Col span={8} offset={16}> <Col span={8} offset={16}>
<FormItem> <FormItem>
<Permission permission={['edu_party_member:two', 'edu_party_member:three', 'edu_site_admin']} mode="or">
<Button <Button
type="primary" type="primary"
onClick={() => this.toEditBanner({}, "add")} onClick={() => this.toEditBanner({}, "add")}
...@@ -371,6 +389,7 @@ class Banner extends React.PureComponent { ...@@ -371,6 +389,7 @@ class Banner extends React.PureComponent {
> >
新建Banner 新建Banner
</Button> </Button>
</Permission>
<Button <Button
type="primary" type="primary"
onClick={() => { onClick={() => {
......
import React from "react"; import React from "react";
import { Row, Col, Form, Icon, Input, Button, DatePicker, Select } from "antd"; import { Row, Col, Form, Icon, Input, Button, DatePicker, Select } from "antd";
import Permission from "@/common/permissions/Permission";
const FormItem = Form.Item; const FormItem = Form.Item;
const Option = Select.Option; const Option = Select.Option;
const RangePicker = DatePicker.RangePicker; const RangePicker = DatePicker.RangePicker;
...@@ -100,6 +101,16 @@ class Header extends React.Component { ...@@ -100,6 +101,16 @@ class Header extends React.Component {
> >
重置 重置
</Button> </Button>
<Permission
permission={[
"edu_general_user:one",
"edu_party_member:one",
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button <Button
type="primary" type="primary"
style={{ marginLeft: "30px" }} style={{ marginLeft: "30px" }}
...@@ -107,6 +118,7 @@ class Header extends React.Component { ...@@ -107,6 +118,7 @@ class Header extends React.Component {
> >
新建内容 新建内容
</Button> </Button>
</Permission>
</FormItem> </FormItem>
</Col> </Col>
</Form> </Form>
......
...@@ -52,6 +52,7 @@ import { ...@@ -52,6 +52,7 @@ import {
import moment from "moment"; import moment from "moment";
import Styles from "./index.less"; import Styles from "./index.less";
import InfoComment from "./InfoComment.jsx"; import InfoComment from "./InfoComment.jsx";
import Permission from "@/common/permissions/Permission";
const TreeNode = Tree.TreeNode; const TreeNode = Tree.TreeNode;
const FormItem = Form.Item; const FormItem = Form.Item;
const Option = Select.Option; const Option = Select.Option;
...@@ -276,6 +277,14 @@ class TreeItem extends React.Component { ...@@ -276,6 +277,14 @@ class TreeItem extends React.Component {
<span <span
style={{ float: "right", position: "absolute", right: "15%" }} //bug-12640-liyuan 30 -> 15% style={{ float: "right", position: "absolute", right: "15%" }} //bug-12640-liyuan 30 -> 15%
> >
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Icon <Icon
type="plus" type="plus"
className={Styles.pmEditIcon} className={Styles.pmEditIcon}
...@@ -291,6 +300,7 @@ class TreeItem extends React.Component { ...@@ -291,6 +300,7 @@ class TreeItem extends React.Component {
className={Styles.pmEditIcon} className={Styles.pmEditIcon}
onClick={() => this.onDelete()} onClick={() => this.onDelete()}
/> */} /> */}
</Permission>
</span> </span>
) )
: ""} : ""}
...@@ -299,6 +309,14 @@ class TreeItem extends React.Component { ...@@ -299,6 +309,14 @@ class TreeItem extends React.Component {
<span <span
style={{ float: "right", position: "absolute", right: "15%" }} //bug-12640-liyuan 30 -> 15% style={{ float: "right", position: "absolute", right: "15%" }} //bug-12640-liyuan 30 -> 15%
> >
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Icon <Icon
type="plus" type="plus"
className={Styles.pmEditIcon} className={Styles.pmEditIcon}
...@@ -314,6 +332,7 @@ class TreeItem extends React.Component { ...@@ -314,6 +332,7 @@ class TreeItem extends React.Component {
className={Styles.pmEditIcon} className={Styles.pmEditIcon}
onClick={() => this.onDelete()} onClick={() => this.onDelete()}
/> />
</Permission>
</span> </span>
) )
: ""} : ""}
...@@ -1067,6 +1086,17 @@ class Information extends React.Component { ...@@ -1067,6 +1086,17 @@ class Information extends React.Component {
render: (text, record) => { render: (text, record) => {
return ( return (
<div> <div>
<Permission
permission={[
"edu_general_user:one",
"edu_party_member:one",
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
fallback={<span>-</span>}
mode="or"
>
<a <a
className={Styles.marr10} className={Styles.marr10}
onClick={() => this.cancelRoof(record.id)} onClick={() => this.cancelRoof(record.id)}
...@@ -1115,15 +1145,13 @@ class Information extends React.Component { ...@@ -1115,15 +1145,13 @@ class Information extends React.Component {
onConfirm={() => this.delete(record.id)} onConfirm={() => this.delete(record.id)}
> >
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/} {/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a <a className={Styles.marr10} href="#">
className={Styles.marr10}
href="#"
>
删除 删除
</a> </a>
</Popconfirm> </Popconfirm>
</div> </div>
)} )}
</Permission>
</div> </div>
); );
}, },
...@@ -1171,9 +1199,18 @@ class Information extends React.Component { ...@@ -1171,9 +1199,18 @@ class Information extends React.Component {
borderRadius: 5, borderRadius: 5,
}} }}
> >
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button type="primary" onClick={() => this.showEidt()}> <Button type="primary" onClick={() => this.showEidt()}>
新增一级分类 新增一级分类
</Button> </Button>
</Permission>
<Tree <Tree
className="draggable-tree" className="draggable-tree"
draggable draggable
......
...@@ -13,6 +13,7 @@ import func from "@/common/commonFunc"; ...@@ -13,6 +13,7 @@ import func from "@/common/commonFunc";
import Breadcrumb from "@/common/Breadcrumb"; import Breadcrumb from "@/common/Breadcrumb";
import AddEditForm from "./addEditForm"; import AddEditForm from "./addEditForm";
import { connect } from "react-redux"; import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import { import {
// postReleases, // postReleases,
// postUnReleases, // postUnReleases,
...@@ -428,12 +429,21 @@ class Mailbox extends React.Component { ...@@ -428,12 +429,21 @@ class Mailbox extends React.Component {
查看 查看
</a> </a>
</div> </div>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Popconfirm <Popconfirm
title="是否删除?" title="是否删除?"
onConfirm={() => this.onDelete(record.id)} onConfirm={() => this.onDelete(record.id)}
> >
<a className={Styles.marr10}>删除</a> <a className={Styles.marr10}>删除</a>
</Popconfirm> </Popconfirm>
</Permission>
</div> </div>
); );
}, },
......
...@@ -10,6 +10,7 @@ import { connect } from "react-redux"; ...@@ -10,6 +10,7 @@ import { connect } from "react-redux";
import { gupList, gupfetch } from "@/common/UpLoad/redux/actions"; import { gupList, gupfetch } from "@/common/UpLoad/redux/actions";
import moment from "moment"; import moment from "moment";
import validator from "@/common/validatorForm/index"; import validator from "@/common/validatorForm/index";
import Permission from "@/common/permissions/Permission";
const FormItem = Form.Item; const FormItem = Form.Item;
class addEdit extends React.Component { class addEdit extends React.Component {
...@@ -151,11 +152,24 @@ class addEdit extends React.Component { ...@@ -151,11 +152,24 @@ class addEdit extends React.Component {
onCancel={onCancel} onCancel={onCancel}
footer={ footer={
<> <>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
{state === 1 && ( {state === 1 && (
<Button key="1" type="primary" onClick={() => onApprove(id, 2)}> <Button
key="1"
type="primary"
onClick={() => onApprove(id, 2)}
>
接收 接收
</Button> </Button>
)} )}
</Permission>
<Button key="3" type="primary" onClick={onCancel}> <Button key="3" type="primary" onClick={onCancel}>
返回 返回
</Button> </Button>
...@@ -167,10 +181,7 @@ class addEdit extends React.Component { ...@@ -167,10 +181,7 @@ class addEdit extends React.Component {
{getFieldDecorator("name", { {getFieldDecorator("name", {
initialValue: seeEdit && seeEdit.name, initialValue: seeEdit && seeEdit.name,
})( })(
<Input <Input disabled={type !== "edit"} style={{ width: "300px" }} />
disabled={type !== "edit"}
style={{ width: "300px" }}
/>
)} )}
</FormItem> </FormItem>
<FormItem {...formItemLayout} label="留言图片"> <FormItem {...formItemLayout} label="留言图片">
...@@ -181,7 +192,11 @@ class addEdit extends React.Component { ...@@ -181,7 +192,11 @@ class addEdit extends React.Component {
key={index} key={index}
src={item} src={item}
alt="" alt=""
style={{ width: "200px", height: "240px", cursor: 'pointer' }} style={{
width: "200px",
height: "240px",
cursor: "pointer",
}}
onClick={() => this.handlePreview(item)} onClick={() => this.handlePreview(item)}
/> />
))} ))}
...@@ -204,7 +219,7 @@ class addEdit extends React.Component { ...@@ -204,7 +219,7 @@ class addEdit extends React.Component {
footer={null} footer={null}
onCancel={this.handleCancel} onCancel={this.handleCancel}
> >
<img alt="preview" style={{ width: '100%' }} src={previewImage} /> <img alt="preview" style={{ width: "100%" }} src={previewImage} />
</Modal> </Modal>
</> </>
); );
......
...@@ -18,6 +18,7 @@ import { ...@@ -18,6 +18,7 @@ import {
getList, getList,
} from "./redux/action"; } from "./redux/action";
import moment from "moment"; import moment from "moment";
import Permission from "@/common/permissions/Permission";
import Styles from "./style.less"; import Styles from "./style.less";
const TreeNode = Tree.TreeNode; const TreeNode = Tree.TreeNode;
const FormItem = Form.Item; const FormItem = Form.Item;
...@@ -438,6 +439,14 @@ class Message extends React.Component { ...@@ -438,6 +439,14 @@ class Message extends React.Component {
查看 查看
</a> </a>
</div> </div>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<div style={{ display: "inline" }}> <div style={{ display: "inline" }}>
<Popconfirm <Popconfirm
title="是否删除?" title="是否删除?"
...@@ -446,6 +455,7 @@ class Message extends React.Component { ...@@ -446,6 +455,7 @@ class Message extends React.Component {
<a className={Styles.marr10}>删除</a> <a className={Styles.marr10}>删除</a>
</Popconfirm> </Popconfirm>
</div> </div>
</Permission>
</div> </div>
); );
}, },
......
...@@ -26,6 +26,7 @@ import { ...@@ -26,6 +26,7 @@ import {
} from "./redux/actions"; } from "./redux/actions";
import moment from "moment"; import moment from "moment";
import HandleMessageCheck from "./handleMessageCheck"; import HandleMessageCheck from "./handleMessageCheck";
import Permission from "@/common/permissions/Permission";
import Style from "./index.less"; import Style from "./index.less";
const TabPane = Tabs.TabPane; const TabPane = Tabs.TabPane;
// require('./index.scss'); // require('./index.scss');
...@@ -475,6 +476,14 @@ class News extends React.Component { ...@@ -475,6 +476,14 @@ class News extends React.Component {
{ {
<div> <div>
<a onClick={() => this.customSee(record)}>查看</a> <a onClick={() => this.customSee(record)}>查看</a>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Divider type="vertical" /> <Divider type="vertical" />
<a <a
disabled={record.status == 1 ? false : true} disabled={record.status == 1 ? false : true}
...@@ -508,8 +517,11 @@ class News extends React.Component { ...@@ -508,8 +517,11 @@ class News extends React.Component {
title="取消发送?" title="取消发送?"
onConfirm={() => this.onSend(record, false, 1)} onConfirm={() => this.onSend(record, false, 1)}
> >
<a disabled={record.status == 2 ? false : true}>取消发送</a> <a disabled={record.status == 2 ? false : true}>
取消发送
</a>
</Popconfirm> </Popconfirm>
</Permission>
</div> </div>
} }
</div> </div>
...@@ -549,6 +561,14 @@ class News extends React.Component { ...@@ -549,6 +561,14 @@ class News extends React.Component {
return ( return (
<div> <div>
<a onClick={() => this.systemModify(record, "look")}>查看</a> <a onClick={() => this.systemModify(record, "look")}>查看</a>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Divider type="vertical" /> <Divider type="vertical" />
<a <a
disabled={record.status == "7" ? true : false} disabled={record.status == "7" ? true : false}
...@@ -572,6 +592,7 @@ class News extends React.Component { ...@@ -572,6 +592,7 @@ class News extends React.Component {
> >
下架 下架
</a> </a>
</Permission>
</div> </div>
); );
}, },
...@@ -615,6 +636,14 @@ class News extends React.Component { ...@@ -615,6 +636,14 @@ class News extends React.Component {
<a onClick={() => this.messageCheckModify(record, "look")}> <a onClick={() => this.messageCheckModify(record, "look")}>
查看 查看
</a> </a>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Divider type="vertical" /> <Divider type="vertical" />
<a <a
disabled={record.status == "7" ? true : false} disabled={record.status == "7" ? true : false}
...@@ -636,6 +665,7 @@ class News extends React.Component { ...@@ -636,6 +665,7 @@ class News extends React.Component {
> >
上架 上架
</a> </a>
</Permission>
</div> </div>
</div> </div>
); );
...@@ -722,6 +752,14 @@ class News extends React.Component { ...@@ -722,6 +752,14 @@ class News extends React.Component {
QueryForm={this.QueryForm} QueryForm={this.QueryForm}
onClickChange={this.onClickChange} onClickChange={this.onClickChange}
/> />
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button <Button
className={Style.marl40} className={Style.marl40}
type="primary" type="primary"
...@@ -730,6 +768,7 @@ class News extends React.Component { ...@@ -730,6 +768,7 @@ class News extends React.Component {
> >
新增消息 新增消息
</Button> </Button>
</Permission>
{this.state.visible && ( {this.state.visible && (
<AddQueryModal <AddQueryModal
handleSearch={this.handleSearch} handleSearch={this.handleSearch}
......
...@@ -29,6 +29,7 @@ import UpdateTree from "../UpdateTree/UpdateTree"; ...@@ -29,6 +29,7 @@ import UpdateTree from "../UpdateTree/UpdateTree";
import ImportAccount from "../ImportAccount/ImportAccount"; import ImportAccount from "../ImportAccount/ImportAccount";
import ImportStopAccountModal from "../ImportStopAccountModal/ImportStopAccountModal"; import ImportStopAccountModal from "../ImportStopAccountModal/ImportStopAccountModal";
import Style from "./ImportOrganization.less"; import Style from "./ImportOrganization.less";
import Permission from "@/common/permissions/Permission";
const { Search } = Input; const { Search } = Input;
const confirm = Modal.confirm; const confirm = Modal.confirm;
...@@ -438,9 +439,11 @@ class ImportOrganization extends Component { ...@@ -438,9 +439,11 @@ class ImportOrganization extends Component {
style={{ display: !window.orgId ? "none" : "block" }} style={{ display: !window.orgId ? "none" : "block" }}
onConfirm={this.importerAccount} onConfirm={this.importerAccount}
> >
<a onClick={eve =>{ <a
eve.stopPropagation() onClick={eve => {
}}> eve.stopPropagation();
}}
>
导出用户 导出用户
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -452,9 +455,11 @@ class ImportOrganization extends Component { ...@@ -452,9 +455,11 @@ class ImportOrganization extends Component {
style={{ display: !window.orgId ? "none" : "block" }} style={{ display: !window.orgId ? "none" : "block" }}
onConfirm={this.importerOrganization} onConfirm={this.importerOrganization}
> >
<a onClick={eve =>{ <a
eve.stopPropagation() onClick={eve => {
}}> eve.stopPropagation();
}}
>
导出组织架构 导出组织架构
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -463,9 +468,14 @@ class ImportOrganization extends Component { ...@@ -463,9 +468,14 @@ class ImportOrganization extends Component {
</a> */} </a> */}
</Menu.Item> </Menu.Item>
<Menu.Item> <Menu.Item>
<Permission
permission={["edu_party_member:three", "edu_site_admin"]}
mode="or"
>
<a onClick={() => this.ImportAccountModal("导入组织并联用户")}> <a onClick={() => this.ImportAccountModal("导入组织并联用户")}>
导入组织并关联用户 导入组织并关联用户
</a> </a>
</Permission>
</Menu.Item> </Menu.Item>
</Menu> </Menu>
); );
...@@ -489,7 +499,13 @@ class ImportOrganization extends Component { ...@@ -489,7 +499,13 @@ class ImportOrganization extends Component {
{/*<Button type="primary" style={{marginRight:10,backgroundColor:"#00BCD4",borderColor:"#00BCD4"}}>导出组织架构</Button>*/} {/*<Button type="primary" style={{marginRight:10,backgroundColor:"#00BCD4",borderColor:"#00BCD4"}}>导出组织架构</Button>*/}
{/*<Button type="primary" style={{marginRight:10,backgroundColor:"#00BCD4",borderColor:"#00BCD4"}}>导出组织用户</Button>*/} {/*<Button type="primary" style={{marginRight:10,backgroundColor:"#00BCD4",borderColor:"#00BCD4"}}>导出组织用户</Button>*/}
<Search onChange={this.handleGetValue} className={Style.searchInput} placeholder="请输入用户名/姓名/手机号/工号" onSearch={() => this.handleSearch()} style={{ width: "300px" }} /> <Search
onChange={this.handleGetValue}
className={Style.searchInput}
placeholder="请输入用户名/姓名/手机号/工号"
onSearch={() => this.handleSearch()}
style={{ width: "300px" }}
/>
<Dropdown <Dropdown
visible={this.state.higherSearch} visible={this.state.higherSearch}
...@@ -497,7 +513,7 @@ class ImportOrganization extends Component { ...@@ -497,7 +513,7 @@ class ImportOrganization extends Component {
trigger={["click"]} trigger={["click"]}
onVisibleChange={visible => onVisibleChange={visible =>
this.setState({ this.setState({
higherSearch: visible higherSearch: visible,
}) })
} }
overlay={ overlay={
...@@ -548,14 +564,16 @@ class ImportOrganization extends Component { ...@@ -548,14 +564,16 @@ class ImportOrganization extends Component {
/> />
</Modal> */} </Modal> */}
{ {
// this.props.isShowBtn ? (
// <>
<div className={Style.tabBarLeft}> <div className={Style.tabBarLeft}>
{ <Permission
this.props.isShowBtn ? ( permission={["edu_party_member:three", "edu_site_admin"]}
mode="or"
>
{this.props.isShowBtn ? (
<Link <Link
to={{ to={{
pathname: "/" + pathname:
"/" +
companyCode + companyCode +
"/" + "/" +
siteCode + siteCode +
...@@ -563,10 +581,9 @@ class ImportOrganization extends Component { ...@@ -563,10 +581,9 @@ class ImportOrganization extends Component {
state: { state: {
departmentTree: departmentTree, departmentTree: departmentTree,
companyCode: companyCode, companyCode: companyCode,
siteCode: siteCode siteCode: siteCode,
} },
} }}
}
> >
<Button <Button
type="primary" type="primary"
...@@ -576,10 +593,8 @@ class ImportOrganization extends Component { ...@@ -576,10 +593,8 @@ class ImportOrganization extends Component {
新增用户 新增用户
</Button> </Button>
</Link> </Link>
) : null ) : null}
} {this.state.visible && (
{
this.state.visible && (
<Modal <Modal
title={this.state.title} title={this.state.title}
visible={this.state.visible} visible={this.state.visible}
...@@ -620,8 +635,7 @@ class ImportOrganization extends Component { ...@@ -620,8 +635,7 @@ class ImportOrganization extends Component {
{/*导入组织解除用户 6月1 不上*/} {/*导入组织解除用户 6月1 不上*/}
{/*{this.state.ImportStopAccountModal?<ImportStopAccountModal handleCancel={this.handleCancel}/>:null}*/} {/*{this.state.ImportStopAccountModal?<ImportStopAccountModal handleCancel={this.handleCancel}/>:null}*/}
</Modal> </Modal>
) )}
}
{/*批量操作解绑*/} {/*批量操作解绑*/}
<div style={{ display: "inline-block" }}> <div style={{ display: "inline-block" }}>
<Batch <Batch
...@@ -635,24 +649,21 @@ class ImportOrganization extends Component { ...@@ -635,24 +649,21 @@ class ImportOrganization extends Component {
disableBatch={this.props.disableBatch} disableBatch={this.props.disableBatch}
/> />
</div> </div>
{ </Permission>
this.props.isShowBtn ? ( {this.props.isShowBtn ? (
<Dropdown <Dropdown
overlay={menu} overlay={menu}
trigger={['click']} trigger={["click"]}
overlayStyle={{zIndex:9}} overlayStyle={{ zIndex: 9 }}
className={Style.selectMore}> className={Style.selectMore}
>
<Button> <Button>
更多操作 更多操作
<Icon type="down" /> <Icon type="down" />
</Button> </Button>
</Dropdown> </Dropdown>
) : null ) : null}
}
</div> </div>
// </>
// ) : null
} }
</div> </div>
<div className="marketing-table" style={{ marginRight: "20px" }}> <div className="marketing-table" style={{ marginRight: "20px" }}>
......
...@@ -6,6 +6,7 @@ import UpdataDepartment from "./UpdataDepartment/UpdataDepartment"; ...@@ -6,6 +6,7 @@ import UpdataDepartment from "./UpdataDepartment/UpdataDepartment";
import DepartmentForm from "./Department/Department"; import DepartmentForm from "./Department/Department";
import styles from "./index.less"; import styles from "./index.less";
import ScrollBar from "../../Operating/LanguageConfiguration/ScrollBar"; import ScrollBar from "../../Operating/LanguageConfiguration/ScrollBar";
import Permission from "@/common/permissions/Permission";
// const Search = Input.Search; // const Search = Input.Search;
const TreeNode = Tree.TreeNode; const TreeNode = Tree.TreeNode;
const FormItem = Form.Item; const FormItem = Form.Item;
...@@ -183,13 +184,20 @@ class TreeItem extends Component { ...@@ -183,13 +184,20 @@ class TreeItem extends Component {
> >
<span <span
className={ className={
show && !isUserGroup ? show && !isUserGroup
layer === 8 ? styles.itemTitleHover8 : ? layer === 8
layer === 7 ? styles.itemTitleHover7 : ? styles.itemTitleHover8
layer === 6 ? styles.itemTitleHover6 : : layer === 7
layer === 5 ? styles.itemTitleHover5 : ? styles.itemTitleHover7
layer === 4 ? styles.itemTitleHover4 : : layer === 6
layer === 3 ? styles.itemTitleHover3 : styles.itemTitleHover2 ? styles.itemTitleHover6
: layer === 5
? styles.itemTitleHover5
: layer === 4
? styles.itemTitleHover4
: layer === 3
? styles.itemTitleHover3
: styles.itemTitleHover2
: styles.itemTitle : styles.itemTitle
} }
title={data.name} title={data.name}
...@@ -197,23 +205,25 @@ class TreeItem extends Component { ...@@ -197,23 +205,25 @@ class TreeItem extends Component {
{data.name} {data.name}
</span> </span>
{(show && !isUserGroup && ( {show && !isUserGroup && (
<span style={{ float: "right" }}> <span style={{ float: "right" }}>
<Dropdown overlay={menu} trigger={['click']}> <Permission
<Icon permission={["edu_party_member:three", "edu_site_admin"]}
type="more" mode="or"
/> >
<Dropdown overlay={menu} trigger={["click"]}>
<Icon type="more" />
</Dropdown> </Dropdown>
<Icon <Icon
style={{ marginLeft: "2px" }} style={{ marginLeft: "2px" }}
type="plus" type="plus"
onClick={() => this.showModal("新增部门")} onClick={() => this.showModal("新增部门")}
/> />
</Permission>
</span> </span>
))} )}
</p> </p>
{/* </Popover> */} {/* </Popover> */}
</div> </div>
); );
} }
......
...@@ -7,6 +7,7 @@ import EditPasswords from "../EditPassword/EditPassword"; ...@@ -7,6 +7,7 @@ import EditPasswords from "../EditPassword/EditPassword";
import moment from "moment"; import moment from "moment";
import { sm2 } from "sm-crypto"; import { sm2 } from "sm-crypto";
import md5 from "md5"; import md5 from "md5";
import Permission from "@/common/permissions/Permission";
class UserTable extends Component { class UserTable extends Component {
constructor(props) { constructor(props) {
...@@ -90,6 +91,11 @@ class UserTable extends Component { ...@@ -90,6 +91,11 @@ class UserTable extends Component {
render: (text, record, index) => { render: (text, record, index) => {
return ( return (
<span> <span>
<Permission
permission={["edu_party_member:three", "edu_site_admin"]}
mode="or"
fallback={<span>-</span>}
>
{record.enabled === "启用" ? ( {record.enabled === "启用" ? (
<a onClick={() => this.handleEdit("停用", record)}>停用</a> <a onClick={() => this.handleEdit("停用", record)}>停用</a>
) : ( ) : (
...@@ -108,6 +114,7 @@ class UserTable extends Component { ...@@ -108,6 +114,7 @@ class UserTable extends Component {
</a> </a>
<Divider type="vertical" /> <Divider type="vertical" />
<a onClick={() => this.handleResetPassword(record)}>重置密码</a> <a onClick={() => this.handleResetPassword(record)}>重置密码</a>
</Permission>
</span> </span>
); );
}, },
......
...@@ -218,7 +218,7 @@ class AddRotes extends Component { ...@@ -218,7 +218,7 @@ class AddRotes extends Component {
message: "请输入角色序号,数字字母下划线组成", message: "请输入角色序号,数字字母下划线组成",
}, },
], ],
})(<Input placeholder="角色序号" maxLength={20} />)} })(<Input placeholder="角色序号" maxLength={30} />)}
</FormItem> </FormItem>
<FormItem {...formItemLayout} label="角色名:"> <FormItem {...formItemLayout} label="角色名:">
{getFieldDecorator("name", { {getFieldDecorator("name", {
......
...@@ -20,6 +20,7 @@ import { connect } from "react-redux"; ...@@ -20,6 +20,7 @@ import { connect } from "react-redux";
import * as actions from "./redux/actions"; import * as actions from "./redux/actions";
import AddRotes from "./AddRotes"; import AddRotes from "./AddRotes";
import RoteCheck from "./RoteCheck"; import RoteCheck from "./RoteCheck";
import Permission from "@/common/permissions/Permission";
const Option = Select.Option; const Option = Select.Option;
class RoteManager extends React.Component { class RoteManager extends React.Component {
...@@ -98,6 +99,11 @@ class RoteManager extends React.Component { ...@@ -98,6 +99,11 @@ class RoteManager extends React.Component {
key: "action", key: "action",
render: (text, record, index) => ( render: (text, record, index) => (
<span> <span>
<Permission
permission={["edu_site_admin"]}
mode="or"
fallback={<span>-</span>}
>
<a <a
data-index={index} data-index={index}
onClick={() => this.editModal("修改角色", record)} onClick={() => this.editModal("修改角色", record)}
...@@ -119,9 +125,9 @@ class RoteManager extends React.Component { ...@@ -119,9 +125,9 @@ class RoteManager extends React.Component {
管理对象 管理对象
</a> </a>
<Divider type="vertical" /> <Divider type="vertical" />
{ {record.isSiteDefaultAdmin ? (
record.isSiteDefaultAdmin ? <a style={{ color: "#999" }}>删除</a>
<a style={{color:"#999"}}>删除</a> : ) : (
<Popconfirm <Popconfirm
title="是否要删除此行?" title="是否要删除此行?"
onConfirm={() => onConfirm={() =>
...@@ -132,8 +138,8 @@ class RoteManager extends React.Component { ...@@ -132,8 +138,8 @@ class RoteManager extends React.Component {
> >
<a>删除</a> <a>删除</a>
</Popconfirm> </Popconfirm>
} )}
</Permission>
</span> </span>
), ),
}, },
...@@ -363,7 +369,7 @@ class RoteManager extends React.Component { ...@@ -363,7 +369,7 @@ class RoteManager extends React.Component {
return ( return (
<div className="list" style={{ paddingLeft: "20px" }}> <div className="list" style={{ paddingLeft: "20px" }}>
<Breadcrumb title="角色管理" /> <Breadcrumb title="角色管理" />
<div className="list-btn" style={{paddingTop:15}}> <div className="list-btn" style={{ paddingTop: 15 }}>
<div ref={input => (this.input = input)}> <div ref={input => (this.input = input)}>
{/*<Input placeholder="请输入角色序号或角色名" style={{width: 250, marginRight: 10}} onKeyDown={this.getExamKeyword} onChange={this.handleGetValue} />*/} {/*<Input placeholder="请输入角色序号或角色名" style={{width: 250, marginRight: 10}} onKeyDown={this.getExamKeyword} onChange={this.handleGetValue} />*/}
<Input <Input
...@@ -378,9 +384,17 @@ class RoteManager extends React.Component { ...@@ -378,9 +384,17 @@ class RoteManager extends React.Component {
> >
搜索 搜索
</Button> </Button>
<Button type="primary" onClick={() => this.insertModal("创建角色")}> <Permission
permission={["edu_site_admin"]}
mode="or"
>
<Button
type="primary"
onClick={() => this.insertModal("创建角色")}
>
创建角色 创建角色
</Button> </Button>
</Permission>
</div> </div>
</div> </div>
<Table <Table
......
...@@ -6,13 +6,24 @@ import { connect } from "react-redux"; ...@@ -6,13 +6,24 @@ import { connect } from "react-redux";
import { getSiteList, releaseSite, unReleaseSite } from "./redux/actions"; import { getSiteList, releaseSite, unReleaseSite } from "./redux/actions";
import func from "@/common/commonFunc"; import func from "@/common/commonFunc";
import Breadcrumb from "@/common/Breadcrumb"; import Breadcrumb from "@/common/Breadcrumb";
import Permission from "@/common/permissions/Permission";
class Door extends Component { class Door extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.columns = [ this.columns = [
{ title: "终端", key: "site", dataIndex: "site", align: "left" }, { title: "终端", key: "site", dataIndex: "site", align: "left" },
{ title: "操作人", key: "operation", dataIndex: "operation", align: "left" }, {
{ title: "最后操作日期", key: "lastTime", dataIndex: "lastTime", align: "left" }, title: "操作人",
key: "operation",
dataIndex: "operation",
align: "left",
},
{
title: "最后操作日期",
key: "lastTime",
dataIndex: "lastTime",
align: "left",
},
{ title: "状态", key: "status", dataIndex: "status", align: "left" }, { title: "状态", key: "status", dataIndex: "status", align: "left" },
{ {
title: "操作", title: "操作",
...@@ -21,6 +32,15 @@ class Door extends Component { ...@@ -21,6 +32,15 @@ class Door extends Component {
dataIndex: "action", dataIndex: "action",
render: (text, record) => ( render: (text, record) => (
<div className={Styles.doorOpt}> <div className={Styles.doorOpt}>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{text.state == 0 ? ( {text.state == 0 ? (
<a <a
// href={"javascript:void(0)"} // href={"javascript:void(0)"}
...@@ -86,6 +106,7 @@ class Door extends Component { ...@@ -86,6 +106,7 @@ class Door extends Component {
> >
配置登录页 配置登录页
</Link> </Link>
</Permission>
</div> </div>
), ),
}, },
......
...@@ -78,6 +78,7 @@ import Comment from "./Comment.jsx"; ...@@ -78,6 +78,7 @@ import Comment from "./Comment.jsx";
import CourseResourceView from "../../OnLine/CourseBank/CourseManagement/resource/index.jsx"; import CourseResourceView from "../../OnLine/CourseBank/CourseManagement/resource/index.jsx";
import ResourceListView from "../../OnLine/CourseBank/CourseManagement/resource/resourceList.jsx"; import ResourceListView from "../../OnLine/CourseBank/CourseManagement/resource/resourceList.jsx";
import Permission from "@/common/permissions/Permission";
import styles from "./index.less"; import styles from "./index.less";
...@@ -419,6 +420,14 @@ class TreeItem extends Component { ...@@ -419,6 +420,14 @@ class TreeItem extends Component {
<span className={styles.itemTitle}>{data.key}</span> <span className={styles.itemTitle}>{data.key}</span>
{(show && ( {(show && (
<span style={{ float: "right" }}> <span style={{ float: "right" }}>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Icon <Icon
style={{ marginRight: "10px" }} style={{ marginRight: "10px" }}
type="edit" type="edit"
...@@ -430,15 +439,25 @@ class TreeItem extends Component { ...@@ -430,15 +439,25 @@ class TreeItem extends Component {
className={styles.pm_edit_icon} className={styles.pm_edit_icon}
onClick={() => this.onDelete()} onClick={() => this.onDelete()}
/> />
</Permission>
</span> </span>
)) || )) ||
(addshow && ( (addshow && (
<span style={{ float: "right" }}> <span style={{ float: "right" }}>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Icon <Icon
type="plus" type="plus"
className={styles.pm_edit_icon} className={styles.pm_edit_icon}
onClick={() => this.showModal("1")} onClick={() => this.showModal("1")}
/> />
</Permission>
</span> </span>
))} ))}
</p> </p>
...@@ -2956,6 +2975,15 @@ class NewTP extends Component { ...@@ -2956,6 +2975,15 @@ class NewTP extends Component {
key: "operation", key: "operation",
render: (text, record) => ( render: (text, record) => (
<div> <div>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{record.state === "草稿" ? ( {record.state === "草稿" ? (
<div> <div>
<a <a
...@@ -2970,7 +2998,9 @@ class NewTP extends Component { ...@@ -2970,7 +2998,9 @@ class NewTP extends Component {
cancelText="取消" cancelText="取消"
onConfirm={() => this.onUp(record)} onConfirm={() => this.onUp(record)}
> >
<a style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}> <a
style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}
>
上架 上架
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -2980,7 +3010,9 @@ class NewTP extends Component { ...@@ -2980,7 +3010,9 @@ class NewTP extends Component {
cancelText="取消" cancelText="取消"
onConfirm={() => this.onDelete(record)} onConfirm={() => this.onDelete(record)}
> >
<a style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}> <a
style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}
>
删除 删除
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -2999,7 +3031,9 @@ class NewTP extends Component { ...@@ -2999,7 +3031,9 @@ class NewTP extends Component {
cancelText="取消" cancelText="取消"
onConfirm={() => this.onDown(record)} onConfirm={() => this.onDown(record)}
> >
<a style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}> <a
style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}
>
下架 下架
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -3024,7 +3058,9 @@ class NewTP extends Component { ...@@ -3024,7 +3058,9 @@ class NewTP extends Component {
cancelText="取消" cancelText="取消"
onConfirm={() => this.onUp(record)} onConfirm={() => this.onUp(record)}
> >
<a style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}> <a
style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}
>
上架 上架
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -3034,7 +3070,9 @@ class NewTP extends Component { ...@@ -3034,7 +3070,9 @@ class NewTP extends Component {
cancelText="取消" cancelText="取消"
onConfirm={() => this.onDelete(record)} onConfirm={() => this.onDelete(record)}
> >
<a style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}> <a
style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}
>
删除 删除
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -3102,7 +3140,9 @@ class NewTP extends Component { ...@@ -3102,7 +3140,9 @@ class NewTP extends Component {
cancelText="取消" cancelText="取消"
onConfirm={() => this.downTxt(record.id)} onConfirm={() => this.downTxt(record.id)}
> >
<a style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}> <a
style={{ marginLeft: "10px", color: "rgb(24, 144, 255)" }}
>
导出签到记录 导出签到记录
</a> </a>
</Popconfirm> </Popconfirm>
...@@ -3135,6 +3175,7 @@ class NewTP extends Component { ...@@ -3135,6 +3175,7 @@ class NewTP extends Component {
</a> </a>
</Popconfirm> </Popconfirm>
</div> */} </div> */}
</Permission>
</div> </div>
), ),
}, },
...@@ -3298,6 +3339,14 @@ class NewTP extends Component { ...@@ -3298,6 +3339,14 @@ class NewTP extends Component {
> >
查询 查询
</Button> </Button>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button <Button
type="primary" type="primary"
style={{ marginLeft: 60 }} style={{ marginLeft: 60 }}
...@@ -3305,6 +3354,7 @@ class NewTP extends Component { ...@@ -3305,6 +3354,7 @@ class NewTP extends Component {
> >
新建项目 新建项目
</Button> </Button>
</Permission>
</div> </div>
<div className={styles.listDiv}> <div className={styles.listDiv}>
......
...@@ -23,6 +23,7 @@ import { ...@@ -23,6 +23,7 @@ import {
message, message,
} from "antd"; } from "antd";
import Breadcrumb from "@/common/Breadcrumb"; import Breadcrumb from "@/common/Breadcrumb";
import Permission from "@/common/permissions/Permission";
const TabPane = Tabs.TabPane; const TabPane = Tabs.TabPane;
import styles from "./style/index.less"; import styles from "./style/index.less";
import { withRouter } from "react-router-dom"; import { withRouter } from "react-router-dom";
...@@ -317,6 +318,15 @@ class Survey extends Component { ...@@ -317,6 +318,15 @@ class Survey extends Component {
key: "action", key: "action",
render: (text, record) => ( render: (text, record) => (
<div className={styles.survey_list_btns}> <div className={styles.survey_list_btns}>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{key == 1 ? ( {key == 1 ? (
<Link <Link
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/details/${record.id}/2`} to={`/${companyCode}/${siteCode}/index/tool/question/question-management/details/${record.id}/2`}
...@@ -407,6 +417,7 @@ class Survey extends Component { ...@@ -407,6 +417,7 @@ class Survey extends Component {
</div> */} </div> */}
</div> </div>
) : null} ) : null}
</Permission>
</div> </div>
), ),
}, },
...@@ -449,6 +460,14 @@ class Survey extends Component { ...@@ -449,6 +460,14 @@ class Survey extends Component {
> >
查询 查询
</Button> </Button>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Link <Link
to={ to={
"/" + "/" +
...@@ -470,6 +489,7 @@ class Survey extends Component { ...@@ -470,6 +489,7 @@ class Survey extends Component {
> >
删除 删除
</Button> </Button>
</Permission>
</div> </div>
<Tabs <Tabs
className={styles.survey_tabs} className={styles.survey_tabs}
......
...@@ -27,6 +27,7 @@ const TabPane = Tabs.TabPane; ...@@ -27,6 +27,7 @@ const TabPane = Tabs.TabPane;
import styles from "./style/index.less"; import styles from "./style/index.less";
// 在import部分添加 // 在import部分添加
import { withRouter } from "react-router-dom"; import { withRouter } from "react-router-dom";
import Permission from "@/common/permissions/Permission";
var companyCode = location.pathname.split("/")[1]; var companyCode = location.pathname.split("/")[1];
var siteCode = location.pathname.split("/")[2]; var siteCode = location.pathname.split("/")[2];
...@@ -309,6 +310,15 @@ class Survey extends Component { ...@@ -309,6 +310,15 @@ class Survey extends Component {
key: "action", key: "action",
render: (text, record) => ( render: (text, record) => (
<div className={styles.survey_list_btns}> <div className={styles.survey_list_btns}>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{key == 1 ? ( {key == 1 ? (
<Link <Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/details/${record.id}/2`} to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/details/${record.id}/2`}
...@@ -392,6 +402,7 @@ class Survey extends Component { ...@@ -392,6 +402,7 @@ class Survey extends Component {
</div> </div>
</div> </div>
) : null} ) : null}
</Permission>
</div> </div>
), ),
}, },
...@@ -434,6 +445,14 @@ class Survey extends Component { ...@@ -434,6 +445,14 @@ class Survey extends Component {
> >
查询 查询
</Button> </Button>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Link <Link
to={ to={
"/" + "/" +
...@@ -455,6 +474,7 @@ class Survey extends Component { ...@@ -455,6 +474,7 @@ class Survey extends Component {
> >
删除 删除
</Button> </Button>
</Permission>
</div> </div>
<Tabs <Tabs
className={styles.survey_tabs} className={styles.survey_tabs}
......
...@@ -21,6 +21,7 @@ const dic = { ...@@ -21,6 +21,7 @@ const dic = {
}; };
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { connect } from "react-redux"; import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import { import {
getExamList, getExamList,
...@@ -131,6 +132,15 @@ class Exam extends Component { ...@@ -131,6 +132,15 @@ class Exam extends Component {
dataIndex: "action", dataIndex: "action",
render: (text, record) => ( render: (text, record) => (
<div className="operation"> <div className="operation">
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<Link <Link
to={{ to={{
pathname: pathname:
...@@ -154,10 +164,14 @@ class Exam extends Component { ...@@ -154,10 +164,14 @@ class Exam extends Component {
> >
下架 下架
</a> </a>
<a href="javascript:void(0)" onClick={() => self.examCopy(text.id)}> <a
href="javascript:void(0)"
onClick={() => self.examCopy(text.id)}
>
复制 复制
</a> </a>
{text.visibleRange === 2 ? <Divider type="vertical" /> : null} {text.visibleRange === 2 ? <Divider type="vertical" /> : null}
</Permission>
</div> </div>
), ),
}, },
...@@ -213,6 +227,15 @@ class Exam extends Component { ...@@ -213,6 +227,15 @@ class Exam extends Component {
dataIndex: "action", dataIndex: "action",
render: (text, record) => ( render: (text, record) => (
<div className="operation"> <div className="operation">
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<Link <Link
to={{ to={{
pathname: pathname:
...@@ -250,15 +273,13 @@ class Exam extends Component { ...@@ -250,15 +273,13 @@ class Exam extends Component {
onConfirm={() => this.deleteExam(text.id)} onConfirm={() => this.deleteExam(text.id)}
> >
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/} {/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a <a href="javascript:void(0)" style={{ marginLeft: 10 }}>
href="javascript:void(0)"
style={{ marginLeft: 10 }}
>
删除 删除
</a> </a>
</Popconfirm> </Popconfirm>
{text.visibleRange === 2 ? <Divider type="vertical" /> : null} {text.visibleRange === 2 ? <Divider type="vertical" /> : null}
</Permission>
</div> </div>
), ),
}, },
...@@ -314,6 +335,15 @@ class Exam extends Component { ...@@ -314,6 +335,15 @@ class Exam extends Component {
dataIndex: "action", dataIndex: "action",
render: (text, record) => ( render: (text, record) => (
<div className="operation"> <div className="operation">
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<Link <Link
to={{ to={{
pathname: pathname:
...@@ -344,14 +374,12 @@ class Exam extends Component { ...@@ -344,14 +374,12 @@ class Exam extends Component {
onConfirm={() => this.deleteExam(text.id)} onConfirm={() => this.deleteExam(text.id)}
> >
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/} {/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a <a style={{ marginLeft: 10 }} href="#">
style={{ marginLeft: 10 }}
href="#"
>
删除 删除
</a> </a>
</Popconfirm> </Popconfirm>
{text.visibleRange === 2 ? <Divider type="vertical" /> : null} {text.visibleRange === 2 ? <Divider type="vertical" /> : null}
</Permission>
</div> </div>
), ),
}, },
...@@ -583,6 +611,14 @@ class Exam extends Component { ...@@ -583,6 +611,14 @@ class Exam extends Component {
> >
查询 查询
</Button> </Button>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Link <Link
to={ to={
"/" + "/" +
...@@ -592,10 +628,14 @@ class Exam extends Component { ...@@ -592,10 +628,14 @@ class Exam extends Component {
"/index/tool/test/test-management/create" "/index/tool/test/test-management/create"
} }
> >
<Button type="primary" style={{ marginLeft: 10, marginTop: 16 }}> <Button
type="primary"
style={{ marginLeft: 10, marginTop: 16 }}
>
新建考试 新建考试
</Button> </Button>
</Link> </Link>
</Permission>
{/*<Button type="primary" onClick={this.deleteExam} style={{ marginLeft:10,display:this.state.tabsKey==1?'inline':'none'}}>删除</Button>*/} {/*<Button type="primary" onClick={this.deleteExam} style={{ marginLeft:10,display:this.state.tabsKey==1?'inline':'none'}}>删除</Button>*/}
</div> </div>
</div> </div>
......
...@@ -16,6 +16,7 @@ import { Link } from "react-router-dom"; ...@@ -16,6 +16,7 @@ import { Link } from "react-router-dom";
import "./style/examCheck.less"; import "./style/examCheck.less";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { getExamList, downTxt } from "./redux/actions"; import { getExamList, downTxt } from "./redux/actions";
import Permission from "@/common/permissions/Permission";
import api from "./api.js"; import api from "./api.js";
// import fetch from "@/util/fetch.js"; // import fetch from "@/util/fetch.js";
import request from "@/util/request.js"; import request from "@/util/request.js";
...@@ -135,6 +136,15 @@ class ExamCheck extends Component { ...@@ -135,6 +136,15 @@ class ExamCheck extends Component {
dataIndex: "action", dataIndex: "action",
render: (text, record) => ( render: (text, record) => (
<div className="operation" style={{ width: 154 }}> <div className="operation" style={{ width: 154 }}>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<Link <Link
to={{ to={{
pathname: pathname:
...@@ -158,6 +168,7 @@ class ExamCheck extends Component { ...@@ -158,6 +168,7 @@ class ExamCheck extends Component {
> >
<a href="#">导出考试结果</a> <a href="#">导出考试结果</a>
</Popconfirm> </Popconfirm>
</Permission>
</div> </div>
), ),
}, },
......
...@@ -21,6 +21,7 @@ import func from "@/util/commonFunc.js"; ...@@ -21,6 +21,7 @@ import func from "@/util/commonFunc.js";
import styles from "./Style/questionBank.less"; import styles from "./Style/questionBank.less";
const Option = Select.Option; const Option = Select.Option;
import { connect } from "react-redux"; import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import { import {
getQuestionBankList, getQuestionBankList,
getId, getId,
...@@ -147,9 +148,20 @@ class QuestionBank extends Component { ...@@ -147,9 +148,20 @@ class QuestionBank extends Component {
<a href="javascript:void(0)" onClick={() => self.look(text.id)}> <a href="javascript:void(0)" onClick={() => self.look(text.id)}>
查看 查看
</a> </a>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Divider type="vertical" /> <Divider type="vertical" />
<a href="javascript:void(0)" onClick={() => self.change(text.id)}> <a
href="javascript:void(0)"
onClick={() => self.change(text.id)}
>
修改 修改
</a> </a>
...@@ -185,6 +197,7 @@ class QuestionBank extends Component { ...@@ -185,6 +197,7 @@ class QuestionBank extends Component {
> >
导出试题 导出试题
</a> </a>
</Permission>
</div> </div>
), ),
}, },
...@@ -552,6 +565,14 @@ class QuestionBank extends Component { ...@@ -552,6 +565,14 @@ class QuestionBank extends Component {
> >
重置 重置
</Button> </Button>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button <Button
type="primary" type="primary"
onClick={() => this.open("questionBank")} onClick={() => this.open("questionBank")}
...@@ -559,6 +580,7 @@ class QuestionBank extends Component { ...@@ -559,6 +580,7 @@ class QuestionBank extends Component {
> >
新建题库 新建题库
</Button> </Button>
</Permission>
{/*<Button type="primary" onClick={()=>this.deleteQuestionBank("multi")} style={{marginRight: 10}}>删除</Button>*/} {/*<Button type="primary" onClick={()=>this.deleteQuestionBank("multi")} style={{marginRight: 10}}>删除</Button>*/}
</div> </div>
</div> </div>
......
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