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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改密码
+
+ 重置
+
+
+
+
+
+
+
+
+ {{ userInfo.username }}
+
+
+ {{ userInfo.nickName || '未设置' }}
+
+
+ {{ userInfo.phone || '未设置' }}
+
+
+ {{ userInfo.email || '未设置' }}
+
+
+ {{ userInfo.storeCode }}
+
+
+
+ {{ userInfo.status === 'ACTIVE' ? '激活' : '禁用' }}
+
+
+
+ {{ formatDateTime(userInfo.lastLoginTime) }}
+
+
+ {{ userInfo.lastLoginIp || '未知' }}
+
+
+ {{ formatDateTime(userInfo.createTime) }}
+
+
+
+
+
+
+
+
+
+
+
+