Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_cs
hjm 5 years ago
commit cd15f8f42b

@ -5,10 +5,13 @@
<!-- width=device-width, initial-scale=1 , shrink-to-fit=no -->
<!-- <meta name="viewport" content=""> -->
<meta name="theme-color" content="#000000">
<!--
manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
-->
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<!--
manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<!--

@ -498,7 +498,7 @@ class Exercise extends Component{
{/*}*/}
</p>
<div className="clearfix pl30 pr30">
<p className="fl font-16" style={{"marginTop":"27px"}}>
<p className="fl font-14" style={{"marginTop":"27px"}}>
<span className="mr20">{exercises_counts && exercises_counts.exercises_total_counts}个试卷</span>
<span className="mr20">已发布{exercises_counts && exercises_counts.exercises_published_counts}</span>
<span>未发布{exercises_counts && exercises_counts.exercises_unpublish_counts}</span>

@ -50,7 +50,8 @@ class GraduationTasksnew extends Component {
}
Commoninterface =(fileList)=>{
let coursesId=this.props.match.params.coursesId;
let category_id=this.props.match.params.category_id;
let listid = []
for (var list of fileList) {
@ -90,7 +91,8 @@ class GraduationTasksnew extends Component {
// GraduationTasksnewtype = false;
// this.goback();
if(response!==undefined){
this.goback()
// this.goback()
this.props.history.replace(`/courses/${coursesId}/graduation_tasks/${category_id}/detail/${response.data.task_id}/questions`);
}
// }
}).catch((error) => {

@ -958,6 +958,7 @@ class GraduationTaskssettinglist extends Component{
}
console.log(this.props.questionslist.status)
return(
<React.Fragment>
@ -1100,7 +1101,7 @@ class GraduationTaskssettinglist extends Component{
this.props.isAdmin() ?
<div className="stud-class-set">
<div className="clearfix edu-back-white" >
<ul className="clearfix" style={{padding:'20px 30px 10px 30px'}}>
{this.props.questionslist&&this.props.questionslist.status===0?"":<ul className="clearfix" style={{padding:'20px 30px 10px 30px'}}>
<li className="clearfix">
<span className="fl mr10 color-grey-8">教师评阅</span>
@ -1200,9 +1201,9 @@ class GraduationTaskssettinglist extends Component{
</li>}
</ul>
</ul>}
<div id="graduation_work_list" style={{padding:'0px 30px 10px 30px'}}>
{this.props.questionslist&&this.props.questionslist.status===0?"":<div id="graduation_work_list" style={{padding:'0px 30px 10px 30px'}}>
<style>
{`
.edu-menu-lists li:hover {
@ -1251,7 +1252,7 @@ class GraduationTaskssettinglist extends Component{
</div>
:""}
</div>
</div>}
{
JSON.stringify(data)==="[]" ?

@ -517,7 +517,7 @@ class Poll extends Component{
}
</p>
<div className="clearfix pl30 pr30">
<p className="fl font-16" style={{"marginTop":"27px"}}>
<p className="fl font-14" style={{"marginTop":"27px"}}>
<span className="mr20">{polls_counts && polls_counts.polls_total_counts}个问卷</span>
<span className="mr20">已发布{polls_counts && polls_counts.polls_published_counts}</span>
<span>未发布{polls_counts && polls_counts.polls_unpublish_counts}</span>

@ -1,330 +1,332 @@
import React,{ Component } from "react";
import {Checkbox,Input,Table, Pagination} from "antd";
import { WordsBtn } from 'educoder'
import moment from 'moment';
import CheckAllGroup from '../common/button/CheckAllGroup'
import NoneData from "../coursesPublic/NoneData"
import '../css/members.css'
import '../css/busyWork.css'
import './pollStyle.css'
import axios from 'axios'
const Search=Input.Search;
function formatDuring(mss){
var days = parseInt(mss / (1000 * 60 * 60 * 24));
var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
return days + "天" + hours + "小时" + minutes + "分";
}
class PollDetailTabFirst extends Component{
constructor(props){
super(props);
this.state={
order:"end_at",
search:undefined,
commit_status:[],
poll_group_id:[],
page:1,
limit:20,
dataInfo:undefined,
data:undefined,
poll_types:undefined,
course_groups:undefined,
options_Class:[],
poll_end_at:""
}
}
// 搜索框搜索
inputStudent=(e)=>{
this.setState({
search:e.target.value
})
}
searchInfo=()=>{
let{order,search,commit_status,poll_group_id,page}=this.state
this.getTableList(order,search,commit_status,poll_group_id,page);
}
// 获取接口数据
getTableList=(order,search,commit_status,poll_group_id,page)=>{
let pollId=this.props.match.params.pollId;
let courseid=this.props.match.params.coursesId;
let url=`/polls/${pollId}/poll_lists.json`;
axios.get((url),{
params:{
limit:this.state.limit,
order:order,
search:search,
commit_status:commit_status,
poll_group_id:poll_group_id,
page:page
}
}).then((result)=>{
if(result){
let list=[];
let users=result.data.poll_users;
let{page,limit}=this.state;
if(users.length!=0){
for(var i=0;i<users.length;i++){
list.push({
No:(parseInt(page)-1)*parseInt(limit)+(i+1),
name:users[i].user_name,
StudentNo:users[i].student_id,
classes:users[i].user_group_name,
status:users[i].commit_status ,
time:users[i].end_at ,
operation:users[i].commit_status,
login:users[i].login
})
}
}
let classes=[];
let groups=result.data.course_groups;
if(groups){
for(var i=0;i<groups.length;i++){
classes.push({
value:groups[i].course_group_id,
label:groups[i].group_group_name+"("+groups[i].count+")"
})
}
}
let endTime=result.data.poll_types.poll_end_time;
if(endTime!=undefined && endTime!=""){
let t= moment(endTime,'YYYY-MM-DD HH:mm') - moment();
endTime=t > 0 ? formatDuring(t) : "0";
}
this.setState({
poll_end_at:endTime,
dataInfo:result.data.poll_users,
data:list,
poll_types:result.data.poll_types,
course_groups:result.data.course_groups,
options_Class:classes
})
}
}).catch((error)=>{
console.log(error);
})
}
componentDidMount(){
let {order,search,commit_status,poll_group_id,page}=this.state;
this.getTableList(order,search,commit_status,poll_group_id,page);
}
// 翻页
changePage=(pageNumber)=>{
this.setState({
page:pageNumber
})
let {order,search,commit_status,poll_group_id}=this.state;
this.getTableList(order,search,commit_status,poll_group_id,pageNumber);
}
//排序
changeOrder=(order)=>{
this.setState({
order:order
})
let {search,commit_status,poll_group_id,page}=this.state;
this.getTableList(order,search,commit_status,poll_group_id,page);
}
//选择分班情况
classOptionsChange = (values,all) => {
let status= all == false ? values : [];
this.setState({
poll_group_id:status
})
let {order,search,commit_status,page}=this.state;
this.getTableList(order,search,commit_status,status,page);
}
//选择提交状态
statusOptionChange=(values,all)=>{
let status= all == false ? values : [];
this.setState({
commit_status:status
})
let {order,search,poll_group_id,page}=this.state;
this.getTableList(order,search,status,poll_group_id,page);
}
render(){
let {order,search,data,page,limit,course_groups,poll_types,options_Class,dataInfo,poll_end_at}=this.state;
const isAdmin =this.props.isAdmin();
const isStudent = this.props.isStudent();
//分班
const options_status = [
{ label: `未提交(${poll_types && poll_types.unanswer_users})`, value: '0' },
{ label: `按时提交(${poll_types && poll_types.answer_users})`, value: '1' }
];
// 表格
let columns = [{
title: '序号',
dataIndex: 'No',
key: 'No',
className:"edu-txt-center",
width:110
}, {
title: '姓名',
dataIndex: 'name',
key: 'name',
className:"edu-txt-center",
width:160
}, {
title: '学号',
dataIndex: 'StudentNo',
key: 'StudentNo',
className:"edu-txt-center",
render:(StudentNo,item,index)=>{
return(
item.StudentNo ? <span>{item.StudentNo}</span> : "--"
)
}
}, {
title: '分班',
key: 'classes',
dataIndex: 'classes',
width:160,
className:poll_types && poll_types.groups_count > 0 ? "edu-txt-center":"edu-txt-center none",
render:(classes,item,index)=>{
return(
item.classes ? <span>{item.classes}</span> : <span className="color-grey-9">--</span>
)
}
}, {
title: '提交状态',
dataIndex: 'status',
key: 'status',
className:"edu-txt-center",
width:160,
render:(status,item,index)=>{
return(
item.status == 1 ?<span className='color-green'>按时提交</span>:<span></span>
)
}
}, {
title: '提交时间',
dataIndex: 'time',
key: 'time',
className:"edu-txt-center",
width:160,
render:(time,item,index)=>{
return(
item.time == null ? <span className="color-grey-9">--</span> : moment(item.time).format('YYYY-MM-DD HH:mm')
)
}
},{
title: '操作',
dataIndex: 'operation',
key: 'operation',
className:"edu-txt-center",
width:120,
render:(operation,item,index)=>{
return(
item.status == 1 ? <WordsBtn style="blue" to={`/courses/${this.props.match.params.coursesId}/polls/${this.props.match.params.pollId}/users/${item.login}`}>查看</WordsBtn>:<span className="color-grey-9">--</span>
)
}
}];
// 非课堂成员不显示学号列
let isNotMember =this.props.isNotMember();
if(isNotMember){
columns.some((item,key)=> {
if (item.title === "学号") {
columns.splice(key, 1)
return true
}
}
)
}
// un_anonymous true为实名问卷显示操作列否则隐藏
if(poll_types && (isNotMember || poll_types.un_anonymous == false)){
columns.some((item,key)=> {
if (item.title === "操作") {
columns.splice(key, 1)
return true
}
}
)
}
return(
<div>
{
isAdmin ?
<div className="pt30 pl30 clearfix edu-back-white">
<div className="pr30 clearfix">
<p className="fl mt5">
<CheckAllGroup options={options_status} label={'答题状态:'} onChange={this.statusOptionChange}></CheckAllGroup>
</p>
<div className="fr searchView height30">
<Search
value={search}
placeholder="请输入姓名或学号搜索"
onInput={this.inputStudent}
onSearch={this.searchInfo}
></Search>
</div>
</div>
{
course_groups && course_groups.length > 1 ?
<div className="mt15">
<CheckAllGroup options={options_Class} label={'分班情况:'} onChange={this.classOptionsChange}></CheckAllGroup>
</div>
:""
}
</div>:""
}
<div className="clearfix padding20-30 edu-back-white">
{
isAdmin ? <span className="fl color-grey-3 font-12"><span className="color-orange-tip">{poll_types && poll_types.total_users}</span>{poll_types && poll_types.poll_users_count} </span> :""
}
{
isStudent ?
<span className="fl color-grey-3 font-12">
{poll_types && poll_types.answer_users===undefined?"":<span className="mr15"><span className="color-orange-tip">{poll_types && poll_types.answer_users}</span> </span>}
{poll_types && poll_types.unanswer_users===undefined?"":<span className="mr15">{poll_types && poll_types.unanswer_users} 未交</span>}
{
poll_end_at != "0" ?
<span className="color-grey-9"> 剩余提交时间<span className="color-orange-tip">{poll_end_at}</span></span>
:""
}
</span>
:""
}
{
isAdmin &&
<div className="fr">
<li className="drop_down">
<span className="color-grey-9 font-12">{order=="end_at"?"提交时间":"学生学号"}</span><i className="iconfont icon-xiajiantou font-12 ml2 color-grey-6"></i>
<ul className="drop_down_normal">
<li onClick={()=>this.changeOrder("end_at")}>提交时间</li>
<li onClick={()=>this.changeOrder("student_id")}>学生学号</li>
</ul>
</li>
</div>
}
</div>
<div className="edu-table edu-back-white minH-560">
{
data && data.length>0 ?<Table columns={columns} dataSource={data} pagination={false}></Table> :<NoneData></NoneData>
}
</div>
{
poll_types && poll_types.total_users && poll_types.total_users > limit ?
<div className="edu-txt-center mt30 mb50">
<Pagination showQuickJumper current={page} onChange={this.changePage} pageSize={limit} total={poll_types.total_users}></Pagination>
</div>:""
}
</div>
)
}
}
import React,{ Component } from "react";
import {Checkbox,Input,Table, Pagination} from "antd";
import { WordsBtn } from 'educoder'
import moment from 'moment';
import CheckAllGroup from '../common/button/CheckAllGroup'
import NoneData from "../coursesPublic/NoneData"
import '../css/members.css'
import '../css/busyWork.css'
import './pollStyle.css'
import axios from 'axios'
const Search=Input.Search;
function formatDuring(mss){
var days = parseInt(mss / (1000 * 60 * 60 * 24));
var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
return days + "天" + hours + "小时" + minutes + "分";
}
class PollDetailTabFirst extends Component{
constructor(props){
super(props);
this.state={
order:"end_at",
search:undefined,
commit_status:[],
poll_group_id:[],
page:1,
limit:20,
dataInfo:undefined,
data:undefined,
poll_types:undefined,
course_groups:undefined,
options_Class:[],
poll_end_at:""
}
}
// 搜索框搜索
inputStudent=(e)=>{
this.setState({
search:e.target.value
})
}
searchInfo=()=>{
let{order,search,commit_status,poll_group_id,page}=this.state
this.getTableList(order,search,commit_status,poll_group_id,page);
}
// 获取接口数据
getTableList=(order,search,commit_status,poll_group_id,page)=>{
let pollId=this.props.match.params.pollId;
let courseid=this.props.match.params.coursesId;
let url=`/polls/${pollId}/poll_lists.json`;
axios.get((url),{
params:{
limit:this.state.limit,
order:order,
search:search,
commit_status:commit_status,
poll_group_id:poll_group_id,
page:page
}
}).then((result)=>{
if(result){
let list=[];
let users=result.data.poll_users;
let{page,limit}=this.state;
if(users.length!=0){
for(var i=0;i<users.length;i++){
list.push({
No:(parseInt(page)-1)*parseInt(limit)+(i+1),
name:users[i].user_name,
StudentNo:users[i].student_id,
classes:users[i].user_group_name,
status:users[i].commit_status ,
time:users[i].end_at ,
operation:users[i].commit_status,
login:users[i].login
})
}
}
let classes=[];
let groups=result.data.course_groups;
if(groups){
for(var i=0;i<groups.length;i++){
classes.push({
value:groups[i].course_group_id,
label:groups[i].group_group_name+"("+groups[i].count+")"
})
}
}
let endTime=result.data.poll_types.poll_end_time;
if(endTime!=undefined && endTime!=""){
let t= moment(endTime,'YYYY-MM-DD HH:mm') - moment();
endTime=t > 0 ? formatDuring(t) : "0";
}
this.setState({
poll_end_at:endTime,
dataInfo:result.data.poll_users,
data:list,
poll_types:result.data.poll_types,
course_groups:result.data.course_groups,
options_Class:classes
})
}
}).catch((error)=>{
console.log(error);
})
}
componentDidMount(){
let {order,search,commit_status,poll_group_id,page}=this.state;
this.getTableList(order,search,commit_status,poll_group_id,page);
}
// 翻页
changePage=(pageNumber)=>{
this.setState({
page:pageNumber
})
let {order,search,commit_status,poll_group_id}=this.state;
this.getTableList(order,search,commit_status,poll_group_id,pageNumber);
}
//排序
changeOrder=(order)=>{
this.setState({
order:order
})
let {search,commit_status,poll_group_id,page}=this.state;
this.getTableList(order,search,commit_status,poll_group_id,page);
}
//选择分班情况
classOptionsChange = (values,all) => {
let status= all == false ? values : [];
this.setState({
poll_group_id:status
})
let {order,search,commit_status,page}=this.state;
this.getTableList(order,search,commit_status,status,page);
}
//选择提交状态
statusOptionChange=(values,all)=>{
let status= all == false ? values : [];
this.setState({
commit_status:status
})
let {order,search,poll_group_id,page}=this.state;
this.getTableList(order,search,status,poll_group_id,page);
}
render(){
let {order,search,data,page,limit,course_groups,poll_types,options_Class,dataInfo,poll_end_at}=this.state;
const isAdmin =this.props.isAdmin();
const isStudent = this.props.isStudent();
//分班
const options_status = [
{ label: `未提交(${poll_types && poll_types.unanswer_users})`, value: '0' },
{ label: `按时提交(${poll_types && poll_types.answer_users})`, value: '1' }
];
// 表格
let columns = [{
title: '序号',
dataIndex: 'No',
key: 'No',
className:"edu-txt-center",
width:110
}, {
title: '姓名',
dataIndex: 'name',
key: 'name',
className:"edu-txt-center",
width:160
}, {
title: '学号',
dataIndex: 'StudentNo',
key: 'StudentNo',
className:"edu-txt-center",
render:(StudentNo,item,index)=>{
return(
item.StudentNo ? <span>{item.StudentNo}</span> : "--"
)
}
}, {
title: '分班',
key: 'classes',
dataIndex: 'classes',
width:160,
className:poll_types && poll_types.groups_count > 0 ? "edu-txt-center":"edu-txt-center none",
render:(classes,item,index)=>{
return(
item.classes ? <span>{item.classes}</span> : <span className="color-grey-9">--</span>
)
}
}, {
title: '提交状态',
dataIndex: 'status',
key: 'status',
className:"edu-txt-center",
width:160,
render:(status,item,index)=>{
return(
item.status == 1 ?<span className='color-green'>按时提交</span>:<span></span>
)
}
}, {
title: '提交时间',
dataIndex: 'time',
key: 'time',
className:"edu-txt-center",
width:160,
render:(time,item,index)=>{
return(
item.time == null ? <span className="color-grey-9">--</span> : moment(item.time).format('YYYY-MM-DD HH:mm')
)
}
},{
title: '操作',
dataIndex: 'operation',
key: 'operation',
className:"edu-txt-center",
width:120,
render:(operation,item,index)=>{
return(
item.status == 1 ? <WordsBtn style="blue" to={`/courses/${this.props.match.params.coursesId}/polls/${this.props.match.params.pollId}/users/${item.login}`}>查看</WordsBtn>:<span className="color-grey-9">--</span>
)
}
}];
// 非课堂成员不显示学号列
let isNotMember =this.props.isNotMember();
if(isNotMember){
columns.some((item,key)=> {
if (item.title === "学号") {
columns.splice(key, 1)
return true
}
}
)
}
// un_anonymous true为实名问卷显示操作列否则隐藏
if(poll_types && (isNotMember || poll_types.un_anonymous == false)){
columns.some((item,key)=> {
if (item.title === "操作") {
columns.splice(key, 1)
return true
}
}
)
}
console.log(this.props.pollDetail&&this.props.pollDetail.polls_status)
return(
<div>
{
isAdmin ?
this.props.pollDetail&&this.props.pollDetail.polls_status===undefined||this.props.pollDetail&&this.props.pollDetail.polls_status===1?"":<div className="pt30 pl30 clearfix edu-back-white">
<div className="pr30 clearfix">
<p className="fl mt5">
<CheckAllGroup options={options_status} label={'答题状态:'} onChange={this.statusOptionChange}></CheckAllGroup>
</p>
<div className="fr searchView height30">
<Search
value={search}
placeholder="请输入姓名或学号搜索"
onInput={this.inputStudent}
onSearch={this.searchInfo}
></Search>
</div>
</div>
{
course_groups && course_groups.length > 1 ?
<div className="mt15">
<CheckAllGroup options={options_Class} label={'分班情况:'} onChange={this.classOptionsChange}></CheckAllGroup>
</div>
:""
}
</div>:""
}
{this.props.pollDetail&&this.props.pollDetail.polls_status===undefined||this.props.pollDetail&&this.props.pollDetail.polls_status===1?"":<div className="clearfix padding20-30 edu-back-white">
{
isAdmin ? <span className="fl color-grey-3 font-12"><span className="color-orange-tip">{poll_types && poll_types.total_users}</span>{poll_types && poll_types.poll_users_count} </span> :""
}
{
isStudent ?
<span className="fl color-grey-3 font-12">
{poll_types && poll_types.answer_users===undefined?"":<span className="mr15"><span className="color-orange-tip">{poll_types && poll_types.answer_users}</span> </span>}
{poll_types && poll_types.unanswer_users===undefined?"":<span className="mr15">{poll_types && poll_types.unanswer_users} 未交</span>}
{
poll_end_at != "0" ?
<span className="color-grey-9"> 剩余提交时间<span className="color-orange-tip">{poll_end_at}</span></span>
:""
}
</span>
:""
}
{
isAdmin &&
<div className="fr">
<li className="drop_down">
<span className="color-grey-9 font-12">{order=="end_at"?"提交时间":"学生学号"}</span><i className="iconfont icon-xiajiantou font-12 ml2 color-grey-6"></i>
<ul className="drop_down_normal">
<li onClick={()=>this.changeOrder("end_at")}>提交时间</li>
<li onClick={()=>this.changeOrder("student_id")}>学生学号</li>
</ul>
</li>
</div>
}
</div>}
<div className="edu-table edu-back-white minH-560">
{
data && data.length>0 ?<Table columns={columns} dataSource={data} pagination={false}></Table> :<NoneData></NoneData>
}
</div>
{
poll_types && poll_types.total_users && poll_types.total_users > limit ?
<div className="edu-txt-center mt30 mb50">
<Pagination showQuickJumper current={page} onChange={this.changePage} pageSize={limit} total={poll_types.total_users}></Pagination>
</div>:""
}
</div>
)
}
}
export default PollDetailTabFirst;

@ -108,7 +108,7 @@ class CourseSupports extends Component {
id=parseInt(id);
let subindex =e.target.getAttribute("subindex");
debugger
// const url = `/ec_course_supports/edit_require_vs_course?subitem_id=`+id
// axios.get(url)
// .then((response) => {
@ -169,6 +169,27 @@ class CourseSupports extends Component {
}
})
let newnum=0;
data.graduation_subitems.map((item,key)=>{
if(keys===key){
item.course_supports.map((items,keys)=>{
if(items.weights===undefined){
newnum=0
}else{
newnum=newnum+items.weights;
}
})
}
})
newnum= Math.round(newnum*100)/100;
this.setState({
editnum:newnum
})
console.log(newnum)
// $("#school_ListTableLine").show();
// let offsettop=$("#school_ListTableLine").position().top||$("#school_ListTableLine").scrollTop || $("#school_ListTableLine").pageYOffset;
// window.scrollTo(0, offsettop)
@ -231,7 +252,11 @@ class CourseSupports extends Component {
Supportssum:true
})
return
}
}else{
this.setState({
Supportssum:false
})
}
const person = new Object ();
@ -266,7 +291,11 @@ class CourseSupports extends Component {
Supportslist:'权重之和不能大于1',
Supportssum:true
})
}
}else{
this.setState({
Supportssum:false
})
}
}
handleChange=(e)=> {
@ -541,7 +570,7 @@ class CourseSupports extends Component {
</div>
<div className="left operationalter">
{data.is_manager===false?"":<a className="editSubentry" data-tip-down="编辑">
<i className="iconfont icon-bianjidaibeijing color-green" id={item.ec_graduation_subitem_id} subindex={item.sequence_num} onClick={this.EditSupportCourse.bind(this,key)}></i>
<i className="iconfont icon-bianjidaibeijing color-green" id={item.ec_graduation_subitem_id} subindex={item.graduation_requirement_position+"-"+item.position} onClick={this.EditSupportCourse.bind(this,key)}></i>
</a>}
</div>
</div>

@ -766,9 +766,9 @@ submittojoinclass=(value)=>{
/>
</li>
<li className={`${activeMoopCases === true ? 'pr active' : 'pr'}`}> <Link to={`/moop_cases`}>教学案例</Link></li>
<li className={`${activePackages === true ? 'pr active' : 'pr'}`}>
<Link to={'/crowdsourcing'}>众包创新</Link>
</li>
{/*<li className={`${activePackages === true ? 'pr active' : 'pr'}`}>*/}
{/*<Link to={'/crowdsourcing'}>众包创新</Link>*/}
{/*</li>*/}
<li className={`${activeForums === true ? 'active' : ''}`}> <Link to={this.props.Headertop===undefined?"":this.props.Headertop.topic_url}>交流问答</Link></li>
<li
style={{display: this.props.Headertop === undefined ? 'none' : this.props.Headertop.auth===null? 'none' : 'block'}}

Loading…
Cancel
Save