forked from Gitlink/forgeplus-react
Merge pull request '修改登录加密、管理模块路由、合并后的issue等' (#345) from tongChong/forgeplus-react:JKDevelop into JKDevelop
This commit is contained in:
commit
16f41f4299
36
src/App.js
36
src/App.js
|
@ -22,6 +22,7 @@ import { SnackbarHOC } from 'educoder';
|
|||
import { initAxiosInterceptors } from './AppConfig'
|
||||
import { Provider } from 'react-redux';
|
||||
import configureStore from './redux/stores/configureStore';
|
||||
import { indexOf } from 'lodash';
|
||||
const store = configureStore();
|
||||
window.marked = marked;
|
||||
const theme = createMuiTheme({
|
||||
|
@ -123,9 +124,21 @@ const AboutUs = Loadable({
|
|||
loading: Loading,
|
||||
})
|
||||
|
||||
const Teaching = Loadable({
|
||||
loader : () => import("./forge/TeachingPractice/Teaching"),
|
||||
loading: Loading,
|
||||
// const Teaching = Loadable({
|
||||
// loader : () => import("./forge/TeachingPractice/Teaching"),
|
||||
// loading: Loading,
|
||||
// });
|
||||
|
||||
// 首页
|
||||
const HomePage = Loadable({
|
||||
loader: () => import('./home'),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
// 管理页面
|
||||
const Managements = Loadable({
|
||||
loader: () => import('./military/managements'),
|
||||
loading: Loading,
|
||||
})
|
||||
// const CreateMerge = Loadable({
|
||||
// loader: () => import('./forge/Merge/NewMerge'),
|
||||
|
@ -133,7 +146,7 @@ const Teaching = Loadable({
|
|||
// })
|
||||
|
||||
// 此处仅维护前端可能的一级路由,不用进行项目或者组织判断的字段。
|
||||
const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize", "login", "register", "resetPassword", "aboutus","educoder","task","notice"];
|
||||
const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize", "login", "register", "resetPassword", "aboutus","educoder","task","notice","managements","expert",];
|
||||
|
||||
class App extends Component {
|
||||
constructor(props) {
|
||||
|
@ -184,7 +197,11 @@ class App extends Component {
|
|||
this.setState({
|
||||
pathType: response.data.type || '404',
|
||||
pathName: pathname,
|
||||
})
|
||||
});
|
||||
// 如果属于组织或者个人,那么存储该用户到sessionStorage中,作为判断是否为开源项目导航菜单的依据
|
||||
if(['User','Organization'].includes(response.data.type)){
|
||||
sessionStorage.setItem("pathname",pathname);
|
||||
}
|
||||
}
|
||||
});
|
||||
}else{
|
||||
|
@ -386,6 +403,11 @@ class App extends Component {
|
|||
path="/register"
|
||||
render={(props) =><LoginRegisterPage {...this.props} {...props}/>}
|
||||
></Route>
|
||||
{/*管理页面*/}
|
||||
<Route path="/managements" component={Managements} />
|
||||
|
||||
{/*403*/}
|
||||
<Route path="/403" component={Shixunauthority} />
|
||||
|
||||
{/* 忘记密码 */}
|
||||
<Route
|
||||
|
@ -400,10 +422,10 @@ class App extends Component {
|
|||
></Route>
|
||||
|
||||
{/* 教学实践 */}
|
||||
<Route
|
||||
{/* <Route
|
||||
path="/educoder"
|
||||
render={(props) => <Teaching {...this.props} {...props} />}
|
||||
></Route>
|
||||
></Route> */}
|
||||
|
||||
{/* 组织 */}
|
||||
<Route path={"/organize"}
|
||||
|
|
|
@ -1,15 +1,30 @@
|
|||
import { queryString } from 'educoder'
|
||||
import { queryString } from "educoder";
|
||||
export function updatePageParams(pageNum, props) {
|
||||
const url = props.match.url
|
||||
const url = props.match.url;
|
||||
|
||||
const _search = props.location.search;
|
||||
let parsed = {};
|
||||
if (_search) {
|
||||
parsed = queryString.parse(_search);
|
||||
}
|
||||
const _search = props.location.search;
|
||||
let parsed = {};
|
||||
if (_search) {
|
||||
parsed = queryString.parse(_search);
|
||||
}
|
||||
|
||||
// 修改page參數
|
||||
parsed.page = pageNum
|
||||
// 修改page參數
|
||||
parsed.page = pageNum;
|
||||
|
||||
props.history.push(`${url}?${queryString.stringify(parsed)}`)
|
||||
props.history.push(`${url}?${queryString.stringify(parsed)}`);
|
||||
}
|
||||
|
||||
export function goUser(login) {
|
||||
const main_web_site_url =
|
||||
localStorage.chromesetting &&
|
||||
JSON.parse(localStorage.chromesetting).main_web_site_url;
|
||||
window.location.href = `${main_web_site_url}/accounts/${login}`;
|
||||
}
|
||||
|
||||
export function goUserMes(user_id) {
|
||||
const main_web_site_url =
|
||||
localStorage.chromesetting &&
|
||||
JSON.parse(localStorage.chromesetting).main_web_site_url;
|
||||
const login =sessionStorage.current_user &&JSON.parse(sessionStorage.current_user).login;
|
||||
window.location.href = `${main_web_site_url}/users/${login}/message_detail?user_id=${user_id}`;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ export {
|
|||
, broadcastChannelPostMessage, broadcastChannelOnmessage
|
||||
} from './EventUtil';
|
||||
|
||||
export { updatePageParams as updatePageParams } from './RouterUtil';
|
||||
export { updatePageParams as updatePageParams ,goUserMes,goUser} from './RouterUtil';
|
||||
|
||||
export { bytesToSize as bytesToSize } from './UnitUtil';
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ function DeleteBox({
|
|||
>
|
||||
<div className="desc">
|
||||
<AlignCenter className="descMain"><i className="iconfont icon-shanchu_tc_icon mr10"></i>{content}</AlignCenter>
|
||||
<p>{subTitle}</p>
|
||||
<p className="task-hide-2" style={{WebkitLineClamp:5}}>删除后未来事件将不会推送至此Webhook地址:<span title={subTitle}>{subTitle}</span></p>
|
||||
</div>
|
||||
</Modals>
|
||||
)
|
||||
|
|
|
@ -36,15 +36,15 @@ function About(props, ref) {
|
|||
const [ disabled, setDisabled ] = useState(false);
|
||||
const [ typeFlag, setTypeFlag] = useState(false);
|
||||
|
||||
const AuthorLogin = props.projectDetail && props.projectDetail.author && props.projectDetail.author.login;
|
||||
const isPermission = props.projectDetail && props.projectDetail.permission && props.projectDetail.permission!=="Reporter";
|
||||
const CurrentLogin = props.current_user && props.current_user.login;
|
||||
useEffect(()=>{
|
||||
if(CurrentLogin === AuthorLogin){
|
||||
if(isPermission){
|
||||
auth('get');
|
||||
}else{
|
||||
setIsSpining(false);
|
||||
}
|
||||
},[AuthorLogin,CurrentLogin])
|
||||
},[isPermission,CurrentLogin])
|
||||
|
||||
function auth(type){
|
||||
const url = `/${owner}/${projectsId}/ci_authorize.json`;
|
||||
|
@ -167,7 +167,7 @@ function About(props, ref) {
|
|||
<img src={activate} alt="" width="250px" />
|
||||
<P>定义DevOps工作流,帮助您检测bug、发布代码…</P>
|
||||
{
|
||||
CurrentLogin !== AuthorLogin ?
|
||||
!isPermission ?
|
||||
<div className="noOperation">DevOps开启功能暂未对项目创建者以外的角色开放,可以联系项目创建者进行开启,开启后便可查看构建信息。</div>:""
|
||||
}
|
||||
<a href={"https://forum.trustie.net/forums/3110/detail"} target="_blank" style={{ color: "#5091FF"}}>
|
||||
|
@ -177,7 +177,7 @@ function About(props, ref) {
|
|||
如何使用引擎(Engine)功能?
|
||||
</a>
|
||||
{
|
||||
AuthorLogin === CurrentLogin ?
|
||||
isPermission ?
|
||||
<React.Fragment>
|
||||
{
|
||||
step === 0 && !typeFlag ?
|
||||
|
|
|
@ -533,7 +533,7 @@ function CoderDepot(props){
|
|||
<FlexAJ className="font-18 color-ooo mb20" style={{lineHeight:"28px"}}>关于
|
||||
{
|
||||
projectDetail.permission && (projectDetail.permission==="Admin" || projectDetail.permission==="Owner" || projectDetail.permission==="Manager") &&
|
||||
<i onClick={()=>setOpenModal(true)} className="iconfont icon-a-shezhi color-grey-9 font-15"></i>
|
||||
<i onClick={()=>setOpenModal(true)} className="iconfont icon-a-shezhi color-grey-9 font-15 pointer"></i>
|
||||
}
|
||||
</FlexAJ>
|
||||
{desc && <p className="font-14 color-grey-3 mb15 task-hide-2" style={{lineHeight:"24px",WebkitLineClamp:"4",textAlign:"justify",wordBreak:"break-all"}} title={desc}>{desc}</p>}
|
||||
|
|
|
@ -255,7 +255,7 @@ class Index extends Component {
|
|||
<Menu onClick={this.ChangeSoryBy}>
|
||||
<Menu.Item key="updated_on">更新时间排序</Menu.Item>
|
||||
<Menu.Item key="created_on">创建时间排序</Menu.Item>
|
||||
<Menu.Item key="forked_count">fork数据排序</Menu.Item>
|
||||
<Menu.Item key="forked_count">fork数量排序</Menu.Item>
|
||||
<Menu.Item key="praises_count">点赞数量排序</Menu.Item>
|
||||
</Menu>
|
||||
)
|
||||
|
|
|
@ -83,7 +83,7 @@ class IndexItem extends Component {
|
|||
<div className="p-r-Infos">
|
||||
<div className="p-r-name">
|
||||
<AlignCenter>
|
||||
<Link to={`/${item.author.login}/${item.identifier}`} target="_blank" title={`${item.author.name}/${item.name}`} className="color-grey-3 font-18 task-hide " style={{maxWidth: 470 }}>
|
||||
<Link to={`/${item.author.login}/${item.identifier}`} title={`${item.author.name}/${item.name}`} className="color-grey-3 font-18 task-hide " style={{maxWidth: 470 }}>
|
||||
{item.author.name}/{item.name}
|
||||
</Link>
|
||||
{ !item.is_public && <span className="privateTag">私有</span> }
|
||||
|
|
|
@ -16,7 +16,8 @@ function SpecialModal({ visible , hideModal , sureModal , showNotification , use
|
|||
function sure(){
|
||||
if(!user_apply_signatures || (user_apply_signatures && user_apply_signatures.status !== "waiting")){
|
||||
if(!id || (id && id.length === 0)){
|
||||
showNotification("请先提交文件进行审核!");
|
||||
// showNotification("请先提交文件进行审核!");
|
||||
getUrl(`/api/apply_signatures/template_file`)
|
||||
return;
|
||||
}
|
||||
const url = `/apply_signatures.json`;
|
||||
|
|
|
@ -210,8 +210,10 @@ class order extends Component {
|
|||
});
|
||||
}
|
||||
}
|
||||
const { select_params } = this.state;
|
||||
this.setState({
|
||||
select_params:{
|
||||
...select_params,
|
||||
order_name:key_name[0],
|
||||
order_type:e.item.props.value,
|
||||
page:1
|
||||
|
@ -220,9 +222,6 @@ class order extends Component {
|
|||
const { status_type } = this.state;
|
||||
this.getIssueList(status_type);
|
||||
})
|
||||
// this.state.select_params.order_name = key_name[0];
|
||||
// this.state.select_params.order_type = e.item.props.value;
|
||||
// this.state.select_params.page = 1;
|
||||
};
|
||||
|
||||
getOption = (e, id, name, toGet) => {
|
||||
|
@ -283,15 +282,15 @@ class order extends Component {
|
|||
// 翻页
|
||||
ChangePage = (page) => {
|
||||
window.scrollTo(0,0);
|
||||
const { status_type } = this.state;
|
||||
this.setState({
|
||||
isSpin: true,
|
||||
checkedValue: [],
|
||||
all: false
|
||||
all: false,
|
||||
},()=>{
|
||||
this.state.select_params.page=page;
|
||||
this.getIssueList(status_type);
|
||||
});
|
||||
|
||||
const { status_type } = this.state;
|
||||
this.state.select_params.page = page;
|
||||
this.getIssueList(status_type);
|
||||
};
|
||||
|
||||
// 搜索
|
||||
|
@ -346,12 +345,12 @@ class order extends Component {
|
|||
ChangeAssign = (type) => {
|
||||
const { current_user } = this.props;
|
||||
this.setState({
|
||||
isSpin: true,
|
||||
isSpin: true
|
||||
});
|
||||
if (type) {
|
||||
if (!current_user) {
|
||||
this.setState({
|
||||
isSpin: false,
|
||||
isSpin: false
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -385,7 +384,7 @@ class order extends Component {
|
|||
this.state.select_params.author_id = undefined;
|
||||
}
|
||||
const { status_type } = this.state;
|
||||
|
||||
this.state.select_params.page = 1;
|
||||
this.getIssueList(status_type);
|
||||
};
|
||||
|
||||
|
@ -563,6 +562,49 @@ class order extends Component {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
clearSelectParams=()=>{
|
||||
this.setState({
|
||||
status_type: "1", // 默认显示开启中的
|
||||
issue_tag_ids: "标记",
|
||||
tracker_ids: "类型",
|
||||
author_ids: "发布人",
|
||||
assigned_to_ids: "负责人",
|
||||
fixed_version_ids: "里程碑",
|
||||
status_ids: "状态",
|
||||
done_ratios: "完成度",
|
||||
paix: "排序",
|
||||
update_author_ids: "更换负责人",
|
||||
update_fixed_version_ids: '更换里程碑',
|
||||
update_status_ids: "修改状态",
|
||||
begin: '',
|
||||
end: '',
|
||||
checkedValue: [],
|
||||
allValue: [],
|
||||
all: false,
|
||||
search:undefined,
|
||||
select_params: {
|
||||
assigned_to_id: undefined, // 负责人
|
||||
author_id: undefined, // 发布人
|
||||
issue_tag_id: undefined, // 标记
|
||||
tracker_id: undefined, //类型
|
||||
done_ratio: undefined, // 完成度
|
||||
status_id: undefined, // 优先级
|
||||
fixed_version_id: undefined,//里程碑
|
||||
order_name: undefined,
|
||||
order_type: undefined,
|
||||
search: undefined,
|
||||
update_author_id: undefined,
|
||||
update_fixed_version_id: undefined,
|
||||
update_status_id: undefined,
|
||||
page: 1,
|
||||
limit: 15,
|
||||
}
|
||||
},()=>{
|
||||
this.getIssueList("1");
|
||||
})
|
||||
}
|
||||
|
||||
menu =()=> (
|
||||
<Menu onClick={(e) => this.getMenu(e)}>
|
||||
<Menu.Item key={"created_on-desc"} value="desc">
|
||||
|
@ -634,6 +676,7 @@ class order extends Component {
|
|||
/>
|
||||
</div>
|
||||
<div>
|
||||
<a className="mr20 color-grey-6" onClick={this.clearSelectParams}><i className="iconfont icon-shanchu6 mr3 font-14"></i>清除筛选条件</a>
|
||||
<DatePicker
|
||||
value={begin ? moment(begin, 'YYYY-MM-DD') : ""}
|
||||
style={{ marginRight: "20px" }}
|
||||
|
@ -912,7 +955,7 @@ class order extends Component {
|
|||
<div className="pt30 mb30 edu-txt-center" style={{borderTop:"1px solid #eee"}}>
|
||||
<Pagination
|
||||
simple
|
||||
defaultCurrent={select_params.page}
|
||||
current={select_params.page}
|
||||
total={search_count}
|
||||
pageSize={select_params.limit}
|
||||
onChange={this.ChangePage}
|
||||
|
|
|
@ -177,15 +177,14 @@ function New({ form , match , showNotification , history }) {
|
|||
onSuccess={onSuccess}
|
||||
title="删除Webhook"
|
||||
content="您确定要删除此Webhook吗?"
|
||||
subTitle={`删除后未来事件将不会推送至此Webhook地址:${data && data.url}`}
|
||||
subTitle={`${data && data.url}`}
|
||||
/>
|
||||
<Banner>
|
||||
<Link to={`/${owner}/${projectsId}/settings/webhooks`} className="color-blue">
|
||||
<i className="iconfont icon-zuojiantou mr5 font-16"></i>
|
||||
Webhooks
|
||||
</Link>
|
||||
|
||||
{/* <Button type="primary" size="large">{id ? "更新" : "添加"}Webhook</Button> */}
|
||||
<span>
|
||||
<Link to={`/${owner}/${projectsId}/settings/webhooks`} className="color-blue">Webhooks</Link>
|
||||
<i className="iconfont icon-youjiantou ml5 mr5 font-12"></i>
|
||||
<span>{id ? "更新" : "添加"}Webhook</span>
|
||||
</span>
|
||||
</Banner>
|
||||
<div>
|
||||
<p className="deschead mg"><span>当webhook被触发时,我们将向以下URL发送通知,包括已选择事件的详细信息。更多信息可查阅<a className="color-blue hoverLine" target="_blank" href="https://forum.trustie.net/forums/3408/detail">webhooks指南</a>。</span></p>
|
||||
|
@ -200,7 +199,7 @@ function New({ form , match , showNotification , history }) {
|
|||
}
|
||||
]
|
||||
})(
|
||||
<Input placeholder="请输入目标URL" size="large" autocomplete='off'/>
|
||||
<Input placeholder="请输入目标URL" maxLength="100" size="large" autocomplete='off'/>
|
||||
)}
|
||||
</Form.Item>
|
||||
<Form.Item label="Webhook密钥" colon={false}>
|
||||
|
@ -261,11 +260,11 @@ function New({ form , match , showNotification , history }) {
|
|||
</span> */}
|
||||
<span>
|
||||
<Checkbox value="create">创建</Checkbox>
|
||||
<span>创建分支或标记</span>
|
||||
<span>创建分支或标签</span>
|
||||
</span>
|
||||
<span>
|
||||
<Checkbox value="delete">删除</Checkbox>
|
||||
<span>删除分支或标记</span>
|
||||
<span>删除分支或标签</span>
|
||||
</span>
|
||||
</div>
|
||||
<p className="color-grey-3 mt10 mb10">合并请求事件</p>
|
||||
|
|
|
@ -74,6 +74,7 @@ export default Form.create()(
|
|||
function getImage(image){
|
||||
setImageFlag(true);
|
||||
setImage(image);
|
||||
console.log(image);
|
||||
}
|
||||
|
||||
// 删除组织
|
||||
|
@ -107,6 +108,7 @@ export default Form.create()(
|
|||
}
|
||||
callback();
|
||||
}
|
||||
|
||||
return(
|
||||
<div>
|
||||
<WhiteBack>
|
||||
|
@ -176,11 +178,11 @@ export default Form.create()(
|
|||
'最大仓库数:',
|
||||
"max_repo_creation",
|
||||
[],
|
||||
<InputNumber value="-1" style={{width:"350px"}}/>,false,false,
|
||||
<InputNumber value="-1" max={1000} style={{width:"350px"}}/>,false,false,
|
||||
"当输入栏为空时,默认数量无限制"
|
||||
)}
|
||||
<p>选择头像:</p>
|
||||
<UploadImage url={getImageUrl(`/${image}`)} getImage={getImage}/>
|
||||
<UploadImage url={image&&image.startsWith('images/avatars/Organization')?getImageUrl(`/${image}`):image} getImage={getImage}/>
|
||||
<Button type={"primary"} onClick={updateDetail}>更新组织设置</Button>
|
||||
</Form>
|
||||
</Div>
|
||||
|
|
|
@ -6,7 +6,7 @@ import Nodata from '../Nodata';
|
|||
import { Pagination , Spin } from 'antd';
|
||||
import AddMemberBox from './Component/AddMemberBox';
|
||||
|
||||
const limit = 15;
|
||||
const limit = 16;
|
||||
function TeamMember({organizeDetail,current_user,history,match}){
|
||||
const OIdentifier = match.params.OIdentifier;
|
||||
const [ page , setPage ] = useState(1);
|
||||
|
@ -24,7 +24,7 @@ function TeamMember({organizeDetail,current_user,history,match}){
|
|||
setIsSpin(true);
|
||||
const url = `/organizations/${organizeDetail.id}/organization_users.json`;
|
||||
axios.get(url,{
|
||||
page,limit
|
||||
params:{page,limit}
|
||||
}).then(result=>{
|
||||
if(result && result.data){
|
||||
setList(result.data.organization_users);
|
||||
|
@ -76,7 +76,7 @@ function TeamMember({organizeDetail,current_user,history,match}){
|
|||
{
|
||||
total >limit &&
|
||||
<div className="mt20 pb20 edu-txt-center">
|
||||
<Pagination simple current={page} pageSize={limit} total={total} onChange={(page)=>setPage(page)}/>
|
||||
<Pagination simple current={page} pageSize={limit} total={total} onChange={(p)=>setPage(p)}/>
|
||||
</div>
|
||||
}
|
||||
</WhiteBack>
|
||||
|
|
|
@ -108,7 +108,7 @@ class InfosUser extends Component {
|
|||
<Menu onClick={this.ChangeSoryBy}>
|
||||
<Menu.Item key="updated_on">更新时间排序</Menu.Item>
|
||||
<Menu.Item key="created_on">创建时间排序</Menu.Item>
|
||||
<Menu.Item key="forked_count">fork数据排序</Menu.Item>
|
||||
<Menu.Item key="forked_count">fork数量排序</Menu.Item>
|
||||
<Menu.Item key="praises_count">点赞数量排序</Menu.Item>
|
||||
</Menu>
|
||||
);
|
||||
|
|
|
@ -121,7 +121,7 @@ function Index(props) {
|
|||
}
|
||||
}).then(result=>{
|
||||
if(result && result.data){
|
||||
setCloudData({categories:[]});
|
||||
setCloudData(result.data || []);
|
||||
}
|
||||
}).catch(error=>{})
|
||||
}
|
||||
|
@ -202,7 +202,7 @@ function Index(props) {
|
|||
<div className="echartBox">
|
||||
<p>展示你擅长、关注、感兴趣的专业范围,通过你参与项目、收藏项目、关注项目、复刻项目等数据来统计。</p>
|
||||
{
|
||||
cloudData && cloudData.length >0?
|
||||
cloudData && cloudData.categories && cloudData.categories.length > 0?
|
||||
<Cloud data={cloudData}/>
|
||||
:
|
||||
<Nodata _html="暂无数据" small={true}/>
|
||||
|
|
|
@ -112,7 +112,7 @@
|
|||
&.newHeaders {
|
||||
// background-color: #1a2358;
|
||||
background-color: #0037af;
|
||||
z-index: 1000000;
|
||||
z-index: 1000;
|
||||
}
|
||||
.newFooter{
|
||||
background: inherit;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useMemo,useState } from 'react';
|
||||
import React, { useEffect, useMemo,useState } from 'react';
|
||||
import { Link } from "react-router-dom";
|
||||
import { Menu, Dropdown, } from 'antd';
|
||||
|
||||
|
@ -7,20 +7,27 @@ import './index.scss';
|
|||
const { SubMenu } = Menu;
|
||||
|
||||
export default props => {
|
||||
|
||||
const {current_user}=props;
|
||||
const main_web_site_url =localStorage.chromesetting&& JSON.parse(localStorage.chromesetting).main_web_site_url;
|
||||
const current_main_site_url =localStorage.chromesetting&& JSON.parse(localStorage.chromesetting).current_main_site_url;
|
||||
const noticeUrl =localStorage.chromesetting&& JSON.parse(localStorage.chromesetting).api_urls.notice;
|
||||
useEffect(()=>{
|
||||
sessionStorage.setItem('current_user',JSON.stringify(current_user));
|
||||
},[current_user.login]);
|
||||
|
||||
|
||||
const [current,setCurrent]=useState(JSON.parse(sessionStorage.adminRouter||'[]'));
|
||||
const [title,setTitle]=useState('');
|
||||
|
||||
function handleClick (e){
|
||||
setCurrent([e.key]);
|
||||
setTitle(e.item.props.title);
|
||||
sessionStorage.setItem( 'adminRouter',JSON.stringify([e.key]));
|
||||
};
|
||||
|
||||
const projectMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${current_main_site_url}/admins`}>项目管理后台</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${current_main_site_url}/admins`}>项目管理后台</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
@ -35,109 +42,100 @@ export default props => {
|
|||
<Menu.Item><a href={`${main_web_site_url}/admin/sign_agreement_setting`}>应征投稿协议内容</a></Menu.Item>
|
||||
</SubMenu>
|
||||
<SubMenu title="代办事项" >
|
||||
<Menu.Item key="delayManage"><Link to={`/task/delayManage`}>延期任务处理</Link></Menu.Item>
|
||||
{/* <Menu.Item><a href={`${main_web_site_url}/admin/audit_files`}>协议签订凭证上传</a></Menu.Item> */}
|
||||
<Menu.Item key="payProof"><Link to="/task/payProof">支付报酬凭证上传</Link></Menu.Item>
|
||||
<Menu.Item title="task" key="delayManage"><Link to="/managements/task/delayManage">延期任务处理</Link></Menu.Item>
|
||||
<Menu.Item title="task" key="payProof"><Link to="/managements/task/payProof">支付报酬凭证上传</Link></Menu.Item>
|
||||
</SubMenu>
|
||||
|
||||
<Menu.Item key="taskAdmin"><Link to="/task/taskAdmin">创客任务列表</Link></Menu.Item>
|
||||
<Menu.Item title="task" key="taskAdmin"><Link to="/managements/task/taskAdmin">创客任务列表</Link></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const competitionMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/competitions/list`}>竞赛列表</a></Menu.Item>
|
||||
<Menu.Item><Link to="/expert/admin/competition">评审任务列表</Link></Menu.Item>
|
||||
return <Menu selectedKeys={current} onClick={handleClick} >
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/competitions/list`}>竞赛列表</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/competitions/region_zone_edit`}>赛区配置</a></Menu.Item>
|
||||
<Menu.Item title="competition" key="competitionReview" ><Link to="/managements/expert/competition">竞赛评审列表</Link></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
// const expertMenu = useMemo(() => {
|
||||
// return <Menu>
|
||||
// <Menu.Item><Link to={`/expert/admin/register`}>专家注册审核</Link></Menu.Item>
|
||||
// <Menu.Item><Link to={`/expert/admin/list`}>专家库</Link></Menu.Item>
|
||||
// </Menu>
|
||||
// });
|
||||
|
||||
const userMenu = useMemo(() => {
|
||||
return <Menu selectedKeys={current} onClick={handleClick}>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/users`}>用户列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/entities`}>主体信息列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/users_trial`}>试用授权列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/auto_users_trial`}>自动授权列表</a></Menu.Item>
|
||||
<Menu.Item key={'register'}><Link to={`/expert/admin/register`}>专家注册列表</Link></Menu.Item>
|
||||
<Menu.Item key={'expertList'}><Link to={`/expert/admin/list`}>专家库列表</Link></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/users`}>用户列表</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/entities`}>主体信息列表</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/users_trial`}>试用授权列表</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/auto_users_trial`}>自动授权列表</a></Menu.Item>
|
||||
<Menu.Item title="user" key={'register'}><Link to="/managements/expert/register">专家注册列表</Link></Menu.Item>
|
||||
<Menu.Item title="user" key={'expertList'}><Link to="/managements/expert/list">专家库列表</Link></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const forumMenu = useMemo(() => {
|
||||
return <Menu >
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/messages_list`}>帖子</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/apply_destroy_memos`}>申请删帖</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/memo_reply_list`}>回复</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/forum_sections`}>版块配置</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/banned_users`}>禁言列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/forum_applies`}>版主审批</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/messages_list`}>帖子</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/apply_destroy_memos`}>申请删帖</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/memo_reply_list`}>回贴</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/forum_sections`}>版块配置</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
const checkMenu = useMemo(() => {
|
||||
return <Menu selectedKeys={current} onClick={handleClick}>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/enterprise_authentication`}>企业认证</a></Menu.Item>
|
||||
{/* <Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/reviews/projects_list`}>开源项目</a></Menu.Item> */}
|
||||
<Menu.Item key={"taskManage1"}><Link to="/task/taskManage/1">统筹任务发布审批</Link></Menu.Item>
|
||||
<Menu.Item key={"taskManage0"}><Link to="/task/taskManage/0">自主任务发布审批</Link></Menu.Item>
|
||||
<Menu.Item key={"paperManage"}><Link to="/task/paperManage">成果/评论审批</Link></Menu.Item>
|
||||
<Menu.Item key={"paperComplain"}><Link to="/task/paperComplain">成果上传申诉审批</Link></Menu.Item>
|
||||
<Menu.Item key={"publicityComplain"}><Link to="/task/publicityComplain">公示期成果申诉审批</Link></Menu.Item>
|
||||
<Menu.Item key={"agreementManage"}><Link to="/task/agreementManage">协议审批</Link></Menu.Item>
|
||||
<Menu.Item ><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/tasks/report_result_tasks`}>成果举报申诉</a></Menu.Item>
|
||||
<Menu.Item key={"proofManage"}><Link to="/task/proofManage">评选佐证材料</Link></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/enterprise_authentication`}>企业认证</a></Menu.Item>
|
||||
<Menu.Item title="approver" key={"taskManage1"}><Link to="/managements/task/taskManage/1">统筹任务发布审批</Link></Menu.Item>
|
||||
<Menu.Item title="approver" key={"taskManage0"}><Link to="/managements/task/taskManage/0">自主任务发布审批</Link></Menu.Item>
|
||||
<Menu.Item title="approver" key={"paperManage"}><Link to="/managements/task/paperManage">成果/评论审批</Link></Menu.Item>
|
||||
<Menu.Item title="approver" key={"paperComplain"}><Link to="/managements/task/paperComplain">成果上传申诉审批</Link></Menu.Item>
|
||||
<Menu.Item title="approver" key={"publicityComplain"}><Link to="/managements/task/publicityComplain">公示期成果申诉审批</Link></Menu.Item>
|
||||
<Menu.Item title="approver" key={"agreementManage"}><Link to="/managements/task/agreementManage">协议审批</Link></Menu.Item>
|
||||
<Menu.Item ><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/tasks/report_result_tasks`}>成果举报申诉</a></Menu.Item>
|
||||
<Menu.Item title="approver" key={"proofManage"}><Link to="/managements/task/proofManage">评选佐证材料</Link></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
const limitsMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/user_admin_roles`}>权限组配置</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/admin_role_permissions`}>权限操作配置</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/user_admin_roles`}>权限组配置</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/managements/admin_role_permissions`}>权限操作配置</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
const configMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/about_infos/new"`}>关于我们</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/home_sections"`}>首页版块</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/partners`}>合作伙伴</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/about_infos/new"`}>关于我们</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/home_sections"`}>首页版块</a></Menu.Item>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${main_web_site_url}/admin/partners`}>合作伙伴</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const noticeMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a rel="noopener noreferrer" href={`${noticeUrl}/admin/index#/`}>招标公告</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
return (
|
||||
<div className="centerbox managements_menus clearfix">
|
||||
<Dropdown key={'projectMenu'} overlay={projectMenu} placement="bottomLeft">
|
||||
<div className="drop-div">
|
||||
<div className="drop-div">
|
||||
项目
|
||||
</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'taskMenu'} overlay={taskMenu} placement="bottomLeft">
|
||||
<div className="drop-div">
|
||||
<div className={`${title=='task'&&'active'} drop-div`}>
|
||||
创客
|
||||
</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'competitionMenu'} overlay={competitionMenu} placement="bottomLeft">
|
||||
<div className="drop-div">竞赛</div>
|
||||
<div className={`${title=='competition'&&'active'} drop-div`}>竞赛</div>
|
||||
</Dropdown>
|
||||
|
||||
{/* <Dropdown key={'expert'} overlay={expertMenu} placement="bottomLeft">
|
||||
<div className="drop-div">专家</div>
|
||||
</Dropdown> */}
|
||||
|
||||
<Dropdown key={'userMenu'} overlay={userMenu} placement="bottomLeft">
|
||||
<div className="drop-div">用户</div>
|
||||
<div className={`${title=='user'&&'active'} drop-div`}>用户</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'forumMenu'} overlay={forumMenu} placement="bottomLeft">
|
||||
|
@ -145,15 +143,19 @@ export default props => {
|
|||
</Dropdown>
|
||||
|
||||
<Dropdown key={'checkMenu'} overlay={checkMenu} placement="bottomLeft">
|
||||
<div className="drop-div">审批</div>
|
||||
<div className={`${title=='approver'&&'active'} drop-div`}>审批</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'limitsMenu'} overlay={limitsMenu} placement="bottomLeft">
|
||||
<div className="drop-div">权限管理</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'configMenu'} overlay={configMenu} placement="bottomLeft">
|
||||
{/* <Dropdown key={'configMenu'} overlay={configMenu} placement="bottomLeft">
|
||||
<div className="drop-div">网站配置</div>
|
||||
</Dropdown> */}
|
||||
|
||||
<Dropdown key={'notice'} overlay={noticeMenu} placement="bottomLeft">
|
||||
<div className="drop-div">招标公告</div>
|
||||
</Dropdown>
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
box-sizing: border-box;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
&.active{
|
||||
color: #4154f1;
|
||||
}
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
|
|
|
@ -16,15 +16,6 @@ const Review = Loadable({
|
|||
loading: Loading,
|
||||
});
|
||||
|
||||
const AdminRouter = Loadable({
|
||||
loader: () => import("./expert/adminRouter"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
// const ReviewTasks = Loadable({
|
||||
// loader: () => import("./expert/reviewTasks"),
|
||||
// loading: Loading,
|
||||
// })
|
||||
const ExpertUser = Loadable({
|
||||
loader: () => import("./expert/expertUser"),
|
||||
loading: Loading,
|
||||
|
@ -55,13 +46,6 @@ const Expert = (propsTransmit) => {
|
|||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员管理 */}
|
||||
<Route
|
||||
path="/expert/admin/:admin"
|
||||
render={(props) => (
|
||||
<AdminRouter {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
<Route
|
||||
path="/expert"
|
||||
render={(props) => (
|
||||
|
|
|
@ -1,92 +0,0 @@
|
|||
import React from "react";
|
||||
|
||||
import { Route, Switch } from "react-router-dom";
|
||||
import Loadable from "react-loadable";
|
||||
import Loading from "../../Loading";
|
||||
import AdminRouter from "../components/adminRouter";
|
||||
|
||||
// 专家库
|
||||
const ExpertList = Loadable({
|
||||
loader: () => import("./expertList"),
|
||||
loading: Loading,
|
||||
});
|
||||
// 专家审核
|
||||
const RegisterList = Loadable({
|
||||
loader: () => import("./registerList"),
|
||||
loading: Loading,
|
||||
});
|
||||
//创客任务评审规则
|
||||
const ReviewRules = Loadable({
|
||||
loader : () => import("./reviewRules"),
|
||||
loading: Loading,
|
||||
});
|
||||
//创客任务选择评审专家
|
||||
const SelectExpert = Loadable({
|
||||
loader: () => import("./selectExpert"),
|
||||
loading: Loading,
|
||||
});
|
||||
//创客任务评审结果查看
|
||||
const ReviewResult = Loadable({
|
||||
loader: () => import("./reviewResult"),
|
||||
loading: Loading,
|
||||
});
|
||||
//竞赛评审任务列表
|
||||
const CompetitionList = Loadable({
|
||||
loader: () => import("./competionList"),
|
||||
loading: Loading,
|
||||
})
|
||||
|
||||
const AdminPage = (propsF) => {
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<AdminRouter {...propsF} />
|
||||
<Switch {...propsF}>
|
||||
{/* 专家审核 */}
|
||||
<Route
|
||||
path="/expert/admin/register"
|
||||
render={(props) => (
|
||||
<RegisterList {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 专家库列表 */}
|
||||
<Route
|
||||
path="/expert/admin/list"
|
||||
render={(props) => (
|
||||
<ExpertList {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 创客任务评审规则 */}
|
||||
<Route
|
||||
path="/expert/admin/task/review/rules/:containerType/:containerId"
|
||||
render={(props) => (
|
||||
<ReviewRules {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 创客任务选择评审专家 */}
|
||||
<Route
|
||||
path="/expert/admin/task/review/select/:containerType/:containerId"
|
||||
render={(props) => (
|
||||
<SelectExpert {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 创客任务评审结果查看 */}
|
||||
<Route
|
||||
path="/expert/admin/task/review/results/:containerType/:containerId"
|
||||
render={(props) => (
|
||||
<ReviewResult {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 竞赛评审任务列表 */}
|
||||
<Route
|
||||
path="/expert/admin/competition"
|
||||
render={(props) => (
|
||||
<CompetitionList {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
</Switch>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
// }
|
||||
export default AdminPage;
|
|
@ -95,16 +95,13 @@ function Competition(props){
|
|||
}
|
||||
},
|
||||
{
|
||||
title: "开始时间",
|
||||
title: "比赛时间",
|
||||
dataIndex: "start_time",
|
||||
key: "startTime",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "截止时间",
|
||||
dataIndex: "end_time",
|
||||
key: "endTime",
|
||||
key: "time",
|
||||
align: "center",
|
||||
render:(text, record)=>{
|
||||
return text +' ~ '+ record.end_time;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "报名人数",
|
||||
|
@ -117,7 +114,7 @@ function Competition(props){
|
|||
dataIndex: 'current_status',
|
||||
key: "rules",
|
||||
render: (text, record) => {
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewRules(record)}}>查看</Button> : record.is_expert_audit && text<4 ? <Link className="primary-link" to={`/expert/admin/task/review/rules/${2}/${record.id}/?identifier=${record.identifier}&status=${record.current_status}&name=${record.title}&reviewStartTime=${record.end_time}&reviewEndTime=${record.review_time}`}>编辑</Link> : <span className='gary_span'>编辑</span>
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewRules(record)}}>查看</Button> : record.is_expert_audit && text<4 ? <Link className="primary-link" to={`/managements/expert/task/review/rules/${2}/${record.id}/?identifier=${record.identifier}&status=${record.current_status}&name=${record.title}&reviewStartTime=${record.end_time}&reviewEndTime=${record.review_time}`}>编辑</Link> : <span className='gary_span'>编辑</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -125,7 +122,7 @@ function Competition(props){
|
|||
dataIndex: 'current_status',
|
||||
key: "experts",
|
||||
render: (text, record) => {
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewExperts(record)}}>查看</Button> : record.is_expert_audit && text<4 ? <Link className="primary-link" to={`/expert/admin/task/review/select/${2}/${record.id}/?identifier=${record.identifier}&name=${record.title}`}>选择</Link> : <span className='gary_span'>选择</span>
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewExperts(record)}}>查看</Button> : record.is_expert_audit && text<4 ? <Link className="primary-link" to={`/managements/expert/task/review/select/${2}/${record.id}/?identifier=${record.identifier}&name=${record.title}`}>选择</Link> : <span className='gary_span'>选择</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -141,7 +138,7 @@ function Competition(props){
|
|||
dataIndex: 'assignRuleAndExperts',
|
||||
key: "results",
|
||||
render: (text, record) => {
|
||||
return text ? <Link className="primary-link" to={`/expert/admin/task/review/results/${2}/${record.id}/#status=${record.current_status}&identifier=${record.identifier}&name=${record.title}`}>查看</Link>:<span className='gary_span'>查看</span>
|
||||
return text ? <Link className="primary-link" to={`/managements/expert/task/review/results/${2}/${record.id}/#status=${record.current_status}&identifier=${record.identifier}&name=${record.title}`}>查看</Link>:<span className='gary_span'>查看</span>
|
||||
}
|
||||
}
|
||||
];
|
||||
|
@ -263,7 +260,7 @@ function Competition(props){
|
|||
// 修改路由,跳转到第几页
|
||||
function updateUrl(page){
|
||||
setCurPage(page);
|
||||
window.location.href=`/expert/admin/competition/#page=${page}`;
|
||||
window.location.href=`/managements/expert/competition/#page=${page}`;
|
||||
}
|
||||
|
||||
function hashDate(hash) {
|
||||
|
|
|
@ -373,7 +373,7 @@ function RegisterList({ showNotification }) {
|
|||
<Table
|
||||
id="exportList"
|
||||
style={{ display: "none" }}
|
||||
columns={columns}
|
||||
columns={columns.slice(0,columns.length-2)}
|
||||
dataSource={dataAll}
|
||||
pagination={false}
|
||||
rowKey={(row) => row.id}
|
||||
|
@ -393,7 +393,7 @@ function RegisterList({ showNotification }) {
|
|||
>
|
||||
<button className="but41_fill">导入</button>
|
||||
</Upload>
|
||||
<p className="link" onClick={() => { window.open(httpUrl + '/busiAttachments/download/134') }}>专家注册表模板.xlsx</p>
|
||||
<p className="link" onClick={() => { window.open(`${httpUrl}/busiAttachments/download/${window.location.host.indexOf('osredm') === -1 ? '171' : '137'}`) }}>专家注册表模板.xlsx</p>
|
||||
<p className='hint'>提示:只能在导入模版上增减数据,才能导入成功!</p>
|
||||
</Modal>
|
||||
</div>)
|
||||
|
|
|
@ -0,0 +1,227 @@
|
|||
import React, { useEffect, useState } from "react";
|
||||
|
||||
import { Route, Switch } from "react-router-dom";
|
||||
import { withRouter } from "react-router";
|
||||
import { SnackbarHOC } from "educoder";
|
||||
import { CNotificationHOC } from "../modules/courses/common/CNotificationHOC";
|
||||
import { TPMIndexHOC } from "../modules/tpm/TPMIndexHOC";
|
||||
import Loadable from "react-loadable";
|
||||
import Loading from "../Loading";
|
||||
import AdminRouter from "./components/adminRouter";
|
||||
import { ImageLayerOfCommentHOC } from "../modules/page/layers/ImageLayerOfCommentHOC";
|
||||
import './index.scss';
|
||||
|
||||
{/* 任务管理审核 */}
|
||||
const TaskManage = Loadable({
|
||||
loader: () => import("./task/taskManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
{/* 成果管理审核 */}
|
||||
const PaperManage = Loadable({
|
||||
loader: () => import("./task/paperManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
{/* 成果申诉管理审核 */}
|
||||
const PaperComplain = Loadable({
|
||||
loader: () => import("./task/paperComplain"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const ProofManage = Loadable({
|
||||
loader: () => import("./task/proofManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const PublicityComplain = Loadable({
|
||||
loader: () => import("./task/publicityComplain"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const AgreementManage = Loadable({
|
||||
loader: () => import("./task/agreementManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const PayProof = Loadable({
|
||||
loader: () => import("./task/payProof"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const TaskAdmin = Loadable({
|
||||
loader: () => import("./task/taskAdmin"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const DelayManage = Loadable({
|
||||
loader: () => import("./task/delayManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
|
||||
|
||||
// 专家库
|
||||
const ExpertList = Loadable({
|
||||
loader: () => import("./expert/expertList"),
|
||||
loading: Loading,
|
||||
});
|
||||
// 专家审核
|
||||
const RegisterList = Loadable({
|
||||
loader: () => import("./expert/registerList"),
|
||||
loading: Loading,
|
||||
});
|
||||
//创客任务评审规则
|
||||
const ReviewRules = Loadable({
|
||||
loader : () => import("./expert/reviewRules"),
|
||||
loading: Loading,
|
||||
});
|
||||
//创客任务选择评审专家
|
||||
const SelectExpert = Loadable({
|
||||
loader: () => import("./expert/selectExpert"),
|
||||
loading: Loading,
|
||||
});
|
||||
//创客任务评审结果查看
|
||||
const ReviewResult = Loadable({
|
||||
loader: () => import("./expert/reviewResult"),
|
||||
loading: Loading,
|
||||
});
|
||||
//竞赛评审任务列表
|
||||
const CompetitionList = Loadable({
|
||||
loader: () => import("./expert/competionList"),
|
||||
loading: Loading,
|
||||
})
|
||||
|
||||
const Managements = (propsF) => {
|
||||
|
||||
return (
|
||||
<div className="newMain clearfix">
|
||||
<AdminRouter {...propsF} />
|
||||
<Switch {...propsF}>
|
||||
{/* 任务管理审核 */}
|
||||
<Route
|
||||
path="/managements/task/taskManage/:publishMode"
|
||||
render={(props) => (
|
||||
<TaskManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 成果管理审核 */}
|
||||
<Route
|
||||
path="/managements/task/paperManage"
|
||||
render={(props) => (
|
||||
<PaperManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 成果申诉管理审核 */}
|
||||
<Route
|
||||
path="/managements/task/paperComplain"
|
||||
render={(props) => (
|
||||
<PaperComplain {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 公示期成果申诉管理审核 */}
|
||||
<Route
|
||||
path="/managements/task/publicityComplain"
|
||||
render={(props) => (
|
||||
<PublicityComplain {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 佐证管理审核 */}
|
||||
<Route
|
||||
path="/managements/task/proofManage"
|
||||
render={(props) => (
|
||||
<ProofManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员协议审核 */}
|
||||
<Route
|
||||
path="/managements/task/agreementManage"
|
||||
render={(props) => (
|
||||
<AgreementManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员上传支付凭证 */}
|
||||
<Route
|
||||
path="/managements/task/payProof"
|
||||
render={(props) => (
|
||||
<PayProof {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员任务列表 */}
|
||||
<Route
|
||||
path="/managements/task/taskAdmin"
|
||||
render={(props) => (
|
||||
<TaskAdmin {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 延期管理 */}
|
||||
<Route
|
||||
path="/managements/task/delayManage"
|
||||
render={(props) => (
|
||||
<DelayManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
|
||||
|
||||
{/* 专家审核 */}
|
||||
<Route
|
||||
path="/managements/expert/register"
|
||||
render={(props) => (
|
||||
<RegisterList {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 专家库列表 */}
|
||||
<Route
|
||||
path="/managements/expert/list"
|
||||
render={(props) => (
|
||||
<ExpertList {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 创客任务评审规则 */}
|
||||
<Route
|
||||
path="/managements/expert/task/review/rules/:containerType/:containerId"
|
||||
render={(props) => (
|
||||
<ReviewRules {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 创客任务选择评审专家 */}
|
||||
<Route
|
||||
path="/managements/expert/task/review/select/:containerType/:containerId"
|
||||
render={(props) => (
|
||||
<SelectExpert {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 创客任务评审结果查看 */}
|
||||
<Route
|
||||
path="/managements/expert/task/review/results/:containerType/:containerId"
|
||||
render={(props) => (
|
||||
<ReviewResult {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
{/* 竞赛评审任务列表 */}
|
||||
<Route
|
||||
path="/managements/expert/competition"
|
||||
render={(props) => (
|
||||
<CompetitionList {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
</Switch>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default withRouter(
|
||||
ImageLayerOfCommentHOC({
|
||||
imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget",
|
||||
parentSelector: ".newMain",
|
||||
})(CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Managements))))
|
||||
);
|
|
@ -32,13 +32,6 @@ const MyTask = Loadable({
|
|||
});
|
||||
|
||||
|
||||
const TaskAdminRouter = Loadable({
|
||||
loader: () => import("./task/taskAdminRouter"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
|
||||
|
||||
const Index = (propsTransmit) => {
|
||||
// 开发时,从代理的位置获取用户信息
|
||||
const [currentUser, setCurrentUser] = useState(propsTransmit.current_user);
|
||||
|
@ -90,12 +83,12 @@ const Index = (propsTransmit) => {
|
|||
></Route>
|
||||
|
||||
{/* 管理员管理 */}
|
||||
<Route
|
||||
{/* <Route
|
||||
path="/task/:admin"
|
||||
render={(props) => (
|
||||
<TaskAdminRouter {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
></Route> */}
|
||||
|
||||
{/* 任务列表 */}
|
||||
<Route
|
||||
|
|
|
@ -1,138 +0,0 @@
|
|||
import React, { useMemo } from 'react';
|
||||
import { Menu, Dropdown, } from 'antd';
|
||||
import { current_main_site_url, main_web_site_url } from '../../static';
|
||||
|
||||
import './index.scss';
|
||||
|
||||
const { SubMenu } = Menu;
|
||||
|
||||
export default props => {
|
||||
|
||||
const projectMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${current_main_site_url}/admins`}>项目管理后台</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const taskMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<SubMenu title="基础数据" >
|
||||
<Menu.Item><a href={`${main_web_site_url}/admin/categories/list`}>任务领域</a></Menu.Item>
|
||||
<Menu.Item><a href={`${main_web_site_url}/admin/industries/list`}>行业信息</a></Menu.Item>
|
||||
<Menu.Item><a href={`${main_web_site_url}/admin/placements/list`}>职位信息</a></Menu.Item>
|
||||
<Menu.Item><a href={`${main_web_site_url}/admin/task_templates/list`}>需求导入模板</a></Menu.Item>
|
||||
<Menu.Item><a href={`${main_web_site_url}/admin/agreement_setting`}>签订协议内容</a></Menu.Item>
|
||||
<Menu.Item><a href={`${main_web_site_url}/admin/sign_agreement_setting`}>应征投稿协议内容</a></Menu.Item>
|
||||
</SubMenu>
|
||||
<SubMenu title="代办事项" >
|
||||
<Menu.Item><a href={`/task/delayManage`}>延期任务处理</a></Menu.Item>
|
||||
{/* <Menu.Item><a href={`${main_web_site_url}/admin/audit_files`}>协议签订凭证上传</a></Menu.Item> */}
|
||||
<Menu.Item><a href="/task/payProof">支付报酬凭证上传</a></Menu.Item>
|
||||
</SubMenu>
|
||||
|
||||
<Menu.Item><a href="/task/taskAdmin">任务列表</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/paperManage">创意征集评论</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const competitionMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/competitions/list`}>竞赛列表</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const userMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/users`}>用户列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/entities`}>主体信息列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/users_trial`}>试用授权列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/auto_users_trial`}>自动授权列表</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
const forumMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/messages_list`}>帖子</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/apply_destroy_memos`}>申请删帖</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/memo_reply_list`}>回复</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/forum_sections`}>版块配置</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/banned_users`}>禁言列表</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/forum_applies`}>版主审批</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
const checkMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/enterprise_authentication`}>企业认证</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/reviews/projects_list`}>开源项目</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/taskManage/1">统筹任务发布审批</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/taskManage/0">自主任务发布审批</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/paperComplain">成果上传申诉审批</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/publicityComplain">公示期成果申诉审批</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/agreementManage">协议审批</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/tasks/report_result_tasks`}>成果举报申诉</a></Menu.Item>
|
||||
<Menu.Item><a href="/task/proofManage">评选佐证材料</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
const limitsMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/user_admin_roles`}>权限组配置</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/managements/admin_role_permissions`}>权限操作配置</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
const configMenu = useMemo(() => {
|
||||
return <Menu>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/about_infos/new"`}>关于我们</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/home_sections"`}>首页版块</a></Menu.Item>
|
||||
<Menu.Item><a target="_blank" rel="noopener noreferrer" href={`${main_web_site_url}/admin/partners`}>合作伙伴</a></Menu.Item>
|
||||
</Menu>
|
||||
});
|
||||
|
||||
|
||||
return (
|
||||
<div className="centerbox managements_menus clearfix">
|
||||
<Dropdown key={'projectMenu'} overlay={projectMenu} placement="bottomLeft">
|
||||
<div className="drop-div">
|
||||
项目
|
||||
</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'taskMenu'} overlay={taskMenu} placement="bottomLeft">
|
||||
<div className="drop-div">
|
||||
创客
|
||||
</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'competitionMenu'} overlay={competitionMenu} placement="bottomLeft">
|
||||
<div className="drop-div">竞赛</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'userMenu'} overlay={userMenu} placement="bottomLeft">
|
||||
<div className="drop-div">用户</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'forumMenu'} overlay={forumMenu} placement="bottomLeft">
|
||||
<div className="drop-div">论坛交流</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'checkMenu'} overlay={checkMenu} placement="bottomLeft">
|
||||
<div className="drop-div">审批</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'limitsMenu'} overlay={limitsMenu} placement="bottomLeft">
|
||||
<div className="drop-div">权限管理</div>
|
||||
</Dropdown>
|
||||
|
||||
<Dropdown key={'configMenu'} overlay={configMenu} placement="bottomLeft">
|
||||
<div className="drop-div">网站配置</div>
|
||||
</Dropdown>
|
||||
|
||||
<div className="drop-div" ><a target="_blank" href="http://121.36.15.240:20772/">数据分析管理</a></div>
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
.managements_menus {
|
||||
background: #fff;
|
||||
border: 1px solid #eee;
|
||||
|
||||
.drop-div {
|
||||
position: relative;
|
||||
float: left;
|
||||
width: 108px;
|
||||
text-align: center;
|
||||
padding: 15px 0px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: 1px;
|
||||
top: 20px;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
background-color: #ddd;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,7 +3,7 @@ import { Pagination, Modal, Input, Form, } from 'antd';
|
|||
import { Link } from "react-router-dom";
|
||||
import Nodata from 'forge/Nodata';
|
||||
import Loading from "src/Loading";
|
||||
import { timeAgo, getImageUrl } from 'educoder';
|
||||
import { timeAgo, getImageUrl,goUser,goUserMes } from 'educoder';
|
||||
import { adminCheckAgreement } from '../../api';
|
||||
import { httpUrl } from '../../fetch';
|
||||
import './index.scss';
|
||||
|
@ -67,14 +67,6 @@ export default Form.create()((props) => {
|
|||
});
|
||||
}
|
||||
|
||||
function goUser(login) {
|
||||
window.location.href = `/users/${login}`;
|
||||
}
|
||||
|
||||
function goUserMes(login) {
|
||||
window.location.href = `/users/${login}/message_detail`;
|
||||
}
|
||||
|
||||
function downFile(item) {
|
||||
let url = httpUrl + '/busiAttachments/download/' + item.id;
|
||||
window.open(url);
|
||||
|
@ -108,7 +100,7 @@ export default Form.create()((props) => {
|
|||
|
||||
{
|
||||
item.status === 2 && <React.Fragment>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.login) }}>私信</a>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.id) }}>私信</a>
|
||||
<a className="edu-default-btn edu-blueline-btn ml20 fl" onClick={() => { agreeClick(item) }}>同意</a>
|
||||
<a className="edu-default-btn edu-greyline-btn ml20 fl" onClick={() => { refuseClick(item) }}>驳回</a>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -4,7 +4,7 @@ import { Link } from "react-router-dom";
|
|||
import moment from 'moment';
|
||||
import Nodata from 'forge/Nodata';
|
||||
import Loading from "src/Loading";
|
||||
import { getImageUrl, formatDuring } from 'educoder';
|
||||
import { getImageUrl, formatDuring,goUser,goUserMes } from 'educoder';
|
||||
import { taskStatusAllArr } from '../../static';
|
||||
import { delayTask, closeTask } from '../../api';
|
||||
import './index.scss';
|
||||
|
@ -70,14 +70,6 @@ export default Form.create()((props) => {
|
|||
});
|
||||
}
|
||||
|
||||
function goUser(login) {
|
||||
window.location.href = `/users/${login}`;
|
||||
}
|
||||
|
||||
function goUserMes(login) {
|
||||
window.location.href = `/users/${login}/message_detail`;
|
||||
}
|
||||
|
||||
const helper = useCallback(
|
||||
(label, name, rules, widget, initialValue) => (
|
||||
<Form.Item label={label}>
|
||||
|
@ -160,7 +152,7 @@ export default Form.create()((props) => {
|
|||
|
||||
{
|
||||
item.cancelStatus === 0 && <React.Fragment>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.login) }}>私信</a>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.id) }}>私信</a>
|
||||
<a className="edu-default-btn edu-blueline-btn ml20 fl" onClick={() => { delayClick(item) }}>延期</a>
|
||||
<a className="edu-default-btn edu-greyline-btn ml20 fl" onClick={() => { closeClick(item) }}>关闭</a>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -4,7 +4,7 @@ import { Link } from "react-router-dom";
|
|||
import Nodata from 'forge/Nodata';
|
||||
import Loading from "src/Loading";
|
||||
import Upload from 'military/components/Upload';
|
||||
import { timeAgo, getImageUrl } from 'educoder';
|
||||
import { timeAgo, getImageUrl,goUser,goUserMes } from 'educoder';
|
||||
import { uploadPayProof } from '../../api';
|
||||
import './index.scss';
|
||||
|
||||
|
@ -16,16 +16,6 @@ export default Form.create()((props) => {
|
|||
const [fileList, setFileList] = useState(null);
|
||||
const pageSize = props.pageSize || 10;
|
||||
|
||||
|
||||
function goUser(login) {
|
||||
window.location.href = `/users/${login}`;
|
||||
}
|
||||
|
||||
function goUserMes(login) {
|
||||
window.location.href = `/users/${login}/message_detail`;
|
||||
}
|
||||
|
||||
|
||||
// 上传附件后得到的文件数组
|
||||
function uploadFunc(fileList, files) {
|
||||
setFileList(fileList);
|
||||
|
@ -72,7 +62,7 @@ export default Form.create()((props) => {
|
|||
<span className="fl color-grey-9 mt3 mr15">{timeAgo(item.createdAt)}</span>
|
||||
<span className="infos_item color-grey-9 fl">发布方式:</span>
|
||||
<span className="infos_item mr15 fl">{item.task && item.task.publishMode === 1 ? '统筹任务' : '自主提交'}</span>
|
||||
<span className="fr"><a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { item.user && goUserMes(item.user.login) }}>私信</a></span>
|
||||
<span className="fr"><a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { item.user && goUserMes(item.user.id) }}>私信</a></span>
|
||||
</li>
|
||||
<div className="clearfix">
|
||||
<div className="width100 lineh-35" >
|
||||
|
|
|
@ -3,7 +3,7 @@ import { Pagination, Modal, Input } from 'antd';
|
|||
import { Link } from "react-router-dom";
|
||||
import Nodata from 'forge/Nodata';
|
||||
import Loading from "src/Loading";
|
||||
import { timeAgo, getImageUrl } from 'educoder';
|
||||
import { timeAgo, getImageUrl,goUser,goUserMes } from 'educoder';
|
||||
import { checkProof } from '../../api';
|
||||
import { httpUrl } from '../../fetch';
|
||||
import './index.scss';
|
||||
|
@ -60,13 +60,6 @@ export default (props) => {
|
|||
});
|
||||
}
|
||||
|
||||
function goUser(login) {
|
||||
window.location.href = `/users/${login}`;
|
||||
}
|
||||
|
||||
function goUserMes(login) {
|
||||
window.location.href = `/users/${login}/message_detail`;
|
||||
}
|
||||
|
||||
function downFile(item) {
|
||||
let url = httpUrl + '/busiAttachments/download/' + item.id;
|
||||
|
@ -98,7 +91,7 @@ export default (props) => {
|
|||
|
||||
{
|
||||
item.taskResultProof.status === 2 && <React.Fragment>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.login) }}>私信</a>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.id) }}>私信</a>
|
||||
<a className="edu-default-btn edu-blueline-btn ml20 fl" onClick={() => { agreeClick(item) }}>同意</a>
|
||||
<a className="edu-default-btn edu-greyline-btn ml20 fl" onClick={() => { refuseClick(item) }}>拒绝</a>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -3,7 +3,7 @@ import { Pagination, Modal, Input, Radio, Form, InputNumber } from 'antd';
|
|||
import { Link } from "react-router-dom";
|
||||
import Nodata from 'forge/Nodata';
|
||||
import Loading from "src/Loading";
|
||||
import { timeAgo, getImageUrl } from 'educoder';
|
||||
import { timeAgo, getImageUrl,goUser,goUserMes } from 'educoder';
|
||||
import { checkPublicity } from '../../api';
|
||||
import { httpUrl } from '../../fetch';
|
||||
import './index.scss';
|
||||
|
@ -49,14 +49,6 @@ export default Form.create()((props) => {
|
|||
|
||||
}
|
||||
|
||||
function goUser(login) {
|
||||
window.location.href = `/users/${login}`;
|
||||
}
|
||||
|
||||
function goUserMes(login) {
|
||||
window.location.href = `/users/${login}/message_detail`;
|
||||
}
|
||||
|
||||
function downFile(item) {
|
||||
let url = httpUrl + '/busiAttachments/download/' + item.id;
|
||||
window.open(url);
|
||||
|
@ -86,7 +78,7 @@ export default Form.create()((props) => {
|
|||
<a className="user-box fl mr15 color-grey-3 font-16" onClick={() => { goUser(item.user.login) }}>{item.user && (item.user.nickname || item.user.login)}</a>
|
||||
<span className="fl color-grey-9 mt3 mr15">{timeAgo(item.createdAt)}</span>
|
||||
<span className="fr">
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.login) }}>私信</a>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.id) }}>私信</a>
|
||||
{item.status === 2 && <a className="edu-default-btn edu-blueline-btn ml20 fl" onClick={() => { deal(item) }}>处理</a>}
|
||||
</span>
|
||||
</li>
|
||||
|
|
|
@ -3,7 +3,7 @@ import { Pagination, Modal, Input, Radio, Button } from 'antd';
|
|||
import { Link } from "react-router-dom";
|
||||
import Nodata from 'forge/Nodata';
|
||||
import Loading from "src/Loading";
|
||||
import { timeAgo, getImageUrl } from 'educoder';
|
||||
import { timeAgo, getImageUrl,goUser,goUserMes } from 'educoder';
|
||||
import { main_web_site_url } from '../../static';
|
||||
import { checkTask } from '../../api';
|
||||
import './index.scss';
|
||||
|
@ -61,14 +61,6 @@ export default (props) => {
|
|||
});
|
||||
}
|
||||
|
||||
function goUser(login) {
|
||||
window.location.href = `/users/${login}`;
|
||||
}
|
||||
|
||||
function goUserMes(login) {
|
||||
window.location.href = `/users/${login}/message_detail`;
|
||||
}
|
||||
|
||||
function scale(scale) {
|
||||
if (scale > 10000) {
|
||||
return '10000人以上';
|
||||
|
@ -103,7 +95,7 @@ export default (props) => {
|
|||
|
||||
{
|
||||
item.status === 1 && <React.Fragment>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.login) }}>私信</a>
|
||||
<a className="edu-default-btn edu-orangeline-btn ml20 fl" onClick={() => { goUserMes(item.user.id) }}>私信</a>
|
||||
<a className="edu-default-btn edu-blueline-btn ml20 fl" onClick={() => { agreeClick(item.id) }}>同意</a>
|
||||
<a className="edu-default-btn edu-greyline-btn ml20 fl" onClick={() => { refuseClick(item.id) }}>拒绝</a>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -129,3 +129,13 @@ span.list-gray {
|
|||
.failByPression .ant-modal-body .anticon, .center-right-but .ant-input-search-icon:hover, .center-content .ant-pagination-item-active a{
|
||||
color: #4154f1;
|
||||
}
|
||||
.go_profiles .ant-modal-body{
|
||||
text-align: center;
|
||||
.anticon{
|
||||
color: #4154f1;
|
||||
margin-left: 30px;
|
||||
}
|
||||
.ant-modal-confirm-btns{
|
||||
float: none;
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -232,14 +232,14 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
title: '评审规则',
|
||||
dataIndex: 'ruleEditedCount',
|
||||
render: (text, record) => {
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewRules(record)}}>查看</Button> : record.expertReview && (record.status === 1 || record.status === 3) ? <Link className="line_1 primary-link" to={`/expert/admin/task/review/rules/${1}/${record.id}/?status=${record.status}&name=${record.name}&createdAt=${record.createdAt}&collectingEndTime=${record.collectingEndTime}&choosingDays=${record.choosingDays}`}>编辑</Link> : <span className='gary_span'>编辑</span>
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewRules(record)}}>查看</Button> : record.expertReview && (record.status === 1 || record.status === 3) ? <Link className="line_1 primary-link" to={`/managements/expert/task/review/rules/${1}/${record.id}/?status=${record.status}&name=${record.name}&createdAt=${record.createdAt}&collectingEndTime=${record.collectingEndTime}&choosingDays=${record.choosingDays}`}>编辑</Link> : <span className='gary_span'>编辑</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '专家选取',
|
||||
dataIndex: 'expertSelectedCount',
|
||||
render: (text, record) => {
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewExperts(record)}}>查看</Button> : record.expertReview && (record.status === 1 || record.status === 3) ? <Link className="line_1 primary-link" to={`/expert/admin/task/review/select/${1}/${record.id}/?name=${record.name}`}>选择</Link> : <span className='gary_span'>选择</span>
|
||||
return record.assignRuleAndExperts ? <Button size='small' type="primary" onClick={()=>{viewExperts(record)}}>查看</Button> : record.expertReview && (record.status === 1 || record.status === 3) ? <Link className="line_1 primary-link" to={`/managements/expert/task/review/select/${1}/${record.id}/?name=${record.name}`}>选择</Link> : <span className='gary_span'>选择</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -253,7 +253,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
title: '评审结果',
|
||||
dataIndex: 'expertReview2',
|
||||
render: (text, record) => {
|
||||
return record.assignRuleAndExperts ? <Link className="line_1 primary-link" to={`/expert/admin/task/review/results/${1}/${record.id}/#status=${record.status}&name=${record.name}&taskModeId=${record.taskModeId}`}>查看</Link>:<span className='gary_span'>查看</span>
|
||||
return record.assignRuleAndExperts ? <Link className="line_1 primary-link" to={`/managements/expert/task/review/results/${1}/${record.id}/#status=${record.status}&name=${record.name}&taskModeId=${record.taskModeId}`}>查看</Link>:<span className='gary_span'>查看</span>
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -514,7 +514,7 @@ export default Form.create()(({ form, showNotification, match, history, state })
|
|||
|
||||
function setCurPage1(page){
|
||||
setCurPage(page);
|
||||
window.location.href=`/task/taskAdmin#page=${page}`;
|
||||
window.location.href=`/managements/task/taskAdmin#page=${page}`;
|
||||
}
|
||||
|
||||
// 改变排序字段
|
||||
|
|
|
@ -1,136 +0,0 @@
|
|||
import React from "react";
|
||||
|
||||
import { Route, Switch } from "react-router-dom";
|
||||
import Loadable from "react-loadable";
|
||||
import Loading from "../../Loading";
|
||||
import AdminRouter from "../components/adminRouter";
|
||||
|
||||
|
||||
const TaskManage = Loadable({
|
||||
loader: () => import("./taskManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const PaperManage = Loadable({
|
||||
loader: () => import("./paperManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const PaperComplain = Loadable({
|
||||
loader: () => import("./paperComplain"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const ProofManage = Loadable({
|
||||
loader: () => import("./proofManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const PublicityComplain = Loadable({
|
||||
loader: () => import("./publicityComplain"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const AgreementManage = Loadable({
|
||||
loader: () => import("./agreementManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const PayProof = Loadable({
|
||||
loader: () => import("./payProof"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const TaskAdmin = Loadable({
|
||||
loader: () => import("./taskAdmin"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const DelayManage = Loadable({
|
||||
loader: () => import("./delayManage"),
|
||||
loading: Loading,
|
||||
});
|
||||
|
||||
const AdminPage = (propsF) => {
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<AdminRouter {...propsF} />
|
||||
<Switch {...propsF}>
|
||||
{/* 任务管理审核 */}
|
||||
<Route
|
||||
path="/task/taskManage/:publishMode"
|
||||
render={(props) => (
|
||||
<TaskManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 成果管理审核 */}
|
||||
<Route
|
||||
path="/task/paperManage"
|
||||
render={(props) => (
|
||||
<PaperManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 成果申诉管理审核 */}
|
||||
<Route
|
||||
path="/task/paperComplain"
|
||||
render={(props) => (
|
||||
<PaperComplain {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 公示期成果申诉管理审核 */}
|
||||
<Route
|
||||
path="/task/publicityComplain"
|
||||
render={(props) => (
|
||||
<PublicityComplain {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 佐证管理审核 */}
|
||||
<Route
|
||||
path="/task/proofManage"
|
||||
render={(props) => (
|
||||
<ProofManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员协议审核 */}
|
||||
<Route
|
||||
path="/task/agreementManage"
|
||||
render={(props) => (
|
||||
<AgreementManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员上传支付凭证 */}
|
||||
<Route
|
||||
path="/task/payProof"
|
||||
render={(props) => (
|
||||
<PayProof {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 管理员任务列表 */}
|
||||
<Route
|
||||
path="/task/taskAdmin"
|
||||
render={(props) => (
|
||||
<TaskAdmin {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
|
||||
{/* 延期管理 */}
|
||||
<Route
|
||||
path="/task/delayManage"
|
||||
render={(props) => (
|
||||
<DelayManage {...propsF} {...props} />
|
||||
)}
|
||||
></Route>
|
||||
</Switch>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
// }
|
||||
export default AdminPage;
|
|
@ -11,7 +11,7 @@ import '../index.scss';
|
|||
const Search = Input.Search;
|
||||
|
||||
|
||||
export default ({ history, current_user, showLoginDialog, location }) => {
|
||||
export default ({ history, current_user, showLoginDialog, location, mygetHelmetapi }) => {
|
||||
// console.log(current_user);
|
||||
|
||||
let initType = getUrlToken('type', location.search) || '';
|
||||
|
@ -147,7 +147,7 @@ export default ({ history, current_user, showLoginDialog, location }) => {
|
|||
if (res) {
|
||||
if (res.message === 'success') {
|
||||
history.push("/task/taskAdd");
|
||||
} else if (res.message === '主体信息未认证') {
|
||||
} else if (res.message === '未进行实体认证') {
|
||||
Modal.info({
|
||||
title: '因为以下原因,您暂时不能进行本操作',
|
||||
content: <div className="mt10">
|
||||
|
@ -157,9 +157,10 @@ export default ({ history, current_user, showLoginDialog, location }) => {
|
|||
</div>
|
||||
</div>,
|
||||
onOk: () => {
|
||||
window.location.href = `/users/${current_user.login}/profiles`;
|
||||
window.location.href = mygetHelmetapi && mygetHelmetapi.main_web_site_url + `/users/${current_user.login}/profiles`;
|
||||
},
|
||||
okText: '立即完善',
|
||||
className: 'go_profiles'
|
||||
});
|
||||
} else {
|
||||
Modal.info({
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import React, { Component } from 'react';
|
||||
import { Base64 } from 'js-base64';
|
||||
|
||||
import Dialog from 'material-ui/Dialog';
|
||||
import { notification } from 'antd';
|
||||
|
@ -367,7 +368,7 @@ class LoginDialog extends Component {
|
|||
let url = '/accounts/login.json'
|
||||
axios.post(url, {
|
||||
login: newloginValue,
|
||||
password: newpassValue,
|
||||
password: Base64.encode(newpassValue),
|
||||
autologin: isGoingValue
|
||||
}
|
||||
).then((response) => {
|
||||
|
|
|
@ -2,7 +2,7 @@ import React from "react";
|
|||
import Login from "./Login";
|
||||
import Register from "./Register";
|
||||
import ResetPassword from "./ResetPassword";
|
||||
import logo from './img/logo.png';
|
||||
import logo from './img/logo.svg';
|
||||
import banner from './img/banner.png';
|
||||
import ball from './img/ball.png';
|
||||
import img1 from './img/img1.png';
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="88" viewBox="0 0 400 88">
|
||||
<defs>
|
||||
<linearGradient id="linear-gradient" y1="0.501" x2="1" y2="0.501" gradientUnits="objectBoundingBox">
|
||||
<stop offset="0" stop-color="#6dffff"/>
|
||||
<stop offset="1" stop-color="#0080ff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="logo" transform="translate(-181 -101)">
|
||||
<rect id="矩形_1" data-name="矩形 1" width="400" height="88" transform="translate(181 101)" fill="#fff" opacity="0"/>
|
||||
<g id="顶部logo" transform="translate(181.055 106.72)">
|
||||
<path id="形状" d="M64.185,77.408H51.334V0h8.379V69.74h4.473v7.668Zm10.223-8.6,0,0-6.029-3.653V10.536l6.033-3.655V68.809Zm-38.624-.144V17.273l-3.337-1.217V6.881l12.71,7.382v6.953L41.891,20V65.511l-6.1,3.152ZM22.152,60.493V17.059L28.9,20.427v36.7l-6.742,3.365Zm69.793,0h0l-3.051-.5L85.2,53.9v3.941l-2.343-1.217V20.856l2.84-1.433,3.265,4.445-.072-5.734,3.054-1.147V60.493ZM.072,57.841H0V23.295l14.626,4.874v5.806L5.68,32.326V47.52L10.508,45.3V40.5H7.74V35.551l6.957.715V50.388L.073,57.84Zm120.7-.142h-.005l-9.226-.432-5.678-7.382v4.946l-5.894-1.219V27.881l5.894-1.433v4.8l5.325-7.169,8.021-.859L108.417,40.354l12.351,17.341Z" transform="translate(0 0)" fill="url(#linear-gradient)"/>
|
||||
<path id="形状-2" data-name="形状" d="M192.836,66.37l0,0-1.63-1.215a16.1,16.1,0,0,0,1.136-2.222A15.2,15.2,0,0,0,193,61.32c.04-.111.08-.22.12-.326a12.573,12.573,0,0,0,.567-1.934l1.918.5a4.741,4.741,0,0,0-.142.646c-.066.2-.132.414-.205.652-.085.276-.179.58-.292.925a22.742,22.742,0,0,1-.852,2.15,27.108,27.108,0,0,1-1.278,2.434ZM64.824,66.3h0l-.991-.356-.924-.358c.142-.571.253-1.115.351-1.595.051-.248.1-.482.146-.7.085-.423.144-.847.207-1.3.044-.318.09-.645.148-1l.01-.12c.068-.806.132-1.567.132-2.388V50.6h6.888l1.491-2.222H66.1c-.237.359-.453.677-.645.957-.154.226-.294.43-.419.62-.1.124-.188.23-.263.32-.146.174-.234.279-.234.326l-1.491-1.5c.418-.565.851-1.148,1.136-1.577.172-.3.369-.607.578-.927.137-.211.277-.425.416-.65a14.379,14.379,0,0,0,.713-1.361c.071-.149.14-.293.209-.432l1.777,1a3.542,3.542,0,0,1-.31.7c-.042.079-.082.157-.118.229h7.668v1.718L73.272,50.53h1.136V50.1H76.4V63.646a2.617,2.617,0,0,1-.639,1.793,2.039,2.039,0,0,1-1.633.718H72.989V63.934h1.136c.191,0,.283-.117.283-.358V61.712H71v3.943H69.013V61.712H65.676c-.043.386-.11.738-.174,1.08-.043.226-.083.439-.112.641a8.225,8.225,0,0,1-.173.91c-.042.181-.082.352-.11.522-.071.437-.143.725-.214,1a2.19,2.19,0,0,0-.07.426Zm6.105-9.317v2.58h3.409v-2.58Zm-5.042.072v2.508h3.054V57.053Zm5.042-4.3v2.006h3.409V52.752Zm-5.042,0v2.006h3.054V52.752ZM188.649,66.3l0,0-1.7-1.142c.058-.118.128-.272.209-.45.117-.256.262-.574.429-.913.288-.584.575-1.234.852-1.934a15.544,15.544,0,0,0,.611-1.811q.05-.172.1-.339a7.222,7.222,0,0,0,.283-2.006V44.511h15.62v2.22h-13.7V57.555a8.817,8.817,0,0,1-.211,1.862,19.834,19.834,0,0,1-.5,1.937c-.208.627-.418,1.192-.622,1.738l-.019.052a16.993,16.993,0,0,1-.639,1.577c-.113.231-.207.442-.29.628-.073.162-.141.314-.206.447a2.02,2.02,0,0,0-.211.5Zm14.554-.07v0l-2.342-6.449,1.777-.862,2.413,6.451-1.844.86Zm-6.036,0h-1.491V64.006h1.491a.259.259,0,0,0,.214-.072.266.266,0,0,0,.072-.216V58.486h-4.828V48.953h3.123l1.208-2.222,1.7,1.219-.567,1h4.189v-.5h1.988v7.526a2.635,2.635,0,0,1-.639,1.793,2,2,0,0,1-1.442.726,1.727,1.727,0,0,1-.193-.011H199.44v5.232a2.627,2.627,0,0,1-.639,1.793A2.313,2.313,0,0,1,197.167,66.229Zm-2.554-11.182v1.289h7.382c.214,0,.286-.072.286-.286v-1Zm0-3.8v1.5h7.668v-1.5Zm-9.87,14.981h0l-1.772-.932,3.407-7.884,1.846.931-3.478,7.884Zm-124.25,0h-4.4v-9.1c-.142.214-.286.433-.425.646l-.121.183c-.1.156-.2.309-.306.46l-1.561-1.361A12.764,12.764,0,0,0,55.1,54.545l.012-.029c.345-.837.7-1.7.912-2.409.2-.746.339-1.293.5-1.934a5.114,5.114,0,0,0,.211-1V47.376H54.812V45.154h8.237v2.222h-4.4v2.078c0,.048-.032.224-.1.575-.032.174-.071.386-.117.644a22.027,22.027,0,0,1-.78,2.8h3.123v-.43h1.988V63.718a2.617,2.617,0,0,1-.639,1.793A2.039,2.039,0,0,1,60.493,66.229ZM57.936,55.762v8.316h2.415c.212,0,.283-.073.283-.288V55.762ZM167.774,66.157h-1.988V56.05h-8.379a17.373,17.373,0,0,1-1.064,3.869c-.455,1.111-.906,2.189-1.421,3.154-.518.9-.935,1.6-1.277,2.15-.528.62-.639.811-.639.862l-1.563-1.433c.007-.01.215-.289.5-.718.292-.443.671-1.135,1.066-1.865a24.842,24.842,0,0,0,1.277-2.722,23.343,23.343,0,0,0,1.064-3.37h-5.181V53.756h5.467a1.614,1.614,0,0,0,.07-.574V47.235h-4.045V45.012h19.6v2.222h-3.479v6.593h5.042V56.05h-5.042V66.157ZM157.691,47.235v5.947a1.447,1.447,0,0,0-.07.574h8.093V47.235ZM87.9,66.157h0v0l-.281-1.073-.283-1.075a5.866,5.866,0,0,0,.78-.288c.449-.193,1.022-.45,1.918-.859.636-.321,1.448-.79,2.485-1.433a17.173,17.173,0,0,0,2.626-2.009H87.259V57.2h9.87a13.358,13.358,0,0,0,.78-1.363,8.376,8.376,0,0,0,.569-1.433v-4.73h1.988V54.9a6,6,0,0,1-.994,2.294H109.2v2.22h-8.1l7.882,4.8-.993,1.934-8.452-5.16.783-1.577h-2.2A18.535,18.535,0,0,1,96.063,61.5c-.605.49-1.325,1.03-2.2,1.649a16.9,16.9,0,0,1-2.132,1.291c-.247.125-.475.248-.694.368a9.545,9.545,0,0,1-1.152.563,10.6,10.6,0,0,1-1.066.463c-.1.038-.193.074-.281.11A2.943,2.943,0,0,1,87.9,66.157Zm40.328-4.946a3.976,3.976,0,0,1-3.9-3.943,3.905,3.905,0,1,1,7.81,0A3.977,3.977,0,0,1,128.226,61.21ZM94.572,56.765h0l-5.322-2.435.711-2.078,5.325,2.436-.71,2.076Zm165.006-.358H218.966V54.831h40.612v1.577Zm-218.469,0H.5V54.831H41.109v1.577Zm145.764-.5,0,0-3.618-3.725,1.277-1.649,3.692,3.727L186.874,55.9ZM96.845,54.044h0L91.52,51.533l.78-2.078,5.325,2.58-.779,2.006Zm-7.457-2.8H87.4V46.373h9.942L96.7,45.012l1.774-1,1.064,2.436h7.526v-.43h1.988v5.16h-1.988V48.6H89.388v2.652Zm97.484-1.291,0,0-3.69-3.725,1.28-1.646,3.692,3.725-1.278,1.646ZM25.985,33.9H0V.144H41.394l-2.557,4.37v.072h-26.7V29.53h17.4v-11.9H20.8V13.188H41.25V33.9l-11.713,0V30.319L25.986,33.9Zm207.676-.07h0l-11.356,0V.072h11.358v18.2l11.005-8.17h14.059L245.732,20.141l12.706,13.685-12.706,0L233.661,21.217V33.833Zm-66.1,0H156.2V10.106h11.36V33.831Zm-24.354,0h-31.1V.072h11.857V29.458h21.725l-2.484,4.372Zm-44.587,0H79.946V14.407H73.911V10.178h6.036V2.436h11.36v7.742H101.6l-2.84,4.229H91.307V29.746h9.8L98.62,33.829Zm-35.287,0H51.972V10.106h11.36V33.831Zm148.39-.144H200.5V10.034l-3.9,4.229h-7.1V33.687H178.141V10.034h33.582V33.687ZM167.56,7.31H156.2V0h11.36V7.31Zm-104.228,0H51.972V0h11.36V7.31Z" transform="translate(140.368 8.673)" fill="#fffdfd"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.2 KiB |
|
@ -581,11 +581,28 @@ class NewHeader extends Component {
|
|||
|
||||
matchpaths = (url) => {
|
||||
const { match } = this.props;
|
||||
|
||||
let pathname=sessionStorage.pathname;
|
||||
if(url){
|
||||
if (match.path.indexOf(url) > -1) {
|
||||
if (url.indexOf('forums') > -1 && match.path.indexOf('forums') > -1) {
|
||||
return true
|
||||
}else {
|
||||
// 开源项目,路由改版后,比较麻烦,因此使用多个进行判断
|
||||
} else if (url.indexOf('explore') > -1 && match.path.indexOf('explore') > -1) {
|
||||
return true
|
||||
// 开源项目,路由改版后,比较麻烦,因此使用多个进行判断
|
||||
} else if (url.indexOf('explore') > -1 && match.url.indexOf(pathname) > -1) {
|
||||
return true
|
||||
// 公告
|
||||
} else if (url.indexOf('/notice') > -1 && match.path.indexOf('/notice') > -1) {
|
||||
return true
|
||||
// 创客
|
||||
} else if (url.indexOf('/task') > -1 && match.path.indexOf('/task') > -1) {
|
||||
return true
|
||||
// 管理
|
||||
} else if (url.indexOf('/managements') > -1 && match.path.indexOf('/managements') > -1) {
|
||||
return true
|
||||
} else if (['http://117.50.100.12:8080','https://osredm.com','http://111.8.36.180:8000','http://localhost:3007'].includes(url) && match.path === '/') {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
@ -727,7 +744,7 @@ class NewHeader extends Component {
|
|||
var wl = waiLian && waiLian.length>0;
|
||||
return (
|
||||
<li key={key} onClick={() => this.headtypesonClick(item.link, true)} className={`${this.matchpaths(item.link) === true ? 'pr active' : 'pr'}`} style={!is_hidden ? { display: 'flex' } : { display: 'none' }}>
|
||||
<a href={new_link} target={wl ? "_self":"_blank"}>{item.name}</a>
|
||||
<a href={new_link}>{item.name}</a>
|
||||
</li>
|
||||
)
|
||||
})
|
||||
|
@ -835,7 +852,7 @@ class NewHeader extends Component {
|
|||
{
|
||||
settings && settings.personal && settings.personal.length > 0 && settings.personal.map((item,key)=>{
|
||||
return(
|
||||
<li key={key}><a href={item.url} target="_blank">{item.name}</a></li>
|
||||
<li key={key}><a href={item.url}>{item.name}</a></li>
|
||||
)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
.head-nav ul#header-nav li:hover a, .head-nav ul#header-nav li.active a{
|
||||
color: #1484EF;
|
||||
color: #466AFF;
|
||||
}
|
||||
.head-nav ul#header-nav li.active a::after{
|
||||
content: "";
|
||||
width: 100%;
|
||||
height:2px;
|
||||
background-color: #1484EF;
|
||||
background-color: #466AFF;
|
||||
left:0px;
|
||||
bottom: 12px;
|
||||
position: absolute;
|
||||
margin-left: 0;
|
||||
}
|
||||
.login-box{
|
||||
font-size: 15px;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import React, {Component} from 'react';
|
||||
import {setmiyah,broadcastChannelPostMessage} from 'educoder';
|
||||
import {Tabs, Input, Checkbox, Button, notification,Menu} from 'antd';
|
||||
import { Base64 } from 'js-base64';
|
||||
import passopen from '../../../src/images/login/passopen.png';
|
||||
import passoff from '../../../src/images/login/passoff.png';
|
||||
import axios from 'axios';
|
||||
|
@ -351,7 +352,7 @@ class LoginRegisterComponent extends Component {
|
|||
var url = "/accounts/login.json";
|
||||
axios.post(url, {
|
||||
login: this.state.login,
|
||||
password: this.state.password,
|
||||
password: Base64.encode(this.state.password),
|
||||
}).then((response) => {
|
||||
|
||||
if (response === undefined) {
|
||||
|
|
Loading…
Reference in New Issue