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 @@
import React from "react";
import ReactDOM from "react-dom";
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) {
data,
}).then(res => {
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) {
sessionStorage.setItem("mgtk", res.data.Authorization);
......
import React, { Component } from "react";
import styles from "./Bread.less";
import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import {
Divider,
Popover,
......@@ -24,10 +25,7 @@ class Breadcrumb extends Component {
const { collapsed, title } = this.props;
return (
<div
className={collapsed ? styles.collapsed : styles.bread}
>
<div className={collapsed ? styles.collapsed : styles.bread}>
<span
style={{
fontSize: "20px",
......@@ -36,15 +34,31 @@ class Breadcrumb extends Component {
lineHeight: "60px",
marginLeft: "32px",
backgroundColor: "#FFF",
marginRight: '20px',
marginRight: "20px",
}}
>
菜单管理
</span>
<Button type="primary" style={{ right: '30px', top: '15px', position: 'absolute' }} onClick={() => { this.props.showModal('',"add") }}>新建一级菜单</Button>
</div >
)
<Permission
permission={[
"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 {
postUpDown,
getSortListUpDown,
} from "./redux/actions";
import Permission from "@/common/permissions/Permission";
const FormItem = Form.Item;
const RadioGroup = Radio.Group;
......@@ -106,53 +107,77 @@ class MenuManager extends React.Component {
key: "action",
render: (text, record, index) => (
<span>
<Popconfirm
title="确定执行此操作?"
onConfirm={() => this.onDelete(record)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<a className={styles.handle_button}>{record.enabled == 1 ? '禁用' : "启用"}</a>
</Popconfirm>
<a
className={styles.handle_button}
onClick={() => this.upsidDown(record, -1)}
>
上移
<Popconfirm
title="确定执行此操作?"
onConfirm={() => this.onDelete(record)}
>
<a className={styles.handle_button}>
{record.enabled == 1 ? "禁用" : "启用"}
</a>
</Popconfirm>
<a
className={styles.handle_button}
onClick={() => this.upsidDown(record, -1)}
>
上移
</a>
<a
className={styles.handle_button}
onClick={() => this.upsidDown(record, 1)}
>
下移
<a
className={styles.handle_button}
onClick={() => this.upsidDown(record, 1)}
>
下移
</a>
<Dropdown overlay={() => {
return (<Menu >
<Menu.Item key="0">
<a onClick={() => this.showModal(record, 'edit')} >修改</a>
</Menu.Item>
{!record.childrenMenus &&
<Menu.Item key="3">
<Popconfirm
title="是否删除?"
onConfirm={() => this.deleteModal(record)}
>
<a className={styles.handle_button}>删除</a>
</Popconfirm>
</Menu.Item>
}
{record.menuType == 0 &&
<Menu.Item key="1">
<a onClick={() => this.showModal(record, 'child')} >添加子菜单</a>
</Menu.Item>
}
</Menu>)
}
} trigger={['click']}>
<a className={styles.handle_button} onClick={e => e.preventDefault()}>
更多<Icon type="down" />
</a>
</Dropdown>
<Dropdown
overlay={() => {
return (
<Menu>
<Menu.Item key="0">
<a onClick={() => this.showModal(record, "edit")}>
修改
</a>
</Menu.Item>
{!record.childrenMenus && (
<Menu.Item key="3">
<Popconfirm
title="是否删除?"
onConfirm={() => this.deleteModal(record)}
>
<a className={styles.handle_button}>删除</a>
</Popconfirm>
</Menu.Item>
)}
{record.menuType == 0 && (
<Menu.Item key="1">
<a onClick={() => this.showModal(record, "child")}>
添加子菜单
</a>
</Menu.Item>
)}
</Menu>
);
}}
trigger={["click"]}
>
<a
className={styles.handle_button}
onClick={e => e.preventDefault()}
>
更多
<Icon type="down" />
</a>
</Dropdown>
</Permission>
</span>
),
},
......
......@@ -20,6 +20,7 @@ import {
import { getIficationList } from "../Information/redux/action";
import moment from "moment";
import Styles from "./style.less";
import Permission from "@/common/permissions/Permission";
class Atricle extends React.Component {
constructor(props) {
......@@ -470,91 +471,101 @@ class Atricle extends React.Component {
render: (text, record) => {
return (
<div>
{record.state == "2" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "审核" });
this.seeEdit(record.id, "approve");
}}
>
审核
</a>
</div>
)}
{record.state == "3" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.shelves(record.id, 1)}
>
发布
</a>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "编辑" });
this.seeEdit(record.id, "edit");
}}
>
编辑
</a>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "查看" });
this.seeEdit(record.id, "look");
}}
>
查看
</a>
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</div>
)}
{record.state == "4" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.shelves(record.id, 2)}
>
取消发布
</a>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "查看" });
this.seeEdit(record.id, "look");
}}
>
查看
</a>
</div>
)}
{record.state == "5" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "查看" });
this.seeEdit(record.id, "look");
}}
>
查看
</a>
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</div>
)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{record.state == "2" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "审核" });
this.seeEdit(record.id, "approve");
}}
>
审核
</a>
</div>
)}
{record.state == "3" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.shelves(record.id, 1)}
>
发布
</a>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "编辑" });
this.seeEdit(record.id, "edit");
}}
>
编辑
</a>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "查看" });
this.seeEdit(record.id, "look");
}}
>
查看
</a>
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</div>
)}
{record.state == "4" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.shelves(record.id, 2)}
>
取消发布
</a>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "查看" });
this.seeEdit(record.id, "look");
}}
>
查看
</a>
</div>
)}
{record.state == "5" && (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => {
this.setState({ title: "查看" });
this.seeEdit(record.id, "look");
}}
>
查看
</a>
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</div>
)}
</Permission>
</div>
);
},
......
......@@ -18,6 +18,7 @@ import {
} from "./redux/actions";
import EditBanner from "./editBanner";
import Breadcrumb from "@/common/Breadcrumb";
import Permission from '@/common/permissions/Permission';
const Option = Select.Option;
const textOver = {
......@@ -131,35 +132,51 @@ class Banner extends React.PureComponent {
render: (text, record) => {
return (
<div>
{" "}
{/* record.state == "1" 为上架状态 */}
<span
onClick={() =>
this.toEditBanner(
record,
record.state === 1 ? "look" : "edit"
)
<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>
}
style={{ ...buttonStyle }}
>
{record.state === 1 ? "查看" : "修改"}
</span>
<span
onClick={() => this.handleUpDown(record)}
style={{ ...buttonStyle }}
>
{record.state === 1 ? "下架" : "上架"}
</span>
{record.state !== 1 ? (
<Popconfirm
title="是否删除?"
onConfirm={() => this.handleDelete(record)}
{/* record.state == "1" 为上架状态 */}
<span
onClick={() =>
this.toEditBanner(
record,
record.state === 1 ? "look" : "edit"
)
}
style={{ ...buttonStyle }}
>
{record.state === 1 ? "查看" : "修改"}
</span>
<span
onClick={() => this.handleUpDown(record)}
style={{ ...buttonStyle }}
>
<span style={{ ...buttonStyle }}>删除</span>
</Popconfirm>
) : (
""
)}
{record.state === 1 ? "下架" : "上架"}
</span>
{record.state !== 1 ? (
<Popconfirm
title="是否删除?"
onConfirm={() => this.handleDelete(record)}
>
<span style={{ ...buttonStyle }}>删除</span>
</Popconfirm>
) : (
""
)}
</Permission>
</div>
);
},
......@@ -364,13 +381,15 @@ class Banner extends React.PureComponent {
</Col>
<Col span={8} offset={16}>
<FormItem>
<Button
type="primary"
onClick={() => this.toEditBanner({}, "add")}
style={{ marginRight: 8 }}
>
新建Banner
</Button>
<Permission permission={['edu_party_member:two', 'edu_party_member:three', 'edu_site_admin']} mode="or">
<Button
type="primary"
onClick={() => this.toEditBanner({}, "add")}
style={{ marginRight: 8 }}
>
新建Banner
</Button>
</Permission>
<Button
type="primary"
onClick={() => {
......
import React from "react";
import { Row, Col, Form, Icon, Input, Button, DatePicker, Select } from "antd";
import Permission from "@/common/permissions/Permission";
const FormItem = Form.Item;
const Option = Select.Option;
const RangePicker = DatePicker.RangePicker;
......@@ -100,13 +101,24 @@ class Header extends React.Component {
>
重置
</Button>
<Button
type="primary"
style={{ marginLeft: "30px" }}
onClick={this.showModal}
<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"
style={{ marginLeft: "30px" }}
onClick={this.showModal}
>
新建内容
</Button>
</Permission>
</FormItem>
</Col>
</Form>
......
......@@ -52,6 +52,7 @@ import {
import moment from "moment";
import Styles from "./index.less";
import InfoComment from "./InfoComment.jsx";
import Permission from "@/common/permissions/Permission";
const TreeNode = Tree.TreeNode;
const FormItem = Form.Item;
const Option = Select.Option;
......@@ -273,49 +274,67 @@ class TreeItem extends React.Component {
</span>
{type == "News" && data.name != "公告"
? addshow && (
<span
style={{ float: "right", position: "absolute", right: "15%" }} //bug-12640-liyuan 30 -> 15%
>
<Icon
type="plus"
className={Styles.pmEditIcon}
onClick={() => this.showModal("1")}
/>
<Icon
type="edit"
className={Styles.pmEditIcon}
onClick={() => this.showModal("2")}
/>
{/* <Icon
<span
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
type="plus"
className={Styles.pmEditIcon}
onClick={() => this.showModal("1")}
/>
<Icon
type="edit"
className={Styles.pmEditIcon}
onClick={() => this.showModal("2")}
/>
{/* <Icon
type="delete"
className={Styles.pmEditIcon}
onClick={() => this.onDelete()}
/> */}
</span>
)
</Permission>
</span>
)
: ""}
{type == ""
? show && (
<span
style={{ float: "right", position: "absolute", right: "15%" }} //bug-12640-liyuan 30 -> 15%
>
<Icon
type="plus"
className={Styles.pmEditIcon}
onClick={() => this.showModal("1")}
/>
<Icon
type="edit"
className={Styles.pmEditIcon}
onClick={() => this.showModal("2")}
/>
<Icon
type="delete"
className={Styles.pmEditIcon}
onClick={() => this.onDelete()}
/>
</span>
)
<span
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
type="plus"
className={Styles.pmEditIcon}
onClick={() => this.showModal("1")}
/>
<Icon
type="edit"
className={Styles.pmEditIcon}
onClick={() => this.showModal("2")}
/>
<Icon
type="delete"
className={Styles.pmEditIcon}
onClick={() => this.onDelete()}
/>
</Permission>
</span>
)
: ""}
</p>
</div>
......@@ -1067,63 +1086,72 @@ class Information extends React.Component {
render: (text, record) => {
return (
<div>
<a
className={Styles.marr10}
onClick={() => this.cancelRoof(record.id)}
>
{record.isTop == "1" ? "移除首页" : "同步首页"}
</a>
<a
className={Styles.marr10}
onClick={() => this.showComment(record.id, record.name)}
<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>
{record.state == "2" ? (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.offshelf(record.id)}
>
下架
</a>
<a
className={Styles.marr10}
onClick={() => this.seeEdit(record.id, "look")}
>
查看
</a>
</div>
) : (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.shelves(record.id)}
>
上架
</a>
<a
className={Styles.marr10}
onClick={() => this.seeEdit(record.id, "edit")}
>
编辑
</a>
<Popconfirm
title="确定要删除吗?"
okText="确定"
cancelText="取消"
onConfirm={() => this.delete(record.id)}
>
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a
className={Styles.marr10}
onClick={() => this.cancelRoof(record.id)}
>
{record.isTop == "1" ? "移除首页" : "同步首页"}
</a>
<a
className={Styles.marr10}
onClick={() => this.showComment(record.id, record.name)}
>
评论管理
</a>
{record.state == "2" ? (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
href="#"
onClick={() => this.offshelf(record.id)}
>
删除
下架
</a>
</Popconfirm>
</div>
)}
<a
className={Styles.marr10}
onClick={() => this.seeEdit(record.id, "look")}
>
查看
</a>
</div>
) : (
<div style={{ display: "inline" }}>
<a
className={Styles.marr10}
onClick={() => this.shelves(record.id)}
>
上架
</a>
<a
className={Styles.marr10}
onClick={() => this.seeEdit(record.id, "edit")}
>
编辑
</a>
<Popconfirm
title="确定要删除吗?"
okText="确定"
cancelText="取消"
onConfirm={() => this.delete(record.id)}
>
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a className={Styles.marr10} href="#">
删除
</a>
</Popconfirm>
</div>
)}
</Permission>
</div>
);
},
......@@ -1171,9 +1199,18 @@ class Information extends React.Component {
borderRadius: 5,
}}
>
<Button type="primary" onClick={() => this.showEidt()}>
新增一级分类
</Button>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button type="primary" onClick={() => this.showEidt()}>
新增一级分类
</Button>
</Permission>
<Tree
className="draggable-tree"
draggable
......
......@@ -13,6 +13,7 @@ import func from "@/common/commonFunc";
import Breadcrumb from "@/common/Breadcrumb";
import AddEditForm from "./addEditForm";
import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import {
// postReleases,
// postUnReleases,
......@@ -428,12 +429,21 @@ class Mailbox extends React.Component {
查看
</a>
</div>
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record.id)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</Permission>
</div>
);
},
......
......@@ -10,6 +10,7 @@ import { connect } from "react-redux";
import { gupList, gupfetch } from "@/common/UpLoad/redux/actions";
import moment from "moment";
import validator from "@/common/validatorForm/index";
import Permission from "@/common/permissions/Permission";
const FormItem = Form.Item;
class addEdit extends React.Component {
......@@ -151,11 +152,24 @@ class addEdit extends React.Component {
onCancel={onCancel}
footer={
<>
{state === 1 && (
<Button key="1" type="primary" onClick={() => onApprove(id, 2)}>
接收
</Button>
)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
{state === 1 && (
<Button
key="1"
type="primary"
onClick={() => onApprove(id, 2)}
>
接收
</Button>
)}
</Permission>
<Button key="3" type="primary" onClick={onCancel}>
返回
</Button>
......@@ -167,10 +181,7 @@ class addEdit extends React.Component {
{getFieldDecorator("name", {
initialValue: seeEdit && seeEdit.name,
})(
<Input
disabled={type !== "edit"}
style={{ width: "300px" }}
/>
<Input disabled={type !== "edit"} style={{ width: "300px" }} />
)}
</FormItem>
<FormItem {...formItemLayout} label="留言图片">
......@@ -181,7 +192,11 @@ class addEdit extends React.Component {
key={index}
src={item}
alt=""
style={{ width: "200px", height: "240px", cursor: 'pointer' }}
style={{
width: "200px",
height: "240px",
cursor: "pointer",
}}
onClick={() => this.handlePreview(item)}
/>
))}
......@@ -204,7 +219,7 @@ class addEdit extends React.Component {
footer={null}
onCancel={this.handleCancel}
>
<img alt="preview" style={{ width: '100%' }} src={previewImage} />
<img alt="preview" style={{ width: "100%" }} src={previewImage} />
</Modal>
</>
);
......
......@@ -18,6 +18,7 @@ import {
getList,
} from "./redux/action";
import moment from "moment";
import Permission from "@/common/permissions/Permission";
import Styles from "./style.less";
const TreeNode = Tree.TreeNode;
const FormItem = Form.Item;
......@@ -438,14 +439,23 @@ class Message extends React.Component {
查看
</a>
</div>
<div style={{ display: "inline" }}>
<Popconfirm
title="是否删除?"
onConfirm={() => this.delect(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</div>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<div style={{ display: "inline" }}>
<Popconfirm
title="是否删除?"
onConfirm={() => this.delect(record.id)}
>
<a className={Styles.marr10}>删除</a>
</Popconfirm>
</div>
</Permission>
</div>
);
},
......
......@@ -26,6 +26,7 @@ import {
} from "./redux/actions";
import moment from "moment";
import HandleMessageCheck from "./handleMessageCheck";
import Permission from "@/common/permissions/Permission";
import Style from "./index.less";
const TabPane = Tabs.TabPane;
// require('./index.scss');
......@@ -475,41 +476,52 @@ class News extends React.Component {
{
<div>
<a onClick={() => this.customSee(record)}>查看</a>
<Divider type="vertical" />
<a
disabled={record.status == 1 ? false : true}
onClick={() => this.customModify(record)}
>
修改
</a>
<Divider type="vertical" />
<Popconfirm
title="是否发送?"
onConfirm={() => this.onSend(record, true, 0)}
>
<a disabled={record.status == 1 ? false : true}>发送</a>
</Popconfirm>
<Divider type="vertical" />
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<a disabled={record.status == 1 ? false : true}>删除</a>
</Popconfirm>
<Divider type="vertical" />
<Popconfirm
title="是否删除?"
onConfirm={() => this.onSend(record, false, 2)}
>
<a disabled={record.status == 4 ? false : true}>撤回</a>
</Popconfirm>
<Divider type="vertical" />
<Popconfirm
title="取消发送?"
onConfirm={() => this.onSend(record, false, 1)}
>
<a disabled={record.status == 2 ? false : true}>取消发送</a>
</Popconfirm>
<Divider type="vertical" />
<a
disabled={record.status == 1 ? false : true}
onClick={() => this.customModify(record)}
>
修改
</a>
<Divider type="vertical" />
<Popconfirm
title="是否发送?"
onConfirm={() => this.onSend(record, true, 0)}
>
<a disabled={record.status == 1 ? false : true}>发送</a>
</Popconfirm>
<Divider type="vertical" />
<Popconfirm
title="是否删除?"
onConfirm={() => this.onDelete(record)}
>
<a disabled={record.status == 1 ? false : true}>删除</a>
</Popconfirm>
<Divider type="vertical" />
<Popconfirm
title="是否删除?"
onConfirm={() => this.onSend(record, false, 2)}
>
<a disabled={record.status == 4 ? false : true}>撤回</a>
</Popconfirm>
<Divider type="vertical" />
<Popconfirm
title="取消发送?"
onConfirm={() => this.onSend(record, false, 1)}
>
<a disabled={record.status == 2 ? false : true}>
取消发送
</a>
</Popconfirm>
</Permission>
</div>
}
</div>
......@@ -549,29 +561,38 @@ class News extends React.Component {
return (
<div>
<a onClick={() => this.systemModify(record, "look")}>查看</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.systemModify(record)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
修改
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.messageShelves(record, 2, 2)}
>
上架
</a>
<Divider type="vertical" />
<a
disabled={
record.status == "6" || record.siteId === "0" ? true : false
}
onClick={() => this.messageOffShelf(record, 2, 2)}
>
下架
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.systemModify(record)}
>
修改
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.messageShelves(record, 2, 2)}
>
上架
</a>
<Divider type="vertical" />
<a
disabled={
record.status == "6" || record.siteId === "0" ? true : false
}
onClick={() => this.messageOffShelf(record, 2, 2)}
>
下架
</a>
</Permission>
</div>
);
},
......@@ -615,27 +636,36 @@ class News extends React.Component {
<a onClick={() => this.messageCheckModify(record, "look")}>
查看
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.messageCheckModify(record)}
>
修改
</a>
<Divider type="vertical" />
<a
disabled={record.status == "6" ? true : false}
onClick={() => this.messageOffShelf(record, 3, 3)}
>
下架
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.messageShelves(record, 3, 3)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
上架
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.messageCheckModify(record)}
>
修改
</a>
<Divider type="vertical" />
<a
disabled={record.status == "6" ? true : false}
onClick={() => this.messageOffShelf(record, 3, 3)}
>
下架
</a>
<Divider type="vertical" />
<a
disabled={record.status == "7" ? true : false}
onClick={() => this.messageShelves(record, 3, 3)}
>
上架
</a>
</Permission>
</div>
</div>
);
......@@ -722,14 +752,23 @@ class News extends React.Component {
QueryForm={this.QueryForm}
onClickChange={this.onClickChange}
/>
<Button
className={Style.marl40}
type="primary"
onClick={this.showModal}
disabled={this.state.addNewBtnAbled}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
新增消息
</Button>
<Button
className={Style.marl40}
type="primary"
onClick={this.showModal}
disabled={this.state.addNewBtnAbled}
>
新增消息
</Button>
</Permission>
{this.state.visible && (
<AddQueryModal
handleSearch={this.handleSearch}
......
......@@ -6,6 +6,7 @@ import UpdataDepartment from "./UpdataDepartment/UpdataDepartment";
import DepartmentForm from "./Department/Department";
import styles from "./index.less";
import ScrollBar from "../../Operating/LanguageConfiguration/ScrollBar";
import Permission from "@/common/permissions/Permission";
// const Search = Input.Search;
const TreeNode = Tree.TreeNode;
const FormItem = Form.Item;
......@@ -159,13 +160,13 @@ class TreeItem extends Component {
{...this.props}
/>
) : (
<DepartmentForm
onCancel={this.handleCancel}
{...this.state}
layer={layer}
InsertTree={this.props.InsertTree}
/>
)}
<DepartmentForm
onCancel={this.handleCancel}
{...this.state}
layer={layer}
InsertTree={this.props.InsertTree}
/>
)}
</Modal>
)}
</div>
......@@ -183,13 +184,20 @@ class TreeItem extends Component {
>
<span
className={
show && !isUserGroup ?
layer === 8 ? styles.itemTitleHover8 :
layer === 7 ? styles.itemTitleHover7 :
layer === 6 ? styles.itemTitleHover6 :
layer === 5 ? styles.itemTitleHover5 :
layer === 4 ? styles.itemTitleHover4 :
layer === 3 ? styles.itemTitleHover3 : styles.itemTitleHover2
show && !isUserGroup
? layer === 8
? styles.itemTitleHover8
: layer === 7
? styles.itemTitleHover7
: layer === 6
? styles.itemTitleHover6
: layer === 5
? styles.itemTitleHover5
: layer === 4
? styles.itemTitleHover4
: layer === 3
? styles.itemTitleHover3
: styles.itemTitleHover2
: styles.itemTitle
}
title={data.name}
......@@ -197,23 +205,25 @@ class TreeItem extends Component {
{data.name}
</span>
{(show && !isUserGroup && (
{show && !isUserGroup && (
<span style={{ float: "right" }}>
<Dropdown overlay={menu} trigger={['click']}>
<Permission
permission={["edu_party_member:three", "edu_site_admin"]}
mode="or"
>
<Dropdown overlay={menu} trigger={["click"]}>
<Icon type="more" />
</Dropdown>
<Icon
type="more"
style={{ marginLeft: "2px" }}
type="plus"
onClick={() => this.showModal("新增部门")}
/>
</Dropdown>
<Icon
style={{ marginLeft: "2px" }}
type="plus"
onClick={() => this.showModal("新增部门")}
/>
</Permission>
</span>
))}
)}
</p>
{/* </Popover> */}
</div>
);
}
......
......@@ -7,6 +7,7 @@ import EditPasswords from "../EditPassword/EditPassword";
import moment from "moment";
import { sm2 } from "sm-crypto";
import md5 from "md5";
import Permission from "@/common/permissions/Permission";
class UserTable extends Component {
constructor(props) {
......@@ -90,24 +91,30 @@ class UserTable extends Component {
render: (text, record, index) => {
return (
<span>
{record.enabled === "启用" ? (
<a onClick={() => this.handleEdit("停用", record)}>停用</a>
) : (
<a onClick={() => this.handleOpen("启用", record)}>启用</a>
)}
<Divider type="vertical" />
<a
data-index={index}
onClick={() => this.handleEditUser("编辑用户", record)}
<Permission
permission={["edu_party_member:three", "edu_site_admin"]}
mode="or"
fallback={<span>-</span>}
>
修改用户
</a>
<Divider type="vertical" />
<a onClick={() => this.handleEditPassWord("修改密码", record)}>
修改密码
</a>
<Divider type="vertical" />
<a onClick={() => this.handleResetPassword(record)}>重置密码</a>
{record.enabled === "启用" ? (
<a onClick={() => this.handleEdit("停用", record)}>停用</a>
) : (
<a onClick={() => this.handleOpen("启用", record)}>启用</a>
)}
<Divider type="vertical" />
<a
data-index={index}
onClick={() => this.handleEditUser("编辑用户", record)}
>
修改用户
</a>
<Divider type="vertical" />
<a onClick={() => this.handleEditPassWord("修改密码", record)}>
修改密码
</a>
<Divider type="vertical" />
<a onClick={() => this.handleResetPassword(record)}>重置密码</a>
</Permission>
</span>
);
},
......
......@@ -218,7 +218,7 @@ class AddRotes extends Component {
message: "请输入角色序号,数字字母下划线组成",
},
],
})(<Input placeholder="角色序号" maxLength={20} />)}
})(<Input placeholder="角色序号" maxLength={30} />)}
</FormItem>
<FormItem {...formItemLayout} label="角色名:">
{getFieldDecorator("name", {
......
......@@ -20,6 +20,7 @@ import { connect } from "react-redux";
import * as actions from "./redux/actions";
import AddRotes from "./AddRotes";
import RoteCheck from "./RoteCheck";
import Permission from "@/common/permissions/Permission";
const Option = Select.Option;
class RoteManager extends React.Component {
......@@ -98,30 +99,35 @@ class RoteManager extends React.Component {
key: "action",
render: (text, record, index) => (
<span>
<a
data-index={index}
onClick={() => this.editModal("修改角色", record)}
<Permission
permission={["edu_site_admin"]}
mode="or"
fallback={<span>-</span>}
>
修改
</a>
<Divider type="vertical" />
<a
data-index={index}
onClick={() => this.etModal("授权用户", record)}
>
授权用户
</a>
<Divider type="vertical" />
<a
data-index={index}
onClick={() => this.roleManageModal(record.id, "管理对象")}
>
管理对象
</a>
<Divider type="vertical" />
{
record.isSiteDefaultAdmin ?
<a style={{color:"#999"}}>删除</a> :
<a
data-index={index}
onClick={() => this.editModal("修改角色", record)}
>
修改
</a>
<Divider type="vertical" />
<a
data-index={index}
onClick={() => this.etModal("授权用户", record)}
>
授权用户
</a>
<Divider type="vertical" />
<a
data-index={index}
onClick={() => this.roleManageModal(record.id, "管理对象")}
>
管理对象
</a>
<Divider type="vertical" />
{record.isSiteDefaultAdmin ? (
<a style={{ color: "#999" }}>删除</a>
) : (
<Popconfirm
title="是否要删除此行?"
onConfirm={() =>
......@@ -132,8 +138,8 @@ class RoteManager extends React.Component {
>
<a>删除</a>
</Popconfirm>
}
)}
</Permission>
</span>
),
},
......@@ -363,7 +369,7 @@ class RoteManager extends React.Component {
return (
<div className="list" style={{ paddingLeft: "20px" }}>
<Breadcrumb title="角色管理" />
<div className="list-btn" style={{paddingTop:15}}>
<div className="list-btn" style={{ paddingTop: 15 }}>
<div ref={input => (this.input = input)}>
{/*<Input placeholder="请输入角色序号或角色名" style={{width: 250, marginRight: 10}} onKeyDown={this.getExamKeyword} onChange={this.handleGetValue} />*/}
<Input
......@@ -378,9 +384,17 @@ class RoteManager extends React.Component {
>
搜索
</Button>
<Button type="primary" onClick={() => this.insertModal("创建角色")}>
创建角色
</Button>
<Permission
permission={["edu_site_admin"]}
mode="or"
>
<Button
type="primary"
onClick={() => this.insertModal("创建角色")}
>
创建角色
</Button>
</Permission>
</div>
</div>
<Table
......
......@@ -6,13 +6,24 @@ import { connect } from "react-redux";
import { getSiteList, releaseSite, unReleaseSite } from "./redux/actions";
import func from "@/common/commonFunc";
import Breadcrumb from "@/common/Breadcrumb";
import Permission from "@/common/permissions/Permission";
class Door extends Component {
constructor(props) {
super(props);
this.columns = [
{ 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: "操作",
......@@ -21,71 +32,81 @@ class Door extends Component {
dataIndex: "action",
render: (text, record) => (
<div className={Styles.doorOpt}>
{text.state == 0 ? (
<a
// href={"javascript:void(0)"}
onClick={() => this.changeSiteStatus("on", text.id)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{text.state == 0 ? (
<a
// href={"javascript:void(0)"}
onClick={() => this.changeSiteStatus("on", text.id)}
>
发布
</a>
) : (
<a
// href={"javascript:void(0)"}
onClick={() => this.changeSiteStatus("off", text.id)}
>
取消发布
</a>
)}
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
(record.action.type !== 1
? "/index/manager/site/door/previewindexpage"
: "/index/manager/site/door/pcIndex"),
// query: { id: text.id, type: text.type, lookState: true },
state: { id: text.id, type: text.type, lookState: true },
search: `?id=${text.id}&type=${text.type}&lookState=true`,
}}
>
发布
</a>
) : (
<a
// href={"javascript:void(0)"}
onClick={() => this.changeSiteStatus("off", text.id)}
预览
</Link>
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
(record.action.type !== 1
? "/index/manager/site/door/indexpage"
: "/index/manager/site/door/pcIndex"),
// query: { id: text.id, type: text.type },
search: `?{id:${text.id}&type:${text.type}}`,
state: { id: text.id, type: text.type },
}}
>
取消发布
</a>
)}
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
(record.action.type !== 1
? "/index/manager/site/door/previewindexpage"
: "/index/manager/site/door/pcIndex"),
// query: { id: text.id, type: text.type, lookState: true },
state: { id: text.id, type: text.type, lookState: true },
search: `?id=${text.id}&type=${text.type}&lookState=true`,
}}
>
预览
</Link>
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
(record.action.type !== 1
? "/index/manager/site/door/indexpage"
: "/index/manager/site/door/pcIndex"),
// query: { id: text.id, type: text.type },
search: `?{id:${text.id}&type:${text.type}}`,
state: { id: text.id, type: text.type },
}}
>
配置首页
</Link>
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
(record.action.type !== 1
? "/index/manager/site/door/loginpage"
: "/index/manager/site/door/pcLogin"),
search: `?{id:${text.id}&type:${text.type}}`, //bug-12548-liyuan
state: { id: text.id, type: text.type },
}}
>
配置登录页
</Link>
配置首页
</Link>
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
(record.action.type !== 1
? "/index/manager/site/door/loginpage"
: "/index/manager/site/door/pcLogin"),
search: `?{id:${text.id}&type:${text.type}}`, //bug-12548-liyuan
state: { id: text.id, type: text.type },
}}
>
配置登录页
</Link>
</Permission>
</div>
),
},
......
......@@ -23,6 +23,7 @@ import {
message,
} from "antd";
import Breadcrumb from "@/common/Breadcrumb";
import Permission from "@/common/permissions/Permission";
const TabPane = Tabs.TabPane;
import styles from "./style/index.less";
import { withRouter } from "react-router-dom";
......@@ -317,96 +318,106 @@ class Survey extends Component {
key: "action",
render: (text, record) => (
<div className={styles.survey_list_btns}>
{key == 1 ? (
<Link
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/details/${record.id}/2`}
>
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
>
{action1}
</span>
</Link>
) : key == 2 ? (
<Link
// to={`/${companyCode}/${siteCode}/index/tool/question/question-management/create/${record.id}`}
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/details/${record.id}/1`}
>
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{key == 1 ? (
<Link
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/details/${record.id}/2`}
>
{action1}
</span>
</Link>
) : (
<Link
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/create/${record.id}`}
>
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
>
{action1}
</span>
</Link>
) : key == 2 ? (
<Link
// to={`/${companyCode}/${siteCode}/index/tool/question/question-management/create/${record.id}`}
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/details/${record.id}/1`}
>
{action1}
</span>
</Link>
)}
<Popconfirm
title="确定执行此操作?"
okText="确定"
cancelText="取消"
onConfirm={
action2 === "上架"
? () => this.handleUp(record.id)
: () => this.handleDown(record.id)
}
>
<a
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
href="#"
>
{action2}
</a>
</Popconfirm>
{key == 2 ? (
<div>
<Popconfirm
title="确定要删除吗?"
okText="确定"
cancelText="取消"
onConfirm={() => this.del(record.id)}
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
>
{action1}
</span>
</Link>
) : (
<Link
to={`/${companyCode}/${siteCode}/index/tool/question/question-management/create/${record.id}`}
>
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
href="#"
>
删除
</a>
</Popconfirm>
</div>
) : null}
{key == 1 || key == 2 ? (
<div>
<div
{action1}
</span>
</Link>
)}
<Popconfirm
title="确定执行此操作?"
okText="确定"
cancelText="取消"
onConfirm={
action2 === "上架"
? () => this.handleUp(record.id)
: () => this.handleDown(record.id)
}
>
<a
className={styles.survey_list_btn}
style={{ cursor: "pointer", color: "#1890FF" }}
onClick={() => this.detil(record.id, 1)}
style={{ marginRight: 10 }}
href="#"
>
调研明细导出
{action2}
</a>
</Popconfirm>
{key == 2 ? (
<div>
<Popconfirm
title="确定要删除吗?"
okText="确定"
cancelText="取消"
onConfirm={() => this.del(record.id)}
>
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
href="#"
>
删除
</a>
</Popconfirm>
</div>
{/* <div
) : null}
{key == 1 || key == 2 ? (
<div>
<div
className={styles.survey_list_btn}
style={{ cursor: "pointer", color: "#1890FF" }}
onClick={() => this.detil(record.id, 1)}
>
调研明细导出
</div>
{/* <div
className={styles.survey_list_btn}
style={{ cursor: "pointer", color: "#1890FF" }}
onClick={() => this.detil(record.id, 2)}
>
调研分析导出
</div> */}
</div>
) : null}
</div>
) : null}
</Permission>
</div>
),
},
......@@ -449,27 +460,36 @@ class Survey extends Component {
>
查询
</Button>
<Link
to={
"/" +
companyCode +
"/" +
siteCode +
"/index/tool/question/question-management/create"
}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button type="primary" className={styles.survey_new}>
新建问卷
<Link
to={
"/" +
companyCode +
"/" +
siteCode +
"/index/tool/question/question-management/create"
}
>
<Button type="primary" className={styles.survey_new}>
新建问卷
</Button>
</Link>
<Button
type="primary"
className={styles.survey_list_delete}
style={{ display: deleteBtn ? "none" : "inline-block" }}
onClick={this.handleDelete}
>
删除
</Button>
</Link>
<Button
type="primary"
className={styles.survey_list_delete}
style={{ display: deleteBtn ? "none" : "inline-block" }}
onClick={this.handleDelete}
>
删除
</Button>
</Permission>
</div>
<Tabs
className={styles.survey_tabs}
......
......@@ -27,6 +27,7 @@ const TabPane = Tabs.TabPane;
import styles from "./style/index.less";
// 在import部分添加
import { withRouter } from "react-router-dom";
import Permission from "@/common/permissions/Permission";
var companyCode = location.pathname.split("/")[1];
var siteCode = location.pathname.split("/")[2];
......@@ -297,8 +298,8 @@ class Survey extends Component {
key === 1
? record.releaseTime
: key === 2
? record.unReleaseTime
: record.createTime
? record.unReleaseTime
: record.createTime
).format("YYYY-MM-DD HH:mm")}
</span>
),
......@@ -309,89 +310,99 @@ class Survey extends Component {
key: "action",
render: (text, record) => (
<div className={styles.survey_list_btns}>
{key == 1 ? (
<Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/details/${record.id}/2`}
>
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
>
{action1}
</span>
</Link>
) : key == 2 ? (
<Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/details/${record.id}/1`}
// to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/create/${record.id}`}
>
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
{key == 1 ? (
<Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/details/${record.id}/2`}
>
{action1}
</span>
</Link>
) : (
<Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/create/${record.id}`}
>
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
>
{action1}
</span>
</Link>
) : key == 2 ? (
<Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/details/${record.id}/1`}
// to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/create/${record.id}`}
>
{action1}
</span>
</Link>
)}
<Popconfirm
title="确定执行此操作?"
okText="确定"
cancelText="取消"
onConfirm={
action2 === "上架"
? () => this.handleUp(record.id)
: () => this.handleDown(record.id)
}
>
<a
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
href="#"
>
{action2}
</a>
</Popconfirm>
{key == 2 || key == 0 ? (
<div>
<Popconfirm
title="确定要删除吗?"
okText="确定"
cancelText="取消"
onConfirm={() => this.del(record.id)}
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
>
{action1}
</span>
</Link>
) : (
<Link
to={`/${companyCode}/${siteCode}/index/tool/survey/survey-management/create/${record.id}`}
>
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a
<span
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
href="#"
>
删除
</a>
</Popconfirm>
</div>
) : null}
{key == 1 || key == 2 ? (
<div>
<div
{action1}
</span>
</Link>
)}
<Popconfirm
title="确定执行此操作?"
okText="确定"
cancelText="取消"
onConfirm={
action2 === "上架"
? () => this.handleUp(record.id)
: () => this.handleDown(record.id)
}
>
<a
className={styles.survey_list_btn}
style={{ cursor: "pointer", color: "#1890FF" }}
onClick={() => this.detil(record.id, 1)}
style={{ marginRight: 10 }}
href="#"
>
投票明细导出
{action2}
</a>
</Popconfirm>
{key == 2 || key == 0 ? (
<div>
<Popconfirm
title="确定要删除吗?"
okText="确定"
cancelText="取消"
onConfirm={() => this.del(record.id)}
>
{/*4月10号临时发布 后台没有发布生产接口 前端只能隐藏*/}
<a
className={styles.survey_list_btn}
style={{ marginRight: 10 }}
href="#"
>
删除
</a>
</Popconfirm>
</div>
) : null}
{key == 1 || key == 2 ? (
<div>
<div
className={styles.survey_list_btn}
style={{ cursor: "pointer", color: "#1890FF" }}
onClick={() => this.detil(record.id, 1)}
>
投票明细导出
</div>
</div>
</div>
) : null}
) : null}
</Permission>
</div>
),
},
......@@ -434,27 +445,36 @@ class Survey extends Component {
>
查询
</Button>
<Link
to={
"/" +
companyCode +
"/" +
siteCode +
"/index/tool/survey/survey-management/create"
}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Button type="primary" className={styles.survey_new}>
新建投票
<Link
to={
"/" +
companyCode +
"/" +
siteCode +
"/index/tool/survey/survey-management/create"
}
>
<Button type="primary" className={styles.survey_new}>
新建投票
</Button>
</Link>
<Button
type="primary"
className={styles.survey_list_delete}
style={{ display: deleteBtn ? "none" : "inline-block" }}
onClick={this.handleDelete}
>
删除
</Button>
</Link>
<Button
type="primary"
className={styles.survey_list_delete}
style={{ display: deleteBtn ? "none" : "inline-block" }}
onClick={this.handleDelete}
>
删除
</Button>
</Permission>
</div>
<Tabs
className={styles.survey_tabs}
......
......@@ -16,6 +16,7 @@ import { Link } from "react-router-dom";
import "./style/examCheck.less";
import { connect } from "react-redux";
import { getExamList, downTxt } from "./redux/actions";
import Permission from "@/common/permissions/Permission";
import api from "./api.js";
// import fetch from "@/util/fetch.js";
import request from "@/util/request.js";
......@@ -135,29 +136,39 @@ class ExamCheck extends Component {
dataIndex: "action",
render: (text, record) => (
<div className="operation" style={{ width: 154 }}>
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
`/index/tool/test/check-management/check`,
search: `?id=${text.id}`,
state: { id: text.id },
}}
>
阅卷
</Link>
<Divider type="vertical" />
<Popconfirm
title="确认导出?"
okText="确定"
cancelText="取消"
onConfirm={() => this.downTxt(text.id)}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
fallback={<span>-</span>}
>
<a href="#">导出考试结果</a>
</Popconfirm>
<Link
to={{
pathname:
"/" +
func.companyCode +
"/" +
func.siteCode +
`/index/tool/test/check-management/check`,
search: `?id=${text.id}`,
state: { id: text.id },
}}
>
阅卷
</Link>
<Divider type="vertical" />
<Popconfirm
title="确认导出?"
okText="确定"
cancelText="取消"
onConfirm={() => this.downTxt(text.id)}
>
<a href="#">导出考试结果</a>
</Popconfirm>
</Permission>
</div>
),
},
......
......@@ -21,6 +21,7 @@ import func from "@/util/commonFunc.js";
import styles from "./Style/questionBank.less";
const Option = Select.Option;
import { connect } from "react-redux";
import Permission from "@/common/permissions/Permission";
import {
getQuestionBankList,
getId,
......@@ -147,44 +148,56 @@ class QuestionBank extends Component {
<a href="javascript:void(0)" onClick={() => self.look(text.id)}>
查看
</a>
<Divider type="vertical" />
<a href="javascript:void(0)" onClick={() => self.change(text.id)}>
修改
</a>
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
<Divider type="vertical" />
<Divider type="vertical" />
{text.des == "1" ? (
<a href="javascript:void(0)" style={{ color: "#ccc" }}>
删除
</a>
) : (
<a
href="javascript:void(0)"
onClick={() => self.deleteQuestionBank("single", text.id)}
onClick={() => self.change(text.id)}
>
删除
修改
</a>
)}
<Divider type="vertical" />
<ImportBtn
libraryId={text.id}
search={() => this.search()}
pagesize={this.state.pagesize}
getQuestionBankList={this.props.getQuestionBankList}
/>
<Divider type="vertical" />
<a
onClick={() =>
this.setState({
exportState: true,
exportId: text.id,
subjectNum: text.total,
})
}
>
导出试题
</a>
<Divider type="vertical" />
{text.des == "1" ? (
<a href="javascript:void(0)" style={{ color: "#ccc" }}>
删除
</a>
) : (
<a
href="javascript:void(0)"
onClick={() => self.deleteQuestionBank("single", text.id)}
>
删除
</a>
)}
<Divider type="vertical" />
<ImportBtn
libraryId={text.id}
search={() => this.search()}
pagesize={this.state.pagesize}
getQuestionBankList={this.props.getQuestionBankList}
/>
<Divider type="vertical" />
<a
onClick={() =>
this.setState({
exportState: true,
exportId: text.id,
subjectNum: text.total,
})
}
>
导出试题
</a>
</Permission>
</div>
),
},
......@@ -552,13 +565,22 @@ class QuestionBank extends Component {
>
重置
</Button>
<Button
type="primary"
onClick={() => this.open("questionBank")}
style={{ marginRight: 10 }}
<Permission
permission={[
"edu_party_member:two",
"edu_party_member:three",
"edu_site_admin",
]}
mode="or"
>
新建题库
</Button>
<Button
type="primary"
onClick={() => this.open("questionBank")}
style={{ marginRight: 10 }}
>
新建题库
</Button>
</Permission>
{/*<Button type="primary" onClick={()=>this.deleteQuestionBank("multi")} style={{marginRight: 10}}>删除</Button>*/}
</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