sadjv3_jishi/my/qiandao/index.vue

239 lines
6.9 KiB
Vue
Raw Normal View History

2024-06-05 19:14:51 +08:00
<template>
<view>
<view class="bg padding margin-top-xs">
<view class="flex justify-between align-center">
<view class="text-lg text-bold">当前位置</view>
<view class="btn" style="color: #FFFFFF;" @click="gxAddress">签到</view>
</view>
<view style="color: #999999;margin-top: 8rpx;">{{address}}</view>
<!-- <view style="width: 100%;height: 1rpx;background: #E6E6E6;margin-top: 30rpx;"></view> -->
<!-- <view class="flex align-center justify-between margin-top">
<view style="color: #096f4b;" @click="openMap">手动设置</view>
<view class="btn" @tap="openSave" v-if="address">签到</view>
<view class="btn" @tap="openMap" v-if="!address">选择地址</view>
</view> -->
</view>
<view class="bg padding margin-top">
<view class="text-lg text-bold">签到地址</view>
<view class="margin-top">
<map id="map" style="width: 100%; height: 571rpx;" :latitude="latitude" :longitude="longitude"
:markers="covers">
</map>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
latitude: '',
longitude: '',
address: '',
covers: [{
longitude: '',
latitude: '',
iconPath: '../../static/images/address.png',
}],
}
},
onLoad() {
let that = this;
uni.getLocation({
type: 'gcj02',
geocode: true, //设置该参数为true可直接获取经纬度及城市信息
success: function(res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
console.log('当前位置的位置:' + JSON.stringify(res));
uni.setStorageSync('longitude', res.longitude);
uni.setStorageSync('latitude', res.latitude);
that.latitude = res.latitude
that.longitude = res.longitude
that.covers[0].longitude = res.longitude;
that.covers[0].latitude = res.latitude;
if (res && res.address) {
for (let i in res.address) {
that.address += res.address[i];
}
}
console.log(that.address);
}
});
},
onShow() {
this.checkOpenGPSServiceByAndroid();
},
methods: {
//判断用户是否开启定位-暂时不用
checkOpenGPSServiceByAndroid() {
let that = this
// 1、判断手机定位服务【GPS】 是否授权
uni.getSystemInfo({
success(res) {
// console.log(res)
let locationEnabled = res.locationEnabled; //判断手机定位服务是否开启
let locationAuthorized = res.locationAuthorized; //判断定位服务是否允许微信授权
if (locationEnabled == false || locationAuthorized == false) {
//手机定位服务GPS未授权
uni.showModal({
title: '提示',
content: '当前未开启定位权限,请允许使用位置信息后再来操作吧!',
showCancel: false, // 不显示取消按钮
success() {
uni.navigateBack({
delta: 1, //返回层数2则上上页
})
}
})
} else {
//手机定位服务GPS已授权
if (res.hostName == 'WeChat') {
//2、判断微信小程序是否授权位置信息
uni.getSetting({
success(res) {
let scopeUserLocation = res.authSetting["scope.userLocation"];
if (scopeUserLocation) {
// 微信小程序已授权位置信息
} else {
// 微信小程序未授权位置信息
uni.showModal({
title: '提示',
content: '当前未开启定位权限,请在小程序设置中允许使用位置信息后再来操作吧!',
showCancel: false, // 不显示取消按钮
success() {
uni.navigateBack({
delta: 1, //返回层数2则上上页
})
}
})
}
},
fail() {
// 微信小程序未授权位置信息
uni.showModal({
title: '提示',
content: '当前未开启定位权限,请在小程序设置中允许使用位置信息后再来操作吧!',
showCancel: false, // 不显示取消按钮
success() {
uni.navigateBack({
delta: 1, //返回层数2则上上页
})
}
})
}
});
} else {}
}
},
fail() {
// 手机定位服务GPS未授权
uni.showModal({
title: '提示',
content: '获取位置信息失败',
showCancel: false, // 不显示取消按钮
success() {
uni.navigateBack({
delta: 1, //返回层数2则上上页
})
}
})
}
});
},
gxAddress() {
let that = this;
// if (!that.latitude || !that.longitude) {
// that.$queue.showToast("请在设置中打开定位权限后刷新小程序再来更新吧!")
// return;
// }
let longitude = uni.getStorageSync('longitude');
let latitude = uni.getStorageSync('latitude');
let userId = uni.getStorageSync('userId')
this.$queue.showLoading('更新中...')
let data = {
typeId: longitude,
typeName: latitude,
userId: userId
}
that.$Request.postJson('/app/message/insertArtificerLocation', data).then(
res => {
uni.hideLoading();
if (res.code === 0) {
that.$queue.showToast('签到成功!');
} else{
that.$queue.showToast('请检查定位权限');
}
});
this.openSave();
},
openSave() {
this.$queue.showLoading('签到中...')
if (!this.address) {
uni.hideLoading();
// this.openMap();
// this.$queue.showToast('请选择地址信息后进行签到!')
return;
}
if (!this.latitude || !this.longitude) {
this.$queue.showToast("请在设置中打开定位权限后刷新小程序再来更新吧!")
return;
}
let data = {
longitude: this.covers[0].longitude,
latitude: this.covers[0].latitude,
address: JSON.stringify(this.address),
city: ''
}
this.$Request.postT('/app/artificer/signIn', data).then(res => {
uni.hideLoading();
if (res.code == 0) {
this.$queue.showToast('签到成功!')
} else {
this.$queue.showToast(res.msg)
}
});
},
openMap() {
let that = this
uni.chooseLocation({
success: function(res) {
console.log('位置名称:' + res.name);
console.log('详细地址:' + res.address);
console.log('纬度:' + res.latitude);
console.log('经度:' + res.longitude);
that.latitude = res.latitude
that.longitude = res.longitude
that.address = res.address
}
});
}
}
}
</script>
<style>
page {
background: #F5F5F5;
}
.bg {
background: #FFFFFF;
}
.btn {
width: 160rpx;
height: 50rpx;
2024-06-27 23:21:56 +08:00
background: linear-gradient(90deg, #019C88, #28BA92, #35C495);
2024-06-05 19:14:51 +08:00
border-radius: 30rpx;
text-align: center;
line-height: 50rpx;
color: #FFFFFF;
font-family: PingFang SC;
font-weight: 500;
}
</style>