调整合作者

chromesetting
杨树明 5 years ago
parent 984e38c55c
commit cb44790e9e

@ -32,7 +32,7 @@ module.exports = {
// See the discussion in https://github.com/facebookincubator/create-react-app/issues/343.s
// devtool: "cheap-module-eval-source-map",
// 开启调试
devtool: "source-map", // 开启调试
//devtool: "source-map", // 开启调试
// These are the "entry points" to our application.
// This means they will be the "root" imports that are included in JS bundle.
// The first two entry points enable "hot" CSS and auto-refreshes for JS.

@ -748,7 +748,7 @@ submittojoinclass=(value)=>{
return true
} else if (url.startsWith('/courses')&&match.path.startsWith('/courses')) {
return true
}else if (url.startsWith('/competitions')&&match.path.startsWith('/crowdsourcing')) {
}else if (url.startsWith('/competitions')&&match.path.startsWith('/competitions')) {
return true
}else if (url.startsWith('/crowdsourcing')&&match.path.startsWith('/crowdsourcing')) {
return true
@ -789,7 +789,7 @@ submittojoinclass=(value)=>{
let coursestype=false;
let activePackages=false;
let activeMoopCases=false;
let activeCompetitions=false;
if (match.path === '/forums') {
activeForums = true;
@ -803,6 +803,8 @@ submittojoinclass=(value)=>{
activePackages = true;
}else if(match.path.startsWith('/moop_cases')){
activeMoopCases = true;
}else if(match.path.startsWith('/competitions')){
activeCompetitions = true;
}else {
activeIndex = true;
}
@ -1097,7 +1099,7 @@ submittojoinclass=(value)=>{
</li>
{/*<li className=""><a href={"/libraries"}>教学案例</a></li>*/}
<li className="">
<li className={`${activeCompetitions === true ? 'pr active' : 'pr'}`}>
<a href={this.props.Headertop===undefined?"":this.props.Headertop.competitions_url}>在线竞赛</a>
{/*<img className="roundedRectangles"*/}
{/* src={require('./roundedRectangle.png')}*/}

@ -25,14 +25,14 @@ class TPMCollaborators extends Component {
<React.Fragment>
<div className="educontent clearfix mt30 mb80">
<div className="with65 fl edu-back-white" >
<TPMNav
match={match}
user={user}
shixun={shixun}
{...this.props}
is_jupyter={this.props.is_jupyter}
></TPMNav>
<div className={" with65 fl "}>
{/*<TPMNav*/}
{/* match={match}*/}
{/* user={user}*/}
{/* shixun={shixun}*/}
{/* {...this.props}*/}
{/* is_jupyter={this.props.is_jupyter}*/}
{/*></TPMNav>*/}
<Collaborators
{...this.props}
/>

@ -252,6 +252,9 @@ class TPMIndex extends Component {
//右侧数据
let shixunsDetailsURL=`/shixuns/`+id+`/show_right.json`;
axios.get(shixunsDetailsURL).then((response)=> {
if(response.data){
}
this.setState({
TPMRightSectionData: response.data
});

@ -55,6 +55,7 @@ class TPMRightSection extends Component {
}
}
render() {
let {TPMRightSection, clickNewsubscripttype} = this.state;
let {TPMRightSectionData} = this.props
@ -64,17 +65,27 @@ class TPMRightSection extends Component {
{
TPMRightSectionData === undefined ? "" :
<div>
<div className="edu-back-white padding40-20 mb10">
<div className="edu-back-white pd302020zuoze mb10">
<p className="font-16 mb20">创建者</p>
<div className="df">
<a href={TPMRightSectionData===undefined?"":TPMRightSectionData.creator===undefined?"":`/users/${TPMRightSectionData.creator.login}/courses`}>
<img alt="头像" className="radius mr10" height="80" src={getImageUrl(TPMRightSectionData===undefined?"":TPMRightSectionData.creator===undefined?"":'images/'+TPMRightSectionData.creator.image_url+"?1532489442")} width="80" />
<a
href={TPMRightSectionData === undefined ? "" : TPMRightSectionData.creator === undefined ? "" : `/users/${TPMRightSectionData.creator.login}/courses`}>
<img alt="头像" className="radius mr10" height="36"
src={getImageUrl(TPMRightSectionData === undefined ? "" : TPMRightSectionData.creator === undefined ? "" : 'images/' + TPMRightSectionData.creator.image_url + "?1532489442")}
width="36"/>
</a>
<div className="flex1">
<p className="mb20">{TPMRightSectionData===undefined?"":TPMRightSectionData.creator===undefined?"":TPMRightSectionData.creator.name}</p>
<div className="creatorname sortinxdirection space-between">
<div className={"creatornamelist"}>
{TPMRightSectionData === undefined ? "" : TPMRightSectionData.creator === undefined ? "" : TPMRightSectionData.creator.name}
</div>
<div className={"creatornamelist width80center"}>
{TPMRightSectionData.user_shixuns_count}
</div>
</div>
<div className="clearfix">
<span>发布 {TPMRightSectionData.user_shixuns_count}</span>
<span className={"fr color888hezuo"}>发布实训项目</span>
{/*<span className="ml20">粉丝 <span id="user_h_fan_count">{TPMRightSectionData.fans_count}</span></span>*/}
{/* <a href="/watchers/unwatch?className=fr+user_watch_btn+edu-default-btn+edu-focus-btn&amp;object_id=3039&amp;object_type=user&amp;shixun_id=61&amp;target_id=3039" className="fr edu-default-btn user_watch_btn edu-focus-btn" data-method="post" data-remote="true" id="cancel_watch" rel="nofollow">取消关注</a> */}
</div>
@ -85,7 +96,13 @@ class TPMRightSection extends Component {
{
TPMRightSectionData === undefined ? "" : TPMRightSectionData.tags === undefined ? "" : TPMRightSectionData.tags.length === 0 ? "" :
<div className="edu-back-white padding40-20 mb10 relative">
<p className="font-16 mb20">技能标签 <span className="color-grey-c">{TPMRightSectionData.tags.length}</span></p>
<p className="font-16 mb20">
<span>技能标签</span>
<span className={"sortinxdirection space-between fr"}>
<span className="color888hezuo font-12">已获得 {TPMRightSectionData&&TPMRightSectionData.user_tag_count} / {TPMRightSectionData&&TPMRightSectionData.tag_count} </span>
</span>
</p>
<div className={TPMRightSection === false ? "newedbox newedboxheight" : "newedbox newminheight"}>
<div className="clearfix" id="boxheight">
{TPMRightSectionData.tags.map((item, key) => {
@ -93,20 +110,24 @@ class TPMRightSection extends Component {
<span className={item.status === false ? "newedu-filter-btn fl" : "edu-filter-btn29BD8B fl"}
style={{display: item.tag_name === " " || item.tag_name === "" ? "none" : ""}}
key={key}>{item.tag_name}</span>
)})
)
})
}
</div>
</div>
<div className={TPMRightSectionData.tags.length>15&&clickNewsubscripttype===false?"newsubscript mb9 color-grey-9":"newsubscript mb9 color-grey-9 none"}
<div
className={TPMRightSectionData.tags.length > 15 && clickNewsubscripttype === false ? "newsubscript mb9 color-grey-9" : "newsubscript mb9 color-grey-9 none"}
data-tip-down="显示全部"
onClick={()=>this.clickNewsubscript(0)}><span className="mr8">...</span><Icon type="caret-down" />
onClick={() => this.clickNewsubscript(0)}><span className="mr8">...</span><Icon
type="caret-down"/>
</div>
<div className={clickNewsubscripttype===false?"newsubscript mb9 color-grey-9 none":"newsubscript mb9 color-grey-9"}
<div
className={clickNewsubscripttype === false ? "newsubscript mb9 color-grey-9 none" : "newsubscript mb9 color-grey-9"}
data-tip-down="显示全部"
onClick={() => this.clickNewsubscript(1)}><Icon type="caret-up"/>
@ -135,11 +156,13 @@ class TPMRightSection extends Component {
</a>
<div className="ml10 flex1">
<a href={"/paths/"+i.id} target="_blank" data-tip-down={i.name} className="color-grey-6 task-hide mb12 recomment-name">{i.name}</a>
<a href={"/paths/" + i.id} target="_blank" data-tip-down={i.name}
className="color-grey-6 task-hide mb12 recomment-name">{i.name}</a>
<p className="clearfix mt8 font-12 color-grey-B4">
<Tooltip placement="bottom" title={"章节"}>
<span className="mr10 fl squareIconSpan"><i className="iconfont icon-shixun fl mr3"></i>{i.stages_count}</span>
<span className="mr10 fl squareIconSpan"><i
className="iconfont icon-shixun fl mr3"></i>{i.stages_count}</span>
</Tooltip>
{/*<Tooltip placement="bottom" title={"经验值"}>*/}
@ -147,7 +170,8 @@ class TPMRightSection extends Component {
{/*</Tooltip>*/}
<Tooltip placement="bottom" title={"学习人数"}>
<span className="mr10 fl squareIconSpan"><i className="iconfont icon-chengyuan fl mr3"></i>{i.members_count}</span>
<span className="mr10 fl squareIconSpan"><i
className="iconfont icon-chengyuan fl mr3"></i>{i.members_count}</span>
</Tooltip>
</p>
@ -179,7 +203,8 @@ class TPMRightSection extends Component {
</a>
<div className="ml10 flex1">
<Tooltip placement="bottom" title={item.name}>
<a href={"/shixuns/"+item.identifier+"/challenges"} target="_blank" className="color-grey-6 task-hide mb12 recomment-name">{item.name}</a>
<a href={"/shixuns/" + item.identifier + "/challenges"} target="_blank"
className="color-grey-6 task-hide mb12 recomment-name">{item.name}</a>
</Tooltip>
<p className="clearfix mt8 font-12 color-grey-B4">
{item.stu_num} 人学习

@ -11,6 +11,7 @@
margin-right: 10px;
margin-bottom: 9px;
}
.newedbox {
/*flex-wrap: wrap;*/
/*display: -webkit-flex; !* Safari *!*/
@ -19,15 +20,18 @@
position: relative;
overflow: hidden;
}
.newsubscript {
position: absolute;
right: 23px;
bottom: 16px;
cursor: pointer;
}
.newsubscript:hover {
color: deepskyblue;
}
.edu-filter-btn29BD8B {
display: block;
float: left;
@ -40,13 +44,16 @@
margin-right: 10px;
margin-bottom: 9px;
}
.relative {
position: relative;
}
.newedboxheight {
max-height: 177px;
overflow-y: hidden;
}
.newminheight {
/*max-height: 670px;*/
max-height: 300px;
@ -61,19 +68,47 @@
line-height: 9px;
cursor: pointer;
}
.operationalter .delSubentry {
font-size: 15px !important;
line-height: 25px;
}
/*临时的tpi关闭按é®æ ·å¼*/
.headerRight a {
color: #1a3f5f;
}
/*实训做成弹窗a标签样式调整*/
.-task-list-title a:link, .-task-list-title a:visited {color: #bcc6cd;}
.-task-list-title a:link, .-task-list-title a:visited {
color: #bcc6cd;
}
.-task-list-title a:hover {
color: #459be5;
}
.headerLeft .-header-right {
height: 32px;
}
.creatorname {
font-size: 16px;
color: rgba(51, 51, 51, 1);
}
.creatornamelist {
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
cursor: default;
}
.width80center {
width: 80px;
text-align: center;
}
.pd302020zuoze {
padding: 30px 20px 20px;
}

@ -143,8 +143,8 @@
height:34px;
line-height: 34px;
}
.hezuozhe660{
width: 660px;
.hezuozhe630{
width: 630px;
}
.color333hezuo{
@ -154,3 +154,24 @@
.color888hezuo{
color:#888888;
}
.newyslusercjz{
display: inline-block;
position: absolute;
bottom: 0px;
left: -18px;
width: 44px;
height: 18px;
border-radius: 13px;
background: #F38B03;
color: #fff;
}
.newyslusercjztest{
width: 45px;
height: 29px;
font-size: 10px;
color: #fff;
line-height: 18px;
text-align: center;
}

@ -1,17 +1,7 @@
import React, {Component} from 'react';
import { Redirect } from 'react-router';
import {Modal, Button, Radio, Input, Checkbox, message, Spin, Icon, Pagination} from 'antd';
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { CircularProgress } from 'material-ui/Progress';
import {getImageUrl, toPath} from 'educoder'
import axios from 'axios';
@ -53,6 +43,7 @@ class Collaborators extends Component {
limit: 20,
}
}
componentDidMount() {
let id = this.props.match.params.shixunId;
@ -73,11 +64,13 @@ class Collaborators extends Component {
});
}
updatacomponentDiddata = () => {
updatacomponentDiddata = (pageNumber) => {
let id = this.props.match.params.shixunId;
let collaborators = `/shixuns/` + id + `/collaborators.json`;
axios.get(collaborators).then((response) => {
axios.get((collaborators),{params:{
page:pageNumber?pageNumber:undefined
}}).then((response) => {
if (response.status === 200) {
if (response.data.status === 403 || response.data.status === 401 || response.data.status === 500) {
@ -179,10 +172,12 @@ class Collaborators extends Component {
// }
let id = this.props.match.params.shixunId;
let url = "/shixuns/" + id + "/add_collaborators.json";
axios.get(url,{params:{
axios.get(url, {
params: {
user_name: user_name,
school_name: school_name,
}}).then((response) => {
}
}).then((response) => {
if (response.data.status === 403 || response.data.status === 401 || response.data.status === 500) {
this.setState({
spinnings: false
@ -392,11 +387,13 @@ class Collaborators extends Component {
let newSearchadmin = Searchadmin
let id = this.props.match.params.shixunId;
let url = "/shixuns/" + id + "/add_collaborators.json";
axios.get(url,{params:{
axios.get(url, {
params: {
user_name: user_name,
school_name: school_name,
page: newpage
}}).then((response) => {
}
}).then((response) => {
if (response.data.status === 403 || response.data.status === 401 || response.data.status === 500) {
} else {
@ -420,6 +417,9 @@ class Collaborators extends Component {
}
}
onChangepageNumber=(pageNumber)=>{
this.updatacomponentDiddata(pageNumber);
}
render() {
let {
@ -450,7 +450,7 @@ class Collaborators extends Component {
const antIcon = <Icon type="loading" style={{fontSize: 24}} spin/>;
// console.log(Searchadmin)
// console.log(collaboratorList)
return (
<React.Fragment>
<style>
@ -466,11 +466,13 @@ class Collaborators extends Component {
`
}
</style>
<div className={"edu-back-white"}>
<p className="sortinxdirection sortinxdirectionbox"
style={{display: this.props.identity < 5 ? "flex" : "none"}}
>
<div className="yslwushiwidth">
<p className="edu-default-btn edu-greenback-btn ml20 height28 mt25 color333hezuo">{collaboratorList&&collaboratorList.length}</p>
<p
className="edu-default-btn edu-greenback-btn ml20 height28 mt25 color333hezuo">{collaboratorList && collaboratorList.member_count}</p>
</div>
<div className="yslwushiwidth xaxisreverseorder pt25">
@ -562,11 +564,15 @@ class Collaborators extends Component {
{/*/>*/}
<span className="mr10">姓名或手机号:</span>
<Input placeholder="请输入姓名或手机号码搜索" value={user_name} onInput={(e) => {this.setState({user_name: e.target.value})}}
<Input placeholder="请输入姓名或手机号码搜索" value={user_name} onInput={(e) => {
this.setState({user_name: e.target.value})
}}
style={{width: '215px'}}
></Input>
<span className="label ml10 " style={{minWidth: '36px'}}>单位:</span>
<Input placeholder="请输入单位名称" className="ml10" value={school_name} onInput={(e) => {this.setState({school_name: e.target.value})}}
<Input placeholder="请输入单位名称" className="ml10" value={school_name} onInput={(e) => {
this.setState({school_name: e.target.value})
}}
style={{width: '215px'}}
>
</Input>
@ -584,7 +590,8 @@ class Collaborators extends Component {
<div className="mt5" style={{background: '#f7f9fd'}}>
<Spin indicator={antIcon} spinning={this.state.spinnings}>
<div className="clearfix">
<ul className="upload_select_box fl" id="search_not_teachers_list" onScroll={this.contentViewScrolledit}>
<ul className="upload_select_box fl" id="search_not_teachers_list"
onScroll={this.contentViewScrolledit}>
{Searchadmin === undefined ? <li style={{textAlign: 'center'}}>
<span>请试试搜索一下</span>
</li> : Searchadmin.length === 0 ? <NoneData/> : Searchadmin.map((item, key) => {
@ -640,36 +647,48 @@ class Collaborators extends Component {
</style>
<div className="pl20" id="collaborators_list_info">
{
collaboratorList===undefined?"":collaboratorList.map((item,key)=>{
if(key<collaboratorListsum){
collaboratorList === undefined || collaboratorList.length === 0 ? "" : collaboratorList.members.map((item, key) => {
return (
<div className="collaborators-item clearfix sortinxdirection ysltithead" key={key}>
<a href={item.user.user_url} target="_blank" className="mr20 fl">
<img alt="用户头像" className="radius" height="80" src={getImageUrl("images/"+item.user.image_url)} width="80"/></a>
<a href={item.user.user_url} target="_blank" className="mr20 fl edu-position">
<img alt="用户头像" className="radius" height="48" src={getImageUrl("images/" + item.user.image_url)}
width="48"/>
<span className={item && item.user && item.user.shixun_manager === true ? "ml20 yslusercjz newyslusercjz" : "none "}
// style={{display: this.props.power === false ? "none" : "inline-block"}}
>
<p
className="yslusercjztest newyslusercjztest">{item.user.shixun_manager === true ? "创建者" : ""}</p></span>
</a>
<div className="fl collaborators-item-middles">
<p className="mb10 ">
<a href={item.user.user_url} target="_blank" className="yslusername">{item.user.name}</a>
<span className={item&&item.user&&item.user.shixun_manager === true?"ml20 yslusercjz ":"ml20"} style={{display:this.props.power===false?"none":"inline-block"}}><p className="yslusercjztest">{item.user.shixun_manager === true ? "创建者" : ""}</p></span>
{/*<span*/}
{/* className={item && item.user && item.user.shixun_manager === true ? "ml20 yslusercjz " : "ml20"}*/}
{/* style={{display: this.props.power === false ? "none" : "inline-block"}}><p*/}
{/* className="yslusercjztest">{item.user.shixun_manager === true ? "创建者" : ""}</p></span>*/}
</p>
<p className="color-grey-B2 font-12 mb10 sortinxdirection mt14">
<p className="hezuozhe660 sortinxdirection space-between">
<p className="hezuozhe630 sortinxdirection space-between">
{/*<p className={item.user.identity===null||item.user.identity===undefined||item.user.identity===""?" font-16 ":"mr20 font-16 w70"}>{item.user.identity}</p>*/}
<p className={item.user.school_name===null||item.user.school_name===""?"":"mr40 font-16 maxnamewidth150"}>{item.user.school_name}</p>
<p className="fabushixunwidth color888hezuo">发布实训项目&nbsp;&nbsp;<span className="ml2">{item.user.user_shixuns_count}</span></p>
<p
className={item.user.school_name === null || item.user.school_name === "" ? "" : "mr40 font-16 maxnamewidth150 color888hezuo"}>{item.user.school_name}</p>
<p className="fabushixunwidth color888hezuo">发布实训项目&nbsp;&nbsp;<span
className="ml2">{item.user.user_shixuns_count}</span></p>
</p>
<div className="xaxisreverseorder yslwushiwidth10">
{item.user.shixun_manager === true ? "" :
<i className="iconfont icon-shanchu newbianji1 color-grey-c font-16 w40"
style={{display: this.props.power === false ? "none" : "block"}}
onClick={() => this.collaborators_delete(item.user.user_id)}>
</i>
}
</div>
{/*删除n12.17*/}
{/*<div className="xaxisreverseorder yslwushiwidth10">*/}
{/* {item.user.shixun_manager === true ? "" :*/}
{/* <i className="iconfont icon-shanchu newbianji1 color-grey-c font-16 w40"*/}
{/* style={{display: this.props.power === false ? "none" : "block"}}*/}
{/* onClick={() => this.collaborators_delete(item.user.user_id)}>*/}
{/* </i>*/}
{/* }*/}
{/*</div>*/}
</p>
{/*<p className="mb10">*/}
@ -682,9 +701,7 @@ class Collaborators extends Component {
</div>
{/*<a href="/watchers/unwatch?object_id=3039&amp;object_type=user&amp;shixun_id=61&amp;target_id=3039" className="fr user_default_btn user_private_btn mt30 font-16 mr20" data-method="post" data-remote="true" rel="nofollow">取消关注</a>*/}
</div>
)
}
})
}
<Modal
@ -706,23 +723,28 @@ class Collaborators extends Component {
</Modal>
</div>
<div
className={collaboratorList.length>10&&collaboratorListsumtype===true?"":"none"}
style={{textAlign:'center',borderTop:'1px solid #eee'}}>
<a className="loadMore" onClick={this.loadMore}>加载更多</a>
{/*{*/}
{/* mylistansum>5?*/}
{/* <div className="edu-txt-center mt40 mb40">*/}
{/* <Pagination showQuickJumper current={page}*/}
{/* onChange={this.paginationonChanges} pageSize={limit}*/}
{/* total={mylistansum}*/}
{/* ></Pagination>*/}
{/* </div>*/}
{/* :""*/}
{/*}*/}
{/*<div*/}
{/* className={collaboratorList.length > 10 && collaboratorListsumtype === true ? "" : "none"}*/}
{/* style={{textAlign: 'center', borderTop: '1px solid #eee'}}>*/}
{/* <a className="loadMore" onClick={this.loadMore}>加载更多</a>*/}
{/* /!*{*!/*/}
{/* /!* mylistansum>5?*!/*/}
{/* /!* <div className="edu-txt-center mt40 mb40">*!/*/}
{/* /!* <Pagination showQuickJumper current={page}*!/*/}
{/* /!* onChange={this.paginationonChanges} pageSize={limit}*!/*/}
{/* /!* total={mylistansum}*!/*/}
{/* /!* ></Pagination>*!/*/}
{/* /!* </div>*!/*/}
{/* /!* :""*!/*/}
{/* /!*}*!/*/}
{/*</div>*/}
</div>
{collaboratorList && collaboratorList.member_count>10?<div className={"edu-txt-center mt30 "}>
<Pagination showQuickJumper defaultCurrent={1} total={collaboratorList && collaboratorList.member_count} onChange={this.onChangepageNumber} />
</div>:""}
</React.Fragment>
);

Loading…
Cancel
Save