Merge branch 'develop'

This commit is contained in:
caishi 2021-04-23 14:16:30 +08:00
commit a7f709a663
19 changed files with 218 additions and 66 deletions

View File

@ -64,7 +64,7 @@ function CommentItem({
const commentAvatar = (author) => ( const commentAvatar = (author) => (
<img <img
className="item-flex flex-image" className="item-flex flex-image"
src={author.image_url ? getImageUrl(`images/${author.image_url}`) : 'https://b-ssl.duitang.com/uploads/item/201511/13/20151113110434_kyReJ.jpeg'} src={author.image_url ? getImageUrl(`/${author.image_url}`) : 'https://b-ssl.duitang.com/uploads/item/201511/13/20151113110434_kyReJ.jpeg'}
alt="" alt=""
/> />
); );

View File

@ -155,3 +155,41 @@ li.ant-menu-item{
margin:0px 20px!important; margin:0px 20px!important;
} }
} }
.menuPanels{
width: 240px;
height: 180px;
.ant-popover-content,.ant-popover-inner{
height: 100%;
width: 100%;
}
}
.halfs{
margin-top: 24px;
padding:24px 0px 0px 0px;
border-top: 1px solid #e8e8e8;
.attrPerson{
padding-bottom: 24px;
}
}
.menuinfos{
padding:15px 0px;
li{
display: flex;
flex-direction: column;
align-items: center;
border-right: 1px solid #eee;
flex: 1;
& >span:first-child{
font-size: 18px;
font-weight: 400;
color: #333;
}
& >span:last-child{
color: #666;
}
&:last-child{
border-right: none;
}
}
}

View File

@ -1,44 +1,155 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { AlignCenter , FlexAJ } from '../Component/layout'; import { AlignCenter , FlexAJ } from '../Component/layout';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { Dropdown , Spin } from 'antd'; import { Popover , Spin } from 'antd';
import { getImageUrl } from 'educoder'; import { getImageUrl } from 'educoder';
import Axios from 'axios'; import './Component.scss';
import { getUser } from '../GetData/getData';
import axios from 'axios';
function Contributors({contributors,owner,projectsId}){ function Contributors({contributors,owner,projectsId,id,showNotification}){
const [ menuList ,setMenuList ]= useState([]);
const [ list , setList ]= useState(undefined);
const [ total , setTotal ]= useState(0);
const [ menu , setMenu ] = useState("");
const [ login , setLogin ] = useState(undefined);
const [ isSpin , setIsSpin ] = useState(false);
// function menuFunc(login){ useEffect(()=>{
// let data = undefined; if(contributors && contributors.total_count>0){
// const url = `/users/${login}.json`; setTotal(contributors.total_count);
// Axios.get(url).then(result=>{ setList(contributors.list);
// if(result && result.data){ }
// data = result.data; },[contributors])
// }
// }).catch(error=>{})
// if(data){ useEffect(()=>{
// return( if(login){
// <div>111</div> getUsers(login);
// ) }else{
// }else{ setMenu(undefined);
// return <Spin /> }
// } },[login])
// }
async function getUsers(login){
setIsSpin(true);
let a = menuList && menuList.filter(i=>i.login === login);
if(a.length === 0){
let result = await getUser(login);
let arr = menuList;
arr.push({...result});
setMenuList(arr);
setMenusFunc(result);
setIsSpin(false);
}else{
setMenusFunc(a[0]);
setIsSpin(false);
}
}
function setMenusFunc(data){
if(data){
let ele = (
<Spin spinning={isSpin}>
<FlexAJ>
<AlignCenter>
<Link to={`/users/${data.login}`}><img src={getImageUrl(`/${data.image_url}`)} alt="" className="radius" width="38px" height="38px"/></Link>
<Link to={`/users/${data.login}`} className="ml10">{data.name}</Link>
</AlignCenter>
{
data.is_watch ? <a className="color-grey-9" onClick={()=>FocusFunc(false,data.login)}>取消关注</a>:<a className="color-blue" onClick={()=>FocusFunc(true,data.login)}>关注</a>
}
</FlexAJ>
<AlignCenter className="menuinfos">
<li>
<span>{data.projects_count}</span>
<span>项目数</span>
</li>
<li>
<span>{data.followers_count}</span>
<span>粉丝数</span>
</li>
<li>
<span>{data.following_count}</span>
<span>关注数</span>
</li>
</AlignCenter>
{
data.organizations && data.organizations.length > 0 ?
<AlignCenter className="font-12 pt4 pb4">
<span>所属组织</span>
<div className="task-hide flex1">
{renderArray(data.organizations)}
</div>
</AlignCenter>
:""
}
{
data.location && <AlignCenter className="font-12 pt4 pb4"><span>所在地址:</span><span className="ml5">{data.location}</span></AlignCenter>
}
</Spin>
)
setMenu(ele);
}
}
function FocusFunc(flag,login){
axios({
method: flag ? 'post' : 'delete',
url: `/watchers/${flag ? 'follow' : 'unfollow'}.json`,
params: {target_type: "user",id:login}
}).then(result => {
if (result && (result.data.status === 0 || result.data.status === 2)) {
let a = menuList && menuList.filter(i=>i.login === login);
if(a){
a[0].is_watch = flag;
}
setMenusFunc(a[0]);
showNotification(result.data.message);
}
})
.catch(error => {
console.log(error);
});
}
function renderArray(array){
let str = "";
for(var i = 0;i<array.length;i++){
str += array[i].name +"、";
}
let substr = str.substr(0,str.length-1);
return (<span title={substr}>{substr}</span>)
}
function setVisibleFunc(flag,l,index){
if(l !== login){
setLogin(l);
}
var lx = list.concat();
lx.map(i=>i.visible =false);
if(flag){
lx[index].visible = flag;
}
lx.splice();
setList(lx);
}
return( return(
<div> <div className="halfs">
<FlexAJ> <FlexAJ>
<AlignCenter><span className="font-16 color-grey-6">贡献者</span>{ contributors && contributors.total_count > 0 && <span className="infoCount">{contributors.total_count}</span>}</AlignCenter> <AlignCenter><span className="font-16 color-grey-6">贡献者</span>{ contributors && contributors.total_count > 0 && <span className="infoCount">{contributors.total_count}</span>}</AlignCenter>
<Link className="font-12 color-grey-9" to={`/projects/${owner}/${projectsId}/contribute`}>全部</Link> <Link className="font-12 color-grey-9" to={`/projects/${owner}/${projectsId}/contribute`}>全部</Link>
</FlexAJ> </FlexAJ>
<div className="attrPerson"> <div className="attrPerson" onMouseLeave={()=>setVisibleFunc(false)}>
{ {
contributors && contributors.total_count > 0 ? total > 0 ?
contributors.list.map((item,key)=>{ list.map((item,key)=>{
return( return(
// <Dropdown overlay={()=>menuFunc(item.login)}> <Popover content={menu} visible={item.visible} overlayClassName="menuPanels" placement="bottom">
<Link key={key} to={`/users/${item.login}`}><img src={getImageUrl(`/${item.image_url}`)} alt=""/></Link> <Link key={key} to={`/users/${item.login}`}>
// </Dropdown> <img src={getImageUrl(`/${item.image_url}`)} alt="" onMouseOver={()=>setVisibleFunc(true,item.login,key)}/>
</Link>
</Popover>
) )
}) })
:"" :""

View File

@ -15,3 +15,7 @@ export const getHooks = async (id,params)=>{
export const getSubEntries = async (owner,projectsId,params)=>{ export const getSubEntries = async (owner,projectsId,params)=>{
return (await axios.get(`/${owner}/${projectsId}/sub_entries.json`,{params})).data; return (await axios.get(`/${owner}/${projectsId}/sub_entries.json`,{params})).data;
} }
//
export const getUser = async (login)=>{
return (await axios.get(`/users/${login}/hovercard.json`)).data;
}

View File

@ -425,10 +425,7 @@ function CoderDepot(props){
{/* 贡献者 */} {/* 贡献者 */}
{ {
projectDetail && projectDetail.contributors && projectDetail && projectDetail.contributors &&
<React.Fragment> <Contributors contributors={projectDetail && projectDetail.contributors} owner={owner} projectsId={projectsId} id={projectDetail && projectDetail.project_id} showNotification={props.showNotification}/>
<Divider />
<Contributors contributors={projectDetail && projectDetail.contributors} owner={owner} projectsId={projectsId}/>
</React.Fragment>
} }
{/* 语言 */} {/* 语言 */}
{ projectDetail && projectDetail.languages && { projectDetail && projectDetail.languages &&

View File

@ -217,7 +217,7 @@ function Index(props){
data.map((item,key)=>{ data.map((item,key)=>{
return( return(
<li> <li>
<Link to= {`/users/${item.login}`} className="infoImg"><img src={getImageUrl(`${item.imageUrl}`)} alt="" /></Link> <Link to= {`/users/${item.login}`} className="infoImg"><img src={getImageUrl(`/${item.imageUrl}`)} alt="" /></Link>
<div style={{flex:'1',width:"0"}}> <div style={{flex:'1',width:"0"}}>
<FlexAJ> <FlexAJ>
<AlignCenter> <AlignCenter>

View File

@ -5,6 +5,7 @@ import "./list.css";
function FocusButton({is_watch , fontClass, starText, is_block , id , successFunc}){ function FocusButton({is_watch , fontClass, starText, is_block , id , successFunc}){
const [ isSpin , setIsSpin ] = useState(false); const [ isSpin , setIsSpin ] = useState(false);
const [ watchFlag , setWatchFlag ] = useState(is_watch);
// 关注和取消关注 // 关注和取消关注
function focusFunc(flag){ function focusFunc(flag){
setIsSpin(true); setIsSpin(true);
@ -18,6 +19,7 @@ function FocusButton({is_watch , fontClass, starText, is_block , id , successFun
}).then((result) => { }).then((result) => {
if (result && result.data.status === 0) { if (result && result.data.status === 0) {
successFunc && successFunc(); successFunc && successFunc();
setWatchFlag(!watchFlag);
} }
setIsSpin(false); setIsSpin(false);
}) })
@ -25,8 +27,8 @@ function FocusButton({is_watch , fontClass, starText, is_block , id , successFun
}; };
return ( return (
<Button type={is_watch ? "default" : "primary"} ghost={!is_watch} block={is_block} loading={isSpin} onClick={() => focusFunc(is_watch)}> <Button type={watchFlag ? "default" : "primary"} ghost={!watchFlag} block={is_block} loading={isSpin} onClick={() => focusFunc(watchFlag)}>
{is_watch ? ( {watchFlag ? (
<span className=""> <span className="">
<i className="iconfont icon-shixing font-15 text-yellow mr-4"></i> <i className="iconfont icon-shixing font-15 text-yellow mr-4"></i>
<span className={fontClass || "font-12"}>已关注</span> <span className={fontClass || "font-12"}>已关注</span>

View File

@ -16,7 +16,7 @@ class http500 extends Component {
<div className="newMain clearfix"> <div className="newMain clearfix">
<div className=" edu-txt-center mt60 mb60"> <div className=" edu-txt-center mt60 mb60">
{/*mt100 mb100*/} {/*mt100 mb100*/}
<img src={getImageUrl("images/warn/pic_404.jpg")} /> <img src={getImageUrl("/images/warn/pic_404.jpg")} />
<p className="font-18 mt40"> <p className="font-18 mt40">
您可以稍后尝试&nbsp;<a href="/" 您可以稍后尝试&nbsp;<a href="/"
className="color-blue">返回首页</a> className="color-blue">返回首页</a>

View File

@ -78,7 +78,7 @@ class CompetitionsIndex extends Component{
.courses-head{ .courses-head{
width: 100%; width: 100%;
height: 300px; height: 300px;
background-image: url(${getImageUrl(this.props.mygetHelmetapi && this.props.mygetHelmetapi.competition_banner_url === null ?`images/educoder/competitions/courses.jpg`:this.props.mygetHelmetapi&&this.props.mygetHelmetapi.competition_banner_url)}); background-image: url(${getImageUrl(this.props.mygetHelmetapi && this.props.mygetHelmetapi.competition_banner_url === null ?`/images/educoder/competitions/courses.jpg`:this.props.mygetHelmetapi&&this.props.mygetHelmetapi.competition_banner_url)});
background-color: #081C4B; background-color: #081C4B;
background-position: center; background-position: center;
background-repeat: no-repeat; background-repeat: no-repeat;

View File

@ -358,10 +358,10 @@ class CompetitionCommon extends Component{
data && data.permission.editable === true ? "" : data && data.permission.editable === true ? "" :
<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div> : ""} <div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div> : ""}
<img className={"Commonimg"} <img className={"Commonimg"}
src={data.competition_status === "ended" ? getImageUrl(`images/educoder/competitions/groups1.png`) : data.competition_status === "nearly_published" ? getImageUrl(`images/educoder/competitions/groups2.png`) : data.competition_status === "progressing" ? getImageUrl(`images/educoder/competitions/groups3.png`) : ""}/> src={data.competition_status === "ended" ? getImageUrl(`/images/educoder/competitions/groups1.png`) : data.competition_status === "nearly_published" ? getImageUrl(`images/educoder/competitions/groups2.png`) : data.competition_status === "progressing" ? getImageUrl(`images/educoder/competitions/groups3.png`) : ""}/>
<Col span={15} className={"Commonimgbox"}> <Col span={15} className={"Commonimgbox"}>
<img className={"image_urlbox"} <img className={"image_urlbox"}
src={data === undefined ? getImageUrl(`images/educoder/competitions/mainbanner.jpg`) : data.avatar_url === null ? getImageUrl(`images/educoder/competitions/mainbanner.jpg`) : getImageUrl(data.avatar_url)}/> src={data === undefined ? getImageUrl(`/images/educoder/competitions/mainbanner.jpg`) : data.avatar_url === null ? getImageUrl(`/images/educoder/competitions/mainbanner.jpg`) : getImageUrl(data.avatar_url)}/>
</Col> </Col>
<Col className={"CompetitionCommonbannerfont"} span={9}> <Col className={"CompetitionCommonbannerfont"} span={9}>

View File

@ -249,11 +249,11 @@ class CompetitionContents extends Component{
cover={ cover={
<div className={"Competitionfirstbox center"}> <div className={"Competitionfirstbox center"}>
<li className="pr Competitioncenter"> <li className="pr Competitioncenter">
<img src={getImageUrl("images/educoder/huangguan.png")}/> <img src={getImageUrl("/images/educoder/huangguan.png")}/>
<div className={"mt10"}> <div className={"mt10"}>
<a href={`/users/${item.user_login}`} target={"_blank"} className="color-dark"> <a href={`/users/${item.user_login}`} target={"_blank"} className="color-dark">
<div className={"relativef"}> <div className={"relativef"}>
<img className={"rankingimg"} src={getImageUrl(`images/${item.user_image===null?`avatars/User/0?1442652658`:item.user_image}`)} /> <img className={"rankingimg"} src={getImageUrl(`/images/${item.user_image===null?`avatars/User/0?1442652658`:item.user_image}`)} />
<div className={"competimgabsolute"}><Badge count={item.competition_prize} style={{ backgroundColor: '#459BE5' }} title={item.competition_prize}/></div> <div className={"competimgabsolute"}><Badge count={item.competition_prize} style={{ backgroundColor: '#459BE5' }} title={item.competition_prize}/></div>
</div> </div>
<p className="task-hide rankName mt5 jinshaifont">{personal===undefined||personal===null?item.record_user_name:personal===true?item.record_user_name:item.team_name}</p> <p className="task-hide rankName mt5 jinshaifont">{personal===undefined||personal===null?item.record_user_name:personal===true?item.record_user_name:item.team_name}</p>

View File

@ -171,7 +171,7 @@ class CoursesHome extends Component {
coursesHomelist={coursesHomelist}></CoursesHomeCard>} coursesHomelist={coursesHomelist}></CoursesHomeCard>}
{coursesHomelist === undefined ? "" : coursesHomelist.courses.length === 0 ? <div className="edu-tab-con-box clearfix edu-txt-center mb50"> {coursesHomelist === undefined ? "" : coursesHomelist.courses.length === 0 ? <div className="edu-tab-con-box clearfix edu-txt-center mb50">
<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")} /> <img className="edu-nodata-img mb20" src={getImageUrl("/images/educoder/nodata.png")} />
<p className="edu-nodata-p mb20">暂时还没有相关数据哦</p> <p className="edu-nodata-p mb20">暂时还没有相关数据哦</p>
</div> : ""} </div> : ""}

View File

@ -295,7 +295,7 @@ class Listofworksstudentone extends Component {
计算规则:<br/> 计算规则:<br/>
学员离开实训学习界面停止计时<br/> 学员离开实训学习界面停止计时<br/>
评测首次通过之后停止计时<br/> 评测首次通过之后停止计时<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'cost_time', dataIndex: 'cost_time',
key: 'cost_time', key: 'cost_time',
align: 'center', align: 'center',
@ -381,7 +381,7 @@ class Listofworksstudentone extends Component {
title:<span>关卡得分<Tooltip placement="top" title={<pre> title:<span>关卡得分<Tooltip placement="top" title={<pre>
计算规则:<br/> 计算规则:<br/>
截止前学员完成的关卡才有成绩<br/> 截止前学员完成的关卡才有成绩<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'final_score', dataIndex: 'final_score',
key: 'final_score', key: 'final_score',
align: 'center', align: 'center',
@ -420,7 +420,7 @@ class Listofworksstudentone extends Component {
学生工作效率= log(实训总得分/实训总耗时)<br/> 学生工作效率= log(实训总得分/实训总耗时)<br/>
学生效率分 = 学生工作效率 / 课堂学生最高<br/> 学生效率分 = 学生工作效率 / 课堂学生最高<br/>
工作效率 * 分值<br/> 工作效率 * 分值<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'efficiencyscore', dataIndex: 'efficiencyscore',
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
@ -694,7 +694,7 @@ class Listofworksstudentone extends Component {
计算规则:<br/> 计算规则:<br/>
学员离开实训学习界面停止计时<br/> 学员离开实训学习界面停止计时<br/>
评测首次通过之后停止计时<br/> 评测首次通过之后停止计时<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'cost_time', dataIndex: 'cost_time',
key: 'cost_time', key: 'cost_time',
align: 'center', align: 'center',
@ -780,7 +780,7 @@ class Listofworksstudentone extends Component {
title:<span>关卡得分<Tooltip placement="top" title={<pre> title:<span>关卡得分<Tooltip placement="top" title={<pre>
计算规则:<br/> 计算规则:<br/>
截止前学员完成的关卡才有成绩<br/> 截止前学员完成的关卡才有成绩<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'final_score', dataIndex: 'final_score',
key: 'final_score', key: 'final_score',
align: 'center', align: 'center',
@ -819,7 +819,7 @@ class Listofworksstudentone extends Component {
学生工作效率= log(实训总得分/实训总耗时)<br/> 学生工作效率= log(实训总得分/实训总耗时)<br/>
学生效率分 = 学生工作效率 / 课堂学生最高<br/> 学生效率分 = 学生工作效率 / 课堂学生最高<br/>
工作效率 * 分值<br/> 工作效率 * 分值<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'efficiencyscore', dataIndex: 'efficiencyscore',
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
@ -1050,7 +1050,7 @@ class Listofworksstudentone extends Component {
计算规则:<br/> 计算规则:<br/>
学员离开实训学习界面停止计时<br/> 学员离开实训学习界面停止计时<br/>
评测首次通过之后停止计时<br/> 评测首次通过之后停止计时<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'cost_time', dataIndex: 'cost_time',
key: 'cost_time', key: 'cost_time',
align: 'center', align: 'center',
@ -1134,7 +1134,7 @@ class Listofworksstudentone extends Component {
title:<span>关卡得分<Tooltip placement="top" title={<pre> title:<span>关卡得分<Tooltip placement="top" title={<pre>
计算规则:<br/> 计算规则:<br/>
截止前学员完成的关卡才有成绩<br/> 截止前学员完成的关卡才有成绩<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'final_score', dataIndex: 'final_score',
key: 'final_score', key: 'final_score',
align: 'center', align: 'center',
@ -1167,7 +1167,7 @@ class Listofworksstudentone extends Component {
学生工作效率= log(实训总得分/实训总耗时)<br/> 学生工作效率= log(实训总得分/实训总耗时)<br/>
学生效率分 = 学生工作效率 / 课堂学生最高<br/> 学生效率分 = 学生工作效率 / 课堂学生最高<br/>
工作效率 * 分值<br/> 工作效率 * 分值<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'efficiencyscore', dataIndex: 'efficiencyscore',
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
@ -1210,7 +1210,7 @@ class Listofworksstudentone extends Component {
title: <span>当前成绩<Tooltip placement="top"title={<pre> title: <span>当前成绩<Tooltip placement="top"title={<pre>
鼠标停留具体分值上可查<br/> 鼠标停留具体分值上可查<br/>
看得分明细<br/> 看得分明细<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'work_score', dataIndex: 'work_score',
key: 'work_score', key: 'work_score',
align: 'center', align: 'center',
@ -1461,7 +1461,7 @@ class Listofworksstudentone extends Component {
计算规则:<br/> 计算规则:<br/>
学员离开实训学习界面停止计时<br/> 学员离开实训学习界面停止计时<br/>
评测首次通过之后停止计时<br/> 评测首次通过之后停止计时<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'cost_time', dataIndex: 'cost_time',
key: 'cost_time', key: 'cost_time',
align: 'center', align: 'center',
@ -1524,7 +1524,7 @@ class Listofworksstudentone extends Component {
title:<span>关卡得分<Tooltip placement="top" title={<pre> title:<span>关卡得分<Tooltip placement="top" title={<pre>
计算规则:<br/> 计算规则:<br/>
截止前学员完成的关卡才有成绩<br/> 截止前学员完成的关卡才有成绩<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'final_score', dataIndex: 'final_score',
key: 'final_score', key: 'final_score',
align: 'center', align: 'center',
@ -1557,7 +1557,7 @@ class Listofworksstudentone extends Component {
学生工作效率= log(实训总得分/实训总耗时)<br/> 学生工作效率= log(实训总得分/实训总耗时)<br/>
学生效率分 = 学生工作效率 / 课堂学生最高<br/> 学生效率分 = 学生工作效率 / 课堂学生最高<br/>
工作效率 * 分值<br/> 工作效率 * 分值<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'efficiencyscore', dataIndex: 'efficiencyscore',
key: 'efficiencyscore', key: 'efficiencyscore',
align: 'center', align: 'center',
@ -1600,7 +1600,7 @@ class Listofworksstudentone extends Component {
title: <span>当前成绩<Tooltip placement="top" title={<pre> title: <span>当前成绩<Tooltip placement="top" title={<pre>
鼠标停留具体分值上可查<br/> 鼠标停留具体分值上可查<br/>
看得分明细<br/> 看得分明细<br/>
</pre>}><img src={getImageUrl("images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>, </pre>}><img src={getImageUrl("/images/educoder/problem.png")} className={"ml2"}/></Tooltip></span>,
dataIndex: 'work_score', dataIndex: 'work_score',
key: 'work_score', key: 'work_score',
align: 'center', align: 'center',
@ -3898,7 +3898,7 @@ class Listofworksstudentone extends Component {
<div id="forum_list" className="forum_table"> <div id="forum_list" className="forum_table">
<div className="mh650 edu-back-white"> <div className="mh650 edu-back-white">
<div className="edu-tab-con-box clearfix edu-txt-center"> <div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")}/> <img className="edu-nodata-img mb20" src={getImageUrl("/images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">{this.state.searchtypes===false?"暂时还没有相关数据哦!":"抱歉没有您要搜索的内容,请换个词语试试看"}</p> <p className="edu-nodata-p mb30">{this.state.searchtypes===false?"暂时还没有相关数据哦!":"抱歉没有您要搜索的内容,请换个词语试试看"}</p>
</div> </div>
</div> </div>
@ -4175,7 +4175,7 @@ class Listofworksstudentone extends Component {
<div className="mh650 edu-back-white"> <div className="mh650 edu-back-white">
<div className="edu-tab-con-box clearfix edu-txt-center"> <div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" <img className="edu-nodata-img mb20"
src={getImageUrl("images/educoder/nodata.png")}/> src={getImageUrl("/images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">{this.state.searchtypes===false?"暂时还没有相关数据哦!":"抱歉没有您要搜索的内容,请换个词语试试看"}</p> <p className="edu-nodata-p mb30">{this.state.searchtypes===false?"暂时还没有相关数据哦!":"抱歉没有您要搜索的内容,请换个词语试试看"}</p>
</div> </div>
</div> </div>
@ -4409,7 +4409,7 @@ class Listofworksstudentone extends Component {
<div className="mh650 edu-back-white"> <div className="mh650 edu-back-white">
<div className="edu-tab-con-box clearfix edu-txt-center"> <div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" <img className="edu-nodata-img mb20"
src={getImageUrl("images/educoder/nodata.png")}/> src={getImageUrl("/images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">{this.state.searchtypes===false?"暂时还没有相关数据哦!":"抱歉没有您要搜索的内容,请换个词语试试看"}</p> <p className="edu-nodata-p mb30">{this.state.searchtypes===false?"暂时还没有相关数据哦!":"抱歉没有您要搜索的内容,请换个词语试试看"}</p>
</div> </div>
</div> </div>

View File

@ -514,7 +514,7 @@ class ShixunWorkReport extends Component {
<div className="fl edu-back-white ml10 "> <div className="fl edu-back-white ml10 ">
<img alt="头像" className="radius" height="91" id="nh_user_logo" name="avatar_image" <img alt="头像" className="radius" height="91" id="nh_user_logo" name="avatar_image"
src={ getImageUrl(`images/${data&&data.image_url}`)} src={ getImageUrl(`/${data&&data.image_url}`)}
width="91"/> width="91"/>
</div> </div>

View File

@ -266,7 +266,7 @@ class ShixunWorkModal extends Component{
<div id="forum_list" className="forum_table"> <div id="forum_list" className="forum_table">
<div className=" edu-back-white"> <div className=" edu-back-white">
<div className="edu-tab-con-box clearfix edu-txt-center"> <div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")}/> <img className="edu-nodata-img mb20" src={getImageUrl("/images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">暂时还没有相关数据哦</p> <p className="edu-nodata-p mb30">暂时还没有相关数据哦</p>
</div> </div>
</div> </div>

View File

@ -193,7 +193,7 @@ class Messagerouting extends Component{
<a > <a >
{ {
this.props.current_user!== undefined? this.props.current_user!== undefined?
<img className="person radius myw120 myh120" src={getImageUrl("images/"+this.props.current_user.image_url)}/> <img className="person radius myw120 myh120" src={getImageUrl("/images/"+this.props.current_user.image_url)}/>
:"" :""
} }

View File

@ -333,7 +333,7 @@ class InfosProject extends Component {
{ {
item.can_visited == false ? item.can_visited == false ?
<div className="closeSquare"> <div className="closeSquare">
<img src={getImageUrl("images/educoder/icon/lockclose.svg")} className="mt80 mb25" /> <img src={getImageUrl("/images/educoder/icon/lockclose.svg")} className="mt80 mb25" />
<p className="font-14 color-white">非成员不能访问</p> <p className="font-14 color-white">非成员不能访问</p>
</div> : "" </div> : ""
} }

View File

@ -332,7 +332,7 @@ class Projects extends Component{
{ {
item.can_visited ==false? item.can_visited ==false?
<div className="closeSquare"> <div className="closeSquare">
<img src={getImageUrl("images/educoder/icon/lockclose.svg")} className="mt80 mb25"/> <img src={getImageUrl("/images/educoder/icon/lockclose.svg")} className="mt80 mb25"/>
<p className="font-14 color-white">非成员不能访问</p> <p className="font-14 color-white">非成员不能访问</p>
</div>:"" </div>:""
} }

View File

@ -170,7 +170,7 @@ class SearchPage extends Component{
<div id="forum_list" className="forum_table"> <div id="forum_list" className="forum_table">
<div className="mh650 bjyss"> <div className="mh650 bjyss">
<div className="edu-tab-con-box clearfix edu-txt-center"> <div className="edu-tab-con-box clearfix edu-txt-center">
<img className="edu-nodata-img mb20" src={getImageUrl("images/educoder/nodata.png")}/> <img className="edu-nodata-img mb20" src={getImageUrl("/images/educoder/nodata.png")}/>
<p className="edu-nodata-p mb30">暂时还没有相关数据哦</p> <p className="edu-nodata-p mb30">暂时还没有相关数据哦</p>
</div> </div>
</div> </div>