|
|
|
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
|