feat: 完成前端切换功能

This commit is contained in:
橙子
2024-02-09 16:52:17 +08:00
parent 36f72c857d
commit 58fceea247
7 changed files with 38 additions and 11 deletions

View File

View File

@@ -1,5 +1,5 @@
import { login, logout, getInfo } from '@/api/login' import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth' import { getToken, setToken, removeToken,getTenantId,setTenantId,removeTenantId } from '@/utils/auth'
import defAva from '@/assets/images/profile.jpg' import defAva from '@/assets/images/profile.jpg'
const useUserStore = defineStore( const useUserStore = defineStore(
@@ -10,21 +10,28 @@ const useUserStore = defineStore(
name: '', name: '',
avatar: '', avatar: '',
roles: [], roles: [],
permissions: [] permissions: [],
tenantId:getTenantId()
}), }),
actions: { actions: {
// 登录 // 登录
login(userInfo) { login(userInfo,tenantId) {
const username = userInfo.username.trim() const username = userInfo.username.trim()
const password = userInfo.password const password = userInfo.password
const code = userInfo.code const code = userInfo.code
const uuid = userInfo.uuid const uuid = userInfo.uuid
//登录之前先设置租户id用户登录接口的请求设置
setTenantId(tenantId);
this.tenantId=tenantId;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => { login(username, password, code, uuid).then(res => {
setToken(res.data.token); setToken(res.data.token);
this.token = res.data.token; this.token = res.data.token;
resolve(); resolve();
}).catch(error => { }).catch(error => {
removeTenantId();
this.tenantId=null;
reject(error) reject(error)
}) })
}) })
@@ -68,6 +75,7 @@ const useUserStore = defineStore(
this.roles = [] this.roles = []
this.permissions = [] this.permissions = []
removeToken() removeToken()
removeTenantId()
resolve() resolve()
}).catch(error => { }).catch(error => {
reject(error) reject(error)

View File

@@ -1,7 +1,7 @@
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token' const TokenKey = 'Admin-Token'
const TenantIdKey='Tenant-Id'
export function getToken() { export function getToken() {
return Cookies.get(TokenKey) return Cookies.get(TokenKey)
} }
@@ -13,3 +13,14 @@ export function setToken(token) {
export function removeToken() { export function removeToken() {
return Cookies.remove(TokenKey) return Cookies.remove(TokenKey)
} }
export function getTenantId() {
return Cookies.get(TenantIdKey)
}
export function setTenantId(tenantId) {
return Cookies.set(TenantIdKey, tenantId)
}
export function removeTenantId() {
return Cookies.remove(TenantIdKey)
}

View File

@@ -1,6 +1,6 @@
import axios from 'axios' import axios from 'axios'
import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus' import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus'
import { getToken } from '@/utils/auth' import { getToken,getTenantId } from '@/utils/auth'
import errorCode from '@/utils/errorCode' import errorCode from '@/utils/errorCode'
import { tansParams, blobValidate } from '@/utils/ruoyi' import { tansParams, blobValidate } from '@/utils/ruoyi'
import cache from '@/plugins/cache' import cache from '@/plugins/cache'
@@ -67,7 +67,12 @@ service.interceptors.request.use(config => {
if (getToken() && !isToken) { if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
} }
console.log(getTenantId(),"uuu");
if(getTenantId()!==undefined&&getTenantId()!==null&&getTenantId()!=='null')
{
console.log('爆炸');
config.headers['__tenant'] = getTenantId()
}
// get请求映射params参数 // get请求映射params参数
if (config.method === 'get' && config.params) { if (config.method === 'get' && config.params) {

View File

@@ -43,7 +43,7 @@
<el-form-item> <el-form-item>
<span>当前租户</span> <span>当前租户</span>
<el-select <el-select
v-model="tenantSelectedId" v-model="tenantSelected"
class="m-2" class="m-2"
placeholder="租户选择" placeholder="租户选择"
style="width: 80%" style="width: 80%"
@@ -52,7 +52,7 @@
v-for="item in tenantList" v-for="item in tenantList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.name"
/> />
</el-select> </el-select>
@@ -95,13 +95,13 @@ const userStore = useUserStore()
const router = useRouter(); const router = useRouter();
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const tenantSelectedId=ref('defalut'); const tenantSelected=ref('defalut');
const loginForm = ref({ const loginForm = ref({
username: "", username: "",
password: "", password: "",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "" uuid: "",
}); });
const loginRules = { const loginRules = {
@@ -137,7 +137,10 @@ function handleLogin() {
Cookies.remove("rememberMe"); Cookies.remove("rememberMe");
} }
// 调用action的登录方法 // 调用action的登录方法
userStore.login(loginForm.value).then(() => { const currentTenantId=tenantList.value.filter(x=>x.name==tenantSelected.value)[0]?.id??null;
console.log(currentTenantId,'currentTenantId')
userStore.login(loginForm.value,currentTenantId).then(() => {
router.push({ path: redirect.value || "/" }); router.push({ path: redirect.value || "/" });
}).catch(() => { }).catch(() => {
loading.value = false; loading.value = false;