lex-xin 3 vuotta sitten
vanhempi
commit
d5af5215b6
6 muutettua tiedostoa jossa 159 lisäystä ja 2 poistoa
  1. 102 0
      helpers/request.ts
  2. 15 0
      helpers/validate.ts
  3. 14 0
      jsconfig.json
  4. 25 0
      package-lock.json
  5. 1 0
      package.json
  6. 2 2
      vite.config.ts

+ 102 - 0
helpers/request.ts

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

+ 15 - 0
helpers/validate.ts

@@ -0,0 +1,15 @@
+// 学生地址
+export function vaildStudentUrl() {
+    let url = window.location.href
+    let returnUrl = ''
+    if (/online/.test(url)) { //线上
+      returnUrl = 'https://mstuonline.dayaedu.com'
+    } else if (/dev/.test(url)) { // dev 环境
+      returnUrl = 'http://mstudev.dayaedu.com'
+    } else if (/test/.test(url)) { // dev 环境
+      returnUrl = 'http://mstutest.dayaedu.com'
+    } else { // 默认dev环境
+      returnUrl = 'http://mstudev.dayaedu.com'
+    }
+    return returnUrl
+  }

+ 14 - 0
jsconfig.json

@@ -0,0 +1,14 @@
+{
+  "compilerOptions": {
+    "baseUrl": "./",
+    "paths": {
+      "@/*": [
+        "src/*"
+      ]
+    }
+  },
+  "exclude": [
+    "node_modules",
+    "dist"
+  ]
+}

+ 25 - 0
package-lock.json

@@ -3162,6 +3162,16 @@
       "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
       "dev": true
     },
+    "clean-deep": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/clean-deep/-/clean-deep-3.4.0.tgz",
+      "integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==",
+      "requires": {
+        "lodash.isempty": "^4.4.0",
+        "lodash.isplainobject": "^4.0.6",
+        "lodash.transform": "^4.6.0"
+      }
+    },
     "clean-stack": {
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -5112,12 +5122,27 @@
       "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
       "dev": true
     },
+    "lodash.isempty": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+      "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg=="
+    },
+    "lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+    },
     "lodash.merge": {
       "version": "4.6.2",
       "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
       "dev": true
     },
+    "lodash.transform": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz",
+      "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ=="
+    },
     "log-symbols": {
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",

+ 1 - 0
package.json

@@ -21,6 +21,7 @@
     "generate": "plop"
   },
   "dependencies": {
+    "clean-deep": "^3.4.0",
     "dayjs": "^1.10.7",
     "loaders.css": "^0.1.2",
     "mitt": "^3.0.0",

+ 2 - 2
vite.config.ts

@@ -1,8 +1,8 @@
 import { defineConfig } from 'vite';
 import vue from '@vitejs/plugin-vue';
 import styleImport from 'vite-plugin-style-import';
-const vueJsx = require('@vitejs/plugin-vue-jsx');
-const legacy = require('@vitejs/plugin-legacy');
+import vueJsx from '@vitejs/plugin-vue-jsx';
+import legacy from '@vitejs/plugin-legacy';
 // eslint-disable-next-line @typescript-eslint/no-var-requires
 const path = require('path');