feat: 初始化Vue3项目并添加核心功能模块
新增项目基础结构,包括Vue3、Pinia、Element Plus等核心依赖 添加路由配置和用户认证状态管理 实现销售数据看板、客户画像、团队管理等核心功能模块 集成图表库和API请求工具,完成基础样式配置
This commit is contained in:
70
my-vue-app/src/stores/user.js
Normal file
70
my-vue-app/src/stores/user.js
Normal file
@@ -0,0 +1,70 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref, computed } from 'vue'
|
||||
|
||||
export const useUserStore = defineStore('user', () => {
|
||||
// 状态
|
||||
const token = ref(localStorage.getItem('token') || '')
|
||||
const userInfo = ref(null)
|
||||
const isLoggedIn = computed(() => !!token.value)
|
||||
|
||||
// 设置token
|
||||
const setToken = (newToken) => {
|
||||
token.value = newToken
|
||||
if (newToken) {
|
||||
localStorage.setItem('token', newToken)
|
||||
} else {
|
||||
localStorage.removeItem('token')
|
||||
}
|
||||
}
|
||||
|
||||
// 设置用户信息
|
||||
const setUserInfo = (info) => {
|
||||
userInfo.value = info
|
||||
}
|
||||
|
||||
// 登录
|
||||
const login = (tokenValue, name, userLevel, department, departmentId) => {
|
||||
setToken(tokenValue)
|
||||
const userInfoData = {
|
||||
username: name,
|
||||
user_level: userLevel,
|
||||
department: department,
|
||||
department_id: departmentId
|
||||
}
|
||||
setUserInfo(userInfoData)
|
||||
}
|
||||
|
||||
// 登出
|
||||
const logout = () => {
|
||||
setToken('')
|
||||
setUserInfo(null)
|
||||
localStorage.removeItem('token')
|
||||
sessionStorage.removeItem('token')
|
||||
}
|
||||
|
||||
// 清除所有数据
|
||||
const clearAll = () => {
|
||||
logout()
|
||||
}
|
||||
|
||||
return {
|
||||
// 状态
|
||||
token,
|
||||
userInfo,
|
||||
isLoggedIn,
|
||||
|
||||
// 方法
|
||||
setToken,
|
||||
setUserInfo,
|
||||
login,
|
||||
logout,
|
||||
clearAll
|
||||
}
|
||||
}, {
|
||||
// 持久化配置(可选)
|
||||
persist: {
|
||||
key: 'user-store',
|
||||
storage: localStorage,
|
||||
paths: ['token', 'userInfo']
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user