351 lines
7.4 KiB
JavaScript
351 lines
7.4 KiB
JavaScript
'use strict';
|
|
import timeago from './timeago.min'
|
|
import dateFormat from './dateformat'
|
|
import distance from './distance'
|
|
import QQMapWX from './qqmap-wx-jssdk.min'
|
|
import {
|
|
gcj02tobd09
|
|
} from './coordtransform'
|
|
import { host, qqmapKey } from '../config'
|
|
|
|
const qqmap = new QQMapWX({
|
|
key: qqmapKey
|
|
});
|
|
|
|
function resolveAdInfo(adInfo) {
|
|
const {city, district, adcode} = adInfo
|
|
return {
|
|
city, district,
|
|
district_id: adcode,
|
|
city_id: adcode.replace(/\d{2}$/, '00')
|
|
}
|
|
}
|
|
|
|
// 解析地址
|
|
export function reverseGeocoder(options) {
|
|
const {
|
|
location, success, complete
|
|
} = options
|
|
qqmap.reverseGeocoder({
|
|
location,
|
|
success: function (res) {
|
|
var address = resolveAdInfo(res.result.ad_info)
|
|
success && success(address)
|
|
},
|
|
fail: function (err) {
|
|
console.log(err)
|
|
},
|
|
complete
|
|
})
|
|
}
|
|
|
|
// 获取当前地理位置
|
|
export function getCurrentAddressList(options) {
|
|
const {
|
|
success, complete
|
|
} = options
|
|
wx.getLocation({
|
|
type: 'gcj02',
|
|
success(res) {
|
|
getAddressFromLocation({
|
|
location: {
|
|
latitude: res.latitude,
|
|
longitude: res.longitude,
|
|
},
|
|
success, complete
|
|
})
|
|
},
|
|
fail(res) {
|
|
console.log(res.errMsg)
|
|
alert('获取用户地址失败')
|
|
}
|
|
})
|
|
}
|
|
|
|
// 地点搜索
|
|
export function searchAddressList(options) {
|
|
const {
|
|
keyword, success
|
|
} = options
|
|
getCurrentCity(function (cityName) {
|
|
qqmap.getSuggestion({
|
|
region: cityName,
|
|
keyword,
|
|
success(res) {
|
|
success && success(res.data)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
// 获取当前地址
|
|
export function getCurrentAddress(callback) {
|
|
getCurrentAddressList({
|
|
success(addressList) {
|
|
if (addressList.length > 0) {
|
|
callback(addressList[0])
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
// 获取当前城市
|
|
var cityName;
|
|
export function getCurrentCity(callback) {
|
|
if (cityName) {
|
|
return callback && callback(cityName)
|
|
}
|
|
wx.getLocation({
|
|
type: 'gcj02',
|
|
success(res) {
|
|
qqmap.reverseGeocoder({
|
|
location: {
|
|
longitude: res.longitude,
|
|
latitude: res.latitude
|
|
},
|
|
success: function (res) {
|
|
cityName = res.result.address_component.city
|
|
callback && callback(cityName)
|
|
}
|
|
})
|
|
},
|
|
fail(res) {
|
|
console.log(res.errMsg)
|
|
alert('获取用户地址失败')
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
// 根据坐标获取地址信息
|
|
export function getAddressFromLocation(options) {
|
|
const {location, success} = options
|
|
getPois({
|
|
location,
|
|
success(pois) {
|
|
var addressList = []
|
|
pois.forEach(poi => {
|
|
var {
|
|
title, location,
|
|
address, ad_info
|
|
} = poi
|
|
addressList.push(Object.assign({
|
|
title, location, address
|
|
}, resolveAdInfo(ad_info)))
|
|
})
|
|
success && success(addressList)
|
|
}
|
|
})
|
|
}
|
|
|
|
// 获取兴趣点
|
|
export function getPois(options) {
|
|
const {
|
|
location, success, complete
|
|
} = options
|
|
qqmap.reverseGeocoder({
|
|
location,
|
|
get_poi: 1,
|
|
success: function (res) {
|
|
success && success(res.result.pois)
|
|
},
|
|
fail: function (err) {
|
|
console.log(err)
|
|
},
|
|
complete
|
|
})
|
|
}
|
|
|
|
export function getPrevPage() {
|
|
const pages = getCurrentPages()
|
|
return pages[pages.length - 2]
|
|
}
|
|
export function getCurrentPage() {
|
|
const pages = getCurrentPages()
|
|
return pages[pages.length - 1]
|
|
}
|
|
|
|
export function fetch(options) {
|
|
wx.request({
|
|
url: `https://${host}/${options.url}`,
|
|
data: Object.assign(options.data, {
|
|
'app_v': 'ipaotui_mall'
|
|
}),
|
|
method: options.method || 'POST',
|
|
header: {
|
|
'content-type': 'application/x-www-form-urlencoded'
|
|
},
|
|
success: function (res) {
|
|
const data = res.data
|
|
if (data.State == 'Success') {
|
|
options.success && options.success(data.data)
|
|
} else {
|
|
alert(data.info)
|
|
options.error && options.error(data.info)
|
|
}
|
|
options.complete && options.complete()
|
|
}
|
|
})
|
|
}
|
|
|
|
// 提示框
|
|
export function alert(content, callback) {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: content,
|
|
showCancel: false,
|
|
success: callback
|
|
})
|
|
}
|
|
// 确认框
|
|
export function confirm(options) {
|
|
var {
|
|
content, confirmText,
|
|
ok,
|
|
} = options
|
|
confirmText = confirmText || '确定'
|
|
wx.showModal({
|
|
content,
|
|
confirmText,
|
|
cancelText: '关闭',
|
|
success(res) {
|
|
if (res.confirm) {
|
|
ok && ok()
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
// 拨打电话
|
|
export function makePhoneCall(phoneNum) {
|
|
confirm({
|
|
content: `是否拨打电话 ${phoneNum}`,
|
|
confirmText: '拨打',
|
|
ok() {
|
|
wx.makePhoneCall({
|
|
phoneNumber: phoneNum,
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
// 加载提示
|
|
export function showLoading() {
|
|
wx.showToast({
|
|
icon: 'loading',
|
|
duration: 10000,
|
|
title: '加载中...',
|
|
mask: true,
|
|
})
|
|
}
|
|
export function hideLoading() {
|
|
wx.hideToast()
|
|
}
|
|
|
|
// 时间格式化
|
|
export function datetimeFormat(unix_timestamp) {
|
|
return dateFormat(new Date(unix_timestamp * 1000), "mm月dd日 HH:MM")
|
|
}
|
|
|
|
// 坐标格式化
|
|
export function coordFormat(location) {
|
|
if (location.lat && location.lng) {
|
|
location = {
|
|
longitude: location.lng,
|
|
latitude: location.lat
|
|
}
|
|
}
|
|
// gcj02 转 bd09
|
|
var location = gcj02tobd09(location.longitude, location.latitude)
|
|
return {
|
|
longitude: location[0],
|
|
latitude: location[1]
|
|
}
|
|
}
|
|
|
|
// 倒计时格式化
|
|
export function countdownFormat(count) {
|
|
var seconds = count % 60
|
|
count = Math.floor(count / 60)
|
|
var minutes = count % 60
|
|
return `${minutes}分钟${seconds}秒`
|
|
}
|
|
|
|
// 字符串关键字分组
|
|
|
|
export function splitByKeyword(text, keyword) {
|
|
if (!text) {
|
|
return []
|
|
}
|
|
var arr = text.split(keyword)
|
|
var res = []
|
|
res.push({
|
|
text: arr[0],
|
|
isKeyword: false
|
|
})
|
|
for (let i = 1, len = arr.length; i < len; i++) {
|
|
res.push({
|
|
text: keyword,
|
|
isKeyword: true
|
|
}, {
|
|
text: arr[i],
|
|
isKeyword: false
|
|
})
|
|
}
|
|
return res
|
|
}
|
|
|
|
var userInfo
|
|
export function getUserInfo(cb) {
|
|
if (userInfo) {
|
|
return cb(userInfo)
|
|
} else {
|
|
wx.getUserInfo({
|
|
success(res) {
|
|
userInfo = res.userInfo
|
|
cb(userInfo)
|
|
},
|
|
fail(res) {
|
|
console.log(res)
|
|
alert('获取用户信息失败')
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// 微信支付
|
|
export function requestPayment(options) {
|
|
var {
|
|
data, success, error, complete
|
|
} = options
|
|
wx.requestPayment(Object.assign({
|
|
complete(res) {
|
|
if (res.errMsg == 'requestPayment:ok') {
|
|
alert('支付成功', function () {
|
|
success && success()
|
|
complete && complete()
|
|
})
|
|
} else if (res.errMsg == 'requestPayment:fail cancel') {
|
|
alert('用户取消支付', function () {
|
|
error && error()
|
|
complete && complete()
|
|
})
|
|
} else {
|
|
alert('支付失败', function () {
|
|
error && error()
|
|
complete && complete()
|
|
})
|
|
}
|
|
}
|
|
}, data))
|
|
}
|
|
|
|
// 分享
|
|
export function share(options) {
|
|
if (!wx.showShareMenu) {
|
|
return alert('当前微信版本过低, 无法使用该功能, 请升级到最新微信版本后重试.')
|
|
}
|
|
|
|
wx.showShareMenu(options)
|
|
} |