app.tsx 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. import { PageLoading } from '@ant-design/pro-layout';
  2. import { history, useModel } from 'umi';
  3. import { checkToken, reFreshCheckToken } from '@/services/sgservice/environment';
  4. import { projectId } from '@/config/api.js';
  5. import UserStorage from '@/config/user';
  6. const loginPath = '/noAuth';
  7. /** 获取用户信息比较慢的时候会展示一个 loading */
  8. export const initialStateConfig = {
  9. loading: <PageLoading />,
  10. };
  11. /**
  12. * @see https://umijs.org/zh-CN/plugins/plugin-initial-state
  13. * */
  14. export async function getInitialState(): Promise<{
  15. // settings?: Partial<LayoutSettings>;
  16. currentUser?: API.CurrentUser;
  17. fetchUser?: () => Promise<API.CurrentUser | undefined>;
  18. //loading?: boolean;
  19. //fetchUserInfo?: () => Promise<API.CurrentUser | undefined>;
  20. }> {
  21. const { location } = history;
  22. let access_token: any = location.query.access_token;
  23. let refresh_token: any = location.query.refresh_token;
  24. //如果有值 存起来
  25. if (access_token) {
  26. localStorage.setItem('access_token', access_token);
  27. console.log("localStorage.getItem('access_token')", localStorage.getItem('access_token'));
  28. }
  29. if (refresh_token) {
  30. localStorage.setItem('refresh_token', refresh_token);
  31. }
  32. console.log('getInitialState');
  33. //如果没有 取缓存
  34. // if (!refresh_token) {
  35. // refresh_token = localStorage.getItem('refresh_token');
  36. // }
  37. const fetchUser = async () => {
  38. try {
  39. access_token = localStorage.getItem('access_token');
  40. //if (!access_token) return; //随后去掉
  41. //验证acces_token 获取用户数据
  42. const res = await checkToken({ token: access_token });
  43. var resUser = res.data;
  44. } catch (err) {
  45. history.push(loginPath);
  46. }
  47. if (resUser) {
  48. //获取用户信息 并储存
  49. var userObj = UserStorage.getInstance();
  50. userObj.setUser(resUser);
  51. return resUser;
  52. } else {
  53. history.push(loginPath);
  54. return undefined;
  55. }
  56. };
  57. let currentUser = {};
  58. //之江项目 验证token
  59. if (projectId == 'Pj3301100002') {
  60. currentUser = await fetchUser();
  61. } else {
  62. let tempUser = {
  63. name: '行政测试',
  64. phone: '17611228068',
  65. id: '9a1ecfbacb6b4f249bf2dd3ec7793ead',
  66. };
  67. var userObj = UserStorage.getInstance();
  68. userObj.setUser(tempUser);
  69. }
  70. const reFreshUser = async () => {
  71. refresh_token = localStorage.getItem('refresh_token');
  72. //刷新token 续约token
  73. const res = await reFreshCheckToken({
  74. zjfreshtoken: refresh_token,
  75. });
  76. if (res.refresh_token) {
  77. console.log('refresh_token', res.refresh_token);
  78. localStorage.setItem('refresh_token', res.refresh_token);
  79. localStorage.setItem('access_token', res.access_token);
  80. } else {
  81. //如果刷新token失败
  82. //history.push(loginPath);
  83. }
  84. //1分钟后再执行
  85. setTimeout(() => {
  86. // reFreshUser();
  87. }, 60000);
  88. };
  89. //await reFreshUser();
  90. // || {
  91. // companyId: '245e7060643811eb934c0237aedb39a6',
  92. // createDate: 1642388952000,
  93. // depName: '[["研发算法组","上格云","博锐尚格科技股份有限公司"]]',
  94. // firstUseTime: '2020-10-16 18:37:05',
  95. // id: '2d2440710d4548f3afa55c4e8244538e',
  96. // job: '研发工程师',
  97. // manageUserType: 1,
  98. // name: '赵小静',
  99. // phone: '18801040736',
  100. // projectId: 'Pj1101080259',
  101. // status: 2,
  102. // type: 1,
  103. // updateDate: 1642388952000,
  104. // };
  105. return {
  106. currentUser,
  107. fetchUser,
  108. };
  109. }
  110. export const request = {
  111. requestInterceptors: [
  112. (url: any, options: any) => {
  113. return {
  114. url,
  115. options: {
  116. ...options,
  117. interceptors: true,
  118. },
  119. };
  120. },
  121. ],
  122. responseInterceptors: [
  123. async (response: any) => {
  124. return response;
  125. },
  126. ],
  127. errorHandler: (error: any) => {
  128. const { response } = error;
  129. if (!response) {
  130. // message.error('您的网络发生异常,无法连接服务器');
  131. }
  132. throw error;
  133. },
  134. };
  135. // ProLayout 支持的api https://procomponents.ant.design/components/layout
  136. // export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => {
  137. // return {
  138. // rightContentRender: () => <RightContent />,
  139. // disableContentMargin: false,
  140. // waterMarkProps: {
  141. // content: initialState?.currentUser?.name,
  142. // },
  143. // footerRender: () => <Footer />,
  144. // onPageChange: () => {
  145. // const { location } = history;
  146. // // 如果没有登录,重定向到 login
  147. // if (!initialState?.currentUser && location.pathname !== loginPath) {
  148. // history.push(loginPath);
  149. // }
  150. // },
  151. // links: isDev
  152. // ? [
  153. // <Link to="/umi/plugin/openapi" target="_blank">
  154. // <LinkOutlined />
  155. // <span>OpenAPI 文档</span>
  156. // </Link>,
  157. // <Link to="/~docs">
  158. // <BookOutlined />
  159. // <span>业务组件文档</span>
  160. // </Link>,
  161. // ]
  162. // : [],
  163. // menuHeaderRender: undefined,
  164. // // 自定义 403 页面
  165. // // unAccessible: <div>unAccessible</div>,
  166. // // 增加一个 loading 的状态
  167. // childrenRender: (children, props) => {
  168. // // if (initialState?.loading) return <PageLoading />;
  169. // return (
  170. // <>
  171. // {children}
  172. // {!props.location?.pathname?.includes('/login') && (
  173. // <SettingDrawer
  174. // enableDarkTheme
  175. // settings={initialState?.settings}
  176. // onSettingChange={(settings) => {
  177. // setInitialState((preInitialState) => ({
  178. // ...preInitialState,
  179. // settings,
  180. // }));
  181. // }}
  182. // />
  183. // )}
  184. // </>
  185. // );
  186. // },
  187. // ...initialState?.settings,
  188. // };
  189. // };