WebApp【公共组件库】@前端(For Git Submodule)
Tevin
2021-03-15 0bba74658d115487299add80c8796341413b33b5
common/Tools.js
@@ -9,6 +9,19 @@
export class Tools {
    /**
     * 显示消息
     * @param msg
     */
    static toast(msg) {
        Taro.showToast({
            title: msg,
            icon: 'none',
            mask: true,
            duration: 2000,
        });
    }
    /**
     * URL参数解析
     * @param {String} name
     * @param {String} [search]
@@ -22,32 +35,6 @@
        } else {
            return null;
        }
    }
    /**
     * 深度获取 url 参数
     * @param {String} name
     * @return {String}
     */
    static getTopUrlParam(name) {
        if (window.top !== window) {
            return Tools.getUrlParam(name, window.top.location.search);
        } else {
            return Tools.getUrlParam(name);
        }
    }
    /**
     * 显示消息
     * @param msg
     */
    static toast(msg) {
        Taro.showToast({
            title: msg,
            icon: 'none',
            mask: true,
            duration: 2000,
        });
    }
    /**
@@ -177,33 +164,6 @@
        return true;
    }
    static getObjDataByPath(obj, path) {
        const arr = path.split('.');
        const reg2 = /\[(.*)]/g;
        const reg4 = /\w+(?=\[)|(?<=\[)(.*?)(?=])/g;
        let stack = [];
        let temp;
        arr.forEach(item => {
            if (reg2.test(item)) {
                while ((temp = reg4.exec(item))) {
                    stack.push(temp[0]);
                }
            } else {
                stack.push(item);
            }
        });
        stack = stack.map(item => {
            return item.replace(/^['"`]|['"`]$/g, '');
        });
        try {
            return stack.reduce((pre, next) => {
                return pre[next];
            }, obj);
        } catch (err) {
            return undefined;
        }
    }
    /**
     * 统计字符串占位宽度
     * @param {String} string
@@ -330,18 +290,6 @@
    }
    /**
     * 数组元素交换位置
     * @param {array} arr 数组
     * @param {number} index1 要交换项目的位置
     * @param {number} index2 被交换项目的位置
     * @tutorial 例如:1,5就是数组中下标为1和5的两个元素交换位置
     */
    static swapArray(arr, index1, index2) {
        arr[index1] = arr.splice(index2, 1, arr[index1])[0];
        return arr;
    }
    /**
     * 使用 moment.js 格式化时间戳
     * @param {Number|String} timestamp
     * @param {String} [type='date']
@@ -412,11 +360,11 @@
     * @return {string}
     */
    static moneyFormat(number) {
        if (typeof number !== 'number' && !number) {
        if (!number && typeof number !== 'number') {
            return '';
        }
        if (typeof number === 'string') {
            number = parseInt(number) || 0;
            number = Number(number) || 0;
        }
        const numFixed = number.toFixed(2);
        const integer = parseInt(numFixed);
@@ -495,5 +443,18 @@
        return /^1[3456789]\d{9}$/.test('' + phone);
    }
}
// h5 中,实现 rem 转换 px
if (process.env.NODE_ENV === 'development' && process.env.TARO_ENV === 'h5') {
    const p1 = {
        x: parseFloat(Taro.pxTransform(10, 750)), y: 10,
    };
    const p2 = {
        x: parseFloat(Taro.pxTransform(1000, 750)), y: 1000,
    };
    window.rem = val => {
        const px = (val - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;
        console.info(Math.round(px) + 'px');
    };
}