WebApp【公共组件库】@前端(For Git Submodule)
Tevin
2023-04-06 df6264edf6dc16aa391e349b660304389f25b02f
调整工具集内容,创建小功能集Helper新文件
1 files added
2 files modified
222 ■■■■ changed files
common/FileTransform.js 16 ●●●● patch | view | raw | blame | history
common/Helper.js 107 ●●●●● patch | view | raw | blame | history
common/Tools.js 99 ●●●●● patch | view | raw | blame | history
common/FileTransform.js
@@ -22,7 +22,7 @@
    }
    /**
     * 转换 ObjectURL 为 base64 数据体
     * 转换 ObjectURL 为 base64 数据体(用于java通讯)
     * @param objUrl
     * @param callback
     */
@@ -42,7 +42,7 @@
    }
    /**
     * 转换 base64 数据体为 ObjectURL
     * 转换 base64 数据体为 ObjectURL(用于java通讯)
     * @param baseData
     * @param callback
     */
@@ -143,6 +143,18 @@
        return array;
    }
    /**
     * 读取文件 base64
     * @param {File} file
     * @param {Function} callback
     */
    getFileBase64(file, callback) {
        const reader = new FileReader();
        reader.onload = () => callback(reader.result);
        reader.onerror = error => callback(null, error);
        reader.readAsDataURL(file);
    }
}
export const $fileTrans = new FileTransform();
common/Helper.js
New file
@@ -0,0 +1,107 @@
/**
 * Helper - 小功能集
 * @author Tevin
 */
export class Helper {
    constructor() {
    }
    /**
     * 播放App操作的提醒语音
     * @param {String} name
     */
    playOprSound(name) {
        const audio = new Audio('../assets/sound/' + name + '.mp3');
        audio.play();
    }
    /**
     * 显示调试面板(仅支持H5)
     * @param {{cssSelector,autoOpen}} options
     * @param {Function} [callback]
     */
    showDevConsole(options = {}, callback) {
        // 只支持 h5 编译
        if (process.env.TARO_ENV !== 'h5') {
            return;
        }
        const fileref = document.createElement('script');
        fileref.setAttribute('type', 'text/javascript');
        if (window.location.protocol === 'https:') {
            fileref.setAttribute('src', 'https://cdn.jsdelivr.net/npm/eruda');
        } else {
            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);
                setTimeout(() => {
                    const container = document.createElement('div');
                    if (options.cssSelector) {
                        document.querySelector(options.cssSelector).appendChild(container);
                    } else {
                        document.getElementsByTagName('body')[0].appendChild(container);
                    }
                    window.eruda.init({
                        container: container,
                        useShadowDom: false,
                    });
                    if (options.autoOpen) {
                        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);
    }
}
export const $Helper = new Helper();
common/Tools.js
@@ -1,5 +1,5 @@
/**
 * Tools
 * Tools - 工具集
 * @author Tevin
 */
@@ -41,20 +41,6 @@
        } else {
            return null;
        }
    }
    /**
     * 读取文件 base64
     * @param {File} file
     * @return {Promise<string>}
     */
    static getFileBase64(file) {
        return new Promise((resolve, reject) => {
            const reader = new FileReader();
            reader.onload = () => resolve(reader.result);
            reader.onerror = error => reject(error);
            reader.readAsDataURL(file);
        });
    }
    /**
@@ -531,89 +517,6 @@
        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) {
        // 只支持 h5 编译
        if (process.env.TARO_ENV !== 'h5') {
            return;
        }
        const fileref = document.createElement('script');
        fileref.setAttribute('type', 'text/javascript');
        if (window.location.protocol === 'https:') {
            fileref.setAttribute('src', 'https://cdn.jsdelivr.net/npm/eruda');
        } else {
            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);
                setTimeout(() => {
                    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);
    }
}