|
@@ -1,304 +1,289 @@
|
|
|
/*
|
|
|
* 个人中心页面
|
|
|
*/
|
|
|
-import React, { Component } from "react";
|
|
|
+import React, { Component } from 'react';
|
|
|
import {
|
|
|
- Platform,
|
|
|
- StyleSheet,
|
|
|
- Text,
|
|
|
- View,
|
|
|
- Image,
|
|
|
- TouchableOpacity,
|
|
|
- ImageBackground,
|
|
|
- Button,
|
|
|
- StatusBar,
|
|
|
- Modal,
|
|
|
- TouchableHighlight,
|
|
|
- DeviceEventEmitter,
|
|
|
- ScrollView
|
|
|
-} from "react-native";
|
|
|
-import BasePage from "./BasePage";
|
|
|
-import Dimensions from "./utils/dimensions";
|
|
|
-import ShopBox from "./components/ShopBox";
|
|
|
-import TopicTitle from "./components/TopicTitle";
|
|
|
-import ScrollRow from "./components/ScrollRow";
|
|
|
-import CourseTitle from "./components/CourseTitle";
|
|
|
-import user from "./services/user";
|
|
|
+ Platform,
|
|
|
+ StyleSheet,
|
|
|
+ Text,
|
|
|
+ View,
|
|
|
+ Image,
|
|
|
+ TouchableOpacity,
|
|
|
+ ImageBackground,
|
|
|
+ Button,
|
|
|
+ StatusBar,
|
|
|
+ Modal,
|
|
|
+ TouchableHighlight,
|
|
|
+ DeviceEventEmitter,
|
|
|
+ ScrollView
|
|
|
+} from 'react-native';
|
|
|
+import BasePage from './BasePage';
|
|
|
+import Dimensions from './utils/dimensions';
|
|
|
+import ShopBox from './components/ShopBox';
|
|
|
+import TopicTitle from './components/TopicTitle';
|
|
|
+import ScrollRow from './components/ScrollRow';
|
|
|
+import CourseTitle from './components/CourseTitle';
|
|
|
+import user from './services/user';
|
|
|
+import commonUtil from './utils/commonutil';
|
|
|
|
|
|
export default class userCenter extends BasePage {
|
|
|
- componentDidMount() {
|
|
|
- //触发更新
|
|
|
- this.refreshSubScription = DeviceEventEmitter.addListener('infoback', () => {
|
|
|
- user.userMember().then(res => {
|
|
|
- console.log("个人列表", res);
|
|
|
- // 收藏
|
|
|
- const favoritesList = res.data.favoritesList;
|
|
|
- //观看记录
|
|
|
- const playLogList = res.data.playLogList;
|
|
|
- // 用户消息
|
|
|
- const user = res.data.user;
|
|
|
- // VIP
|
|
|
- const vip = res.data.vip;
|
|
|
- this.setState({
|
|
|
- favoritesList,
|
|
|
- playLogList,
|
|
|
- user,
|
|
|
- vip
|
|
|
- });
|
|
|
- });
|
|
|
- })
|
|
|
- DeviceEventEmitter.emit('infoback')
|
|
|
- }
|
|
|
- componentWillUnmount(){
|
|
|
- this.refreshSubScription.remove();
|
|
|
- }
|
|
|
- state = {
|
|
|
- nickName: "初始昵称",
|
|
|
- user: {},
|
|
|
- ifDiscount: true,
|
|
|
- isVIP: false,
|
|
|
- btnArr: [
|
|
|
- {
|
|
|
- title: "订单",
|
|
|
- icon: require("./images/userCenter/order.png"),
|
|
|
- goTo: "Order"
|
|
|
- },
|
|
|
- {
|
|
|
- title: "抵用券",
|
|
|
- icon: require("./images/userCenter/discount.png"),
|
|
|
- goTo: "Ticket"
|
|
|
- },
|
|
|
- {
|
|
|
- title: "客服",
|
|
|
- icon: require("./images/userCenter/service.png"),
|
|
|
- goTo: "Order"
|
|
|
- }
|
|
|
- ],
|
|
|
- shopData: [
|
|
|
- {
|
|
|
- title: "1个月",
|
|
|
- originPrice: "199",
|
|
|
- price: "49",
|
|
|
- background: require("./images/shopBox/left.png")
|
|
|
- },
|
|
|
- {
|
|
|
- title: "12个月",
|
|
|
- originPrice: "499",
|
|
|
- price: "199",
|
|
|
- background: require("./images/shopBox/right.png")
|
|
|
- }
|
|
|
- ],
|
|
|
- discount: {
|
|
|
- title: "限时秒杀",
|
|
|
- icon: require("./images/shopBox/discount.png")
|
|
|
- },
|
|
|
- favoritesList: [],
|
|
|
- playLogList: [],
|
|
|
- vip: false
|
|
|
- };
|
|
|
- renderBtn = (item, index) => {
|
|
|
- return (
|
|
|
- <TouchableOpacity
|
|
|
- key={index}
|
|
|
- onPress={() => this.goTo(`${item.goTo}`)}
|
|
|
- style={{ display: "flex", justifyContent: "space-between" }}
|
|
|
- >
|
|
|
- <View style={styles.btnItem}>
|
|
|
- <Image source={item.icon} style={styles.btnIcon} />
|
|
|
- <Text style={styles.btnTitle}>{item.title}</Text>
|
|
|
- </View>
|
|
|
- </TouchableOpacity>
|
|
|
- );
|
|
|
- };
|
|
|
- goBack() {
|
|
|
- //返回上一页
|
|
|
- this.props.navigation.goBack();
|
|
|
- }
|
|
|
- render() {
|
|
|
- return (
|
|
|
- <ScrollView
|
|
|
- style={{ height: 1100, overflow: "scroll", backgroundColor: "#fff" }}
|
|
|
- >
|
|
|
- <View style={styles.topSection}>
|
|
|
- <ImageBackground
|
|
|
- source={require("./images/userCenter/top-bg.png")}
|
|
|
- style={{ width: "100%", height: 203 }}
|
|
|
- >
|
|
|
- <StatusBar
|
|
|
- backgroundColor={"transparent"}
|
|
|
- barStyle={"dark-content"}
|
|
|
- // backgroundColor={"white"}
|
|
|
- translucent={true}
|
|
|
- hidden={false}
|
|
|
- />
|
|
|
- <View
|
|
|
- style={{
|
|
|
- height: 30,
|
|
|
- // backgroundColor: "white"
|
|
|
- marginTop: 20
|
|
|
- }}
|
|
|
- >
|
|
|
- <CourseTitle
|
|
|
- width={this.getWindowWidth()}
|
|
|
- title="个人中心"
|
|
|
- lefttype={2}
|
|
|
- righttype={2}
|
|
|
- textcolor={"#fff"}
|
|
|
- backPress={() => this.goBack()}
|
|
|
- // backgroundColor={"transparent"}
|
|
|
- // rightPress={this.showSharedDialog.bind(this)}
|
|
|
- />
|
|
|
- </View>
|
|
|
- <View style={styles.userInfo}>
|
|
|
- <TouchableOpacity onPress={() => this.goTo(`PersonalInfo`)}>
|
|
|
- <Image
|
|
|
- style={styles.userAvatar}
|
|
|
- source={{ uri: this.state.user.avatar }}
|
|
|
- />
|
|
|
- </TouchableOpacity>
|
|
|
+ componentDidMount() {
|
|
|
+ //触发更新
|
|
|
+ this.refreshSubScription = DeviceEventEmitter.addListener('infoback', () => {
|
|
|
+ user.userMember().then((res) => {
|
|
|
+ console.log('个人列表', res);
|
|
|
+ // 收藏
|
|
|
+ const favoritesList = res.data.favoritesList;
|
|
|
+ //观看记录
|
|
|
+ const playLogList = res.data.playLogList;
|
|
|
+ // 用户消息
|
|
|
+ const user = res.data.user;
|
|
|
+ // VIP
|
|
|
+ const vip = res.data.vip;
|
|
|
+ this.setState({
|
|
|
+ favoritesList,
|
|
|
+ playLogList,
|
|
|
+ user,
|
|
|
+ vip
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ DeviceEventEmitter.emit('infoback');
|
|
|
+ }
|
|
|
+ componentWillUnmount() {
|
|
|
+ this.refreshSubScription.remove();
|
|
|
+ }
|
|
|
+ state = {
|
|
|
+ nickName: '初始昵称',
|
|
|
+ user: {},
|
|
|
+ ifDiscount: true,
|
|
|
+ isVIP: false,
|
|
|
+ btnArr: [
|
|
|
+ {
|
|
|
+ title: '订单',
|
|
|
+ icon: require('./images/userCenter/order.png'),
|
|
|
+ goTo: 'Order'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '抵用券',
|
|
|
+ icon: require('./images/userCenter/discount.png'),
|
|
|
+ goTo: 'Ticket'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '客服',
|
|
|
+ icon: require('./images/userCenter/service.png'),
|
|
|
+ goTo: 'Phone'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ shopData: [
|
|
|
+ {
|
|
|
+ title: '1个月',
|
|
|
+ originPrice: '199',
|
|
|
+ price: '49',
|
|
|
+ background: require('./images/shopBox/left.png')
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '12个月',
|
|
|
+ originPrice: '499',
|
|
|
+ price: '199',
|
|
|
+ background: require('./images/shopBox/right.png')
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ discount: {
|
|
|
+ title: '限时秒杀',
|
|
|
+ icon: require('./images/shopBox/discount.png')
|
|
|
+ },
|
|
|
+ favoritesList: [],
|
|
|
+ playLogList: [],
|
|
|
+ vip: false
|
|
|
+ };
|
|
|
+ renderBtn = (item, index) => {
|
|
|
+ return (
|
|
|
+ <TouchableOpacity
|
|
|
+ key={index}
|
|
|
+ onPress={() => this.goTo(`${item.goTo}`)}
|
|
|
+ style={{ display: 'flex', justifyContent: 'space-between' }}
|
|
|
+ >
|
|
|
+ <View style={styles.btnItem}>
|
|
|
+ <Image source={item.icon} style={styles.btnIcon} />
|
|
|
+ <Text style={styles.btnTitle}>{item.title}</Text>
|
|
|
+ </View>
|
|
|
+ </TouchableOpacity>
|
|
|
+ );
|
|
|
+ };
|
|
|
+ goBack() {
|
|
|
+ //返回上一页
|
|
|
+ this.props.navigation.goBack();
|
|
|
+ }
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <ScrollView style={{ height: 1100, overflow: 'scroll', backgroundColor: '#fff' }}>
|
|
|
+ <View style={styles.topSection}>
|
|
|
+ <ImageBackground
|
|
|
+ source={require('./images/userCenter/top-bg.png')}
|
|
|
+ style={{ width: '100%', height: 203 }}
|
|
|
+ >
|
|
|
+ <StatusBar
|
|
|
+ backgroundColor={'transparent'}
|
|
|
+ barStyle={'dark-content'}
|
|
|
+ // backgroundColor={"white"}
|
|
|
+ translucent={true}
|
|
|
+ hidden={false}
|
|
|
+ />
|
|
|
+ <View
|
|
|
+ style={{
|
|
|
+ height: 30,
|
|
|
+ // backgroundColor: "white"
|
|
|
+ marginTop: 20
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <CourseTitle
|
|
|
+ width={this.getWindowWidth()}
|
|
|
+ title="个人中心"
|
|
|
+ lefttype={2}
|
|
|
+ righttype={2}
|
|
|
+ textcolor={'#fff'}
|
|
|
+ backPress={() => this.goBack()}
|
|
|
+ // backgroundColor={"transparent"}
|
|
|
+ // rightPress={this.showSharedDialog.bind(this)}
|
|
|
+ />
|
|
|
+ </View>
|
|
|
+ <View style={styles.userInfo}>
|
|
|
+ <TouchableOpacity onPress={() => this.goTo(`PersonalInfo`)}>
|
|
|
+ <Image style={styles.userAvatar} source={{ uri: this.state.user.avatar }} />
|
|
|
+ </TouchableOpacity>
|
|
|
|
|
|
- <View style={styles.userRight}>
|
|
|
- <View style={styles.userName}>
|
|
|
- <Text style={styles.userNameText}>
|
|
|
- {this.state.user.nickName}
|
|
|
- </Text>
|
|
|
- {this.state.vip ? (
|
|
|
- <Image
|
|
|
- style={styles.vipTag}
|
|
|
- source={require("./images/common/vip.png")}
|
|
|
- />
|
|
|
- ) : null}
|
|
|
- </View>
|
|
|
- {this.state.vip ? null : (
|
|
|
- <View style={styles.userName}>
|
|
|
- <Text style={styles.vipSologan}>开通vip</Text>
|
|
|
- </View>
|
|
|
- )}
|
|
|
- </View>
|
|
|
- </View>
|
|
|
- <View style={styles.btnBoxWrapper}>
|
|
|
- <View style={styles.btnBox}>
|
|
|
- {this.state.btnArr.map((item, index) =>
|
|
|
- this.renderBtn(item, index)
|
|
|
- )}
|
|
|
- </View>
|
|
|
- </View>
|
|
|
- </ImageBackground>
|
|
|
- </View>
|
|
|
- <View style={styles.discountSection}>
|
|
|
- <ShopBox
|
|
|
- data={this.state.shopData}
|
|
|
- discount={this.state.discount}
|
|
|
- nav={this.props.navigation.navigate}
|
|
|
- />
|
|
|
- </View>
|
|
|
- <View style={styles.recordSection}>
|
|
|
- <TopicTitle title={"观看记录"} ifTubeShow={true} />
|
|
|
- <ScrollRow
|
|
|
- itemWidth={106}
|
|
|
- itemHeight={153}
|
|
|
- data={this.state.playLogList}
|
|
|
- />
|
|
|
- </View>
|
|
|
- <View style={styles.collectSection}>
|
|
|
- <TopicTitle title={"我的收藏"} ifTubeShow={true} />
|
|
|
- <ScrollRow
|
|
|
- itemWidth={106}
|
|
|
- itemHeight={150}
|
|
|
- data={this.state.favoritesList}
|
|
|
- />
|
|
|
- </View>
|
|
|
- </ScrollView>
|
|
|
- );
|
|
|
- }
|
|
|
- goTo(index) {
|
|
|
- this.toNextPage(index);
|
|
|
- }
|
|
|
+ <View style={styles.userRight}>
|
|
|
+ <View style={styles.userName}>
|
|
|
+ <Text style={styles.userNameText}>{this.state.user.nickName}</Text>
|
|
|
+ {this.state.vip ? (
|
|
|
+ <Image style={styles.vipTag} source={require('./images/common/vip.png')} />
|
|
|
+ ) : null}
|
|
|
+ </View>
|
|
|
+ {this.state.vip ? null : (
|
|
|
+ <View style={styles.userName}>
|
|
|
+ <Text style={styles.vipSologan}>开通vip</Text>
|
|
|
+ </View>
|
|
|
+ )}
|
|
|
+ </View>
|
|
|
+ </View>
|
|
|
+ <View style={styles.btnBoxWrapper}>
|
|
|
+ <View style={styles.btnBox}>
|
|
|
+ {this.state.btnArr.map((item, index) => this.renderBtn(item, index))}
|
|
|
+ </View>
|
|
|
+ </View>
|
|
|
+ </ImageBackground>
|
|
|
+ </View>
|
|
|
+ <View style={styles.discountSection}>
|
|
|
+ <ShopBox
|
|
|
+ data={this.state.shopData}
|
|
|
+ discount={this.state.discount}
|
|
|
+ nav={this.props.navigation.navigate}
|
|
|
+ />
|
|
|
+ </View>
|
|
|
+ <View style={styles.recordSection}>
|
|
|
+ <TopicTitle title={'观看记录'} ifTubeShow={true} />
|
|
|
+ <ScrollRow itemWidth={106} itemHeight={153} data={this.state.playLogList} />
|
|
|
+ </View>
|
|
|
+ <View style={styles.collectSection}>
|
|
|
+ <TopicTitle title={'我的收藏'} ifTubeShow={true} />
|
|
|
+ <ScrollRow itemWidth={106} itemHeight={150} data={this.state.favoritesList} />
|
|
|
+ </View>
|
|
|
+ </ScrollView>
|
|
|
+ );
|
|
|
+ }
|
|
|
+ goTo(index) {
|
|
|
+ if (index === 'Phone') {
|
|
|
+ commonUtil.callPhone('15810271473');
|
|
|
+ } else {
|
|
|
+ this.toNextPage(index);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const styles = StyleSheet.create({
|
|
|
- topSection: {
|
|
|
- height: 250,
|
|
|
- width: Dimensions.width
|
|
|
- // backgroundColor: 'red'
|
|
|
- },
|
|
|
- userInfo: {
|
|
|
- width: Dimensions.width,
|
|
|
- height: 70,
|
|
|
- flexDirection: "row",
|
|
|
- justifyContent: "flex-start",
|
|
|
- alignItems: "center"
|
|
|
- },
|
|
|
- userAvatar: {
|
|
|
- width: 67,
|
|
|
- height: 67,
|
|
|
- borderRadius: 55,
|
|
|
- marginHorizontal: 12
|
|
|
- },
|
|
|
- userRight: {
|
|
|
- flexDirection: "column"
|
|
|
- },
|
|
|
- userName: {
|
|
|
- flexDirection: "row",
|
|
|
- alignItems: "center"
|
|
|
- },
|
|
|
- userNameText: {
|
|
|
- fontSize: 18,
|
|
|
- color: "#fff",
|
|
|
- fontWeight: "500",
|
|
|
- marginRight: 9
|
|
|
- },
|
|
|
- vipSologan: {
|
|
|
- fontSize: 14,
|
|
|
- color: "#fff"
|
|
|
- },
|
|
|
- btnBoxWrapper: {
|
|
|
- width: Dimensions.width,
|
|
|
- alignItems: "center",
|
|
|
- marginTop: 16
|
|
|
- },
|
|
|
- btnBox: {
|
|
|
- width: (Dimensions.width * 343) / 375,
|
|
|
- height: 100,
|
|
|
- borderRadius: 10,
|
|
|
- shadowColor: "#000",
|
|
|
- // shadowOffset: 1,
|
|
|
- shadowOpacity: 2,
|
|
|
- shadowRadius: 5,
|
|
|
- elevation: 4,
|
|
|
- backgroundColor: "#fff",
|
|
|
- justifyContent: "space-around",
|
|
|
- flexDirection: "row"
|
|
|
- },
|
|
|
- btnItem: {
|
|
|
- height: "100%",
|
|
|
- flexDirection: "column",
|
|
|
- justifyContent: "center",
|
|
|
- alignItems: "center"
|
|
|
- },
|
|
|
- btnIcon: {
|
|
|
- width: 36,
|
|
|
- height: 24,
|
|
|
- marginBottom: 7
|
|
|
- },
|
|
|
- btnTitle: {
|
|
|
- color: "#3f3f3f",
|
|
|
- fontSize: 16
|
|
|
- },
|
|
|
- discountSection: {
|
|
|
- width: Dimensions.width
|
|
|
- // height: 242,
|
|
|
- // backgroundColor: 'green'
|
|
|
- },
|
|
|
- recordSection: {
|
|
|
- width: Dimensions.width,
|
|
|
- height: 235
|
|
|
- // backgroundColor: 'blue'
|
|
|
- },
|
|
|
- collectSection: {
|
|
|
- width: Dimensions.width,
|
|
|
- height: 255,
|
|
|
- marginBottom: 20
|
|
|
- // backgroundColor: 'yellow'
|
|
|
- }
|
|
|
+ topSection: {
|
|
|
+ height: 250,
|
|
|
+ width: Dimensions.width
|
|
|
+ // backgroundColor: 'red'
|
|
|
+ },
|
|
|
+ userInfo: {
|
|
|
+ width: Dimensions.width,
|
|
|
+ height: 70,
|
|
|
+ flexDirection: 'row',
|
|
|
+ justifyContent: 'flex-start',
|
|
|
+ alignItems: 'center'
|
|
|
+ },
|
|
|
+ userAvatar: {
|
|
|
+ width: 67,
|
|
|
+ height: 67,
|
|
|
+ borderRadius: 55,
|
|
|
+ marginHorizontal: 12
|
|
|
+ },
|
|
|
+ userRight: {
|
|
|
+ flexDirection: 'column'
|
|
|
+ },
|
|
|
+ userName: {
|
|
|
+ flexDirection: 'row',
|
|
|
+ alignItems: 'center'
|
|
|
+ },
|
|
|
+ userNameText: {
|
|
|
+ fontSize: 18,
|
|
|
+ color: '#fff',
|
|
|
+ fontWeight: '500',
|
|
|
+ marginRight: 9
|
|
|
+ },
|
|
|
+ vipSologan: {
|
|
|
+ fontSize: 14,
|
|
|
+ color: '#fff'
|
|
|
+ },
|
|
|
+ btnBoxWrapper: {
|
|
|
+ width: Dimensions.width,
|
|
|
+ alignItems: 'center',
|
|
|
+ marginTop: 16
|
|
|
+ },
|
|
|
+ btnBox: {
|
|
|
+ width: Dimensions.width * 343 / 375,
|
|
|
+ height: 100,
|
|
|
+ borderRadius: 10,
|
|
|
+ shadowColor: '#000',
|
|
|
+ // shadowOffset: 1,
|
|
|
+ shadowOpacity: 2,
|
|
|
+ shadowRadius: 5,
|
|
|
+ elevation: 4,
|
|
|
+ backgroundColor: '#fff',
|
|
|
+ justifyContent: 'space-around',
|
|
|
+ flexDirection: 'row'
|
|
|
+ },
|
|
|
+ btnItem: {
|
|
|
+ height: '100%',
|
|
|
+ flexDirection: 'column',
|
|
|
+ justifyContent: 'center',
|
|
|
+ alignItems: 'center'
|
|
|
+ },
|
|
|
+ btnIcon: {
|
|
|
+ width: 36,
|
|
|
+ height: 24,
|
|
|
+ marginBottom: 7
|
|
|
+ },
|
|
|
+ btnTitle: {
|
|
|
+ color: '#3f3f3f',
|
|
|
+ fontSize: 16
|
|
|
+ },
|
|
|
+ discountSection: {
|
|
|
+ width: Dimensions.width
|
|
|
+ // height: 242,
|
|
|
+ // backgroundColor: 'green'
|
|
|
+ },
|
|
|
+ recordSection: {
|
|
|
+ width: Dimensions.width,
|
|
|
+ height: 235
|
|
|
+ // backgroundColor: 'blue'
|
|
|
+ },
|
|
|
+ collectSection: {
|
|
|
+ width: Dimensions.width,
|
|
|
+ height: 255,
|
|
|
+ marginBottom: 20
|
|
|
+ // backgroundColor: 'yellow'
|
|
|
+ }
|
|
|
});
|