|  | @@ -0,0 +1,102 @@
 | 
	
		
			
				|  |  | +import { extend } from 'umi-request';
 | 
	
		
			
				|  |  | +import { Toast } from 'vant';
 | 
	
		
			
				|  |  | +import cleanDeep from 'clean-deep';
 | 
	
		
			
				|  |  | +import { browser } from '/src/helpers/utils';
 | 
	
		
			
				|  |  | +import ApiRouter from '/src/api-router';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export interface SearchInitParams {
 | 
	
		
			
				|  |  | +  rows?: string | number;
 | 
	
		
			
				|  |  | +  page?: string | number;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export interface InitSearchRespones {
 | 
	
		
			
				|  |  | +  data: {
 | 
	
		
			
				|  |  | +    rows: any[],
 | 
	
		
			
				|  |  | +    [key: string]: any
 | 
	
		
			
				|  |  | +  };
 | 
	
		
			
				|  |  | +  [key: string]: any
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const isOpenLogin = false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const request = extend({
 | 
	
		
			
				|  |  | +  requestType: 'form',
 | 
	
		
			
				|  |  | +  timeout: 10000
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +request.use(async (ctx, next) => {
 | 
	
		
			
				|  |  | +  const { url, options } = ctx.req
 | 
	
		
			
				|  |  | +  const prefix = options.prefix || '';
 | 
	
		
			
				|  |  | +  const baseUrl: string = url.replace(prefix, '') || '';
 | 
	
		
			
				|  |  | +  const linkUrl: string = (ApiRouter as any)[baseUrl];
 | 
	
		
			
				|  |  | +  if (linkUrl) {
 | 
	
		
			
				|  |  | +    ctx.req.url = prefix + linkUrl;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  await next();
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +request.interceptors.request.use(
 | 
	
		
			
				|  |  | +  (url, options: any) => {
 | 
	
		
			
				|  |  | +    const Authorization = sessionStorage.getItem('Authorization') || '';
 | 
	
		
			
				|  |  | +    const authHeaders: any = {};
 | 
	
		
			
				|  |  | +    if (
 | 
	
		
			
				|  |  | +      Authorization &&
 | 
	
		
			
				|  |  | +      ![
 | 
	
		
			
				|  |  | +        '/api-auth/usernameLogin',
 | 
	
		
			
				|  |  | +        '/api-auth/smsLogin',
 | 
	
		
			
				|  |  | +        '/api-auth/code/sendSms'
 | 
	
		
			
				|  |  | +      ].includes(url)
 | 
	
		
			
				|  |  | +    ) {
 | 
	
		
			
				|  |  | +      authHeaders.Authorization = Authorization
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      url,
 | 
	
		
			
				|  |  | +      options: {
 | 
	
		
			
				|  |  | +        ...options,
 | 
	
		
			
				|  |  | +        params: cleanDeep(options.params),
 | 
	
		
			
				|  |  | +        headers: {
 | 
	
		
			
				|  |  | +          ...options.headers,
 | 
	
		
			
				|  |  | +          ...authHeaders
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  { global: false }
 | 
	
		
			
				|  |  | +);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +request.interceptors.response.use(
 | 
	
		
			
				|  |  | +  async res => {
 | 
	
		
			
				|  |  | +    if (res.status > 299 || res.status < 200) {
 | 
	
		
			
				|  |  | +      const msg = '服务器错误,状态码' + res.status;
 | 
	
		
			
				|  |  | +      Toast(msg)
 | 
	
		
			
				|  |  | +      throw new Error(msg);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    const data = await res.clone().json();
 | 
	
		
			
				|  |  | +    if (data.code !== 200 && data.errCode !== 0) {
 | 
	
		
			
				|  |  | +      const msg = data.msg || '处理失败,请重试';
 | 
	
		
			
				|  |  | +      // const state: any = store.getState()
 | 
	
		
			
				|  |  | +      // if (data.code === 401 && state.user.status === 'login' && url.pathname !== '/api-auth/exit') {
 | 
	
		
			
				|  |  | +      //   const { dispatch }: any = store
 | 
	
		
			
				|  |  | +      //   dispatch(setLogout())
 | 
	
		
			
				|  |  | +      // }
 | 
	
		
			
				|  |  | +      if (!(data.code === 403 || data.code === 401)) {
 | 
	
		
			
				|  |  | +        Toast(msg);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      const browserInfo = browser()
 | 
	
		
			
				|  |  | +      if (data.code === 403 && browserInfo.isApp && !isOpenLogin) {
 | 
	
		
			
				|  |  | +        if (browserInfo.android) {
 | 
	
		
			
				|  |  | +          (window as any).DAYA.postMessage(JSON.stringify({ api: 'login' }));
 | 
	
		
			
				|  |  | +        } else if (browserInfo.iPhone) {
 | 
	
		
			
				|  |  | +          (window as any).webkit.messageHandlers.DAYA.postMessage(
 | 
	
		
			
				|  |  | +            JSON.stringify({ api: 'login' })
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      throw new Error(msg);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return res;
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  { global: false }
 | 
	
		
			
				|  |  | +);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default request;
 |