wanyu_frontend/App.vue
2025-04-25 10:23:41 +08:00

77 lines
1.6 KiB
Vue

<script setup>
import {onLaunch, onShow, onHide} from '@dcloudio/uni-app'
import {reactive, provide, inject} from 'vue'
import api from "./api/api";
//定义全局数据
const globalData = reactive({
appName: '超邦手工单系统',
appIcon: '/static/img/logo.png',
statusBarH: '',
customBarH: ''
})
provide('globalData', globalData)
onLaunch(() => {
initSysInfo()
setInterval(() => {
updateUserLocation()
}, 60 * 1000)
})
onShow(() => {
updateUserLocation()
})
onHide(() => {
updateUserLocation()
})
/**
* 更新用户位置
*/
const updateUserLocation = () => {
let token = uni.getStorageSync('token')
//未登录不更新位置
if (!token) {
return
}
uni.getLocation({
type: 'gcj02',
success(res) {
let data = {longitude: res.longitude, latitude: res.latitude}
api.updateUserLocation(data).then(() => {
}).catch(() => {})
},
fail() {
}
});
}
const initSysInfo = () => {
// 获取手机状态栏高度
let statusBar = uni.getWindowInfo().statusBarHeight
let customBar
// 获取胶囊按钮的布局位置信息
let menu = wx.getMenuButtonBoundingClientRect()
// 导航栏高度 = 胶囊下距离 + 胶囊上距离 - 状态栏高度
customBar = menu.bottom + menu.top - statusBar
const globalData = inject('globalData')
globalData.statusBarH = statusBar
globalData.customBarH = customBar
}
</script>
<style lang="scss">
@import "/static/css/common.scss";
@import "/static/css/form.scss";
@import '/theme/theme.scss';
page {
background-color: var(--pageBgColor);
}
</style>