forgeplus-react/src/models/user/index.ts

153 lines
3.9 KiB
TypeScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Effect, Reducer, Subscription, history } from 'umi'
import { Action } from '@@/plugin-dva/connect'
import { LoginIn, getUserInfo, getNavigationInfo , ForgeLogin , getEducoderUserInfo , ForgeCheckName , ForgeSaveUserInfo , ForgeCheckEmail } from '@/service/user'
export interface UserModelState {
name: string
showPopLogin: boolean
loading: boolean
userInfo?: any
eduUserInfo?:any
navigationInfo: any
actionTabs: { key: string; params: any ,phone:string};
showClosable: boolean
}
export interface UserModelType {
namespace: 'user'
state: UserModelState
effects: {
login: Effect
showPopLogin: Effect
getUserInfo: Effect
getNavigationInfo: Effect
setActionTabs: Effect;
ForgeLogin:Effect;
getEducoderUserInfo:Effect,
ForgeCheckName:Effect,
ForgeCheckEmail:Effect,
ForgeSaveUserInfo:Effect
}
reducers: {
save: Reducer<UserModelState>
// 启用 immer 之后
// save: ImmerReducer<IndexModelState>;
}
subscriptions: { setup: Subscription }
}
const UserModel: UserModelType = {
namespace: 'user',
state: {
name: '用户登录模块',
//是否显示登录弹窗false不显示true显示
showPopLogin: false,
// 是否显示被关闭按钮
showClosable: false,
// 用户信息
userInfo: {},
eduUserInfo:{},
navigationInfo: {},
loading: true,
actionTabs:{
key: '',
params: {},
phone:'',
}
},
effects: {
*login({ payload }, { call, put }) {
const { to, ...params } = payload
const response = yield call(LoginIn, params)
if (!response.status) {
try {
if (to) {
history.replace(to)
} else {
location.reload()
}
} catch (e) { }
}
},
*showPopLogin({ payload }, { put }) {
yield put({
type: 'save',
payload: { showPopLogin: payload.showPopLogin, showClosable: payload.showClosable },
})
},
*ForgeLogin({ payload }, { call, put }) {
const { to } = payload
const response = yield call(ForgeLogin, { ...payload })
if (!response.status) {
try {
if (to) {
history.replace(to)
} else {
location.reload()
}
} catch (e) { }
}
return response;
},
*getUserInfo({ payload }, { call, put }) {
// location.search,,debug:"admin"
const response = yield call(getUserInfo, { ...payload,debug:"student"})
localStorage.userInfo = JSON.stringify(response);
yield put({
type: 'save',
payload: { userInfo: { ...response } },
})
return response;
},
*getEducoderUserInfo({ payload }, { call, put }) {
const response = yield call(getEducoderUserInfo, { ...payload})
yield put({
type: 'save',
payload: { eduUserInfo: { ...response } },
})
return response;
},
*getNavigationInfo({ payload }, { call, put }) {
const response = yield call(getNavigationInfo, { ...payload })
yield put({
type: 'save',
payload: { navigationInfo: { ...response } },
})
},
*setActionTabs({ payload }, { call, put }) {
yield put({
type: 'save',
payload: { actionTabs: { ...payload } },
});
},
*ForgeCheckName({ payload }, { call, put }) {
const response = yield call(ForgeCheckName, { ...payload });
return response;
},
*ForgeCheckEmail({ payload }, { call, put }) {
const response = yield call(ForgeCheckEmail, { ...payload });
return response;
},
*ForgeSaveUserInfo({ payload }, { call, put }) {
const response = yield call(ForgeSaveUserInfo, { ...payload });
return response;
}
},
reducers: {
save(state, action) {
return {
...state,
...action.payload,
}
},
// 启用 immer 之后
// save(state, action) {
// state.name = action.payload;
// },
},
}
export default UserModel