diff --git a/src/api/user.js b/src/api/user.js new file mode 100644 index 0000000..444ecde --- /dev/null +++ b/src/api/user.js @@ -0,0 +1,76 @@ +import request from './request' + +/** + * 用户注册 + */ +export function register(data) { + return request({ + url: '/erp/user/register', + method: 'post', + data + }) +} + +/** + * 用户登录 + */ +export function login(data) { + return request({ + url: '/erp/user/login', + method: 'post', + data + }) +} + +/** + * 获取当前用户信息(通过Token) + */ +export function getCurrentUser() { + return request({ + url: '/erp/user/info', + method: 'get' + }) +} + +/** + * 获取当前用户信息 + */ +export function getCurrentUserInfo() { + return request({ + url: '/erp/user/info', + method: 'get' + }) +} + +/** + * 更新用户信息 + */ +export function updateUserInfo(data) { + return request({ + url: '/erp/user/info', + method: 'put', + data + }) +} + +/** + * 修改密码 + */ +export function changePassword(data) { + return request({ + url: '/erp/user/change-password', + method: 'post', + data + }) +} + +/** + * 退出登录 + */ +export function logout() { + return request({ + url: '/erp/user/logout', + method: 'post' + }) +} + diff --git a/src/store/user.js b/src/store/user.js new file mode 100644 index 0000000..2a403e6 --- /dev/null +++ b/src/store/user.js @@ -0,0 +1,74 @@ +import { reactive } from 'vue' + +/** + * 用户状态管理 + */ +const state = reactive({ + // 用户信息 + user: null, + // Token + token: null, + // 是否已登录 + isLoggedIn: false +}) + +// 从localStorage恢复用户信息 +function initUser() { + const token = localStorage.getItem('token') + const userInfo = localStorage.getItem('userInfo') + + if (token && userInfo) { + try { + state.token = token + state.user = JSON.parse(userInfo) + state.isLoggedIn = true + } catch (e) { + console.error('恢复用户信息失败:', e) + clearUser() + } + } +} + +// 设置用户信息和Token +function setUser(user, token) { + state.user = user + state.token = token + state.isLoggedIn = true + + // 保存到localStorage + if (token) { + localStorage.setItem('token', token) + } + if (user) { + localStorage.setItem('userInfo', JSON.stringify(user)) + } +} + +// 清除用户信息 +function clearUser() { + state.user = null + state.token = null + state.isLoggedIn = false + + // 清除localStorage + localStorage.removeItem('token') + localStorage.removeItem('userInfo') +} + +// 更新用户信息 +function updateUser(user) { + state.user = { ...state.user, ...user } + localStorage.setItem('userInfo', JSON.stringify(state.user)) +} + +// 初始化 +initUser() + +export default { + state, + setUser, + clearUser, + updateUser, + initUser +} + diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..e39b009 --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,164 @@ + + + + + + diff --git a/src/views/Register.vue b/src/views/Register.vue new file mode 100644 index 0000000..3bd643d --- /dev/null +++ b/src/views/Register.vue @@ -0,0 +1,245 @@ + + + + + + diff --git a/src/views/UserProfile.vue b/src/views/UserProfile.vue new file mode 100644 index 0000000..b67f360 --- /dev/null +++ b/src/views/UserProfile.vue @@ -0,0 +1,443 @@ + + + + + +