From c3915edbcfaf6e3ce5ea4517bfb5509606b1b83a Mon Sep 17 00:00:00 2001
From: Ye Wanwan <wanwan.ye@yoho.cn>
Date: Wed, 8 Jun 2016 18:34:04 +0800
Subject: [PATCH] 发货入库接口调试。修复了一个日期bug。reviewed by yuliang。

---
 js/components/StockStats.js                            |  7 ++++---
 js/containers/DeliveryStatsContainer.js                | 12 ++++++++++--
 js/containers/StockStatsContainer.js                   |  5 +----
 js/reducers/deliveryStats/deliveryStatsActions.js      | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
 js/reducers/deliveryStats/deliveryStatsInitialState.js |  3 ++-
 js/reducers/deliveryStats/deliveryStatsReducer.js      | 29 +++++++++++++++++------------
 js/services/HomeService.js                             | 13 +++++++++----
 js/utils/dateTool.js                                   |  5 ++---
 8 files changed, 98 insertions(+), 46 deletions(-)

diff --git a/js/components/StockStats.js b/js/components/StockStats.js
index 92c3c9c..37a7c65 100644
--- a/js/components/StockStats.js
+++ b/js/components/StockStats.js
@@ -4,6 +4,7 @@ import React, {Component} from 'react';
 import PlainTextSection from './PlainTextSection';
 import Placeholder from './Placeholder';
 import LoadMoreIndicator from './indicator/LoadMoreIndicator';
+import moment from 'moment';
 
 import {
     StyleSheet,
@@ -34,7 +35,7 @@ export default class StockStats extends Component {
                 return (
                     <View style={styles.container}>
                         <PlainTextSection content={rowData.section2} />
-                        <Placeholder />
+                        <Placeholder containerStyle={{borderBottomWidth: 0}}/>
                     </View>
                 );
 
@@ -44,9 +45,9 @@ export default class StockStats extends Component {
                     <View style={styles.container}>
                         <View style={styles.dateContainer}>
                             <Image source={require('../images/date.png')}/>
-                            <Text style={styles.date}>{rowData.section1}</Text>
+                            <Text style={styles.date}>{moment().subtract(1, 'days').format('YYYY年M月D日')}</Text>
                         </View>
-                        <Placeholder />
+                        <Placeholder containerStyle={{borderBottomWidth: 0}}/>
                     </View>
                 );
 
diff --git a/js/containers/DeliveryStatsContainer.js b/js/containers/DeliveryStatsContainer.js
index 6fd0c5f..cebd41b 100644
--- a/js/containers/DeliveryStatsContainer.js
+++ b/js/containers/DeliveryStatsContainer.js
@@ -54,7 +54,7 @@ export default class DeliveryStatsContainer extends Component {
 	}
 
 	componentDidMount() {
-        this.props.actions.requestData();
+        this._requestData();
 	}
 
     componentWillUnmount() {
@@ -62,7 +62,14 @@ export default class DeliveryStatsContainer extends Component {
     }
 
 	_requestData() {
-        this.props.actions.requestData();
+        let params = {
+            page: this.props.deliveryStats.currentPage + 1,
+            size: 20,
+            beginTime: this.props.deliveryStats.startDay,
+            endTime: this.props.deliveryStats.endDay,
+            brandId: this.props.home.brandId,
+        };
+        this.props.actions.requestData(params);
 	}
 
 	render() {
@@ -95,6 +102,7 @@ export default class DeliveryStatsContainer extends Component {
                     section2={section2}
                     content={this.props.deliveryStats.jsonData.toJS()}
                     header={header}
+                    requestData={this._requestData}
                 />
             </View>
 		);
diff --git a/js/containers/StockStatsContainer.js b/js/containers/StockStatsContainer.js
index 68bc185..dc4c54d 100644
--- a/js/containers/StockStatsContainer.js
+++ b/js/containers/StockStatsContainer.js
@@ -67,9 +67,6 @@ export default class StockStatsContainer extends Component {
 	}
 
 	render() {
-
-        let date = new Date();
-        let section1 = date.getFullYear() + '年' + (date.getMonth() + 1) + '月' + date.getDate() + '日';
         let section2 = [
             {
                 top: '库存总数',
@@ -81,7 +78,7 @@ export default class StockStatsContainer extends Component {
             }
         ];
         let dataBlob = {
-            'SECTION_TIME': [{section1}],
+            'SECTION_TIME': [{}],
             'SECTION_HEADER': [{section2}],
 			'SECTION_CONTENT': this.props.stockStats.jsonData,
         }
diff --git a/js/reducers/deliveryStats/deliveryStatsActions.js b/js/reducers/deliveryStats/deliveryStatsActions.js
index e7e3888..172cabf 100644
--- a/js/reducers/deliveryStats/deliveryStatsActions.js
+++ b/js/reducers/deliveryStats/deliveryStatsActions.js
@@ -13,7 +13,6 @@ const {
 } = require('../../constants/actionTypes').default;
 
 export function chooseStartDate(startDay) {
-    requestData();
     return {
         type: CHOOSE_DELIVERY_START_DATE,
         payload: startDay,
@@ -21,7 +20,6 @@ export function chooseStartDate(startDay) {
 }
 
 export function chooseEndDate(endDay) {
-    requestData();
     return {
         type: CHOOSE_DELIVERY_END_DATE,
         payload: endDay,
@@ -29,7 +27,23 @@ export function chooseEndDate(endDay) {
 }
 
 export function newDatePicked(pickedDate, isStartDate) {
-    return isStartDate ? chooseStartDate(pickedDate) : chooseEndDate(pickedDate);
+    return (dispatch, getState) => {
+        if(isStartDate) {
+            dispatch(chooseStartDate(pickedDate));
+        } else {
+            dispatch(chooseEndDate(pickedDate));
+        }
+        const {deliveryStats, home} = getState();
+        let params = {
+            page: deliveryStats.currentPage + 1,
+            size: 20,
+            beginTime: deliveryStats.startDay,
+            endTime: deliveryStats.endDay,
+            brandId: home.brandId,
+        }
+        dispatch(requestData(params));
+    };
+
 }
 
 export function showDatePickerIOS(isShowDatePickerIOS, isStartDate) {
@@ -40,7 +54,7 @@ export function showDatePickerIOS(isShowDatePickerIOS, isStartDate) {
     }
 }
 
-export function selectedDateIOS(selectedDate, isStartDate) {
+export function chooseDateIOS(selectedDate, isStartDate) {
     return {
         type: SELECT_DELIVERY_DATE_IOS,
         selectedDate: selectedDate,
@@ -48,6 +62,22 @@ export function selectedDateIOS(selectedDate, isStartDate) {
     }
 }
 
+export function selectedDateIOS(selectedDate, isStartDate) {
+
+    return (dispatch, getState) => {
+        dispatch(chooseDateIOS(selectedDate, isStartDate));
+        const {deliveryStats, home} = getState();
+        let params = {
+            page: deliveryStats.currentPage + 1,
+            size: 20,
+            beginTime: deliveryStats.startDay,
+            endTime: deliveryStats.endDay,
+            brandId: home.brandId,
+        }
+        dispatch(requestData(params));
+    };
+}
+
 export function request() {
     return {
         type: DELIVERY_STATS_REQUEST,
@@ -68,19 +98,25 @@ export function failure(error) {
     }
 }
 
-export function requestData() {
-    // return dispatch => {
-    //     dispatch(request());
-    //     return new DeliveryStatsService()
-    //     .deliveryStatsData()
-    //     .then(json => {
-    //         dispatch(success(json));
-    //     })
-    //     .catch(error => {
-    //         dispatch(failure(error));
-    //     })
-    // };
-    return success(testStockStatsData);
+export function requestData(params) {
+    return (dispatch, getState) => {
+
+        const {deliveryStats} = getState();
+
+        if (deliveryStats.currentPage >= deliveryStats.pageCount || deliveryStats.isFetching) {//Last page reached....
+            return;
+        }
+
+        dispatch(request());
+        return new DeliveryStatsService()
+        .deliveryStatsData(params)
+        .then(json => {
+            dispatch(success(json));
+        })
+        .catch(error => {
+            dispatch(failure(error));
+        })
+    };
 }
 
 let testStockStatsData = {
diff --git a/js/reducers/deliveryStats/deliveryStatsInitialState.js b/js/reducers/deliveryStats/deliveryStatsInitialState.js
index 529e588..2238c34 100644
--- a/js/reducers/deliveryStats/deliveryStatsInitialState.js
+++ b/js/reducers/deliveryStats/deliveryStatsInitialState.js
@@ -6,7 +6,8 @@ import {getLastDay} from '../../utils/dateTool';
 let InitialState = Record({
 	error: null,
   	isFetching: false,
-	pageCount: 0,
+	currentPage: 0,
+	pageCount: 1,
 	startDay: getLastDay(),
 	endDay: getLastDay(),
 	isShowDatePickerIOS: false,
diff --git a/js/reducers/deliveryStats/deliveryStatsReducer.js b/js/reducers/deliveryStats/deliveryStatsReducer.js
index 6139b1b..c3fb61f 100644
--- a/js/reducers/deliveryStats/deliveryStatsReducer.js
+++ b/js/reducers/deliveryStats/deliveryStatsReducer.js
@@ -27,15 +27,16 @@ export default function deliveryStatsReducer(state = initialState, action) {
             return nextState;
         }
         case DELIVERY_STATS_SUCCESS: {
-            // const {jsonData} = state;
-            // let origin = jsonData.toJS();
-            let data = [...action.payload.list];
-            // let newPageCount = action.payload.list ? state.pageCount + 1 : state.pageCount;
-            let nextState = state.set('isFetching',false)
-                .set('sum', action.payload.sum)
-                .set('totalAmount', action.payload.totalAmount)
-                .set('jsonData', List(data));
-                // .set('pageCount', newPageCount)
+            const {jsonData} = state;
+            let origin = jsonData.toJS();
+            let {additionInfo, list} = action.payload;
+            let data = [...origin, ...(list || [])];
+            let nextState = state.set('isFetching', false)
+                .set('sum', additionInfo.allNumber)
+                .set('totalAmount', additionInfo.allAmount)
+                .set('currentPage', action.payload.page)
+                .set('pageCount', action.payload.totalPage)
+                .set('jsonData', Immutable.fromJS(data));
             return nextState;
         }
         case DELIVERY_STATS_FAILURE: {
@@ -45,12 +46,16 @@ export default function deliveryStatsReducer(state = initialState, action) {
         }
         case CHOOSE_DELIVERY_START_DATE: {
             let nextState = state.set('startDay', action.payload)
-                .set('isShowDatePickerIOS', false);
+                .set('isShowDatePickerIOS', false)
+                .set('currentPage', 0)
+                .set('pageCount', 1);
             return nextState;
         }
         case CHOOSE_DELIVERY_END_DATE: {
             let nextState = state.set('endDay', action.payload)
-                .set('isShowDatePickerIOS', false);
+                .set('isShowDatePickerIOS', false)
+                .set('currentPage', 0)
+                .set('pageCount', 1);
             return nextState;
         }
         case SHOW_DELIVERY_DATEPICKER_IOS: {
@@ -60,7 +65,7 @@ export default function deliveryStatsReducer(state = initialState, action) {
         }
         case SELECT_DELIVERY_DATE_IOS: {
             let nextState = action.isStartDate ? state.set('startDay', action.selectedDate) : state.set('endDay', action.selectedDate);
-            return nextState;
+            return nextState.set('currentPage', 0).set('pageCount', 1);
         }
 
         case SWITCH_BRAND:
diff --git a/js/services/HomeService.js b/js/services/HomeService.js
index 0b769e4..eaa2e8f 100644
--- a/js/services/HomeService.js
+++ b/js/services/HomeService.js
@@ -50,7 +50,7 @@ export default class UserService {
 			url:'',
 			body: {
 				method: 'app.shops.accountbalance',
-				...params,
+				...param
 			}
 		})
 		.then((json) => {
@@ -110,11 +110,16 @@ export default class UserService {
 		})
 	}
 
-	async deliveryStatsData() {
+	async deliveryStatsData(params) {
 		return await this.api.get({
-			url: '/',
+			url: '',
 			body: {
-
+				method: 'app.shops.storagein',
+				page: params.page,
+				size: params.size,
+				beginTime: moment(params.beginTime).format('YYYYMMDD'),
+				endTime: moment(params.endTime).format('YYYYMMDD'),
+				brandId: params.brandId,
 			}
 		})
 		.then((json) => {
diff --git a/js/utils/dateTool.js b/js/utils/dateTool.js
index f9582cb..d106e59 100644
--- a/js/utils/dateTool.js
+++ b/js/utils/dateTool.js
@@ -1,7 +1,6 @@
 'use strict'
+import moment from 'moment';
 
 export function getLastDay() {
-    let date = new Date();
-    let lastDay = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() - 1);
-    return lastDay;
+    return moment().subtract(1, 'days').format('YYYY-M-D');
 }
--
libgit2 0.24.0