diff --git a/web/src/utils/baseUrl.ts b/web/src/utils/baseUrl.ts index 617e9f9..c22daa8 100644 --- a/web/src/utils/baseUrl.ts +++ b/web/src/utils/baseUrl.ts @@ -1,61 +1,67 @@ +import { pluginsAll } from '/@/views/plugins/index'; + /** * @description 校验是否为租户模式。租户模式把域名替换成 域名 加端口 */ export const getBaseURL = function () { - var baseURL = import.meta.env.VITE_API_URL as any - var param = baseURL.split('/')[3] || '' - if (window.pluginsAll && window.pluginsAll.indexOf('dvadmin-tenants-web') !== -1 && (!param || baseURL.startsWith('/'))) { - // 1.把127.0.0.1 替换成和前端一样域名 - // 2.把 ip 地址替换成和前端一样域名 - // 3.把 /api 或其他类似的替换成和前端一样域名 - // document.domain - var host = baseURL.split('/')[2] - if (host) { - var prot = baseURL.split(':')[2] || 80 - if (prot === 80 || prot === 443) { - host = document.domain - } else { - host = document.domain + ':' + prot - } - baseURL = baseURL.split('/')[0] + '//' + baseURL.split('/')[1] + host + '/' + param - } else { - baseURL = location.protocol + '//' + location.hostname + (location.port ? ':' : '') + location.port + baseURL - } - } - if (!baseURL.endsWith('/')) { - baseURL += '/' - } - return baseURL -} + var baseURL = import.meta.env.VITE_API_URL as any; + var param = baseURL.split('/')[3] || ''; + // @ts-ignore + if (pluginsAll && pluginsAll.indexOf('dvadmin3-tenants-web') !== -1 && (!param || baseURL.startsWith('/'))) { + // 1.把127.0.0.1 替换成和前端一样域名 + // 2.把 ip 地址替换成和前端一样域名 + // 3.把 /api 或其他类似的替换成和前端一样域名 + // document.domain + + var host = baseURL.split('/')[2]; + if (host) { + var port = baseURL.split(':')[2] || 80; + if (port === 80 || port === 443) { + host = document.domain; + } else { + host = document.domain + ':' + port; + } + baseURL = baseURL.split('/')[0] + '//' + baseURL.split('/')[1] + host + '/' + param; + } else { + baseURL = location.protocol + '//' + location.hostname + (location.port ? ':' : '') + location.port + baseURL; + } + } + if (!baseURL.endsWith('/')) { + baseURL += '/'; + } + return baseURL; +}; export const getWsBaseURL = function () { - let baseURL = import.meta.env.VITE_API_URL as any - let param = baseURL.split('/')[3] || '' - if (window.pluginsAll && window.pluginsAll.indexOf('dvadmin-tenants-web') !== -1 && (!param || baseURL.startsWith('/'))) { - // 1.把127.0.0.1 替换成和前端一样域名 - // 2.把 ip 地址替换成和前端一样域名 - // 3.把 /api 或其他类似的替换成和前端一样域名 - // document.domain - var host = baseURL.split('/')[2] - if (host) { - var prot = baseURL.split(':')[2] || 80 - if (prot === 80 || prot === 443) { - host = document.domain - } else { - host = document.domain + ':' + prot - } - baseURL = baseURL.split('/')[0] + '//' + baseURL.split('/')[1] + host + '/' + param - } else { - baseURL = location.protocol + '//' + location.hostname + (location.port ? ':' : '') + location.port + baseURL - } - } else if (param !== '' || baseURL.startsWith('/')) { - baseURL = (location.protocol === 'https:' ? 'wss://' : 'ws://') + location.hostname + (location.port ? ':' : '') + location.port + baseURL - } - if (!baseURL.endsWith('/')) { - baseURL += '/' - } - if (baseURL.startsWith('http')) { // https 也默认会被替换成 wss - baseURL = baseURL.replace('http', 'ws') - } - return baseURL -} + let baseURL = import.meta.env.VITE_API_URL as any; + let param = baseURL.split('/')[3] || ''; + // @ts-ignore + if (pluginsAll && pluginsAll.indexOf('dvadmin3-tenants-web') !== -1 && (!param || baseURL.startsWith('/'))) { + // 1.把127.0.0.1 替换成和前端一样域名 + // 2.把 ip 地址替换成和前端一样域名 + // 3.把 /api 或其他类似的替换成和前端一样域名 + // document.domain + var host = baseURL.split('/')[2]; + if (host) { + var port = baseURL.split(':')[2] || 80; + if (port === 80 || port === 443) { + host = document.domain; + } else { + host = document.domain + ':' + port; + } + baseURL = baseURL.split('/')[0] + '//' + baseURL.split('/')[1] + host + '/' + param; + } else { + baseURL = location.protocol + '//' + location.hostname + (location.port ? ':' : '') + location.port + baseURL; + } + } else if (param !== '' || baseURL.startsWith('/')) { + baseURL = (location.protocol === 'https:' ? 'wss://' : 'ws://') + location.hostname + (location.port ? ':' : '') + location.port + baseURL; + } + if (!baseURL.endsWith('/')) { + baseURL += '/'; + } + if (baseURL.startsWith('http')) { + // https 也默认会被替换成 wss + baseURL = baseURL.replace('http', 'ws'); + } + return baseURL; +}; diff --git a/web/src/utils/service.ts b/web/src/utils/service.ts index c3b4644..023f268 100644 --- a/web/src/utils/service.ts +++ b/web/src/utils/service.ts @@ -1,7 +1,7 @@ import axios from 'axios'; import { get } from 'lodash-es'; -import { ElMessage, ElMessageBox } from 'element-plus' -import type { Action } from 'element-plus' +import { ElMessage, ElMessageBox } from 'element-plus'; +import type { Action } from 'element-plus'; // @ts-ignore import { errorLog, errorCreate } from './tools.ts'; @@ -9,6 +9,7 @@ import { errorLog, errorCreate } from './tools.ts'; // import { useUserStore } from "../store/modules/user"; import { Local, Session } from '/@/utils/storage'; import qs from 'qs'; +import { getBaseURL } from './baseUrl'; /** * @description 创建请求实例 */ @@ -17,16 +18,19 @@ function createService() { const service = axios.create({ timeout: 20000, headers: { - 'Content-Type': 'application/json;charset=utf-8' + 'Content-Type': 'application/json;charset=utf-8', }, paramsSerializer: { serialize(params) { - return qs.stringify(params, { indices: false,encoder: (val:string) => { + return qs.stringify(params, { + indices: false, + encoder: (val: string) => { if (typeof val === 'boolean') { return val ? 1 : 0; } return val; - } }); + }, + }); }, }, }); @@ -76,7 +80,7 @@ function createService() { callback: (action: Action) => { window.location.reload(); }, - }) + }); errorCreate(`${dataAxios.msg}: ${response.config.url}`); break; case 2000: @@ -108,7 +112,7 @@ function createService() { callback: (action: Action) => { window.location.reload(); }, - }) + }); break; case 403: error.message = '拒绝访问'; @@ -162,7 +166,7 @@ function createRequestFunction(service: any) { 'Content-Type': get(config, 'headers.Content-Type', 'application/json'), }, timeout: 5000, - baseURL: import.meta.env.VITE_API_URL as any, + baseURL: getBaseURL(), data: {}, }; diff --git a/web/src/views/plugins/index.ts b/web/src/views/plugins/index.ts index fe9b889..7ba8bf9 100644 --- a/web/src/views/plugins/index.ts +++ b/web/src/views/plugins/index.ts @@ -1,5 +1,5 @@ import { defineAsyncComponent, AsyncComponentLoader } from 'vue'; - +export let pluginsAll: any = []; // 扫描插件目录并注册插件 export const scanAndInstallPlugins = (app: any) => { const components = import.meta.glob('./**/*.vue'); @@ -11,5 +11,6 @@ export const scanAndInstallPlugins = (app: any) => { const pluginsName = key.match(/\/([^\/]*)\//)?.[1]; pluginNames.add(pluginsName); } - console.log('已发现插件:', Array.from(pluginNames)); + pluginsAll = Array.from(pluginNames); + console.log('已发现插件:', pluginsAll); };