Reinit project

This commit is contained in:
Limo Saplf
2019-08-31 20:44:15 +08:00
commit b51ae824c7
115 changed files with 20955 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
import React from 'react';
import FittedImage from 'react-fitted-image';
import banner from '@/assets/m_banner.jpg';
import styles from './style.less';
const MarketPage: React.FC = () => {
return (
<div className={styles.container}>
<div className={styles.banner}>
<FittedImage src={banner} fit="cover" />
</div>
</div>
);
}
export default MarketPage;

View File

@@ -0,0 +1,110 @@
import { Model, routerRedux } from 'dva';
import { message } from 'antd';
import { EstateType, Estates } from '@/types/common';
import { getEstateList, EstateList } from './service';
export interface HomeMarketModelState {
refreshing: boolean;
loading: boolean;
loadingFinished: boolean;
data: Estates;
num: number;
pageIndex: number;
tab: EstateType;
}
const MarketModel: Model = {
namespace: 'homeMarket',
state: {
refreshing: false,
loading: false,
enableLoad: true,
loadingFinished: false,
data: [],
num: 0,
pageIndex: 1,
pageSize: 10,
tab: EstateType.Hold,
} as HomeMarketModelState,
effects: {
*refresh(_, { put, call, select }) {
const {
pageSize,
tab,
} = yield select((state: any) => state.homeEstate);
yield put({ type: 'onUpdateState', payload: { refreshing: true, loading: false } });
try {
const { total, list }: EstateList = yield call(getEstateList, 1, pageSize, tab);
const { tab: newTab } = yield select((state: any) => state.homeEstate);
if (tab === newTab) {
yield put({
type: 'onUpdateState',
payload: {
refreshing: false,
pageIndex: 2,
data: list,
num: total,
},
});
}
} catch (e) {
message.error(e.message);
yield put({ type: 'onUpdateState', payload: { refreshing: false, pageIndex: 1 } });
}
},
*loadMore(_, { put, call, select }) {
const {
pageIndex,
pageSize,
tab,
data,
} = yield select((state: any) => state.homeEstate);
yield put({ type: 'onUpdateState', payload: { loading: true, refreshing: false } });
try {
const { total, list }: EstateList = yield call(getEstateList, pageIndex, pageSize, tab);
const { tab: newTab } = yield select((state: any) => state.homeEstate);
if (tab === newTab) {
yield put({
type: 'onUpdateState',
payload: {
loading: false,
pageIndex: pageIndex + 1,
data: [...data, ...list],
num: total,
enableLoad: list.length === pageSize,
},
});
}
} catch (e) {
message.error(e.message);
yield put({ type: 'onUpdateState', payload: { loading: false } });
}
},
*changeTab({ payload: tab }, { put }) {
yield put({ type: 'onUpdateState', payload: { tab, pageIndex: 1, data: [], num: 0 } });
yield put({ type: 'refresh' });
},
*gotoDetail({ payload }, { put }) {
if (!payload) return;
yield put(routerRedux.push('/estate'));
yield put({ type: 'ext/onUpdateState', payload: { estateExt: payload } });
},
},
reducers: {
onUpdateState(state, { payload } : any) {
return {
...state,
...payload,
};
},
},
};
export default MarketModel;

View File

@@ -0,0 +1,22 @@
import http from '@/utils/http';
import { Estates, EstateType } from '@/types/common';
import { calcEstate } from '@/utils/transform';
export interface EstateList {
total: number;
list: Estates;
}
export async function getEstateList(pageIndex: number, pageSize: number, type: EstateType) {
const {
ok,
data,
msg,
} = await http.get<EstateList>('/estateorder/list', { type, pageIndex, pageSize });
if (ok && data) {
data.list.forEach(it => it.type = type);
data.list.forEach(calcEstate);
return data;
}
throw Error(msg);
}

View File

@@ -0,0 +1,8 @@
.container {
height: 100%;
}
.banner {
width: 100%;
height: 240px;
}