153 lines
3.9 KiB
TypeScript
Executable File
153 lines
3.9 KiB
TypeScript
Executable File
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:"admin"})
|
||
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
|