初始化

需要注意的是饥荒不够完善:动作、手持工具、细节交互、系统逻辑
This commit is contained in:
李琦
2026-08-15 07:24:34 +08:00
parent aa37fc4119
commit cd1ab90013
150 changed files with 40801 additions and 271 deletions

View File

@@ -1,87 +1,50 @@
// 用户 Store登录态、积分余额游戏结算后实时刷新
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import {loginApi, registerApi} from "@/api/request/user.js";
import {message, notification} from "ant-design-vue";
import http from '../api/http'
export const useUserStore = defineStore('user', () => {
const user = ref(JSON.parse(localStorage.getItem('user') || 'null'))
const modal = ref(localStorage.getItem('authModal') || 'false')
// 添加初始化状态校验
const initUser = () => {
const userData = localStorage.getItem('user')
if (!userData) return null
try {
return JSON.parse(userData)
} catch {
localStorage.removeItem('user')
export const useUserStore = defineStore('user', {
state: () => ({
token: localStorage.getItem('token') || '',
user: JSON.parse(localStorage.getItem('user') || 'null'),
}),
getters: {
// 是否已登录
loggedIn: (s) => !!s.token,
// 是否超级管理员
isAdmin: (s) => s.user?.role === 1,
},
actions: {
// 保存登录结果
setLogin({ token, user }) {
this.token = token
this.user = user
localStorage.setItem('token', token)
localStorage.setItem('user', JSON.stringify(user))
},
// 更新用户信息(积分变化、改资料后)
setUser(user) {
this.user = user
localStorage.setItem('user', JSON.stringify(user))
},
// 只更新积分余额(结算响应里带了最新余额)
setPoints(points) {
if (this.user) {
this.user.points = points
localStorage.setItem('user', JSON.stringify(this.user))
}
},
// 从服务端刷新最新资料
async refresh() {
if (!this.token) return
const user = await http.get('/user/profile')
this.setUser(user)
},
// 退出登录
logout() {
this.token = ''
this.user = null
localStorage.removeItem('token')
return null
}
}
const isAuthenticated = computed(() => !!user.value?.nick_name)
function login(credentials, functionName) {
console.log(functionName, 'sssssssssssss')
loginApi({
account: credentials.username,
password: credentials.password,
remember: credentials.remember,
}).then((res) => {
const userData = {
nick_name: res.nick_name,
role_name: res.role_name,
role_value: res.role_value,
}
user.value = userData;
localStorage.setItem('user', JSON.stringify(userData))
localStorage.setItem('token', res.token)
notification.success({
message: '登录成功',
description: `欢迎回来${res.nick_name}`,
})
functionName()
})
}
function register(credentials, functionName) {
registerApi({
account: credentials.username,
password: credentials.password,
email: credentials.email,
code: credentials.code,
}).then((res) => {
const userData = {
nick_name: res.nick_name,
role_name: res.role_name,
role_value: res.role_value,
}
user.value = userData;
localStorage.setItem('user', JSON.stringify(userData))
localStorage.setItem('token', res.token)
message.success('注册成功')
functionName()
})
}
function logout() {
user.value = null
localStorage.removeItem('user')
localStorage.removeItem('token')
}
function setModal(value) {
modal.value = modal.value === 'false' ? 'true' : 'false';
localStorage.setItem('authModal', value)
}
return {
modal,
user,
isAuthenticated,
setModal,
login,
register,
logout
}
})
localStorage.removeItem('user')
},
},
})