listhouse.js 1.9 KB
Newer Older
吴强's avatar
吴强 committed
1 2
import { NavigationActions } from 'react-navigation';
import { getData, getMeta } from '../../utils/DataTemplate';
3 4 5 6 7

export default {
  namespace: 'ListHouse',
  state: {
    sourceData: [],
8
    metas: [],
zhouhuan's avatar
zhouhuan committed
9
    houseID: '',
吴强's avatar
吴强 committed
10
    searchValue: '',
11 12
  },
  reducers: {
zhouhuan's avatar
zhouhuan committed
13 14 15 16 17 18
    setHouseID(state, { payload }) {
      return {
        ...state,
        houseID: payload,
      };
    },
吴强's avatar
吴强 committed
19 20 21 22 23 24
    setSearchValue(state, { payload }) {
      return {
        ...state,
        searchValue: payload,
      };
    },
25 26 27 28 29 30 31
    setList(state, { payload: { arrayData } }) {
      return { ...state, sourceData: [...state.sourceData, ...arrayData] };
    },
    // 下拉刷新用到的,清空列表的数据
    clearList(state) {
      return { ...state, sourceData: [] };
    },
32 33 34
    setMetas(state, { payload }) {
      return { ...state, metas: payload };
    },
35 36
  },
  effects: {
zhouhuan's avatar
zhouhuan committed
37 38 39 40 41 42
    *jumpPage({ payload: id }, { put }) {
      yield put({ type: 'setHouseID', payload: id });
      yield put(NavigationActions.navigate({
        routeName: 'HouseDetail',
      }));
    },
43
    *getHouseList({ payload }, { take, put, call, select }) {
吴强's avatar
吴强 committed
44 45
      const { clear, pFWDiZhi } = payload;
      if (clear === 'clear') {
46 47 48 49
        yield put({ type: 'clearList', payload: {} });
      }
      const { sourceData } = yield select(state => state.ListHouse);
      const size = sourceData.length;
50 51 52 53 54
      const coordinate = {
        containerType: 'module',
        containerName: 'query-DSRFWInfo',
        datasourceName: 'QueryfwTable',
      };
吴强's avatar
吴强 committed
55
      const result = yield call(getData, coordinate, { pst: size, psz: 10, params: { pFWDiZhi } });
56 57
      const meta = yield call(getMeta, coordinate);
      yield put({ type: 'setMetas', payload: meta });
58
      for (const row of result) {
59 60 61 62 63 64 65 66 67
        yield put({ type: 'addHouse', payload: row });
        yield take('addHouse/@@end');
      }
    },
    *addHouse({ payload }, { put }) {
      yield put({ type: 'setList', payload: { arrayData: [payload] } });
    },
  },
};