Authored by 张丽霞

Merge branch '5.4.1' into student

... ... @@ -13,10 +13,7 @@ import Guang from './guang/Guang';
import Message from './message/Message';
import NewArrival from './newArrival/NewArrival';
import Mine from './mine/Mine';
// import Search from './search/Search';
import RedPersonBrand from './redPersonBrand/RedPersonBrand';
import Installment from './installment/Installment';
import Home from './home/Home';
import Outlet from './outlet/Outlet'
import BLK from './blk/BLK'
... ... @@ -32,7 +29,6 @@ export default function native(platform) {
Message(platform)
NewArrival(platform)
RedPersonBrand(platform);
Installment(platform);
Home(platform);
Outlet(platform);
BLK(platform)
... ...
... ... @@ -75,7 +75,7 @@ class BrandContainer extends Component {
}
componentWillUnmount() {
this.subscription && this.subscription.remove();
}
//原生跳转
... ...
... ... @@ -79,7 +79,7 @@ class CategoryBContainer extends Component {
}
componentWillUnmount() {
this.subscription && this.subscription.remove();
}
_onSelectChannel(channel) {
... ...
... ... @@ -73,7 +73,7 @@ class CategoryContainer extends Component {
}
componentWillUnmount() {
this.subscription && this.subscription.remove();
}
_onSelectChannel(channel) {
... ...
... ... @@ -54,12 +54,7 @@ class ListContainer extends Component {
this._onPressShare = this._onPressShare.bind(this);
this._onPressLike = this._onPressLike.bind(this);
this._onPressHeader = this._onPressHeader.bind(this);
this.subscription = NativeAppEventEmitter.addListener(
'ChannelDidChangeEvent',
(reminder) => {
this.home && this.home.trigggePullToRefresh();
}
);
}
componentDidMount() {
... ... @@ -68,7 +63,7 @@ class ListContainer extends Component {
}
componentWillUnmount() {
this.subscription && this.subscription.remove();
}
_onPressCell(url) {
... ...
... ... @@ -93,11 +93,9 @@ export default class HomeService {
}
})
.then((json) => {
console.log(json);
return json;
})
.catch((error) => {
console.log(error);
throw(error);
});
}
... ...
... ... @@ -32,198 +32,7 @@ function calcluateFloorHeight(payload) {
continue;
}
const {width, height} = Dimensions.get('window');
const DEVICE_WIDTH_RATIO = width / 320;
const DEVICE_WIDTH_RATIO_6 = width / 375;
let floorHeight = 0;
let headerHeight = 40;
switch(templateName) {
case 'focus': {
floorHeight = Math.ceil(155 * DEVICE_WIDTH_RATIO);
break;
}
case 'app_icon_list': {
let count = parseInt(item.number);
count = count > 0 ? count : 5;
let tail = (data.length % count != 0) ? 1 : 0;
let lineNumber = data.length/count + tail;
let padding5 = (width - 42*5)/12;
let padding4 = (width - 51*4)/10;
let padding = count == 4 ? padding4 : padding5;
floorHeight = (count == 4 ? 84 : 75) * lineNumber + padding * (lineNumber - 1) + 12;
break;
}
case 'app_hot_brands': {
let listLength = data.list.length;
let lineNumber = parseInt((listLength + 3) / 4);
if (listLength % 4 == 0) {
lineNumber += 1;
}
let imageHeight = Math.floor(87 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(lineNumber * imageHeight);
floorHeight = headerHeight + listHeight;
break;
}
case 'announcement': {
floorHeight = Math.ceil(35 * DEVICE_WIDTH_RATIO);
break;
}
case 'single_image': {
floorHeight = Math.ceil(100 * DEVICE_WIDTH_RATIO);
break;
}
case 'single_name_image': {
floorHeight = headerHeight + Math.ceil(100 * DEVICE_WIDTH_RATIO);
break;
}
case 'recommend_content_one': {
let bannerHeight = Math.ceil(200 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(190 * DEVICE_WIDTH_RATIO);
floorHeight = headerHeight + bannerHeight + listHeight;
break;
}
case 'recommend_content_two': {
let bannerHeight = Math.ceil(200 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(190 * DEVICE_WIDTH_RATIO);
floorHeight = headerHeight + bannerHeight + listHeight;
break;
}
case 'recommend_content_three': {
let imageHeight = Math.floor(87 * DEVICE_WIDTH_RATIO);
let lineNumber = parseInt((data.list.length + 3) / 4);
let listHeight = Math.floor(lineNumber * imageHeight);
let bannerHeight = Math.ceil(100 * DEVICE_WIDTH_RATIO);
floorHeight = bannerHeight + listHeight
break;
}
case 'recommend_content_five': {
let imageHeight = Math.floor(87 * DEVICE_WIDTH_RATIO);
let lineNumber = parseInt((data.list.length + 3) / 4);
let listHeight = Math.floor(lineNumber * imageHeight);
floorHeight = listHeight + headerHeight;
break;
}
case 'trendsetter_collocation': {
let topCellWidth = (width - 45) / 2;
let cellWidth = Math.floor(82 * width / 375);
floorHeight = headerHeight + topCellWidth + 15 * 2 + headerHeight + cellWidth;
break;
}
case 'trendgoods_topic': {
let imageHeight = Math.ceil(182 * DEVICE_WIDTH_RATIO);
let pageHeight = imageHeight + 15 + 16 + 9 + 12 + 30;
floorHeight = headerHeight + 15 + pageHeight;
break;
}
case 'custom_brands': {
let imageHeight = Math.ceil(55 * DEVICE_WIDTH_RATIO);
let marginTop = 15;
floorHeight = headerHeight + imageHeight + marginTop * 3;
break;
}
case 'kids_brands':{
let itemWidth = width / 4 - 0.5;
let itemHeight = itemWidth + 20;
floorHeight = headerHeight + itemHeight * 2 + 0.5;
break;
}
case 'small_pic': {
floorHeight = Math.ceil(80 * (width - 45) / 2 / 137.5);
break;
}
case 'divideImage': {
floorHeight = 15;
break;
}
case 'NewProductFloor': {
let leftBigImageWidth = width * 315 / 750;
let leftBigImageHeight = leftBigImageWidth * 420 / 315;
floorHeight = headerHeight + leftBigImageHeight;
break;
}
case 'popular_single_product': {
let bannerHeight = Math.ceil(width * 234 / 750);
floorHeight = headerHeight + bannerHeight + 192;
break;
}
case 'shopRecommend': {
let storeHeight = Math.ceil(239 * DEVICE_WIDTH_RATIO_6 + 10);
floorHeight = headerHeight + storeHeight;
break;
}
case 'sixLinesFloor': {
let imageWidth = Math.floor(width / 2);
let imageHeight = Math.floor(imageWidth * 180 / 375);
let lineNumber = Math.floor((data.list.length + 1)/2);
floorHeight = headerHeight + lineNumber * imageHeight;
break;
}
case 'livePicture': {
let imageWidth = Math.ceil((width - 64) / 3);
let imageHeight = Math.ceil(imageWidth * 86 / 64);
floorHeight = headerHeight + imageHeight;
break;
}
case 'sale-1t-1l-4r': {
let bannerHeight = Math.floor(width / 3);
let leftBigImageWidth = width * 310 / 740;
let leftBigImageHeight = leftBigImageWidth * 422 / 310;
let containerHeight = headerHeight + leftBigImageHeight;
if(data.big_image.length > 0){
containerHeight = containerHeight + bannerHeight;
}
floorHeight = containerHeight;
break;
}
case 'vipUse': {
let bannerHeight = Math.ceil((234 / 750) * width);
let cellHeight = 210;
floorHeight = headerHeight + bannerHeight + cellHeight;
break;
}
case 'activityProductFloor': {
//1 VIP 专享 2 新人专享 3 学生专享 4 新品到着
const TYPE_VIP = 1;
const TYPE_NEW_USER = 2;
const TYPE_STUDENT = 3;
const TYPE_NEW_PRODUCT = 4;
let type = item.type;
let bannerHeight = Math.ceil((234 / 750) * width);
let sectionHeight = Math.ceil((419 / 750) * width);
let cellWidth = 90;
let cellHeight = 210;
let cellH = 0;
if (type == TYPE_VIP || type == TYPE_STUDENT) {
cellH = cellHeight;
} else {
cellH = cellHeight - 20;
}
floorHeight = cellH + headerHeight + bannerHeight;
break;
}
case 'hot_category_individualization': {
let cellWidth = width / 4;
let imageWidth = cellWidth - 14 * 2;
let imageHeight = imageWidth * 168 / 126;
let cellHeight = imageHeight + 20;
let lineNumber = parseInt((data.list.length + 3) / 4);
let listHeight = Math.floor(lineNumber * cellHeight);
let containerHeight = listHeight + headerHeight;
floorHeight = containerHeight;
break;
}
case 'new_user_floor': {
let leftBigImageWidth = width * 315 / 750;
let leftBigImageHeight = leftBigImageWidth * 420 / 315;
let containerHeight = headerHeight + leftBigImageHeight;
floorHeight = containerHeight;
break;
}
}
let floorHeight = heightForFloor(item);
item.floorHeight = floorHeight;
allFloorHeight = allFloorHeight + floorHeight;
... ... @@ -233,6 +42,224 @@ function calcluateFloorHeight(payload) {
return payload;
}
function heightForFloor(item, immutable=false) {
if (!item) {
return 0;
}
let templateName;
let data;
if (immutable) {
templateName = item.get('template_name');
data = item.get('data').toJS();
} else {
templateName = item.template_name;
data = item.data;
}
if (!templateName || !data) {
return 0;
}
const {width, height} = Dimensions.get('window');
const DEVICE_WIDTH_RATIO = width / 320;
const DEVICE_WIDTH_RATIO_6 = width / 375;
let floorHeight = 0;
let headerHeight = 40;
switch(templateName) {
case 'focus': {
floorHeight = Math.ceil(155 * DEVICE_WIDTH_RATIO);
break;
}
case 'app_icon_list': {
let count = parseInt(item.number);
count = count > 0 ? count : 5;
let tail = (data.length % count != 0) ? 1 : 0;
let lineNumber = data.length/count + tail;
let padding5 = (width - 42*5)/12;
let padding4 = (width - 51*4)/10;
let padding = count == 4 ? padding4 : padding5;
floorHeight = (count == 4 ? 84 : 75) * lineNumber + padding * (lineNumber - 1) + 12;
break;
}
case 'app_hot_brands': {
let listLength = data.list.length;
let lineNumber = parseInt((listLength + 3) / 4);
if (listLength % 4 == 0) {
lineNumber += 1;
}
let imageHeight = Math.floor(87 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(lineNumber * imageHeight);
floorHeight = headerHeight + listHeight;
break;
}
case 'announcement': {
floorHeight = Math.ceil(35 * DEVICE_WIDTH_RATIO);
break;
}
case 'single_image': {
floorHeight = Math.ceil(100 * DEVICE_WIDTH_RATIO);
break;
}
case 'single_name_image': {
floorHeight = headerHeight + Math.ceil(100 * DEVICE_WIDTH_RATIO);
break;
}
case 'recommend_content_one': {
let bannerHeight = Math.ceil(200 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(190 * DEVICE_WIDTH_RATIO);
floorHeight = headerHeight + bannerHeight + listHeight;
break;
}
case 'recommend_content_two': {
let bannerHeight = Math.ceil(200 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(190 * DEVICE_WIDTH_RATIO);
floorHeight = headerHeight + bannerHeight + listHeight;
break;
}
case 'recommend_content_three': {
let imageHeight = Math.floor(87 * DEVICE_WIDTH_RATIO);
let lineNumber = parseInt((data.list.length + 3) / 4);
let listHeight = Math.floor(lineNumber * imageHeight);
let bannerHeight = Math.ceil(100 * DEVICE_WIDTH_RATIO);
floorHeight = bannerHeight + listHeight
break;
}
case 'recommend_content_five': {
let imageHeight = Math.floor(87 * DEVICE_WIDTH_RATIO);
let lineNumber = parseInt((data.list.length + 3) / 4);
let listHeight = Math.floor(lineNumber * imageHeight);
floorHeight = listHeight + headerHeight;
break;
}
case 'trendsetter_collocation': {
let topCellWidth = (width - 45) / 2;
let cellWidth = Math.floor(82 * width / 375);
floorHeight = headerHeight + topCellWidth + 15 * 2 + headerHeight + cellWidth;
break;
}
case 'trendgoods_topic': {
let imageHeight = Math.ceil(182 * DEVICE_WIDTH_RATIO);
let pageHeight = imageHeight + 15 + 16 + 9 + 12 + 30;
floorHeight = headerHeight + 15 + pageHeight;
break;
}
case 'custom_brands': {
let imageHeight = Math.ceil(55 * DEVICE_WIDTH_RATIO);
let marginTop = 15;
floorHeight = headerHeight + imageHeight + marginTop * 3;
break;
}
case 'kids_brands':{
let itemWidth = width / 4 - 0.5;
let itemHeight = itemWidth + 20;
floorHeight = headerHeight + itemHeight * 2 + 0.5;
break;
}
case 'small_pic': {
floorHeight = Math.ceil(80 * (width - 45) / 2 / 137.5);
break;
}
case 'divideImage': {
floorHeight = 15;
break;
}
case 'NewProductFloor': {
let leftBigImageWidth = width * 315 / 750;
let leftBigImageHeight = leftBigImageWidth * 420 / 315;
floorHeight = headerHeight + leftBigImageHeight;
break;
}
case 'popular_single_product': {
let bannerHeight = Math.ceil(width * 234 / 750);
floorHeight = headerHeight + bannerHeight + 192;
break;
}
case 'shopRecommend': {
let storeHeight = Math.ceil(239 * DEVICE_WIDTH_RATIO_6 + 10);
floorHeight = headerHeight + storeHeight;
break;
}
case 'sixLinesFloor': {
let imageWidth = Math.floor(width / 2);
let imageHeight = Math.floor(imageWidth * 180 / 375);
let lineNumber = Math.floor((data.list.length + 1)/2);
floorHeight = headerHeight + lineNumber * imageHeight;
break;
}
case 'livePicture': {
let imageWidth = Math.ceil((width - 64) / 3);
let imageHeight = Math.ceil(imageWidth * 86 / 64);
floorHeight = headerHeight + imageHeight;
break;
}
case 'sale-1t-1l-4r': {
let bannerHeight = Math.floor(width / 3);
let leftBigImageWidth = width * 310 / 740;
let leftBigImageHeight = leftBigImageWidth * 422 / 310;
let containerHeight = headerHeight + leftBigImageHeight;
if(data.big_image.length > 0){
containerHeight = containerHeight + bannerHeight;
}
floorHeight = containerHeight;
break;
}
case 'vipUse': {
let bannerHeight = Math.ceil((234 / 750) * width);
let cellHeight = 210;
floorHeight = headerHeight + bannerHeight + cellHeight;
break;
}
case 'activityProductFloor': {
//1 VIP 专享 2 新人专享 3 学生专享 4 新品到着
const TYPE_VIP = 1;
const TYPE_NEW_USER = 2;
const TYPE_STUDENT = 3;
const TYPE_NEW_PRODUCT = 4;
let type = item.type;
let bannerHeight = Math.ceil((234 / 750) * width);
let sectionHeight = Math.ceil((419 / 750) * width);
let cellWidth = 90;
let cellHeight = 210;
let cellH = 0;
if (type == TYPE_VIP || type == TYPE_STUDENT) {
cellH = cellHeight;
} else {
cellH = cellHeight - 20;
}
floorHeight = cellH + headerHeight + bannerHeight;
break;
}
case 'hot_category_individualization': {
let cellWidth = width / 4;
let imageWidth = cellWidth - 14 * 2;
let imageHeight = imageWidth * 168 / 126;
let cellHeight = imageHeight + 20;
let lineNumber = parseInt((data.list.length + 3) / 4);
let listHeight = Math.floor(lineNumber * cellHeight);
let containerHeight = listHeight + headerHeight;
floorHeight = containerHeight;
break;
}
case 'new_user_floor': {
let leftBigImageWidth = width * 315 / 750;
let leftBigImageHeight = leftBigImageWidth * 420 / 315;
let containerHeight = headerHeight + leftBigImageHeight;
floorHeight = containerHeight;
break;
}
}
return floorHeight;
}
function homeDataParse(data, channel) {
let {list, cached, isFetching, isFirstLoad, endReached, favorite, bottomBanner, hotList, newList, selectIndex} = data;
let floorList = list.size > 0 ? list.toArray() : cached.get('list').toArray();
... ... @@ -372,6 +399,7 @@ function parseRecommendPop(json) {
module.exports = {
calcluateFloorHeight,
heightForFloor,
homeDataParse,
channelCacheKey,
parseHomeFloor,
... ...
... ... @@ -366,14 +366,11 @@ export function getMineUnreadMsg() {
let {isFetching, open} = mine;
let funGetMineUnreadMsg = () => {
console.log('----getMineUnreadMsg-----');
return new MineService(app.singleHost).getMineUnreadMsg()
.then(json => {
console.log(json);
dispatch(getMineUnReadMsgSuccess(json));
})
.catch(error => {
console.log(error);
dispatch(getMineUnReadMsgFailure());
});
};
... ...
... ... @@ -91,7 +91,7 @@ class NewArrivalContainer extends Component {
}
_onPressDislike() {
console.log('dislike....');
}
_onEndReached() {
... ...
... ... @@ -355,19 +355,14 @@ function processScanString(url,scanType) {
break;
case ScanTypeInfo.YHScanType_Default: {
if (url.indexOf('skn:') !== -1) {
console.log('skn');
alertInfo = scanSkn(url);
} else if (url.indexOf('booth:') !== -1) {
console.log('booth');
alertInfo = scanBooth(url);
} else if (url.indexOf('bear:') !== -1) {
console.log('bear');
alertInfo = scanBear(url);
} else if (url.indexOf('yohobuy:') !== -1 || url.indexOf('yohobuy=') !== -1 || url.indexOf('yohobuy=') !== -1) {
console.log('yohobuy');
alertInfo = scanYohoBuy(url);
} else if (url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1) {
console.log('http&s');
alertInfo = scanAddressLink(url);
} else {
alertInfo = {
... ... @@ -415,7 +410,6 @@ export function processURL(scanString) {
export function jumpWithUrl(url, JumpType) {
if (!url) {
console.log('Illegal url');
return;
}
... ...