import { defineStore } from 'pinia' import { getToken, setToken, removeToken, setUsername, setPassword, setChecked, removeChecked, removeUsername, removePassword } from '@/utils/auth' import oilSite from '@/api/oil-site' import { Notify } from 'vant'; import utils from '@/utils/encode' const useUserStore = defineStore('user', { state: () => { return { username: '曹大帅哥', avatar: '', token: '', user: null, position: { latitude: '', longitude: '', } } }, actions: { setPosition(position) { ({ latitude: this.position.latitude, longitude: this.position.longitude } = position); }, update_username(username) { this.$patch((state) => { state.username = username }) }, getPosition(){ let that = this if(navigator?.geolocation?.getCurrentPosition){ navigator.geolocation.getCurrentPosition(function (position) { that.$patch((state) => { ({latitude:state.position.latitude,longitude:state.position.longitude}=position.coords); localStorage.setItem('position',JSON.stringify(state.position)) console.log(state.position,position.coords,'检测到地理位置授权') }) },(error)=>{ switch (error.code) { case error.PERMISSION_DENIED: Notify({ message:'用户拒绝对获取地理位置的请求。', type: 'danger', duration:1000 }) break; case error.POSITION_UNAVAILABLE: Notify({ message:'位置信息是不可用的。', type: 'danger', duration:1000 }) break; case error.TIMEOUT: Notify({ message:'请求用户地理位置超时。', type: 'danger', duration:1000 }) break; case error.UNKNOWN_ERROR: Notify({ message:'未知错误。', type: 'danger', duration:1000 }) break; } }); }else{ console.log('浏览器不兼容位置api') } }, getUser(){ console.log('获取user信息') return new Promise((resolve, reject) => { oilSite.getCompanyInfo({ accessToken : utils.decrypt(getToken(),'Clco2uJjhZRgDHzl') }).then(res=>{ this.$patch((state) => { state.user = res.data; }) resolve(this.user) }) }) }, login(data) { console.log(data,'登陆方法') let token = data.accessToken; this.token = token; setToken(token); console.log(getToken(),'getToken()') this.getUser(); if(data?.latitude&&data?.longitude){ ({latitude:this.position.latitude,longitude:this.longitude}=data); localStorage.setItem('position',JSON.stringify(this.position)) }else{ console.log(data,'地理位置参数错误,手动获取位置') this.getPosition() } return true }, clearToken(){ console.log('清楚token方法') removeToken() } } }); export default useUserStore