feat: 新增支持新版租户功能

This commit is contained in:
H0nGzA1
2023-04-29 00:55:23 +08:00
parent 19e18a7b6f
commit 7f7d88fe5b
3 changed files with 76 additions and 65 deletions

View File

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

View File

@@ -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: {},
};

View File

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