/* * 个人中心页面 */ 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() { console.log(4444); 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.setInfo.bind(this)}> <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); } setInfo() { this.props.navigation.navigate("PersonalInfo", { infoback: this.infoback.bind(this) }); } 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 }); }); } } 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' } });