import { UseFetchOptions } from "nuxt/app"; import { createDiscreteApi } from "naive-ui"; import { useUserStore } from "~/store/user"; const NMessage = createDiscreteApi(["message"]); type Methods = "GET" | "POST"; // const BASE_URL = 'http://192.168.0.68:8390/'; // const BASE_URL = process.env.NUXT_PUBLIC_API_BASE export interface IResultData { code: number; data: T; msg: string; } class HttpRequest { request ( url: string, method: Methods, data = {}, options?: UseFetchOptions ) { return new Promise((resolve, reject) => { const config = useRuntimeConfig(); const userStore = useUserStore(); let baseURL = config.public.apiBase; if (process.client && process.env.NODE_ENV == "development") { baseURL = "/api"; } const newOptions: UseFetchOptions = { baseURL: baseURL, // baseURL: "https://bjfl.dirmarketresearch.com/js/a/api", method: method, key: url + JSON.stringify(data), headers: { 'website-token': userStore.getToken || '', }, ...options, }; if (method === "GET") { newOptions.key = url + JSON.stringify(data), data.params.lang = userStore.getLang; newOptions.params = data?.params; } if (method === "POST") { data.lang = userStore.getLang; newOptions.body = data } useFetch(url, newOptions) .then((res: any) => { if (!res.data.value?.code || res.data.value.code == 200) { resolve(JSON.parse(JSON.stringify(res.data.value))); } else { reject(JSON.parse(JSON.stringify(res.data.value))); switch (res.data.value.code) { case -400: case 5001: const userStore = useUserStore(); NMessage.message.error("登录状态过期,请重新登陆"); userStore.resetState() // navigateTo(userStore.getLang=="en-US"?'/en':'/'); return; case 500: case 5002: return NMessage.message.error( res.data.value.msg || "服务端错误" ); default: return NMessage.message.error(res.data.value.msg); } } }) .catch((error) => { reject(error); }); }); } // 封装常用方法 get (url: string, params?: any, options?: UseFetchOptions) { return this.request(url, "GET", params, options); } post (url: string, data: any, options?: UseFetchOptions) { return this.request(url, "POST", data, options); } } const httpRequest = new HttpRequest(); export default httpRequest;