123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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<T> {
- code: number;
- data: T;
- msg: string;
- }
- class HttpRequest {
- request<T = any> (
- url: string,
- method: Methods,
- data = {},
- options?: UseFetchOptions<T>
- ) {
- 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<T> = {
- 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<T = any> (url: string, params?: any, options?: UseFetchOptions<T>) {
- return this.request(url, "GET", params, options);
- }
- post<T = any> (url: string, data: any, options?: UseFetchOptions<T>) {
- return this.request(url, "POST", data, options);
- }
- }
- const httpRequest = new HttpRequest();
- export default httpRequest;
|