| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 | class HttpUtil {    static _handleMsg(msg) {        if (!(msg instanceof Msg)) {            return;        }        if (msg.msg === "") {            return;        }        if (msg.success) {            Vue.prototype.$message.success(msg.msg);        } else {            Vue.prototype.$message.error(msg.msg);        }    }    static _respToMsg(resp) {        const data = resp.data;        if (data == null) {            return new Msg(true);        } else if (typeof data === 'object') {            if (data.hasOwnProperty('success')) {                return new Msg(data.success, data.msg, data.obj);            } else {                return data;            }        } else {            return new Msg(false, 'unknown data:', data);        }    }    static async get(url, data, options) {        let msg;        try {            const resp = await axios.get(url, data, options);            msg = this._respToMsg(resp);        } catch (e) {            msg = new Msg(false, e.toString());        }        this._handleMsg(msg);        return msg;    }    static async post(url, data, options) {        let msg;        try {            const resp = await axios.post(url, data, options);            msg = this._respToMsg(resp);        } catch (e) {            msg = new Msg(false, e.toString());        }        this._handleMsg(msg);        return msg;    }    static async postWithModal(url, data, modal) {        if (modal) {            modal.loading(true);        }        const msg = await this.post(url, data);        if (modal) {            modal.loading(false);            if (msg instanceof Msg && msg.success) {                modal.close();            }        }        return msg;    }}class PromiseUtil {    static async sleep(timeout) {        await new Promise(resolve => {            setTimeout(resolve, timeout)        });    }}const seq = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');class RandomUtil {    static randomIntRange(min, max) {        return Math.floor(Math.random() * (max - min) + min);    }    static randomInt(n) {        return this.randomIntRange(0, n);    }    static randomSeq(count) {        let str = '';        for (let i = 0; i < count; ++i) {            str += seq[this.randomInt(62)];        }        return str;    }    static randomShortId() {        let str = '';        for (let i = 0; i < 8; ++i) {            str += seq[this.randomInt(16)];        }        return str;    }    static randomLowerAndNum(len) {        let str = '';        for (let i = 0; i < len; ++i) {            str += seq[this.randomInt(36)];        }        return str;    }    static randomUUID() {        const template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';        return template.replace(/[xy]/g, function (c) {          const randomValues = new Uint8Array(1);          crypto.getRandomValues(randomValues);          let randomValue = randomValues[0] % 16;          let calculatedValue = (c === 'x') ? randomValue : (randomValue & 0x3 | 0x8);          return calculatedValue.toString(16);        });    }    static randomShadowsocksPassword() {        let array = new Uint8Array(32);        window.crypto.getRandomValues(array);        return btoa(String.fromCharCode.apply(null, array));    }}class ObjectUtil {    static getPropIgnoreCase(obj, prop) {        for (const name in obj) {            if (!obj.hasOwnProperty(name)) {                continue;            }            if (name.toLowerCase() === prop.toLowerCase()) {                return obj[name];            }        }        return undefined;    }    static deepSearch(obj, key) {        if (obj instanceof Array) {            for (let i = 0; i < obj.length; ++i) {                if (this.deepSearch(obj[i], key)) {                    return true;                }            }        } else if (obj instanceof Object) {            for (let name in obj) {                if (!obj.hasOwnProperty(name)) {                    continue;                }                if (this.deepSearch(obj[name], key)) {                    return true;                }            }        } else {            return obj.toString().toLowerCase().indexOf(key.toLowerCase()) >= 0;        }        return false;    }    static isEmpty(obj) {        return obj === null || obj === undefined || obj === '';    }    static isArrEmpty(arr) {        return !this.isEmpty(arr) && arr.length === 0;    }    static copyArr(dest, src) {        dest.splice(0);        for (const item of src) {            dest.push(item);        }    }    static clone(obj) {        let newObj;        if (obj instanceof Array) {            newObj = [];            this.copyArr(newObj, obj);        } else if (obj instanceof Object) {            newObj = {};            for (const key of Object.keys(obj)) {                newObj[key] = obj[key];            }        } else {            newObj = obj;        }        return newObj;    }    static deepClone(obj) {        let newObj;        if (obj instanceof Array) {            newObj = [];            for (const item of obj) {                newObj.push(this.deepClone(item));            }        } else if (obj instanceof Object) {            newObj = {};            for (const key of Object.keys(obj)) {                newObj[key] = this.deepClone(obj[key]);            }        } else {            newObj = obj;        }        return newObj;    }    static cloneProps(dest, src, ...ignoreProps) {        if (dest == null || src == null) {            return;        }        const ignoreEmpty = this.isArrEmpty(ignoreProps);        for (const key of Object.keys(src)) {            if (!src.hasOwnProperty(key)) {                continue;            } else if (!dest.hasOwnProperty(key)) {                continue;            } else if (src[key] === undefined) {                continue;            }            if (ignoreEmpty) {                dest[key] = src[key];            } else {                let ignore = false;                for (let i = 0; i < ignoreProps.length; ++i) {                    if (key === ignoreProps[i]) {                        ignore = true;                        break;                    }                }                if (!ignore) {                    dest[key] = src[key];                }            }        }    }    static delProps(obj, ...props) {        for (const prop of props) {            if (prop in obj) {                delete obj[prop];            }        }    }    static execute(func, ...args) {        if (!this.isEmpty(func) && typeof func === 'function') {            func(...args);        }    }    static orDefault(obj, defaultValue) {        if (obj == null) {            return defaultValue;        }        return obj;    }    static equals(a, b) {        for (const key in a) {            if (!a.hasOwnProperty(key)) {                continue;            }            if (!b.hasOwnProperty(key)) {                return false;            } else if (a[key] !== b[key]) {                return false;            }        }        return true;    }}
 |