/* * 个人中心页面 */ 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' export default class userCenter extends BasePage { componentDidMount() { 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 }) }); } 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> <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')}></Image>: 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) } } 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' }, })