增加后台管理模块

This commit is contained in:
2025-10-27 23:57:31 +08:00
parent 3c1ba8e801
commit 0016453f20
420 changed files with 5650 additions and 1449 deletions
+79
View File
@@ -0,0 +1,79 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
import type { Admin, AdminLoginRequest } from '@/types/admin'
import { login as loginApi, logout as logoutApi, getAdminInfo } from '@/api/auth'
import { ElMessage } from 'element-plus'
import router from '@/router'
export const useAdminStore = defineStore('admin', () => {
const token = ref<string>(localStorage.getItem('adminToken') || '')
const adminInfo = ref<Admin | null>(null)
// 登录
const login = async (loginForm: AdminLoginRequest) => {
try {
const res = await loginApi(loginForm)
token.value = res.data.accessToken
adminInfo.value = res.data.adminInfo
localStorage.setItem('adminToken', res.data.accessToken)
localStorage.setItem('adminRefreshToken', res.data.refreshToken)
localStorage.setItem('adminInfo', JSON.stringify(res.data.adminInfo))
ElMessage.success('登录成功')
router.push('/')
} catch (error) {
console.error('登录失败:', error)
throw error
}
}
// 获取管理员信息
const fetchAdminInfo = async () => {
try {
const res = await getAdminInfo()
adminInfo.value = res.data
localStorage.setItem('adminInfo', JSON.stringify(res.data))
} catch (error) {
console.error('获取管理员信息失败:', error)
throw error
}
}
// 登出
const logout = async () => {
try {
await logoutApi()
} catch (error) {
console.error('登出失败:', error)
} finally {
token.value = ''
adminInfo.value = null
localStorage.removeItem('adminToken')
localStorage.removeItem('adminRefreshToken')
localStorage.removeItem('adminInfo')
router.push('/login')
}
}
// 初始化管理员信息
const initAdminInfo = () => {
const storedInfo = localStorage.getItem('adminInfo')
if (storedInfo) {
try {
adminInfo.value = JSON.parse(storedInfo)
} catch (error) {
console.error('解析管理员信息失败:', error)
}
}
}
return {
token,
adminInfo,
login,
logout,
fetchAdminInfo,
initAdminInfo
}
})
+5
View File
@@ -0,0 +1,5 @@
import { createPinia } from 'pinia'
const pinia = createPinia()
export default pinia