Authored by 孙凯

添加资源 review by hongmo

... ... @@ -8,6 +8,7 @@ import SingleImage from './SingleImage';
import DetailText from './DetailText';
import GoodsCell from './GoodsCell';
import Header from './Header';
import MoreLink from './MoreLink';
import ReactNative, {
View,
... ... @@ -77,12 +78,11 @@ export default class Detail extends Component {
return (
<GoodsCell resource={rowData}/>
);
}else if (template_name == 'moreLink') {
}else if (template_name == 'link') {
return (
<Text>moreLink</Text>
<MoreLink resource={rowData}/>
);
}
}else if (sectionID == 'detailBrand') {
return (
<DetailBrand resource={rowData}/>
... ... @@ -108,7 +108,7 @@ export default class Detail extends Component {
weixin,
} = resource;
let list = content?content.get('data'):[];
console.log(list.toJS());
let dataSource = {
detailList: list.size?list.toArray():[],
detailBrand: [brand],
... ...
... ... @@ -54,6 +54,7 @@ export default class GoodsCell extends React.Component {
renderHeader() {
return(
<View style={styles.titleB}>
<View style={{width: width,height: 0.5,backgroundColor: '#e5e5e5',}}/>
<View style={styles.title}>
<Text style={styles.text}>相关推荐</Text>
</View>
... ... @@ -65,26 +66,63 @@ export default class GoodsCell extends React.Component {
let {resource} = this.props;
let list = resource.get('productList');
if (list.size == 0) {
if (!list || list.size == 0) {
return null;
}
if (list.size == 1) {
let backgroundWidth = width;
let backgroundHeight = 40 + 80;
let list0 = list.toJS();
let obj = list0[0];
let product_name = obj.product_name;
let default_images = obj.default_images;
let sales_price = obj.sales_price;
let backgroundWidth = width;
let backgroundHeight = 40 + Math.ceil(list.size / 2) * (rowHeight+rowMarginHorizontal) + 20;
return(
<View style={{width: backgroundWidth, height:backgroundHeight, backgroundColor:'white'}}>
<ListView
contentContainerStyle={styles.contentContainer}
initialListSize={Math.ceil(list.size)}
dataSource={this.dataSource.cloneWithRows(list.toArray())}
renderHeader={this.renderHeader}
enableEmptySections={true}
renderRow={this.renderRow}
scrollEnabled={false}
scrollsToTop={false}
/>
</View>
);
console.log(obj);
return(
<View style={{width: backgroundWidth, height:backgroundHeight, backgroundColor:'white'}}>
<View style={styles.titleB}>
<View style={{width: width,height: 0.5,backgroundColor: '#e5e5e5',}}/>
<View style={styles.title}>
<Text style={styles.text}>相关推荐</Text>
</View>
</View>
<View style={styles.single_View}>
<Image source={{uri: default_images}} style={styles.timeThumb} resizeMode={'contain'}></Image>
<View style={styles.nameView}>
<Text style={styles.name}>{product_name}</Text>
<View style={styles.salesView}>
<Text style={styles.sales}>¥{sales_price}</Text>
<TouchableOpacity activeOpacity={0.5} onPress={() => {
// this.props.onPressBrandItem && this.props.onPressBrandItem(rowData.url, rowID);
}}>
<View style={styles.button}>
<Text style={styles.b}>查看详情</Text>
</View>
</TouchableOpacity>
</View>
</View>
</View>
</View>
);
}else {
let backgroundWidth = width;
let backgroundHeight = 40 + Math.ceil(list.size / 2) * (rowHeight+rowMarginHorizontal) + 20;
return(
<View style={{width: backgroundWidth, height:backgroundHeight, backgroundColor:'white'}}>
<ListView
contentContainerStyle={styles.contentContainer}
initialListSize={Math.ceil(list.size)}
dataSource={this.dataSource.cloneWithRows(list.toArray())}
renderHeader={this.renderHeader}
enableEmptySections={true}
renderRow={this.renderRow}
scrollEnabled={false}
scrollsToTop={false}
/>
</View>
);
}
}
};
... ... @@ -113,8 +151,56 @@ let styles = StyleSheet.create({
title: {
alignItems: 'center',
justifyContent: 'center',
height: 39,
height: 39.5,
width:width,
backgroundColor: 'red',
},
text: {
color: 'rgb(215, 215, 215)',
},
single_View: {
height: 80,
width:width,
backgroundColor: 'white',
flexDirection: 'row',
},
nameView: {
height: 80,
width:width,
backgroundColor: 'white',
},
name: {
marginTop: 30,
marginLeft:15,
height: 20,
width:width,
backgroundColor: 'white',
},
salesView: {
flexDirection: 'row',
justifyContent: 'space-between',
height: 20,
width:width - 80,
backgroundColor: 'white',
},
sales: {
height: 20,
width: 100,
marginLeft: 15,
backgroundColor: 'white',
},
button: {
height: 20,
width: 60,
backgroundColor: 'white',
alignItems: 'center',
justifyContent: 'center',
borderColor: 'black',
borderWidth: 1,
borderRadius: 2,
},
timeThumb: {
marginLeft: 20,
height: 80,
width:40,
},
});
... ...
... ... @@ -52,19 +52,24 @@ export default class Header extends React.Component {
return(
<View style={styles.contentContainer}>
<View style={styles.header}>
<Image source={{uri: author_avatar}} style={styles.thumb}></Image>
<Text style={styles.name}>{author_name}</Text>
<Text style={styles.desc}>{author_desc}</Text>
</View>
<TouchableOpacity activeOpacity={0.5} onPress={() => {
// this.props.onPressBrandItem && this.props.onPressBrandItem(rowData.url, rowID);
}}>
<View style={styles.header}>
<Image source={{uri: author_avatar}} style={styles.thumb}></Image>
<Text style={styles.name}>{author_name}</Text>
<Text style={styles.desc}>{author_desc}</Text>
</View>
</TouchableOpacity>
<View style={{width: width,height: 0.5,backgroundColor: '#e5e5e5',}}/>
<Text style={styles.article_title}>{article_title}</Text>
<View style={styles.time}>
<Image source={require('../../image/time_icon.png')} style={styles.timeThumb}></Image>
<Image source={require('../../image/time_icon.png')} style={styles.timeThumb}resizeMode={'contain'}></Image>
<Text style={styles.text}>{publishTime}</Text>
<Image source={require('../../image/time_icon.png')} style={styles.timeThumb}></Image>
<Image source={require('../../image/shared_view_icon.png')} style={styles.timeThumb}resizeMode={'contain'}></Image>
<Text style={styles.text}>{pageViews}</Text>
</View>
<View style={{width: width,height: 10}}/>
</View>
);
}
... ... @@ -114,7 +119,7 @@ let styles = StyleSheet.create({
timeThumb: {
marginLeft: 20,
height: 12,
width:12,
width:20,
},
text: {
marginLeft: 5,
... ...
'use strict';
import React from 'react';
import ReactNative from 'react-native';
import Immutable, {Map} from 'immutable';
const {
AppRegistry,
StyleSheet,
Text,
View,
Image,
ListView,
Dimensions,
TouchableOpacity,
} = ReactNative;
export default class MoreLink extends React.Component {
constructor(props) {
super(props);
}
shouldComponentUpdate(nextProps){
if (Immutable.is(nextProps.resource, this.props.resource)) {
return false;
} else {
return true;
}
}
render() {
let {resource} = this.props;
let data = resource.get('data');
let url = data?data.get('url'):null;
return(
<TouchableOpacity activeOpacity={0.5} onPress={() => {
// this.props.onPressBrandItem && this.props.onPressBrandItem(rowData.url, rowID);
}}>
<View style={styles.titleB}>
<View style={{width: width,height: 0.5,backgroundColor: '#e5e5e5',}}/>
<View style={styles.title}>
<Text style={styles.text}>更多商品</Text>
<Image source={require('../../image/community_enter_normal.png')} style={styles.timeThumb}></Image>
</View>
<View style={{width: width,height: 0.5,backgroundColor: '#e5e5e5',}}/>
</View>
</TouchableOpacity>
);
}
};
let {width, height} = Dimensions.get('window');
let styles = StyleSheet.create({
titleB: {
alignItems: 'center',
justifyContent: 'center',
height: 40,
width:width,
backgroundColor: 'white',
},
title: {
flexDirection: 'row',
alignItems: 'center',
marginLeft: 20,
height: 39,
width:width - 20,
justifyContent: 'space-between',
backgroundColor: 'white',
},
text: {
color: 'rgb(215, 215, 215)',
},
timeThumb: {
height: 40,
width:40,
},
});
... ...