You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/public/react/src/modules/tpm/shixuns/ShixunsIndex.js

429 lines
11 KiB

import React, { Component } from 'react';
import { Redirect } from 'react-router';
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
import axios from 'axios';
import { Spin } from 'antd';
import { TPMIndexHOC } from '../TPMIndexHOC';
import { SnackbarHOC } from 'educoder';
import ShixunCardList from './ShixunCardList';
import ShixunSearchBar from './ShixunSearchBar';
import ShixunCard from './ShixunCard';
import UpgradeModals from '../../modals/UpgradeModals';
const queryString = require('query-string');
const $ = window.$;
class ShixunsIndex extends Component {
constructor(props) {
super(props)
this.state={
order_by: "new",
page:1,
limit:16,
keyword:"",
status:0,
diff:0,
tag_level: 1,
tag_id:'',
middleshixundata:[],
typepvisible:true,
pages:1,
search_tags:null,
parsedid:undefined,
newtag_level:undefined,
newpalce:undefined,
sort:"desc"
}
}
componentDidMount(){
const upsystem=`/users/system_update.json`;
axios.get(upsystem).then((response)=>{
let updata=response.data;
this.setState({
updata:updata
})
}).catch((error)=>{
console.log(error);
})
let _keyword;
if (window.__headSearchKeyword) {
this.setState({ keyword: window.__headSearchKeyword })
_keyword = window.__headSearchKeyword
delete window.__headSearchKeyword
}
const parsed = queryString.parse(this.props.location.search);
if(parsed.id===undefined&&parsed.type===undefined){
let {order_by, tag_level, tag_id, page, limit, keyword, status, diff} = this.state;
let params={
order_by:order_by,
tag_level:tag_level,
tag_id:tag_id,
page:page,
limit:limit,
keyword: _keyword || keyword ,
status:status,
diff:diff,
sort: "desc"
}
this.shixunresultend(params);
}else{
let {order_by,page, limit, keyword, status, diff} = this.state;
let nawparsed=parsed.type;
let newpalce=parsed.palce;
if(nawparsed==="rep"){
nawparsed=1
}
else if(nawparsed==="sub"){
nawparsed=2
}else if(nawparsed==="tag"){
nawparsed=3
}
let params={
order_by:order_by,
tag_level:nawparsed,
tag_id:parsed.id,
page:page,
limit:limit,
keyword: _keyword || keyword,
status:status,
diff:diff,
sort: "desc"
}
this.setState({
parsedid:parsed.id,
newtag_level:nawparsed,
tag_level:nawparsed,
newpalce:newpalce,
tag_id:parsed.id,
keyword: _keyword || keyword,
})
this.shixunresultend(params);
}
}
allUpdatashixunlist=()=>{
let{sort,order_by}=this.state;
this.setState({
tag_level: 1,
tag_id:'',
page: 1,
limit: 16,
keyword:'',
status: 0,
diff: 0,
})
let params={
order_by:order_by,
tag_level: 1,
tag_id:'',
page: 1,
limit: 16,
keyword:'',
status: 0,
diff: 0,
sort:sort
}
this.shixunresultend(params)
}
Updatasearchlist=(value)=>{
if (value[1].tag_id === " ") {
this.setState({
keyword: ""
})
}
this.setState({
tag_level:value[0].tag_level,
tag_id:value[1].tag_id,
typepvisible:true
})
let {order_by, sort, limit, keyword, status, diff} = this.state;
let params={
order_by:order_by,
tag_level:value[0].tag_level,
tag_id:value[1].tag_id,
page:1,
limit:limit,
keyword:keyword,
status:status,
diff:diff,
sort:sort
}
this.shixunresultend(params)
}
StatusEnquiry=(key)=>{
let Vrl=`/shixuns.json`;
let newstatus;
let newdiff;
if(key[0].type===1){
this.setState({
status: key[1].value,
typepvisible:true
})
newstatus=key[1].value;
newdiff=this.state.diff;
}else if(key[0].type===2){
this.setState({
diff: key[1].value,
typepvisible:true
})
newdiff=key[1].value;
newstatus=this.state.status;
}
let params= {
order_by:this.state.order_by,
tag_level:this.state.tag_level,
tag_id:this.state.tag_id,
page:1,
limit:this.state.limit,
keyword:this.state.keyword,
status:newstatus,
diff:newdiff,
}
this.shixunresultend(params)
}
OnSearchInput=(value,type)=>{
if(type===true){
this.setState({
keyword:value,
typepvisible:true,
pages:1
})
let {order_by, tag_level, tag_id, sort, limit, status, diff} = this.state;
let params= {
order_by:order_by,
tag_level:tag_level,
tag_id:tag_id,
page:1,
limit:limit,
keyword:value,
status:status,
diff:diff,
sort:sort
}
this.shixunresultend(params)
}else{
this.setState({
keyword:value,
pages:1
})
}
}
ShixunsSwitch=()=>{
//types
this.setState({
order_by:"mine",
typepvisible:true,
pages:1,
})
let{tag_level,tag_id,page,limit,keyword,status,diff,sort}=this.state;
let newsort=sort;
if(newsort===undefined){
newsort="desc"
}
let params= {
order_by:"mine",
tag_level:tag_level,
tag_id:tag_id,
page:1,
limit:limit,
keyword:keyword,
status:status,
diff:diff,
sort:newsort
}
this.shixunresultend(params)
}
shixunsPage=(value)=>{
this.setState({
page:value,
typepvisible:true,
pages:value
})
let {order_by, tag_level, tag_id, limit, keyword, status, diff,sort} = this.state;
let params= {
order_by:order_by,
tag_level:tag_level,
tag_id:tag_id,
page:value,
limit:limit,
keyword:keyword,
status:status,
diff:diff,
sort:sort
}
let Url=`/shixuns.json`;
axios.get(Url,{
params
}).then((response)=> {
if(response.status===200){
this.setState({
middleshixundata: response.data,
typepvisible:false,
});
}
}).catch((error)=>{
console.log(error)
});
}
ShixunsState=(val,type)=>{
// sort,
let {tag_level, tag_id, page, limit, keyword, status, diff,sort} = this.state;
let newsort=sort;
this.setState({
order_by:type,
typepvisible:true,
pages:1,
// sort:sort
})
let params
// let vals=false
if(newsort===undefined){
newsort="desc"
}
params= {
order_by:type,
tag_level:tag_level,
tag_id:tag_id,
page:1,
limit:limit,
keyword:keyword,
status:status,
diff:diff,
sort:newsort
}
this.shixunresultend(params)
}
Shixunsupcircles=(sort)=>{
console.log(sort)
this.setState({
sort:sort
})
let {
order_by,
tag_level,
tag_id,
limit,
keyword,
status,
diff,
} = this.state;
let params= {
order_by:order_by,
tag_level:tag_level,
tag_id:tag_id,
page:1,
limit:limit,
keyword:keyword,
status:status,
diff:diff,
sort:sort
}
this.shixunresultend(params)
}
shixunresultend=(params)=>{
let Url=`/shixuns.json`;
axios.get(Url,{
params
}).then((response)=> {
// TODO 有keyword返回值时 显示一共有多少条记录
if(response.status===200){
this.setState({
search_tags:response.data.search_tags,
middleshixundata: response.data,
typepvisible:false,
pages:1
});
}
}).catch((error)=>{
console.log(error)
});
}
render() {
let {middleshixundata, typepvisible, pages, search_tags, keyword,parsedid,newtag_level,newpalce} = this.state;
// console.log(this.state.updata)
return (
<div className="newMain clearfix backFAFAFA">
{this.state.updata===undefined?"":<UpgradeModals
{...this.state}
/>}
{/*<Spin spinning={typepvisible} size="large" style={{marginTop:'15%'}}>*/}
<ShixunSearchBar
Updatasearchlist={this.Updatasearchlist.bind(this)}
allUpdatashixunlist={this.allUpdatashixunlist}
StatusEnquiry={this.StatusEnquiry.bind(this)}
OnSearchInput={this.OnSearchInput.bind(this)}
keyword={keyword}
parsedid={parsedid}
newtag_level={newtag_level}
newpalce={newpalce}
{...this.props}
{...this.state}
/>
<ShixunCardList
ShixunsState={this.ShixunsState.bind(this)}
ShixunsSwitch={this.ShixunsSwitch.bind(this)}
Shixunsupcircles={this.Shixunsupcircles.bind(this)}
allUpdatashixunlist={this.allUpdatashixunlist}
{...this.props}
{...this.state}
OnSearchInput={this.OnSearchInput.bind(this)}
/>
{/*下方图片*/}
<ShixunCard
typepvisible={typepvisible}
middleshixundata={middleshixundata.shixuns}
totalcount={middleshixundata.total_count}
pagination={middleshixundata.pagination}
pages={pages}
shixunsPage={this.shixunsPage.bind(this)}
/>
{/*</Spin>*/}
</div>
);
}
}
export default SnackbarHOC() (TPMIndexHOC ( ShixunsIndex ));