Michael Wang 3 жил өмнө
parent
commit
09e0187c8e

+ 1 - 0
.eslintrc.js

@@ -68,6 +68,7 @@ module.exports = {
         $ref: true,
         $computed: true,
         $$: true,
+        $message: true,
       },
     },
   ],

+ 17 - 5
src/App.vue

@@ -1,14 +1,26 @@
 <script setup lang="ts">
-import { NConfigProvider, NMessageProvider } from "naive-ui";
+import { NConfigProvider, NMessageProvider, useMessage } from "naive-ui";
 import { zhCN, dateZhCN } from "naive-ui";
+import { defineComponent } from "vue";
+
+const DummyComp = defineComponent({
+  setup() {
+    /** @ts-expect-error 特殊处理,其他地方是可以直接用$message的 */
+    window.$message = useMessage();
+  },
+  render() {
+    return null;
+  },
+});
 </script>
 
 <template>
-  <n-config-provider :locale="zhCN" :dateLocale="dateZhCN">
-    <n-message-provider :duration="10000">
+  <n-message-provider :duration="10000">
+    <n-config-provider :locale="zhCN" :dateLocale="dateZhCN">
       <router-view />
-    </n-message-provider>
-  </n-config-provider>
+      <DummyComp />
+    </n-config-provider>
+  </n-message-provider>
 </template>
 
 <style>

+ 8 - 11
src/api/login.ts

@@ -8,15 +8,12 @@ export async function loginApi(
   domain: string,
   rootOrgId: number
 ) {
-  return httpApp.post<any, { data: { content: any } }>(
-    "/api/ecs_core/verifyCode/gt/login",
-    {
-      accountType,
-      accountValue,
-      password,
-      domain,
-      rootOrgId,
-      alwaysOK: true,
-    }
-  );
+  return httpApp.post<{ content: any }>("/api/ecs_core/verifyCode/gt/login", {
+    accountType,
+    accountValue,
+    password,
+    domain,
+    rootOrgId,
+    alwaysOK: true,
+  });
 }

+ 6 - 8
src/plugins/axiosApp.ts

@@ -2,8 +2,6 @@ import axios from "axios";
 import { loadProgressBar } from "axios-progress-bar";
 // import { notifyInvalidTokenThrottled } from "./axiosNotice";
 import axiosRetry from "axios-retry";
-import { useMessage } from "naive-ui";
-const message = useMessage();
 import { store } from "@/store/store";
 
 const config = {
@@ -34,7 +32,7 @@ _axiosApp.interceptors.request.use(
     if (error.config.setGlobalMask) {
       store.decreaseGlobalMaskCount("axios");
     }
-    message.error(JSON.stringify(error));
+    $message.error(JSON.stringify(error));
     console.log(error);
     return Promise.reject(error);
   }
@@ -56,7 +54,7 @@ _axiosApp.interceptors.response.use(
     if (!error.response) {
       if (showErrorMessage) {
         // "Network Error" 网络不通,直接返回
-        message.error("网络连接异常,请检查网络设置。");
+        $message.error("网络连接异常,请检查网络设置。");
       }
       return Promise.reject(error);
     }
@@ -69,12 +67,12 @@ _axiosApp.interceptors.response.use(
       return Promise.reject(error);
     } else if (status == 405) {
       if (showErrorMessage) {
-        message.error("没有权限!");
+        $message.error("没有权限!");
       }
       return Promise.reject(error);
     } else if (status == 502) {
       if (showErrorMessage) {
-        message.error("服务器异常(502)!");
+        $message.error("服务器异常(502)!");
       }
       return Promise.reject(error);
     }
@@ -83,11 +81,11 @@ _axiosApp.interceptors.response.use(
       const data = error.response.data;
       if (data && data.message) {
         if (showErrorMessage) {
-          message.error(data.message + "");
+          $message.error(data.message + "");
         }
       } else {
         if (showErrorMessage) {
-          message.error("未定义异常: " + JSON.stringify(data, null, 2));
+          $message.error("未定义异常: " + JSON.stringify(data, null, 2));
         }
       }
       return Promise.reject(error);

+ 4 - 6
src/plugins/axiosNoAuth.ts

@@ -1,8 +1,6 @@
 import axios from "axios";
 import { loadProgressBar } from "axios-progress-bar";
 import axiosRetry from "axios-retry";
-import { useMessage } from "naive-ui";
-const message = useMessage();
 
 const config = {
   timeout: 60 * 1000, // Timeout
@@ -22,7 +20,7 @@ _axiosNoAuth.interceptors.request.use(
     return config;
   },
   function (error) {
-    message.error(JSON.stringify(error));
+    $message.error(JSON.stringify(error));
     return Promise.reject(error);
   }
 );
@@ -35,15 +33,15 @@ _axiosNoAuth.interceptors.response.use(
   (error) => {
     if (!error.response) {
       // "Network Error" 网络不通,直接返回
-      message.error("网络连接异常,请检查网络设置。");
+      $message.error("网络连接异常,请检查网络设置。");
       return Promise.reject(error);
     }
 
     const data = error.response.data;
     if (data && data.desc) {
-      message.error(data.desc + "");
+      $message.error(data.desc + "");
     } else {
-      message.error(`异常(${error.response.status}): ${error.config.url}`);
+      $message.error(`异常(${error.response.status}): ${error.config.url}`);
     }
     return Promise.reject(error);
   }

+ 6 - 0
src/types/global.d.ts

@@ -1,6 +1,8 @@
 // import filters from "@/filters";
 // import { default as message } from "ant-design-vue/lib/message";
 
+import { MessageApiInjection } from "naive-ui/lib/message/src/MessageProvider";
+
 export {};
 // declare module "@vue/runtime-core" {
 // interface ComponentCustomProperties {
@@ -9,6 +11,10 @@ export {};
 // }
 // }
 
+declare global {
+  let $message: MessageApiInjection;
+}
+
 declare module "axios/index" {
   interface AxiosRequestConfig {
     noErrorMessage?: boolean;