forgeplus-react/src/modules/courses/coursesHome/CoursesHome.js

194 lines
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { Component, Fragment } from 'react';
import { getImageUrl } from 'educoder';
import CoursesHomeCard from "./CoursesHomeCard.js"
import axios from 'axios';
import LoadingSpin from '../../../common/LoadingSpin';
import UpgradeModals from '../../modals/UpgradeModals';
import './css/CoursesHome.css';
import '../../tpm/shixuns/shixun-keyword-list.scss';
import btnNew from './btn-new.png'
import btnJoin from './btn-join.png'
import Pagination from '../../../components/mini-pagination'
class CoursesHome extends Component {
constructor(props) {
super(props)
this.state = {
limit: 16,
page: 1,
order: "created_at",
coursesHomelist: undefined,
search: "",
}
}
//切换列表状态
changeStatus = (value) => {
this.setState({
order: value,
page: 1,
coursesHomelist: undefined
})
this.searchcourses(16, 1, value, "")
}
//搜索输入
inputSearchValue = (e) => {
this.setState({
search: e.target.value,
page: 1
})
}
//搜索
searchValue = (e) => {
let { search, order } = this.state;
this.setState({
order: order,
page: 1
})
this.searchcourses(16, 1, order, search)
}
componentDidMount() {
document.title = "教学课堂";
const upsystem = `/users/system_update.json`;
axios.get(upsystem).then((response) => {
let updata = response.data;
this.setState({
updata: updata
})
}).catch((error) => {
console.log(error);
})
this.searchcourses(16, 1, "all", "")
}
onChange = (pageNumber) => {
this.setState({
page: pageNumber
})
let { limit, order, search } = this.state;
this.searchcourses(limit, pageNumber, order, search)
}
searchcourses = (limit, page, order, search) => {
let url = "/courses.json";
axios.get(url, {
params: {
limit: limit,
page: page,
order: order,
search: search
}
}).then((result) => {
if (result.data.status === 401) {
} else {
this.setState({
coursesHomelist: result.data
})
}
}).catch((error) => {
console.log(error);
})
}
getUser = (url, type) => {
if (this.props.checkIfLogin() === false) {
this.props.showLoginDialog()
return
}
if (this.props.checkIfProfileCompleted() === false) {
this.props.showProfileCompleteDialog()
return
}
if (url !== undefined || url !== "") {
this.props.history.push(url);
}
}
render() {
const { order, page, coursesHomelist } = this.state;
const { user } = this.props
return (
<div>
{this.state.updata === undefined ? "" : <UpgradeModals
{...this.state}
/>}
<div className="newMain clearfix">
<style>
{
` ::-webkit-scrollbar {
width: 0px !important;
}
.courses-head{
width: 100%;
height: 300px;
background-image: url(${getImageUrl(this.props.mygetHelmetapi && this.props.mygetHelmetapi.course_banner_url === null ? `images/educoder/courses/courses.jpg` : this.props.mygetHelmetapi && this.props.mygetHelmetapi.course_banner_url)});
background-color: #081C4B;
background-position: center;
background-repeat: no-repeat;
}
`
}
</style>
<div className="courses-head pr" >
<div className="edu-txt-center pathNavLine">
<div className="inline path-nav">
</div>
</div>
</div>
<div className="wrapper">
<div className="educontent search-keyword-container" style={{ padding: '20px 0 0 0' }}>
<div className="btn-groups">
<a id='new' className={order === 'created_at' ? 'active' : ''} onClick={() => this.changeStatus("created_at")} title='最新'>最新</a>
<a id='hot' className={order === 'visits' ? 'active' : ''} onClick={() => this.changeStatus("visits")} title='最热'>最热</a>
</div>
</div>
{user && user.user_identity !== '学生' ?
<Fragment>
<a className="btn-new" style={{ top: '67px' }} onClick={() => { this.getUser("/classrooms/new") }} > <img src={btnNew} width={40} alt="创建教学课堂" /> </a>
</Fragment> : null
}
<a className="btn-join" style={{ top: '123px' }} onClick={() => { window._header_componentHandler.tojoinclass() }} > <img src={btnJoin} width={40} alt="加入教学课堂" /> </a>
</div>
{coursesHomelist === undefined ? <LoadingSpin /> : <CoursesHomeCard {...this.props} {...this.state}
coursesHomelist={coursesHomelist}></CoursesHomeCard>}
{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")} />
<p className="edu-nodata-p mb20">暂时还没有相关数据哦</p>
</div> : ""}
{
coursesHomelist === undefined ? "" : coursesHomelist.courses_count > 16 ?
<div className="educontent mb80 edu-txt-center mt10">
<Pagination current={page} total={coursesHomelist.courses_count || 1299} type="mini" pageSize={16} onChange={this.onChange} />
</div> : ""
}
</div>
</div>
)
}
}
export default CoursesHome;
// {/*<Pagination showQuickJumper current={page} pageSize={16} total={coursesHomelist.courses_count} onChange={this.onChange} />*/}