|
|
|
@ -1,11 +1,11 @@
|
|
|
|
|
import React, { Component } from 'react';
|
|
|
|
|
import { SnackbarHOC } from 'educoder';
|
|
|
|
|
import {Link} from 'react-router-dom';
|
|
|
|
|
import {Tooltip,Menu} from 'antd';
|
|
|
|
|
import InfosCourse from './InfosCourse';
|
|
|
|
|
import InfosShixun from './InfosShixun';
|
|
|
|
|
import InfosProject from './InfosProject';
|
|
|
|
|
import InfosPath from './InfosPath';
|
|
|
|
|
import InfosBank from './InfosBank';
|
|
|
|
|
import Loadable from 'react-loadable';
|
|
|
|
|
import Loading from '../../../Loading';
|
|
|
|
|
import {BrowserRouter as Router,Route,Switch} from 'react-router-dom';
|
|
|
|
|
|
|
|
|
|
import axios from 'axios';
|
|
|
|
|
import {getImageUrl} from 'educoder';
|
|
|
|
|
import { TPMIndexHOC } from '../../tpm/TPMIndexHOC';
|
|
|
|
@ -17,6 +17,22 @@ import update from 'immutability-helper'
|
|
|
|
|
|
|
|
|
|
import Trialapplication from '../../login/Trialapplication'
|
|
|
|
|
|
|
|
|
|
const InfosCourse = Loadable({
|
|
|
|
|
loader: () => import('./InfosCourse'),
|
|
|
|
|
loading:Loading,
|
|
|
|
|
})
|
|
|
|
|
const InfosShixun = Loadable({
|
|
|
|
|
loader: () => import('./InfosShixun'),
|
|
|
|
|
loading:Loading,
|
|
|
|
|
})
|
|
|
|
|
const InfosPath = Loadable({
|
|
|
|
|
loader: () => import('./InfosPath'),
|
|
|
|
|
loading:Loading,
|
|
|
|
|
})
|
|
|
|
|
const InfosProject = Loadable({
|
|
|
|
|
loader: () => import('./InfosProject'),
|
|
|
|
|
loading:Loading,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const $ = window.$;
|
|
|
|
|
class Infos extends Component{
|
|
|
|
@ -29,7 +45,8 @@ class Infos extends Component{
|
|
|
|
|
sign:undefined,
|
|
|
|
|
type:0,
|
|
|
|
|
login:undefined,
|
|
|
|
|
isRenders:false
|
|
|
|
|
isRenders:false,
|
|
|
|
|
moduleName:"courses"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
componentDidMount =()=>{
|
|
|
|
@ -177,10 +194,13 @@ class Infos extends Component{
|
|
|
|
|
followed,
|
|
|
|
|
id,
|
|
|
|
|
login,
|
|
|
|
|
isRenders
|
|
|
|
|
isRenders,
|
|
|
|
|
moduleName
|
|
|
|
|
}=this.state;
|
|
|
|
|
let {username}= this.props.match.params;
|
|
|
|
|
let {isAdmin}=this.props.isAdmin();
|
|
|
|
|
|
|
|
|
|
let {pathname}=this.props.location;
|
|
|
|
|
moduleName=pathname.split("/")[3];
|
|
|
|
|
return(
|
|
|
|
|
<div className="newMain">
|
|
|
|
|
{
|
|
|
|
@ -194,24 +214,24 @@ class Infos extends Component{
|
|
|
|
|
<div className="inline">
|
|
|
|
|
<div className="fl headtab">
|
|
|
|
|
<span>{is_current ? "我":"TA"}的经验值</span>
|
|
|
|
|
<a href={`/users/${username}/user_experience`}>{data && data.experience}</a>
|
|
|
|
|
<a href={`${this.props.Headertop && this.props.Headertop.old_url}/users/${username}/user_experience`}>{data && data.experience}</a>
|
|
|
|
|
</div>
|
|
|
|
|
<em className="v-h-line fl"></em>
|
|
|
|
|
<div className="fl headtab">
|
|
|
|
|
<span>{is_current ? "我":"TA"}的金币</span>
|
|
|
|
|
<a href={`/users/${username}/user_grade`} id="user_code">{data && data.grade}</a>
|
|
|
|
|
<a href={`${this.props.Headertop && this.props.Headertop.old_url}/users/${username}/user_grade`} id="user_code">{data && data.grade}</a>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="headphoto mt14">
|
|
|
|
|
<img alt="头像" id="user_avatar_show" nhname="avatar_image" src={data && `${getImageUrl('images/'+data.avatar_url)}`}/>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="fl headtab">
|
|
|
|
|
<span>{is_current ? "我":"TA"}的粉丝</span>
|
|
|
|
|
<a href={`/users/${username}/user_fanslist`} id="user_h_fan_count">{data && data.fan_count}</a>
|
|
|
|
|
<a href={`${this.props.Headertop && this.props.Headertop.old_url}/users/${username}/user_fanslist`} id="user_h_fan_count">{data && data.fan_count}</a>
|
|
|
|
|
</div>
|
|
|
|
|
<em className="v-h-line fl"></em>
|
|
|
|
|
<div className="fl headtab">
|
|
|
|
|
<span>{is_current ? "我":"TA"}的关注</span>
|
|
|
|
|
<a href={`/users/${username}/user_watchlist`}>{data && data.follow_count}</a>
|
|
|
|
|
<a href={`${this.props.Headertop && this.props.Headertop.old_url}/users/${username}/user_watchlist`}>{data && data.follow_count}</a>
|
|
|
|
|
</div>
|
|
|
|
|
<span className="clearfix"></span>
|
|
|
|
|
<span className="myName">{data && data.name}</span>
|
|
|
|
@ -220,22 +240,22 @@ class Infos extends Component{
|
|
|
|
|
<div className="educontent mt10 clearfix edu-txt-center">
|
|
|
|
|
<div className="inline">
|
|
|
|
|
<span className="mypost fl mr10">{data && data.identity}</span>
|
|
|
|
|
<a href={is_current ? "/account/authentication" :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<a href={is_current ? `${this.props.Headertop && this.props.Headertop.old_url}/account/authentication` :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<Tooltip placement='bottom' title={ data && data.authentication ?"已实名认证":"未实名认证"}>
|
|
|
|
|
<i className={ data && data.authentication ? "iconfont icon-shenfenrenzheng font-13 color-blue":"iconfont icon-shenfenrenzheng font-13 color-grey-9"}></i>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</a>
|
|
|
|
|
<a href={is_current ? "/account/professional_certification" :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<a href={is_current ? `${this.props.Headertop && this.props.Headertop.old_url}/account/professional_certification` :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<Tooltip placement='bottom' title={ data && data.professional_certification ?"已职业认证":"未职业认证"}>
|
|
|
|
|
<i className={ data && data.professional_certification ? "iconfont icon-zhiyerenzheng font-13 color-blue":"iconfont icon-zhiyerenzheng font-13 color-grey-9"}></i>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</a>
|
|
|
|
|
<a href={is_current ? "/account/change_or_bind?type=phone" :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<a href={is_current ? `${this.props.Headertop && this.props.Headertop.old_url}/account/change_or_bind?type=phone` :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<Tooltip placement='bottom' title={ data && data.phone_binded ?"已手机认证":"未手机认证"}>
|
|
|
|
|
<i className={ data && data.phone_binded ? "iconfont icon-shoujirenzheng font-13 color-blue":"iconfont icon-shoujirenzheng font-13 color-grey-9"}></i>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</a>
|
|
|
|
|
<a href={is_current ? "/my/account" :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<a href={is_current ? `${this.props.Headertop && this.props.Headertop.old_url}/my/account` :"javascript:void(0)"} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<Tooltip placement='bottom' title={ data && data.email_binded ?"已邮箱认证":"未邮箱认证"}>
|
|
|
|
|
<i className={ data && data.email_binded ? "iconfont icon-youxiangrenzheng font-13 color-blue":"iconfont icon-youxiangrenzheng font-13 color-grey-9"}></i>
|
|
|
|
|
</Tooltip>
|
|
|
|
@ -243,7 +263,7 @@ class Infos extends Component{
|
|
|
|
|
{/* <!--学院管理员身份--> */}
|
|
|
|
|
{
|
|
|
|
|
data && data.college_identifier &&
|
|
|
|
|
<a href={`/colleges/${data.college_identifier}/statistics`} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<a href={`${this.props.Headertop && this.props.Headertop.old_url}/colleges/${data.college_identifier}/statistics`} target="_blank" className={is_current ? "ringauto fl" :"ringauto fl cdefault"}>
|
|
|
|
|
<Tooltip placement='bottom' title="学院管理员">
|
|
|
|
|
<i className="iconfont icon-chengyuanguanli font-12 color-blue" data-tip-down="学院管理员"></i>
|
|
|
|
|
</Tooltip>
|
|
|
|
@ -288,33 +308,68 @@ class Infos extends Component{
|
|
|
|
|
</div>
|
|
|
|
|
<div className="edu-txt-center navInfo">
|
|
|
|
|
<div className="inline">
|
|
|
|
|
<Menu mode="horizontal" defaultSelectedKeys="0" onClick={this.changeType}>
|
|
|
|
|
<Menu.Item key="0">课堂</Menu.Item>
|
|
|
|
|
<Menu.Item key="1">实训</Menu.Item>
|
|
|
|
|
<Menu.Item key="2">实训课程</Menu.Item>
|
|
|
|
|
<Menu.Item key="3">项目</Menu.Item>
|
|
|
|
|
{ data && data.identity !="学生" && <Menu.Item key="4" onClick={()=>this.ToBank(`/users/${username}?type=a_project`)}>题库</Menu.Item> }
|
|
|
|
|
</Menu>
|
|
|
|
|
<li className={`${moduleName == 'courses' ? 'active' : '' }`}>
|
|
|
|
|
<Link
|
|
|
|
|
onClick={() => this.setState({moduleName: 'courses'})}
|
|
|
|
|
to={`/users/${username}/courses`}>课堂</Link>
|
|
|
|
|
</li>
|
|
|
|
|
<li className={`${moduleName == 'shixuns' ? 'active' : '' }`}>
|
|
|
|
|
<Link
|
|
|
|
|
onClick={() => this.setState({moduleName: 'shixuns'})}
|
|
|
|
|
to={`/users/${username}/shixuns`}>实训</Link>
|
|
|
|
|
</li>
|
|
|
|
|
<li className={`${moduleName == 'paths' ? 'active' : '' }`}>
|
|
|
|
|
<Link
|
|
|
|
|
onClick={() => this.setState({moduleName: 'paths'})}
|
|
|
|
|
to={`/users/${username}/paths`}>实训课程</Link>
|
|
|
|
|
</li>
|
|
|
|
|
<li className={`${moduleName == 'projects' ? 'active' : '' }`}>
|
|
|
|
|
<Link
|
|
|
|
|
onClick={() => this.setState({moduleName: 'projects'})}
|
|
|
|
|
to={`/users/${username}/projects`}>项目</Link>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
{ data && data.identity!="学生" && <li> <a href={`${this.props.Headertop && this.props.Headertop.old_url}/users/${username}?type=m_bank`}>题库</a></li>}
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{
|
|
|
|
|
parseInt(type) == 0 && <InfosCourse {...this.props} {...this.state} login={username} is_current={is_current}></InfosCourse>
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
parseInt(type) == 1 && <InfosShixun {...this.props} {...this.state} login={username} is_current={is_current}></InfosShixun>
|
|
|
|
|
<Switch {...this.props}>
|
|
|
|
|
|
|
|
|
|
{/* --------------------------------------------------------------------- */}
|
|
|
|
|
|
|
|
|
|
{/* 课堂 */}
|
|
|
|
|
{/* http://localhost:3007/courses/1309/homework/9300/setting */}
|
|
|
|
|
<Route exact path="/users/:username/courses"
|
|
|
|
|
render={
|
|
|
|
|
(props) => (<InfosCourse {...this.props} {...props} {...this.state} />)
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
parseInt(type) == 2 && <InfosPath {...this.props} {...this.state} login={username} is_current={is_current}></InfosPath>
|
|
|
|
|
></Route>
|
|
|
|
|
|
|
|
|
|
{/* 实训 */}
|
|
|
|
|
<Route exact path="/users/:username/shixuns"
|
|
|
|
|
render={
|
|
|
|
|
(props) => (<InfosShixun {...this.props} {...props} {...this.state} />)
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
parseInt(type) == 3 && <InfosProject {...this.props} {...this.state} login={username} is_current={is_current}></InfosProject>
|
|
|
|
|
></Route>
|
|
|
|
|
|
|
|
|
|
{/* 实训课程 */}
|
|
|
|
|
<Route exact path="/users/:username/paths"
|
|
|
|
|
render={
|
|
|
|
|
(props) => (<InfosPath {...this.props} {...props} {...this.state} />)
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
parseInt(type) == 4 && <InfosBank {...this.props} {...this.state} login={username} is_current={is_current}></InfosBank>
|
|
|
|
|
></Route>
|
|
|
|
|
|
|
|
|
|
{/* 项目 */}
|
|
|
|
|
<Route exact path="/users/:username/projects"
|
|
|
|
|
render={
|
|
|
|
|
(props) => (<InfosProject {...this.props} {...props} {...this.state} />)
|
|
|
|
|
}
|
|
|
|
|
></Route>
|
|
|
|
|
|
|
|
|
|
</Switch>
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|