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

31
src/models/ext.ts Normal file
View File

@@ -0,0 +1,31 @@
import { Model } from 'dva';
import { Estate } from '@/types/common';
export interface ExtModelState {
/**
* 进入地产详情时的中转
*/
estateExt?: Estate;
}
const model: Model = {
namespace: 'ext',
state: {
estateExt: { id: 'xjlajlkjkdf', name: '巴中市' },
} as ExtModelState,
effects: {
},
reducers: {
onUpdateState(state, { payload }: any) {
return {
...state,
...payload,
};
}
},
};
export default model;

78
src/models/user.ts Normal file
View File

@@ -0,0 +1,78 @@
import { Model } from 'dva';
import _ from 'lodash';
import { getLocale, setLocale } from 'umi-plugin-locale'
import { loadUser, storeUser, clearUser } from '@/utils/storage';
import { User } from '@/types/common';
const initState = () => {
const user = loadUser();
return {
user,
isLogin: Boolean(user && user.id),
lang: getLocale(),
};
}
export interface UserModelState {
user?: User;
isLogin: boolean;
lang: string;
}
const model: Model = {
namespace: 'user',
state: initState() as UserModelState,
effects: {
*updateUser({ payload }, { put, select }) {
if (!payload) return;
const { user }: UserModelState = yield select((state: any) => state.user);
if (!_.isEqual(payload, user)) {
const allNew = { ...(user || {}), ...payload };
yield put({ type: 'onSaveUser', payload: allNew });
storeUser(allNew);
}
},
*clearUser(_, { put }) {
yield put({ type: 'onSaveUser' });
clearUser();
},
*updateToken({ payload: token }, { put }) {
yield put({ type: 'updateUser', payload: { token } });
},
*logout(_, { put, all }) {
yield all([
put({ type: 'clearUser' }),
put({ type: 'home/clear' }),
]);
},
*changeLang({ payload: lang }, { put }) {
setLocale(lang);
yield put({ type: 'onUpdateState', payload: { lang } });
},
},
reducers: {
onUpdateState(state, { payload }: any) {
return {
...state,
...payload,
};
},
onSaveUser(state, { payload }: any) {
return {
...state,
user: payload,
isLogin: Boolean(payload && payload.id),
};
}
},
};
export default model;