|
@@ -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;
|