WebApp【公共组件库】@前端(For Git Submodule)
Tevin
2023-04-03 f634a3265e87e61290a7d5b46e9532fb904e047f
common/Tools.js
@@ -517,11 +517,28 @@
    }
    /**
     * 转换周数到日期
     * @param year
     * @param week
     * @param weekDay 需要输出星期几对应的日期 (1~7)
     * @return {Date}
     */
    static transWeekIndexToDate(year, week, weekDay) {
        const yearStart = moment([year, 0, 1]);
        const dayLong = 24 * 60 * 60 * 1000;
        const firstWeekLong = (7 - yearStart.day()) * dayLong;
        const weeksLong = (week - 1) * 7 * dayLong;
        const weekDayLong = weekDay * dayLong;
        const dayTimestamp = yearStart.valueOf() + firstWeekLong + weeksLong + weekDayLong;
        return moment(dayTimestamp).format('YYYY-MM-DD');
    }
    /**
     * 显示调试面板(仅支持H5)
     * @param cssSelector
     * @param callback
     */
    static showDevConsole(cssSelector, callback) {
    static $_showDevConsole(cssSelector, callback) {
        // 只支持 h5 编译
        if (process.env.TARO_ENV !== 'h5') {
            return;
@@ -534,28 +551,67 @@
            fileref.setAttribute('src', 'http://cdn.jsdelivr.net/npm/eruda');
        }
        document.getElementsByTagName('head')[0].appendChild(fileref);
        const simulateTouch = (dom, type) => {
            const button = dom;
            const touch = new Touch({
                identifier: Date.now(),
                target: button,
                clientX: 0,
                clientY: 0,
                screenX: 0,
                screenY: 0,
                pageY: 0,
                pageX: 0,
                radiusX: 2.5,
                radiusY: 2.5,
                rotationAngle: 10,
                force: 0.5,
            });
            const touchstart = new TouchEvent(type, {
                cancelable: true,
                bubbles: true,
                composed: true,
                touches: [touch],
                targetTouches: [touch],
                changedTouches: [touch],
            });
            button.dispatchEvent(touchstart);
        };
        const erudaTimer = setInterval(() => {
            if (window.eruda) {
                clearInterval(erudaTimer);
                const container = document.createElement('div');
                if (cssSelector) {
                    document.querySelector(cssSelector).appendChild(container);
                } else {
                    document.getElementsByTagName('body')[0].appendChild(container);
                }
                window.eruda.init({
                    container: container,
                    useShadowDom: false,
                });
                setTimeout(() => {
                    const devTool = document.querySelector('.eruda-dev-tools');
                    devTool.style.display = 'block';
                    devTool.style.opacity = '1';
                    devTool.style.height = '70%';
                    console.warn('=====【艾信App调试特别模式】=====');
                    console.warn('点击右下角悬浮工具箱图标可以折叠面板');
                }, 50);
                callback();
                    const container = document.createElement('div');
                    if (cssSelector) {
                        document.querySelector(cssSelector).appendChild(container);
                    } else {
                        document.getElementsByTagName('body')[0].appendChild(container);
                    }
                    window.eruda.init({
                        container: container,
                        useShadowDom: false,
                    });
                    let button = null;
                    setTimeout(() => {
                        button = document.querySelector('.eruda-entry-btn');
                    }, 50);
                    setTimeout(() => {
                        simulateTouch(button, 'touchstart');
                    }, 60);
                    setTimeout(() => {
                        simulateTouch(button, 'touchend');
                    }, 350);
                    setTimeout(() => {
                        console.warn('=====【艾信App调试模式】=====');
                    }, 800);
                    setTimeout(() => {
                        console.warn('点击右下角悬浮工具箱图标可以折叠面板');
                    }, 900);
                    setTimeout(() => {
                        callback && callback();
                    }, 1000);
                }, 100);
            }
        }, 100);
    }
@@ -575,4 +631,6 @@
        const px = (value - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;
        console.info(Math.round(px) + 'px');
    };
}
}
global.Tools = Tools;