zoukankan      html  css  js  c++  java
  • 锦oa基础配置

    import { validatenull } from './validate';

    //表单序列化
    export const serialize = data => {
        let list = [];
        Object.keys(data).forEach(ele => {
            list.push(`${ele}=${data[ele]}`);
        });
        return list.join('&');
    };

    export const getObjType = obj => {
        var toString = Object.prototype.toString;
        var map = {
            '[object Boolean]': 'boolean',
            '[object Number]': 'number',
            '[object String]': 'string',
            '[object Function]': 'function',
            '[object Array]': 'array',
            '[object Date]': 'date',
            '[object RegExp]': 'regExp',
            '[object Undefined]': 'undefined',
            '[object Null]': 'null',
            '[object Object]': 'object',
        };
        if (obj instanceof Element) {
            return 'element';
        }
        return map[toString.call(obj)];
    };

    export const getViewDom = () => {
        return window.document.getElementById('avue-view').getElementsByClassName('el-scrollbar__wrap')[0];
    };

    /**
     * 对象深拷贝
     */
    export const deepClone = data => {
        var type = getObjType(data);
        var obj;
        if (type === 'array') {
            obj = [];
        } else if (type === 'object') {
            obj = {};
        } else {
            //不再具有下一层次
            return data;
        }
        if (type === 'array') {
            for (var i = 0, len = data.length; i < len; i++) {
                obj.push(deepClone(data[i]));
            }
        } else if (type === 'object') {
            for (var key in data) {
                obj[key] = deepClone(data[key]);
            }
        }
        return obj;
    };

    /**
     * 设置灰度模式
     */
    export const toggleGrayMode = status => {
        if (status) {
            document.body.className = document.body.className + ' grayMode';
        } else {
            document.body.className = document.body.className.replace(' grayMode', '');
        }
    };

    /**
     * 设置主题
     */
    export const setTheme = name => {
        document.body.className = name;
    };

    /**
     * 加密处理
     */
    export const encryption = params => {
        let { data, type, param, key } = params;
        let result = JSON.parse(JSON.stringify(data));
        if (type == 'Base64') {
            param.forEach(ele => {
                result[ele] = btoa(result[ele]);
            });
        } else if (type == 'Aes') {
            param.forEach(ele => {
                result[ele] = window.CryptoJS.AES.encrypt(result[ele], key).toString();
            });
        }
        return result;
    };

    /**
     * 加密对象处理
     */
    export const encryptionObject = params => {
        let { data, type, key } = params;
        let result = JSON.stringify(data);
        if (type == 'Base64') {
            result = btoa(unescape(encodeURIComponent(result)));
        } else if (type == 'Aes') {
            param.forEach(ele => {
                result[ele] = window.CryptoJS.AES.encrypt(result[ele], key).toString();
            });
        }
        return result;
    };

    /**
     * 浏览器判断是否全屏
     */
    export const fullscreenToggel = () => {
        if (fullscreenEnable()) {
            exitFullScreen();
        } else {
            reqFullScreen();
        }
    };

    /**
     * esc监听全屏
     */
    export const listenfullscreen = callback => {
        function listen() {
            callback();
        }
        document.addEventListener('fullscreenchange', function() {
            listen();
        });
        document.addEventListener('mozfullscreenchange', function() {
            listen();
        });
        document.addEventListener('webkitfullscreenchange', function() {
            listen();
        });
        document.addEventListener('msfullscreenchange', function() {
            listen();
        });
    };

    /**
     * 浏览器判断是否全屏
     */
    export const fullscreenEnable = () => {
        var isFullscreen = document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;
        return isFullscreen;
    };

    /**
     * 浏览器全屏
     */
    export const reqFullScreen = () => {
        if (document.documentElement.requestFullScreen) {
            document.documentElement.requestFullScreen();
        } else if (document.documentElement.webkitRequestFullScreen) {
            document.documentElement.webkitRequestFullScreen();
        } else if (document.documentElement.mozRequestFullScreen) {
            document.documentElement.mozRequestFullScreen();
        }
    };

    /**
     * 浏览器退出全屏
     */
    export const exitFullScreen = () => {
        if (document.documentElement.requestFullScreen) {
            document.exitFullScreen();
        } else if (document.documentElement.webkitRequestFullScreen) {
            document.webkitCancelFullScreen();
        } else if (document.documentElement.mozRequestFullScreen) {
            document.mozCancelFullScreen();
        }
    };

    /**
     * 递归寻找子类的父类
     */
    export const findParent = (menu, id) => {
        for (let i = 0; i < menu.length; i++) {
            if (menu[i].children.length != 0) {
                for (let j = 0; j < menu[i].children.length; j++) {
                    if (menu[i].children[j].id == id) {
                        return menu[i];
                    } else {
                        if (menu[i].children[j].children.length != 0) {
                            return findParent(menu[i].children[j].children, id);
                        }
                    }
                }
            }
        }
    };

    /**
     * 动态插入css
     */
    export const loadStyle = url => {
        const link = document.createElement('link');
        link.type = 'text/css';
        link.rel = 'stylesheet';
        link.href = url;
        const head = document.getElementsByTagName('head')[0];
        head.appendChild(link);
    };

    /**
     * 判断路由是否相等
     */
    export const diff = (obj1, obj2) => {
        delete obj1.close;
        var o1 = obj1 instanceof Object;
        var o2 = obj2 instanceof Object;
        if (!o1 || !o2) {
            /*  判断不是对象  */
            return obj1 === obj2;
        }

        if (Object.keys(obj1).length !== Object.keys(obj2).length) {
            return false;
            //Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
        }

        for (var attr in obj1) {
            var t1 = obj1[attr] instanceof Object;
            var t2 = obj2[attr] instanceof Object;
            if (t1 && t2) {
                return diff(obj1[attr], obj2[attr]);
            } else if (obj1[attr] !== obj2[attr]) {
                return false;
            }
        }
        return true;
    };

    /**
     * 根据字典的value显示label
     */
    export const findByvalue = (dic, value) => {
        let result = '';
        if (validatenull(dic)) return value;
        if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {
            let index = 0;
            index = findArray(dic, value);
            if (index != -1) {
                result = dic[index].label;
            } else {
                result = value;
            }
        } else if (value instanceof Array) {
            result = [];
            let index = 0;
            value.forEach(ele => {
                index = findArray(dic, ele);
                if (index != -1) {
                    result.push(dic[index].label);
                } else {
                    result.push(value);
                }
            });
            result = result.toString();
        }
        return result;
    };

    /**
     * 根据字典的value查找对应的index
     */
    export const findArray = (dic, value) => {
        for (let i = 0; i < dic.length; i++) {
            if (dic[i].value == value) {
                return i;
            }
        }
        return -1;
    };

    /**
     * 生成随机len位数字
     */
    export const randomLenNum = (len, date) => {
        let random = '';
        random = Math.ceil(Math.random() * 100000000000000)
            .toString()
            .substr(0, len ? len : 4);
        if (date) random = random + Date.now();
        return random;
    };

    /**
     * 打开小窗口
     */
    export const openWindow = (url, title, w, h) => {
        // Fixes dual-screen position Most browsers Firefox
        const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left;
        const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top;

        const width = window.innerWidth ?
            window.innerWidth :
            document.documentElement.clientWidth ?
            document.documentElement.clientWidth :
            screen.width;
        const height = window.innerHeight ?
            window.innerHeight :
            document.documentElement.clientHeight ?
            document.documentElement.clientHeight :
            screen.height;

        const left = width / 2 - w / 2 + dualScreenLeft;
        const top = height / 2 - h / 2 + dualScreenTop;
        const newWindow = window.open(
            url,
            title,
            'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' +
            w +
            ', height=' +
            h +
            ', top=' +
            top +
            ', left=' +
            left
        );

        // Puts focus on the newWindow
        if (window.focus) {
            newWindow.focus();
        }
    };

    //数组对象去重
    export const filterRepeat = (arr, prop) => {
        return arr.filter(function(element, index, self) {
            return self.findIndex(el => el[prop] == element[prop]) === index
        })
    }

    //阿拉伯数字转中文数字
    export const NoToChinese = (num) => {
        if (!/^d*(.d*)?$/.test(num)) {
            // alert("Number is wrong!");
            return "Number is wrong!";
        }
        var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
        var BB = new Array("", "十", "百", "千", "万", "亿", "点", "");
        var a = ("" + num).replace(/(^0*)/g, "").split("."),
            k = 0,
            re = "";
        for (var i = a[0].length - 1; i >= 0; i--) {
            switch (k) {
                case 0:
                    re = BB[7] + re;
                    break;
                case 4:
                    if (!new RegExp("0{4}\d{" + (a[0].length - i - 1) + "}$").test(a[0]))
                        re = BB[4] + re;
                    break;
                case 8:
                    re = BB[5] + re;
                    BB[7] = BB[5];
                    k = 0;
                    break;
            }
            if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0) re = AA[0] + re;
            if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re;
            k++;
        }
        if (a.length > 1) //加上小数部分(如果有小数部分) 
        {
            re += BB[6];
            for (var i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)];
        }
        return re;
    };


    /**
     *  人民币小写金额转换为大写
     */
    export const digitUppercase = (n) => {
        let fraction = ['角', '分']
        let digit = [
            '零', '壹', '贰', '叁', '肆',
            '伍', '陆', '柒', '捌', '玖'
        ];
        let unit = [
            ['元', '万', '亿'],
            ['', '拾', '佰', '仟']
        ];
        let head = n < 0 ? '欠' : ''
        n = Math.abs(n)
        let s = ''
        for (let i = 0; i < fraction.length; i++) {
            s += (digit[Math.floor(Math.floor(n * 1000 * 10 * Math.pow(10, i)) % (10 * 1000) / 1000)] + fraction[i]).replace(/零./, '')
        }
        s = s || '整'
        n = Math.floor(n)
        for (let i = 0; i < unit[0].length && n > 0; i++) {
            let p = ''
            for (let j = 0; j < unit[1].length && n > 0; j++) {
                p = digit[n % 10] + unit[1][j] + p
                n = Math.floor(n / 10)
            }
            s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s
        }
        return head + s.replace(/(零.)*零元/, '元')
            .replace(/(零.)+/g, '零')
            .replace(/^整$/, '零元整')
    }
  • 相关阅读:
    课后作业07--二分法查找算法代码
    检索03 -- 二分法查找
    课堂随笔05--冒泡排序
    课后作业 06 -- 小数后几位精确判断并输出
    课后作业 05 -- 输出一段带字母与数字的随机数
    课后作业 04 --DateTime应用,判断多久后生日之类
    检索02--随机数种子的一些概念和理解
    课堂随笔04--关于string类的一些基本操作
    P1174 互素
    P1001 第K极值
  • 原文地址:https://www.cnblogs.com/xiaoxiao95/p/12744556.html
Copyright © 2011-2022 走看看