/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
Image,
FlatList,
TouchableOpacity,
BackHandler,
ImageBackground,
TextInput,
Animated,
StatusBar,
DeviceEventEmitter
} from 'react-native';
import BasePage from '../BasePage';
import Header from './Header';
import MySwiper from './Swiper';
import Dimensions from '../utils/dimensions';
import TopicTitle from './TopicTitle';
import ScrollRow from './ScrollRow';
import LibraryUrl from '../services/library';
import { ScrollView } from 'react-native-gesture-handler';
import commonutil from '../utils/commonutil';
import http_user from '../services/user';
import Toast from '../components/Toast';
export default class MainPage extends BasePage {
constructor(props) {
super(props);
}
updateRender(index) {
// LibraryUrl.getIndex(index).success(res => {
// }).fail(() => {
// alert(1111)
// })
// 触发更新
LibraryUrl.getIndex(index).then((res) => {
console.log(res);
const monthTopicTitle = res.data.monthTopic.zone.title;
const monthTopicScroll = res.data.monthTopic.zoneCourseVOList;
const schedule = res.data.schedule;
const hotCourse = res.data.hotCourse;
const recommend = res.data.recommend; //全部课程
const banner = res.data.banner; //轮播图
const pageCode = res.data.pageCode;
// const listData = [];
// for(let item in res.data){
// console.log(item)
// listData.push(1)
// }
// console.log(typeof listData)
// console.log(listData)
// console.log(listData.length)
let scheduleWeek = schedule[0].featureMap ? schedule[0].featureMap.weekSeq : '1';
this.setState({
// listData: listData.length? listData : [],
hotCourse,
monthTopicTitle,
monthTopicScroll,
schedule,
recommend,
banner,
scheduleWeek,
pageCode
});
console.log(this.state.banner);
});
}
state = {
grade: '大学',
ifGradeMenuShow: false,
fadeAnim: new Animated.Value(0),
schedule: [],
recommend: [],
listData: [],
banner: [],
currentSwitch: { title: '小学', param: 'PRIMARY_SCHOOL' },
switchList: [
// { title: '幼儿园', param: 'KINDERGARTEN' },
{ title: '学前', param: 'PRESCHOOL' },
{ title: '小学', param: 'PRIMARY_SCHOOL' },
{ title: '中学', param: 'MIDDLE_SCHOOL' }
],
scheduleWeek: '1',
username: '游客',
avatar: '',
isVip: false,
showLoading: true,
isVisitor: true
};
renderBtn = (item, index) => {
return (
// this.state.currentSwitch.param === item.param
// ?
// null
// :
// this.switchGrade(index)} key={index} style={index === 1 ? styles.gradeItemMid : styles.gradeItem}>
// {item.title}
//
this.switchGrade(index)}
key={index}
style={index === 1 ? styles.gradeItemMid : styles.gradeItem}
>
{item.title}
);
};
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);
this.refreshSubScription = DeviceEventEmitter.addListener('indexInfo', () => {
this.getUserInfo();
});
DeviceEventEmitter.emit('indexInfo');
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid);
this.refreshSubScription.remove();
}
onBackAndroid = () => {
// global.storage.remove({ key: 'userInfo' });
// BackHandler.exitApp();
// return true;
};
switchGrade = (index) => {
const obj = this.state.switchList[index];
this.setState({
currentSwitch: obj
});
this.hideGradeMenu();
if (!global.userInfo.isVisitor) {
//这里更新个人信息学龄选项
this.updateUserInfo(obj.param);
} else {
global.userInfo.ageGroup = obj.param;
commonutil.saveUserInfo();
}
this.updateRender(obj.param);
};
render() {
// const abc =Object.keys(this.state.data).map((k)=>this.state.data[k])
return (
{/* {
return this.loadFlatItem(item);
}}
keyExtractor={(item, index) => item.key.toString()}
ListHeaderComponent={() => this.headerorfooterComponent()}
renderSectionHeader={this.sectionTitle}
onScroll={this.hideGradeMenu}
/> */}
{this.headerorfooterComponent()}
{this.getSwiperElement()}
{this.getScheduleElement()}
{this.getMonthTopic()}
{this.getHotCourse()}
{this.getAllCourses()}
{this.state.ifGradeMenuShow ? (
{this.state.switchList.map((item, index) => this.renderBtn(item, index))}
) : null}
);
}
// 头部组件
headerorfooterComponent() {
return (
this.toNextPage('userCenter')}
/>
{/* 搜索区域 */}
this.search(this)}
style={{ position: 'absolute', left: '45%', top: 10 }}
>
{this.state.currentSwitch.title}
);
}
// 渲染轮播图
getSwiperElement() {
return (
);
}
// 渲染课程表
getScheduleElement() {
let renderScheduleItem = (item, index) => {
const id = item.operationContent;
return (
this.toNextPage('SchedulePage', { pagecode: id })}
key={index}
activeOpacity={1}
>
{item.operationContent === 'KINDERGARTE' ? null : (
{item.title}
{item.summary}
)}
);
};
return (
{/*
{this.state.schedule.map((item, index) => renderScheduleItem(item, index))}
*/}
renderScheduleItem(item, index)}
keyExtractor={(item, index) => index.toString()}
showsHorizontalScrollIndicator={false}
/>
);
}
// 渲染月主题
getMonthTopic() {
return (
);
}
// 渲染热门课程
getHotCourse() {
return (
);
}
// 渲染全部课程
getAllCourses() {
return (
{this.state.recommend.map((item, index) => {
return (
{index === 0 ? null : (
)}
);
})}
);
}
// 渲染每一个块儿 sectionList组件的data,没有用到,以后可能会用
loadFlatItem(data) {
switch (data.title) {
// 轮播图
case 'banner':
return this.getSwiperElement();
break;
// 课程表
case 'schedule':
return this.getScheduleElement();
break;
// 大图主题
case 'monthTopic':
return this.getMonthTopic();
break;
// 热门课程
case 'hotCourse':
return this.getHotCourse();
break;
case 'recommend':
return this.getAllCourses();
break;
default:
break;
}
}
// 渲染每一个section的title sectionList组件的data,没有用到,以后可能会用
sectionTitle = (info) => {
switch (info.section.title) {
case 'operation':
return (
);
break;
case 'courses':
return ;
break;
default:
break;
}
};
// 点击呼出学龄菜单
tabCallOutHandler = () => {
this.setState(
{
ifGradeMenuShow: !this.state.ifGradeMenuShow
},
() => {
Animated.timing(this.state.fadeAnim, {
toValue: this.state.ifGradeMenuShow ? 1 : 0,
duration: 300
}).start();
}
);
};
// 如果切换学龄在显示状态,那么在它失去焦点时将它隐藏
hideGradeMenu = () => {
if (this.state.ifGradeMenuShow) {
this.setState({
ifGradeMenuShow: false
});
}
};
// 获取用户信息
async getUserInfo() {
this.setState({
username: global.userInfo.nickName ? global.userInfo.nickName : global.userInfo.mobile,
avatar: global.userInfo.avatar,
isVisitor: global.userInfo.isVisitor
});
let ageindex = 0;
if (global.userInfo.ageGroup === 'PRESCHOOL') {
ageindex = 0;
} else if (global.userInfo.ageGroup === 'PRIMARY_SCHOOL') {
ageindex = 1;
} else if (global.userInfo.ageGroup === 'MIDDLE_SCHOOL') {
ageindex = 2;
}
this.switchGrade(ageindex);
}
updateUserInfo(group) {
let opts = {
method: 'PUT', //请求方法
body: { ageGroup: group } //请求体
};
http_user.update_UserInfo(opts).then((res) => {
global.userInfo.ageGroup = group;
commonutil.saveUserInfo();
});
}
// 搜索
search() {
this.toNextPage('SearchResult');
}
toNextPage = (params, obj) => {
if (!global.userInfo.isVisitor) {
this.props.navigation.navigate(params, obj);
} else {
this.Toast('请先登录');
}
};
}
const styles = StyleSheet.create({
title_text: {
justifyContent: 'center',
alignItems: 'center',
color: 'red',
fontSize: 30,
textAlign: 'center',
marginTop: 30,
marginBottom: 50
},
/* 搜索区域 */
searchSection: {
flex: 1,
width: Dimensions.width,
height: Dimensions.getHeight(60),
flexDirection: 'row',
alignItems: 'center',
backgroundColor: '#f0f1f5',
justifyContent: 'space-around',
position: 'relative'
},
searchBox: {
position: 'relative',
width: Dimensions.getWidth(232),
height: Dimensions.getHeight(40),
backgroundColor: '#fff',
borderRadius: 20
},
search: {
width: 30,
height: 30
},
rightBtn: {
width: Dimensions.getWidth(113),
height: Dimensions.getHeight(40),
backgroundColor: '#fff',
borderRadius: 20,
alignItems: 'center',
justifyContent: 'center',
justifyContent: 'space-around',
flexDirection: 'row',
paddingLeft: 20,
paddingRight: 10
},
rightBtnIcon: {
width: Dimensions.getWidth(23),
height: Dimensions.getHeight(23)
},
rightBtnText: {
color: '#151515',
fontSize: 18
},
callUpGrade: {
width: 113,
height: 120,
borderRadius: 20,
position: 'absolute',
right: 9,
top: 125,
zIndex: 999,
elevation: 999,
backgroundColor: '#fff',
flexDirection: 'column'
},
gradeItem: {
zIndex: 999,
flex: 1,
alignItems: 'center',
justifyContent: 'center'
},
gradeItemMid: {
zIndex: 999,
flex: 1,
alignItems: 'center',
justifyContent: 'center',
borderTopWidth: 1,
borderBottomWidth: 1,
borderColor: '#f0f1f5'
},
gradeText: {
color: '#151515',
fontSize: 18
}
});
const sectionData = [
{
title: 'swiper',
data: [
{
//轮播
key: 111,
typea: 1,
text: '第一种类型'
},
{
//只有一个标题下面两个图片
key: 222,
typea: 2,
item: {
item_type: 1,
title: '课程表:第一周',
icon_item: [
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第一张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第二张图片文字'
}
]
}
}
]
},
{
title: 'operation',
data: [
{
//一个标题,大长图
key: 444,
typea: 3,
title: '五月主题:五一启程,去看看不同世界',
text: '每天30分钟,玩学两不误',
icon_item: [
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第一张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第二张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第三张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第四张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第五张图片文字'
}
]
},
{
key: 555,
typea: 4,
title: '热门课程',
text: 'text',
mask: false,
icon_item: [
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第一张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第二张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第三张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第四张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第五张图片文字'
}
]
}
]
},
{
title: 'courses',
data: [
{
//一个标题,大长图
key: 444,
typea: 5,
title: '五月主题:五一启程,去看看不同世界',
text: '每天30分钟,玩学两不误',
icon_item: [
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第一张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第二张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第三张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第四张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第五张图片文字'
}
]
},
{
key: 555,
typea: 5,
title: '热门课程',
text: 'text',
mask: false,
icon_item: [
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第一张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第二张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第三张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第四张图片文字'
},
{
icon:
'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556277324856&di=dc1548a0c5ba10481af922e174912937&imgtype=0&src=http%3A%2F%2Fwww.51pptmoban.com%2Fd%2Ffile%2F2012%2F05%2F12%2F82c4568a90055adcf8fbb896f0841c69.jpg',
name: '第五张图片文字'
}
]
}
]
}
];