app.tsx 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. import { PageLoading } from '@ant-design/pro-layout';
  2. import { history, useModel } from 'umi';
  3. import { checkToken, reFreshCheckToken } from '@/services/sagacare_service/environment';
  4. import { projectObj } from '@/config/api.js';
  5. import UserStorage from '@/config/sagacare/sagacare_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. //projectId = 'Pj1101080259';
  59. if (projectObj.projectId == 'Pj3301100002') {
  60. //之江项目 验证token
  61. currentUser = await fetchUser();
  62. } else {
  63. //非之江项目
  64. let tempUser = {
  65. name: '行政测试',
  66. phone: '17611228068',
  67. id: '9a1ecfbacb6b4f249bf2dd3ec7793ead',
  68. };
  69. var userObj = UserStorage.getInstance();
  70. userObj.setUser(tempUser);
  71. }
  72. const reFreshUser = async () => {
  73. refresh_token = localStorage.getItem('refresh_token');
  74. //刷新token 续约token
  75. const res = await reFreshCheckToken({
  76. zjfreshtoken: refresh_token,
  77. });
  78. if (res.refresh_token) {
  79. console.log('refresh_token', res.refresh_token);
  80. localStorage.setItem('refresh_token', res.refresh_token);
  81. localStorage.setItem('access_token', res.access_token);
  82. } else {
  83. //如果刷新token失败
  84. //history.push(loginPath);
  85. }
  86. //1分钟后再执行
  87. setTimeout(() => {
  88. // reFreshUser();
  89. }, 60000);
  90. };
  91. //await reFreshUser();
  92. // || {
  93. // companyId: '245e7060643811eb934c0237aedb39a6',
  94. // createDate: 1642388952000,
  95. // depName: '[["研发算法组","上格云","博锐尚格科技股份有限公司"]]',
  96. // firstUseTime: '2020-10-16 18:37:05',
  97. // id: '2d2440710d4548f3afa55c4e8244538e',
  98. // job: '研发工程师',
  99. // manageUserType: 1,
  100. // name: '赵小静',
  101. // phone: '18801040736',
  102. // projectId: 'Pj1101080259',
  103. // status: 2,
  104. // type: 1,
  105. // updateDate: 1642388952000,
  106. // };
  107. return {
  108. currentUser,
  109. fetchUser,
  110. };
  111. }
  112. export const request = {
  113. requestInterceptors: [
  114. (url: any, options: any) => {
  115. return {
  116. url,
  117. options: {
  118. ...options,
  119. interceptors: true,
  120. },
  121. };
  122. },
  123. ],
  124. responseInterceptors: [
  125. async (response: any) => {
  126. return response;
  127. },
  128. ],
  129. errorHandler: (error: any) => {
  130. const { response } = error;
  131. if (!response) {
  132. // message.error('您的网络发生异常,无法连接服务器');
  133. }
  134. throw error;
  135. },
  136. };
  137. // ProLayout 支持的api https://procomponents.ant.design/components/layout
  138. // export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => {
  139. // return {
  140. // rightContentRender: () => <RightContent />,
  141. // disableContentMargin: false,
  142. // waterMarkProps: {
  143. // content: initialState?.currentUser?.name,
  144. // },
  145. // footerRender: () => <Footer />,
  146. // onPageChange: () => {
  147. // const { location } = history;
  148. // // 如果没有登录,重定向到 login
  149. // if (!initialState?.currentUser && location.pathname !== loginPath) {
  150. // history.push(loginPath);
  151. // }
  152. // },
  153. // links: isDev
  154. // ? [
  155. // <Link to="/umi/plugin/openapi" target="_blank">
  156. // <LinkOutlined />
  157. // <span>OpenAPI 文档</span>
  158. // </Link>,
  159. // <Link to="/~docs">
  160. // <BookOutlined />
  161. // <span>业务组件文档</span>
  162. // </Link>,
  163. // ]
  164. // : [],
  165. // menuHeaderRender: undefined,
  166. // // 自定义 403 页面
  167. // // unAccessible: <div>unAccessible</div>,
  168. // // 增加一个 loading 的状态
  169. // childrenRender: (children, props) => {
  170. // // if (initialState?.loading) return <PageLoading />;
  171. // return (
  172. // <>
  173. // {children}
  174. // {!props.location?.pathname?.includes('/login') && (
  175. // <SettingDrawer
  176. // enableDarkTheme
  177. // settings={initialState?.settings}
  178. // onSettingChange={(settings) => {
  179. // setInitialState((preInitialState) => ({
  180. // ...preInitialState,
  181. // settings,
  182. // }));
  183. // }}
  184. // />
  185. // )}
  186. // </>
  187. // );
  188. // },
  189. // ...initialState?.settings,
  190. // };
  191. // };