| | |
| | | /** |
| | | * Helper - 小功能集 |
| | | * Helper - 帮助小功能集 |
| | | * @author Tevin |
| | | */ |
| | | |
| | | export class Helper { |
| | | |
| | | constructor() { |
| | | this._data = { |
| | | locations: [], |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * 检查网络状态 |
| | | * @param {Function} callback |
| | | */ |
| | | checkOnlineState(callback) { |
| | | // 网页模式 |
| | | if (process.env.TARO_ENV === 'h5') { |
| | | // 网络已开启 |
| | | if (navigator.onLine) { |
| | | // 用图片资源测试网络状态 |
| | | const img = new Image(); |
| | | img.onload = () => { |
| | | img.onload = null; |
| | | callback && callback(true); |
| | | }; |
| | | img.onerror = () => { |
| | | img.onerror = null; |
| | | callback && callback(false); |
| | | }; |
| | | img.src = 'http://gz.zhiheiot.com/disp/download/buildArchive/online.png?t=' + Date.now(); |
| | | } |
| | | // 网络未开启 |
| | | else { |
| | | callback && callback(false); |
| | | } |
| | | } |
| | | // 补充:小程序模式用 getNetworkType |
| | | } |
| | | |
| | | /** |
| | | * 操作GPS定位 |
| | | * @param {String} type |
| | | * @param {Object} [location] |
| | | * @return {Number|Object} |
| | | */ |
| | | oprGPSLocation(type, location) { |
| | | // 开始记录 |
| | | if (type === 'restart') { |
| | | this._data.locations = []; |
| | | } |
| | | // 添加记录 |
| | | else if (type === 'add') { |
| | | this._data.locations.push({ |
| | | ...location, |
| | | radius: Number(location.radius), |
| | | }); |
| | | // 按精度排序 |
| | | this._data.locations.sort((a, b) => a.radius < b.radius ? -1 : 1); |
| | | } |
| | | // 获取高精度次数计数 |
| | | else if (type === 'countHigh') { |
| | | let count = 0; |
| | | this._data.locations.forEach(location => { |
| | | if (location.radius <= 10) { |
| | | count++; |
| | | } |
| | | }); |
| | | return count; |
| | | } |
| | | // 读取最精确的记录 |
| | | else if (type === 'read') { |
| | | return this._data.locations[0]; |
| | | } |
| | | // 读取最精确的记录,并返回字符串 |
| | | else if (type === 'readStr') { |
| | | const location = this._data.locations[0]; |
| | | return location.longitude + ',' + location.latitude + ',' + location.radius; |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | const fileref = document.createElement('script'); |
| | | fileref.setAttribute('type', 'text/javascript'); |
| | | if (window.location.protocol === 'https:') { |
| | | fileref.setAttribute('src', 'https://cdn.jsdelivr.net/npm/eruda'); |
| | | fileref.setAttribute('src', 'https://rb.zhiheiot.com/static/pages/libs/eruda.min.js'); |
| | | } else { |
| | | fileref.setAttribute('src', 'http://cdn.jsdelivr.net/npm/eruda'); |
| | | fileref.setAttribute('src', 'http://rb.zhiheiot.com/static/pages/libs/eruda.min.js'); |
| | | } |
| | | document.getElementsByTagName('head')[0].appendChild(fileref); |
| | | const simulateTouch = (dom, type) => { |
| | |
| | | callback && callback(); |
| | | }, 1000); |
| | | }, 100); |
| | | |
| | | } |
| | | }, 100); |
| | | } |
| | | |
| | | } |
| | | |
| | | export const $Helper = new Helper(); |
| | | export const $helper = new Helper(); |