import { PageLoading } from '@ant-design/pro-layout'; import { history, useModel } from 'umi'; import { checkToken, reFreshCheckToken, queryUser } from '@/services/sagacare_service/environment'; import { projectObj } from '@/config/api.js'; import { decrypt, deal_locationsearch } from '@/config/screate.js'; import UserStorage from '@/config/sagacare/sagacare_user'; const loginPath = '/noAuth'; /** 获取用户信息比较慢的时候会展示一个 loading */ export const initialStateConfig = { loading: , }; /** * @see https://umijs.org/zh-CN/plugins/plugin-initial-state * */ export async function getInitialState(): Promise<{ // settings?: Partial; currentUser?: API.CurrentUser; fetchUser?: () => Promise; //loading?: boolean; //fetchUserInfo?: () => Promise; }> { const { location } = history; let currentUser = {}; let access_token: any = location.query.access_token; let refresh_token: any = location.query.refresh_token; var dealRes = deal_locationsearch(); var persagyToken = dealRes[0]; let deCode = decodeURIComponent(persagyToken); let userName = persagyToken && decrypt(deCode); //如果有值 存起来 if (access_token) { localStorage.setItem('access_token', access_token); } if (refresh_token) { localStorage.setItem('refresh_token', refresh_token); } const fetchUser = async () => { try { access_token = localStorage.getItem('access_token'); //if (!access_token) return; //随后去掉 //验证acces_token 获取用户数据 const res = await checkToken({ token: access_token }); var resUser = res.data; } catch (err) { history.push(loginPath); } if (resUser) { //获取用户信息 并储存 var userObj = UserStorage.getInstance(); userObj.setUser(resUser); return resUser; } else { // history.push(loginPath); return undefined; } }; const queryUserFunc = async () => { try { //验证acces_token 获取用户数据 const res2 = await queryUser({ criteria: { username: userName } }); var resUser = res2.content[0]; } catch (err) { history.push(loginPath); } if (resUser) { //获取用户信息 并储存 var userObj = UserStorage.getInstance(); userObj.setUser(resUser); return resUser; } else { history.push(loginPath); return undefined; } }; //projectId = 'Pj1101080259'; if (projectObj.projectId == 'Pj3301100002') { //之江项目 验证token if (userName) { currentUser = await queryUserFunc(); } else { history.push(loginPath); } } else { //非之江项目 let tempUser = { name: '行政测试', phone: '17611228068', id: '9a1ecfbacb6b4f249bf2dd3ec7793ead', }; var userObj = UserStorage.getInstance(); userObj.setUser(tempUser); } const reFreshUser = async () => { refresh_token = localStorage.getItem('refresh_token'); //刷新token 续约token const res = await reFreshCheckToken({ zjfreshtoken: refresh_token, }); if (res.refresh_token) { console.log('refresh_token', res.refresh_token); localStorage.setItem('refresh_token', res.refresh_token); localStorage.setItem('access_token', res.access_token); } else { //如果刷新token失败 //history.push(loginPath); } //1分钟后再执行 setTimeout(() => { // reFreshUser(); }, 60000); }; return { currentUser, fetchUser, }; } export const request = { requestInterceptors: [ (url: any, options: any) => { return { url, options: { ...options, interceptors: true, }, }; }, ], responseInterceptors: [ async (response: any) => { return response; }, ], errorHandler: (error: any) => { const { response } = error; if (!response) { // message.error('您的网络发生异常,无法连接服务器'); } throw error; }, }; // ProLayout 支持的api https://procomponents.ant.design/components/layout // export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { // return { // rightContentRender: () => , // disableContentMargin: false, // waterMarkProps: { // content: initialState?.currentUser?.name, // }, // footerRender: () =>