From 4f118047c4724e966226a4fd79af79d97b3055ec Mon Sep 17 00:00:00 2001 From: lq <121091329@qq.com> Date: Sat, 21 Jun 2025 15:31:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/all/login.ts | 2 +- src/router/guard/userLoginInfo.ts | 9 +-- src/stores/modules/user/index.ts | 77 +++++++++++++++++-- src/utils/user.ts | 2 + .../login/components/PuzzleVerification.vue | 6 ++ src/views/components/login/index.vue | 32 ++++++-- 6 files changed, 106 insertions(+), 22 deletions(-) diff --git a/src/api/all/login.ts b/src/api/all/login.ts index bc2fd4c..cc33772 100644 --- a/src/api/all/login.ts +++ b/src/api/all/login.ts @@ -26,7 +26,7 @@ export const fetchLogOut = (params = {}) => { // 导出一个名为fetchProfileInfo的函数,用于获取用户信息 export const fetchProfileInfo = (params = {}) => { // 使用Http.put方法,向/v1/me接口发送put请求,并将params作为参数传递 - return Http.put('/v1/me', params); + return Http.get('/v1/me', params); }; // 导出一个函数,用于获取编辑手机号的验证码 diff --git a/src/router/guard/userLoginInfo.ts b/src/router/guard/userLoginInfo.ts index 3e3297f..d89cc51 100644 --- a/src/router/guard/userLoginInfo.ts +++ b/src/router/guard/userLoginInfo.ts @@ -30,14 +30,7 @@ export default function setupUserLoginInfoGuard(router: Router) { } } else { clearAllLocalStorage(); - // todo 跳转回登录鉴权页,当前为mock路由地址 - next({ - name: 'auth', - query: { - redirect: to.name, - ...to.query, - } as LocationQueryRaw, - }); + next({ name: 'UserLogin' }); // 添加缺失的next调用 } }); } diff --git a/src/stores/modules/user/index.ts b/src/stores/modules/user/index.ts index c3cf6c1..a7c57cb 100644 --- a/src/stores/modules/user/index.ts +++ b/src/stores/modules/user/index.ts @@ -1,29 +1,92 @@ import { defineStore } from 'pinia'; +interface UserInfo { + id: number; + name: string; + head_image: String; + current_enterprise_id: number; + mobile: string; + // 添加其他用户属性... +} + +interface CompanyInfo { + id: number; + name: string; + // 添加其他公司属性... +} + interface UserState { - token: String; + token: string; + userInfo: UserInfo | null; + companyInfo: CompanyInfo | null; } export const useUserStore = defineStore('user', { state: (): UserState => ({ token: localStorage.getItem('accessToken') || '', + userInfo: null, + companyInfo: null, }), - getters: {}, - actions: { setToken(token: String) { const _token = `Bearer ${token}`; this.token = _token; localStorage.setItem('accessToken', _token); }, + + // 存储用户信息 + setUserInfo(userInfo: UserInfo | null) { + this.userInfo = userInfo; + if (userInfo) { + localStorage.setItem('userInfo', JSON.stringify(userInfo)); + } else { + localStorage.removeItem('userInfo'); + } + }, + + // 获取用户信息 + getUserInfo(): UserInfo | null { + const userInfoStr = localStorage.getItem('userInfo'); + if (userInfoStr) { + try { + return JSON.parse(userInfoStr); + } catch (error) { + console.error('解析用户信息失败:', error); + return null; + } + } + return null; + }, + + // 存储公司信息 + setCompanyInfo(companyInfo: CompanyInfo | null) { + this.companyInfo = companyInfo; + if (companyInfo) { + localStorage.setItem('companyInfo', JSON.stringify(companyInfo)); + } else { + localStorage.removeItem('companyInfo'); + } + }, + + // 获取公司信息 + getCompanyInfo(): CompanyInfo | null { + const companyInfoStr = localStorage.getItem('companyInfo'); + if (companyInfoStr) { + try { + return JSON.parse(companyInfoStr); + } catch (error) { + console.error('解析公司信息失败:', error); + return null; + } + } + return null; + }, + + // 删除 token deleteToken() { this.token = ''; localStorage.removeItem('accessToken'); }, - async getUserInfo() { - // todo 调用获取用户信息接口,当前用mock数据表示 - // AMessage.success(`当前用户角色为:ENTERPRISE`); - }, }, }); diff --git a/src/utils/user.ts b/src/utils/user.ts index 89a97c5..993b8c6 100644 --- a/src/utils/user.ts +++ b/src/utils/user.ts @@ -16,6 +16,8 @@ export async function handleUserLogin() { handleUserHome(); } + + // 首页 export function handleUserHome() { router.push({ name: 'Home' }); diff --git a/src/views/components/login/components/PuzzleVerification.vue b/src/views/components/login/components/PuzzleVerification.vue index 51849c6..8fc9611 100644 --- a/src/views/components/login/components/PuzzleVerification.vue +++ b/src/views/components/login/components/PuzzleVerification.vue @@ -522,6 +522,12 @@ function reset() { const emit = defineEmits(['submit']); + +