/**
|
* 截取日期
|
*/
|
export const runcation = (date) => {
|
return date.substring(0, 16)
|
}
|
|
// 返回距离
|
export function distance(lat1, lng1, lat2, lng2) {
|
var that = this;
|
let rad1 = lat1 * Math.PI / 180.0;
|
let rad2 = lat2 * Math.PI / 180.0;
|
let a = rad1 - rad2;
|
let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
|
let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) *
|
Math.cos(
|
rad2) * Math.pow(
|
Math.sin(b / 2), 2)));
|
s = s * 6378.137 * 1000;
|
|
s = (Math.round(s * 10000) / 10000).toFixed(2);
|
console.log(s)
|
// s = s.toString();
|
// s = s.substring(0, s.indexOf('.') + 2);
|
|
return s
|
}
|
|
// 登录
|
export function userLogin() {
|
let that = this;
|
let promise = new Promise((resolve, reject) => {
|
uni.login({
|
provider: 'weixin',
|
success: async function(loginRes) {
|
let { code } = loginRes;
|
let res = await that.$u.api.wxLogin({ code })
|
if (res.code === 200) {
|
resolve(res);
|
// that.$store.commit('setToken', res.data.token)
|
// that.$store.commit('setUserInfo', res.data.userResponse)
|
} else {
|
reject(err)
|
}
|
}
|
});
|
})
|
return promise;
|
}
|
|
const LOCATION_NOTICE_STORAGE_KEY = 'location_permission_notice_shown'
|
const IMAGE_NOTICE_STORAGE_KEY = 'image_permission_notice_shown'
|
|
const DEFAULT_LOCATION_NOTICE = {
|
title: '获取位置信息',
|
content: '为了给您分配附近的订单,并计算接送货的精准距离与导航路线,本应用需要获取您的位置信息。',
|
confirmText: '已知晓'
|
}
|
|
const DEFAULT_IMAGE_NOTICE = {
|
title: '获取相机权限',
|
content: '为了支持您进行司机身份认证,以及方便您在取送件时拍照留存凭证,本应用需要获取您的相机与相册权限。',
|
confirmText: '已知晓'
|
}
|
|
export function ensureLocationPermissionNotice(modalOptions = {}) {
|
const hasShown = uni.getStorageSync(LOCATION_NOTICE_STORAGE_KEY)
|
if (hasShown) {
|
return Promise.resolve(true)
|
}
|
|
const options = Object.assign({}, DEFAULT_LOCATION_NOTICE, modalOptions)
|
|
return new Promise((resolve) => {
|
uni.showModal({
|
title: options.title,
|
content: options.content,
|
confirmText: options.confirmText,
|
showCancel: false,
|
success: (res) => {
|
if (res.confirm) {
|
uni.setStorageSync(LOCATION_NOTICE_STORAGE_KEY, true)
|
resolve(true)
|
return
|
}
|
resolve(false)
|
},
|
fail: () => {
|
resolve(false)
|
}
|
})
|
})
|
}
|
|
export function getLocationWithNotice(locationOptions = {}, modalOptions = {}) {
|
return ensureLocationPermissionNotice(modalOptions).then((confirmed) => {
|
if (!confirmed) {
|
return Promise.reject({ errMsg: 'location permission notice canceled' })
|
}
|
|
return new Promise((resolve, reject) => {
|
uni.getLocation(Object.assign({}, locationOptions, {
|
success: (res) => {
|
uni.$emit('locationPermissionGranted', res)
|
if (typeof locationOptions.success === 'function') {
|
locationOptions.success(res)
|
}
|
resolve(res)
|
},
|
fail: (err) => {
|
if (typeof locationOptions.fail === 'function') {
|
locationOptions.fail(err)
|
}
|
reject(err)
|
}
|
}))
|
})
|
})
|
}
|
|
export function ensureImagePermissionNotice(modalOptions = {}) {
|
const hasShown = uni.getStorageSync(IMAGE_NOTICE_STORAGE_KEY)
|
if (hasShown) {
|
return Promise.resolve(true)
|
}
|
|
const options = Object.assign({}, DEFAULT_IMAGE_NOTICE, modalOptions)
|
|
return new Promise((resolve) => {
|
uni.showModal({
|
title: options.title,
|
content: options.content,
|
confirmText: options.confirmText,
|
showCancel: false,
|
success: (res) => {
|
if (res.confirm) {
|
uni.setStorageSync(IMAGE_NOTICE_STORAGE_KEY, true)
|
resolve(true)
|
return
|
}
|
resolve(false)
|
},
|
fail: () => {
|
resolve(false)
|
}
|
})
|
})
|
}
|
|
export function chooseImageWithNotice(imageOptions = {}, modalOptions = {}) {
|
return ensureImagePermissionNotice(modalOptions).then((confirmed) => {
|
if (!confirmed) {
|
return Promise.reject({ errMsg: 'image permission notice canceled' })
|
}
|
|
return new Promise((resolve, reject) => {
|
uni.chooseImage(Object.assign({}, imageOptions, {
|
success: (res) => {
|
if (typeof imageOptions.success === 'function') {
|
imageOptions.success(res)
|
}
|
resolve(res)
|
},
|
fail: (err) => {
|
const errMsg = (err && err.errMsg) || ''
|
if (errMsg && !/cancel/i.test(errMsg)) {
|
uni.showToast({
|
title: '需要授权相机权限',
|
icon: 'none'
|
})
|
}
|
if (typeof imageOptions.fail === 'function') {
|
imageOptions.fail(err)
|
}
|
reject(err)
|
}
|
}))
|
})
|
})
|
}
|
|
export function checkLocationPermission() {
|
return new Promise((resolve) => {
|
if (typeof uni.getAppAuthorizeSetting === 'function') {
|
try {
|
const setting = uni.getAppAuthorizeSetting()
|
const locationAuthorized = setting.locationAuthorized
|
resolve(locationAuthorized === 'authorized' || locationAuthorized === 'authorizedAlways')
|
return
|
} catch (e) {
|
console.log('getAppAuthorizeSetting fail', e)
|
}
|
}
|
|
uni.getSetting({
|
success: (res) => {
|
const authSetting = res.authSetting || {}
|
resolve(!!authSetting['scope.userLocation'])
|
},
|
fail: () => {
|
resolve(false)
|
}
|
})
|
})
|
}
|