WebApp【公共组件库】@前端(For Git Submodule)
Tevin
2023-11-22 84923cf985feba2ee04423623b3dde5ffffc983a
common/Helper.js
@@ -1,11 +1,84 @@
/**
 * 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;
        }
    }
    /**
@@ -30,9 +103,9 @@
        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) => {
@@ -97,11 +170,10 @@
                        callback && callback();
                    }, 1000);
                }, 100);
            }
        }, 100);
    }
}
export const $Helper = new Helper();
export const $helper = new Helper();