feat: 首页调整
This commit is contained in:
parent
3f8e9f5eba
commit
cfd85de890
|
|
@ -51,6 +51,14 @@
|
||||||
/* 小程序特有相关 */
|
/* 小程序特有相关 */
|
||||||
"mp-weixin" : {
|
"mp-weixin" : {
|
||||||
"appid" : "wx6172ec67683d31b9",
|
"appid" : "wx6172ec67683d31b9",
|
||||||
|
"requiredPrivateInfos" : [
|
||||||
|
"getLocation"
|
||||||
|
],
|
||||||
|
"permission" : {
|
||||||
|
"scope.userLocation" : {
|
||||||
|
"desc" : "计算接单距离、调用导航功能"
|
||||||
|
}
|
||||||
|
},
|
||||||
"setting" : {
|
"setting" : {
|
||||||
"urlCheck" : false
|
"urlCheck" : false
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,8 @@
|
||||||
<view class="icon-ctr flex-c">
|
<view class="icon-ctr flex-c">
|
||||||
<me-icon type="icon-navigation" color="var(--descriptionColor)" size="60rpx"></me-icon>
|
<me-icon type="icon-navigation" color="var(--descriptionColor)" size="60rpx"></me-icon>
|
||||||
</view>
|
</view>
|
||||||
<view class="distance flex-c">8.34公里</view>
|
<view class="distance flex-c" v-if="item.order_info.lng == 0 || item.order_info.lat == 0">未知距离</view>
|
||||||
|
<view class="distance flex-c" v-else>{{formatDistance(item.order_info.lat, item.order_info.lng)}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="btn-ctr flex-sb">
|
<view class="btn-ctr flex-sb">
|
||||||
|
|
@ -66,7 +67,7 @@ const toDetail = (id) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
onLoad(() => {
|
onLoad(() => {
|
||||||
getList()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
|
|
@ -99,6 +100,11 @@ const refreshStart = () => {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userLocation.lng === null || userLocation.lat === null) {
|
||||||
|
helpers.showToast('请授权位置权限')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
refresh.interval = setInterval(() => {
|
refresh.interval = setInterval(() => {
|
||||||
refresh.rotate_deg -= 12;
|
refresh.rotate_deg -= 12;
|
||||||
}, 16);
|
}, 16);
|
||||||
|
|
@ -117,6 +123,36 @@ const refreshComplete = () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const userLocation = reactive({
|
||||||
|
lng: null,
|
||||||
|
lat: null,
|
||||||
|
})
|
||||||
|
|
||||||
|
//初始化
|
||||||
|
const init = () => {
|
||||||
|
//获取师傅当前位置
|
||||||
|
uni.getLocation({
|
||||||
|
type: 'gcj02',
|
||||||
|
success(res) {
|
||||||
|
userLocation.lng = res.longitude
|
||||||
|
userLocation.lat = res.latitude
|
||||||
|
data.page = 1
|
||||||
|
getList()
|
||||||
|
},
|
||||||
|
fail(err) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请授权位置权限',
|
||||||
|
icon: "error"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const formatDistance = (lat, lng) => {
|
||||||
|
const res = helpers.getDistances(userLocation.lat, userLocation.lng, lat, lng);
|
||||||
|
return `${res.distance}${res.unit}`;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
||||||
|
|
@ -85,5 +85,42 @@ class helpers {
|
||||||
|
|
||||||
return `${weekDay} ${year}年${month}月${day}日 ${hours}:${minutes}`;
|
return `${weekDay} ${year}年${month}月${day}日 ${hours}:${minutes}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static rad(d) {
|
||||||
|
return d * Math.PI / 180.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static getDistances(lat1, lng1, lat2, lng2) {
|
||||||
|
var radLat1 = this.rad(lat1);
|
||||||
|
var radLat2 = this.rad(lat2);
|
||||||
|
var a = radLat1 - radLat2;
|
||||||
|
var b = this.rad(lng1) - this.rad(lng2);
|
||||||
|
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
|
||||||
|
Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
|
||||||
|
|
||||||
|
s = s * 6378.137; // EARTH_RADIUS;
|
||||||
|
|
||||||
|
// 输出为公里
|
||||||
|
s = Math.round(s * 10000) / 10000;
|
||||||
|
|
||||||
|
var distance = s;
|
||||||
|
var unit;
|
||||||
|
if (parseInt(distance) >= 1) {
|
||||||
|
distance = distance.toFixed(2);
|
||||||
|
unit = "公里";
|
||||||
|
} else {
|
||||||
|
distance = (distance * 1000).toFixed(2);
|
||||||
|
if (distance >= 1000) {
|
||||||
|
distance = 999
|
||||||
|
}
|
||||||
|
|
||||||
|
unit = "米";
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
distance: distance,
|
||||||
|
unit: unit
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
export default helpers
|
export default helpers
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user