import router from '@/router' import useMenuStore from './menu' import useRouteStore from './route' import useSettingsStore from './settings' import useTabbarStore from './tabbar' import api from '@/api' import { getRandomImage } from '@/utils/composables/imageUtils'; // 使用函数 const useUserStore = defineStore( // 唯一ID 'user', () => { const settingsStore = useSettingsStore() const routeStore = useRouteStore() const menuStore = useMenuStore() const tabbarStore = useTabbarStore() const userName = ref(localStorage.userName ?? '')// const realName = ref(localStorage.realName ?? '')// const token = ref(localStorage.token ?? '') const avatar = ref(localStorage.avatar ?? '') const permissions = ref([]) const selectedImage: string = getRandomImage();//随机切换默认头像 const isLogin = computed(() => { if (token.value) { return true } return false }) async function login(data: { userName: string passWord: string captcha: string system: string captchaId: number }) { const res = await api.user.login(data) localStorage.setItem('userName', data.userName) localStorage.setItem('token', res.data) userName.value = data.userName token.value = res.data if(token.value){ getUserInfo(); } } // 登出 async function logout(redirect = router.currentRoute.value.fullPath) { localStorage.removeItem('userName') localStorage.removeItem('realName') localStorage.removeItem('token') userName.value = '' realName.value = '' token.value = '' permissions.value = [] routeStore.removeRoutes() menuStore.setActived(0) settingsStore.settings.tabbar.enable && tabbarStore.clean() router.push({ name: 'login', query: { ...(redirect !== settingsStore.settings.home.fullPath && router.currentRoute.value.name !== 'login' && { redirect }), }, }) } //获取用户信息 async function getUserInfo() { const usercallback=await api.user.getUserInfo(); localStorage.setItem('avatar', usercallback.data.headSculpture) localStorage.setItem('realName', usercallback.data.name) avatar.value=usercallback.data.headSculpture; realName.value=usercallback.data.name; } // 获取权限 async function getPermissions() { const res = await api.user.permission() permissions.value = res.data } // 修改密码 async function editPassword(data: { oldPassWord: string newPassWord: string }) { await api.user.passwordEdit(data) } return { userName, realName, token, avatar, permissions, isLogin, getUserInfo, login, logout, getPermissions, editPassword, selectedImage, } }, ) export default useUserStore