Authored by shixiang

Merge branch 'develop' of http://git.dev.yoho.cn/mobile/yh_vendor into develop

... ... @@ -39,7 +39,7 @@ import guideInitialState from './reducers/guide/guideInitialState';
import homeInitialState from './reducers/home/homeInitialState';
import messageInitialState from './reducers/message/messageInitialState';
import userInitialState from './reducers/user/userInitialState';
import accountSettlementaInitialState from './reducers/accountSettlement/accountSettlementInitialState';
import accountSettlementInitialState from './reducers/accountSettlement/accountSettlementInitialState';
import App from './containers/App';
... ... @@ -73,7 +73,7 @@ function getInitialState() {
home: (new homeInitialState),
message: (new messageInitialState),
user: (new userInitialState),
// accountSettlement: (new accountSettlementaInitialState),
actStmt: (new accountSettlementInitialState),
};
return _initState;
}
... ...
... ... @@ -7,6 +7,7 @@ import {
View,
Text,
ListView,
Dimensions,
} from 'react-native';
... ... @@ -77,14 +78,14 @@ export default class AccountSettlement extends Component {
}
render() {
return (
<ListView
style={styles.container}
dataSource = {this.dataSource.cloneWithRowsAndSections(this.props.dataBlob)}
renderRow = {this.renderRow}
onEndReachedThreshold = {-200}
onEndReached = {this.props.fetchNextPage}
/>
<View style={styles.container}>
<ListView
dataSource={this.dataSource.cloneWithRowsAndSections(this.props.dataBlob)}
renderRow={this.renderRow}
onEndReachedThreshold={-150}
onEndReached={this.props.fetchNextPage}
/>
</View>
);
}
... ... @@ -114,7 +115,7 @@ const styles = StyleSheet.create({
container: {
top: 64,
flex:1,
height: Dimensions.get('window').height-64,
},
headerContainer: {
... ...
... ... @@ -13,135 +13,65 @@ import {
}
from 'react-native';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {Map} from 'immutable';
import * as accountSettlementActions from '../reducers/accountSettlement/accountSettlementActions';
const actions = [
accountSettlementActions,
];
function mapStateToProps(state) {
return {
...state
}
};
function mapDispatchToProps(dispatch) {
const creators = Map()
.merge(...actions)
.filter(value => typeof value === 'function')
.toObject();
return {
actions: bindActionCreators(creators, dispatch),
dispatch
};
}
export default class AccountSettlementContainer extends Component {
constructor(props) {
super(props);
this.dataSource = new ListView.DataSource({
rowHasChanged:(r1,r2)=>r1!==r2,
sectionHeaderHasChanged: (s1, s2) => s1 !== s2
});
this.dataBlob = {
'SECTION_HEADER':[{title:'累计结算金额(元)',content:'12567.00'}],
'SECTION_SEPORATOR':[{}],
'SECTION_TITLE':[{}],
'SECTION_CONTENT':[
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
],
};
this.fetchNextPage = this.fetchNextPage.bind(this);
this.state = {dataBlob:this.dataBlob};
}
componentDidMount() {
this.props.actions.nextPageOfDataRequest();
}
fetchNextPage(){
for (var i = 0; i < 15; i++) {
this.dataBlob.SECTION_CONTENT.push({
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
});
}
console.log(this.dataBlob.SECTION_CONTENT);
this.setState({dataBlob:this.dataBlob});
this.props.actions.nextPageOfDataRequest();
}
render() {
let dataBlob = {
'SECTION_HEADER':[{title:'累计结算金额(元)',content:'12567.00'}],
'SECTION_SEPORATOR':[{}],
'SECTION_TITLE':[{}],
'SECTION_CONTENT':this.props.actStmt.jsonData,
};
return (
<AccountSettlement
dataBlob={this.state.dataBlob}
dataBlob={dataBlob}
fetchNextPage={this.fetchNextPage}
/>
);
}
}
export default connect(mapStateToProps, mapDispatchToProps)(AccountSettlementContainer);
... ...
'use strict';
import Request from '../services/Request';
import Request from '../../services/Request';
const {
ACCOUNT_LIST_REQUEST,
... ... @@ -8,14 +8,7 @@ const {
} = require('../../constants/actionTypes').default;
/**
* Request next page of account settlement data list...
* @method nextPageOfDataRequest
* @return {JS Objecrt}
*/
export function nextPageOfDataRequest() {
export function requestNextPage() {
return {
type: ACCOUNT_LIST_REQUEST,
}
... ... @@ -30,13 +23,120 @@ export function nextPageOfDataRequest() {
export function nextPageOfDataSuccess(json) {
return {
type: ACCOUNT_LIST_SUCCESS,
playload: json,
payload: json,
}
}
export function nextPageOfDataFailure(error) {
return {
type: ACCOUNT_LIST_FAILURE,
playload: error,
payload: error,
}
}
/**
* Request next page of account settlement data list...
* @method nextPageOfDataRequest
* @return {JS Objecrt}
*/
export function nextPageOfDataRequest() {
return dispatch => {
dispatch(requestNextPage());
let api = new Request();
api.get({
url:'/operations/api/v6/category/getCategory'
})
.then(data => {
console.log(data);
dispatch(nextPageOfDataSuccess(testData));
})
.catch(error => {
dispatch(nextPageOfDataFailure(error));
});
};
}
let testData = [
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
{
brand:'vans',
date: '2016-01-23',
status: '已出账单',
bill:'923.00'
},
];
... ...
... ... @@ -4,9 +4,10 @@ import {List, Record} from 'immutable';
let InitialState = Record({
error: null,
isValid: false,
isFetching: false,
pageCount: 0,
sum:'0.00',
jsonData:List(),
});
export default InitialState;
... ...
'use strict';
import AccountSettlementInitialState from './accountSettlementInitialState'
const {
ACCOUNT_LIST_REQUEST,
ACCOUNT_LIST_SUCCESS,
ACCOUNT_LIST_FAILURE,
} = require('../../constants/actionTypes').default;
const initialState = new AccountSettlementInitialState;
export default function messageReducer(state = initialState, action) {
if (!(state instanceof AccountSettlementInitialState)) return initialState.merge(state);
switch (action.type) {
case ACCOUNT_LIST_REQUEST: {
let nextState = state.set('isFetching', true)
.set('error', null);
return nextState;
}
break;
case ACCOUNT_LIST_SUCCESS:{
const {jsonData} = state;
let data = [...jsonData, ...action.payload];
let nextState = state.set('isFetching',false).set('jsonData',data);
return nextState;
}
break;
case ACCOUNT_LIST_FAILURE:{
let nextState = state.set('isFetching',false)
.set('error',action.playload);
return nextState;
}
break;
}
return state;
}
... ...
/**
* # reducers
*
*
* This class combines all the reducers into one
*
*
*/
'use strict';
/**
* ## Imports
*
*
* our 4 reducers
*/
*/
import device from './device/deviceReducer';
import guide from './guide/guideReducer';
import home from './home/homeReducer';
import message from './message/messageReducer';
import user from './user/userReducer';
import actStmt from './accountSettlement/accountSettlementReducer'
import { combineReducers } from 'redux';
/**
* ## CombineReducers
*
*
* the rootReducer will call each and every reducer with the state and action
* EVERY TIME there is a basic action
*/
*/
const rootReducer = combineReducers({
device,
guide,
home,
message,
user,
actStmt,
});
export default rootReducer;
... ...