import { defineStore } from 'pinia' import { getToken, setToken, removeToken } from '@/utils/auth' import oilSite from '@/api/oil-site' import serve from 'api/login.js' import { Notify } from 'vant' import encode from '@/utils/encode' import initAMap from '@/utils/amap.js' import Vue from 'vue' const instance = defineStore('user', { state: () => { return { username: '', avatar: '', token: '', user: null, position: { latitude: '', longitude: '' } } }, actions: { getPosition() { this.position = { latitude: 36.636753, longitude: 119.11914 } if (navigator?.geolocation?.getCurrentPosition) { console.log('存在原生定位') navigator.geolocation.getCurrentPosition(position => { console.log('原生定位', position) }) } else { console.log('原生定位不可用') } // return initAMap().then(() => { // console.log(3) let AMap = Vue.prototype.$AMap let geolocation = new AMap.Geolocation({ // enableHighAccuracy: true // 是否使用高精度定位,默认:true }) geolocation.getCurrentPosition(function (status, result) { console.log('geolocation.getCurrentPosition') console.log('status', status) console.log('result', result) // if (status === 'complete') { // let { lat: latitude, lng: longitude } = result.position // this.position = { latitude, longitude } // console.log('this.position', this.position) // } }) }) return if (navigator?.geolocation?.getCurrentPosition) { navigator.geolocation.getCurrentPosition( position => { console.log('position.coords', position.coords) let { latitude, longitude } = position.coords this.position = { latitude, longitude } }, // function (position) { // console.log('position', 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 => { console.log('error', 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() { oilSite .getCompanyInfo({ accessToken: getToken() }) .then(res => { this.user = res.data }) }, login(info) { let { username, networkId } = info if (username && networkId) { return serve .login({ username, networkId }) .then(res => { if (res.code === 20000) { // setToken(res.data.accessToken) // this.getUser() } }) } return Promise.reject() }, clearToken() { removeToken() } } }) export default instance