星油H5
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.3 KiB

import { defineStore } from 'pinia'
import { getToken, setToken, removeToken, setUsername, setPassword, setChecked, removeChecked, removeUsername, removePassword } from '@/utils/auth'
3 years ago
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: '',
3 years ago
longitude: '',
}
}
},
actions: {
setPosition(position) {
({ latitude: this.position.latitude, longitude: this.position.longitude } = position);
},
update_username(username) {
this.$patch((state) => {
state.username = username
})
},
3 years ago
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;
3 years ago
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