完成部分页面UI

This commit is contained in:
2025-04-24 16:59:40 +08:00
parent 6b9faa702b
commit f1de79863e
27 changed files with 2435 additions and 47 deletions

54
src/stores/user.js Normal file
View File

@@ -0,0 +1,54 @@
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
export const useUserStore = defineStore('user', () => {
const user = ref(JSON.parse(localStorage.getItem('user') || 'null'))
// 添加初始化状态校验
const initUser = () => {
const userData = localStorage.getItem('user')
if (!userData) return null
try {
return JSON.parse(userData)
} catch {
localStorage.removeItem('user')
localStorage.removeItem('token')
return null
}
}
const isAuthenticated = computed(() => !!user.value?.token)
function login(credentials) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (credentials.username === 'admin' && credentials.password === 'admin123') {
const userData = {
username: credentials.username,
role: 'admin',
token: 'mock_token_' + Math.random().toString(36).slice(2)
}
localStorage.setItem('user', JSON.stringify(userData))
user.value = userData // 添加响应式状态更新
localStorage.setItem('token', userData.token)
resolve()
} else {
reject(new Error('用户名或密码错误'))
}
}, 500)
})
}
function logout() {
user.value = null
localStorage.removeItem('user')
localStorage.removeItem('token')
}
return {
user,
isAuthenticated,
login,
logout
}
})