util.js 常用

/*
 
 公共js库,包含各种公共方法和公共库
 */
define(['jquery',
    'artTemplate',
    'layer',
    'accounting',
    'moment',
    'store',
    'lodash',
    'serializejson'
],function($,template,layer,accounting,moment,store,_,serializeJSON){
    var util = {
        debug: true,
        online: 2,
        loginUrl:''
    };

    //全局ajax设置
    $.ajaxSetup({
        type:'POST',
        async:true,
        cache:false,
        dataType:'json',
        timeout:100000,
        beforeSend:function(){
            util.loading();
        },
        statusCode:{
            404:function(){

            },
            401:function(){

            },
            200:function () {
                util.removeLoading();
            }
        },
        fail:function(jqXHR, textStatus, errorThrown){
            util.removeLoading();
            if('timeout' === textStatus){
                alert('网络连接超时');
            }else if('abort' === textStatus){

            }else{
                alert('网络异常');
            }
        }
    });
    util.url = function (serverId,type) {
        var route = '',
            port = '';
        switch(util.online){
            case 1:
                //正式环境
                break;
            case 2:
                //测试环境  http://47.94.117.25/
                port = 'http://47.94.59.225:8082';
                break;
            case 3:
                //开发环境
                port = 'http://47.95.205.132:8080';
                break;
        }
        route = port + "/rest/service/routing/" + serverId;
        return route;
    };

    util.picUrl = function (businessType,type) {
        //供应商id supplier
        //1.京东
        var uri = '';
        switch(businessType){
            case 1:
                // n0(最大图)、n1(350*350px)、n2(160*160px)、n3(130*130px)、n4(100*100px) 为图片大小。
                uri = 'http://img13.360buyimg.com/'+ type;
                break;
            case 3:
                // n0(最大图)、n1(350*350px)、n2(160*160px)、n3(130*130px)、n4(100*100px) 为图片大小。
                uri = 'http://b2bimgcdn.nbdeli.com/'+ type;
                break;
            case 5:
                // n0(最大图)、n1(350*350px)、n2(160*160px)、n3(130*130px)、n4(100*100px) 为图片大小。
                uri = 'http://static.grainger.cn/product_images_new/'+ type;
                break;
            case 6:
                // n0(最大图)、n1(350*350px)、n2(160*160px)、n3(130*130px)、n4(100*100px) 为图片大小。
                if(config.loginId === 4){
                    uri = 'http://openapi.zkh360.com/'+ type;
                }else{
                    uri = 'http://120.26.11.169/'+ type;
                }
                break;
            case -1:
                // n0(最大图)、n1(350*350px)、n2(160*160px)、n3(130*130px)、n4(100*100px) 为图片大小。
                uri = '?x-oss-process=style/'+ type;
                break;
        }
        return uri;
    };
    util.picUrlAdapter = function(businessType,option){
        //businessType 电子超市: 供应商id 1:京东 2:苏宁 3:得力 4:西域 5:固安捷 6:震坤行  电力专区: -1
        //option  pixel: 当businessType为1、3、5、6或者-1时 像素码 n0、n1、n2 ...   当businessType为4时 大小类型 L(大图)、M(中图)、S(小图)
        //        picUrl: 后端返回的图片地址
        var fn = {};
        var realUrl = "";
        var supplierType = "";
        if(businessType == -1){
            supplierType = "supplier_allUrl";
        }else{
            supplierType = "supplier_"+businessType;
        }

        fn.supplier_1 = function(){
            return fn.getHandleUrl(businessType,"1");
        };
        fn.supplier_2 = function(){
            return fn.getHandleUrl(businessType,"2");
        };
        fn.supplier_3 = function(){
            return fn.getHandleUrl(businessType,"1");
        };

        fn.supplier_4 = function(){
            return fn.getHandleUrl(businessType,"2");
        };

        fn.supplier_5 = function(){
            return fn.getHandleUrl(businessType,"1");
        };

        fn.supplier_6 = function(){
            return fn.getHandleUrl(businessType,"1");
        };

        fn.supplier_allUrl = function(){
            return fn.getHandleUrl(businessType,"3");
        };

        fn.getHandleUrl = function(businessType,type){
            var url = "";
            switch(type){
                case "1" :
                    url = util.picUrl(businessType,option.pixel)+"/"+option.picUrl;
                    break;
                case "2" :
                    var urlList = option.picUrl.split(",");
                    if(urlList.length === 1){
                        url = option.picUrl;
                    }else{
                        switch(option.pixel){
                            case "L":
                                url = urlList[0];
                                break;
                            case "M":
                                url = urlList[1];
                                break;
                            case "S":
                                url = urlList[2];
                                break;
                        }
                    }
                    break;
                case "3" :
                    url = option.picUrl+util.picUrl(businessType,option.pixel);
                    break;
            }

            return url;
        };

        realUrl = fn[supplierType]?fn[supplierType]():"";
        return realUrl;
    };
//加载laoding
    util.loading = function () {
        layer.load(2);
    };
    util.removeLoading = function () {
        layer.closeAll('loading');
    };
//模板过滤器
    (function () {
        //表单序列化
        util.serial = function (ele,rule) {
            var data = $(ele).serializeJSON();
            function extra() {
                var str = JSON.stringify(data);
                var reg = eval('/('+rule+')/g');
                data = JSON.parse(str.replace(reg,''))
            }
            rule && extra();
            return data;
        };
        //过滤数据
        template.helper('chooseDataFormat',function (data) {
            if(data){
                data = data + "";
                if(data.indexOf("*~~") !== -1){
                    return data.substring(data.indexOf("*~~")+3,data.length);
                }else{
                    if(data.length > 40){
                        data = data.substr(0,40)+"...";
                    }

                    return data;
                }
            }
        });
        //京东图片格式化
        template.helper('jdPhoto',function (data) {
            if(data) {
                return "http://img13.360buyimg.com/n3/"+data
            }
        });
        //图片招商格式化
        template.helper('photoFormat',function (data) {
            if(data){
                return data
            }else{
                //图片待定
                return "http://cms-dev.oss-cn-beijing.aliyuncs.com/jspxcms/uploads/20170911220153_33tq2whwk5.png"
            }
        });
        //手机号格式
        template.helper('telFormat',function (data) {
            if(data){
                return data.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
            }
        });
        //金额格式化
        template.helper('numberFormat',function (data) {
            return accounting.formatMoney(data,"");
        });

        template.helper('priceFormat',function (data) {
            if(data){
                return "¥ "+accounting.formatMoney(data,"");
            }else{
                return '登录查看企业专享价';
            }
        });
        // 数字格式化
        template.helper('dataFormat',function (data) {
            return accounting.formatMoney(data,"",0);
        });
        //日期格式化
        template.helper('dateFormat',function (data) {
            if(data){
                return moment(parseInt(data)).format("YYYY-MM-DD");
            }
            return '';
        });
        //时间格式化
        template.helper('dateTimeFormat',function (data) {
            if(data){
                return moment(parseInt(data)).format("YYYY-MM-DD HH:mm:ss");
            }else{
                return '';
            }
           });
        //我的订单列表状态样式
        template.helper('orderStatusCss',function (status) {
            switch (status){
                case 6:
                    return "c_green";
                case 7:
                case 8:
                    return "c_red";
            }
            return "c_gray_2";
        });
        //文本处理
        template.helper('textFormat',function (data) {
            // var len = data.replace(/\s+/g, "").length;
            // if(len > 40){
            //     data = data.substr(0,45)+'...';
            // }
            return data;

        });
    })();
//数据处理方法
    util.getData = function(data,successFun,errorFun){
        var fn = {};
        var str = 'get'+util.getType(data);
        fn.getObject = function (data) {
            if(data.respCode === '0000'){
                return successFun(data.data);
            }else{
                if(errorFun){
                    return errorFun(data);
                }else{
                    layer.msg(data.respDesc,{time:2000});
                }
            }
        };
        fn.getArray = function (data) {
            var list = [];
            $.each(data,function (i,v) {
                if(v[0].respCode === '0000'){
                    list.push(v[0].data);
                }else{
                    //layer.alert(data.message ? data.message : "系统繁忙",{icon:2});
                }
            });
            return successFun(list);
        };
        fn[str](data);
    };
//统一页面跳转方法
    util.goPage = function (type,url) {
        switch (type){
            //页面跳转
            case 1:
                window.location.href = url;
                break;
            //返回上一个页面
            case 2:
                window.history.go(-1);
                break;
            //返回并刷新上一个页面
            case 3:
                window.location.href = document.referrer;
        }
    };
//统一日志打印
    util.log = function (log) {
        if(true === util.debug){
            console.log(log);
        }
    };
//模板渲染方法
    //方法一
    util.renderTpl = function (sign,dom,data,callback) {
        var render = template.compile(dom);
        $(sign).html(render(data));
        callback && callback();
    };
    //方法二
    util.renderHtml = function (sign,data,callback) {
        $.each(sign,function (i,v) {
            $('.'+v).html(template(v,data));
        });
        callback && callback();
    };
    //方法三
    /**
     * 模板渲染
     * @param target        dom元素类标识
     * @param tpl           模板id标识
     * @param data          渲染数据
     * @param callback      回调函数
     */
    util.renderTpl2=function(target,tpl,data,callback){
        $('.'+target).html(template(tpl,data));
        callback&&callback();
    }
    //缓存模板
    util.setTemplate = function (sign) {
        var dom = $('#'+sign).html();
        util.setCache(sign+'_template',dom);
    };
    //渲染缓存模板
    util.getTemplate = function (sign,data,callback) {
        var dom = util.getCache(sign+'_template'),
            render = template.compile(dom);
        $('.'+sign).html(render(data));
        callback && callback();
    };
//2个数组合并成1个数组对象
    util.arrayMerge = function (arr1,arr2,param1,param2) {
        var newArray = [];
        $.each(arr1,function (i,v) {
            var obj = {};
            obj[param1] = v;
            $.each(arr2,function (j,k) {
                if(i === j){
                    obj[param2] = k;
                }
            })
            newArray.push(obj);
        });
        return newArray;
    };
//数据校验
    util.verifyData = function (data,sign,rule,msg) {
        var fn = {};
        fn.check = function (value,mark,rule) {
            $.each(rule,function (checkfn,safeData) {
                fn[checkfn] ? fn[checkfn](value,mark,safeData) : fn.validFun(checkfn,value,mark,safeData);
            })
        };
        fn.validFun = function (checkfn,value,mark,data) {
            $.each(data,function (index,sign) {
                var reg = new RegExp(sign);
                if(reg.test(value)){
                    alert(msg[mark][checkfn]);
                    return false;
                }
            });
        };
        fn.max = function (value,mark,data) {
            if(value > data){
                alert(msg[mark]['max']);
                return false;
            }
        };
        fn.min = function (value,mark,data) {
            if(value < data){
                alert(msg[mark]['min']);
                return false;
            }
        };
        $.each(data,function (key,value) {
            $.each(sign,function (i,mark) {
                if(key === mark){
                    fn.check(value,mark,rule[mark]);
                }
            })
        });
    };
//参数合并
    util.splitData = function (name,datas) {
        var data = {};
        $.each(datas,function (index,param) {
            $.each(name,function (i,paramName) {
                if(index === i){
                    data[paramName] = param;
                }
            });
        });
        return data;
    };
    //数据存储
    util.storeSet=function(param,data){
        store.set(param,data);
    };
    //数据获取
    util.storeGet=function(param){
        return store.get(param)
    };
    //数据删除
    util.storeRemove=function(param){
        store.remove(param)
    };
    //数据全清
    util.storeClear=function(){
        store.clearAll();
    };
    //数据合并
    // var obj1 = [{ 'b': 2 }, { 'd': 4 }];
    // var obj2 = [{ 'c': 3 }, { 'e': 5 }];
    util.merge = function (obj1,obj2) {
        return _.merge(obj1, obj2);
    };
    //所有存储数据列表展示
    util.storeList=function(){
        store.each(function(value, key) {
            console.log(key, '==', value)
        });
    };
//获取值的类型
    util.getType = function (obj) {
        var typeStr = Object.prototype.toString.call(obj),
            typeArr = [];
        typeStr = typeStr.substring(1, typeStr.length - 1);
        typeArr = typeStr.split(" ");
        return typeArr[1];
    };
//事件的订阅和发布
    (function($) {
        var o = $({});
        $.subscribe = function () {
            o.on.apply(o, arguments);
        };
        $.publish = function () {
            o.trigger.apply(o, arguments);
        };
        $.unsubscribe = function () {
            o.off.apply(o, arguments);
        };
    } (jQuery));
//eg:
// function handle(e, a, b, c) {
//     console.log(a + b + c);
// };
// 订阅
// $.subscribe("/some/topic", handle);
// 发布
// $.publish("/some/topic", ["a", "b", "c"]);  输出abc
// $.unsubscribe("/some/topic", handle);  退订

//闭包缓存
    (function(){
        var dataList = {};
        //添加缓存
        util.setCache = function (id, data) {
            if(typeof data ==="object"){
                dataList[id] = $.extend(true,{},data);
            }else{
                dataList[id] = data;
            }
        };
        // 获得缓存
        util.getCache = function (id) {
            if(dataList[id]){
                if(typeof dataList[id] ==="object"){
                    return $.extend(true,{},dataList[id]);
                }else{
                    return dataList[id];
                }
            }else{
                return undefined;
            }
        };
        // 根据id清空缓存
        util.clearCache = function (id) {
            delete dataList[id];
        };
        // 清空所有的缓存
        util.clearAllCache = function () {
            dataList = {};
        }
    })();
//获得所有url后携带的参数
    util.getAllQueryString = function (){
        if(!location.search){
            return {};
        }
        var searchStr = location.search.substring(1),
            search = searchStr.split("&"),
            param = {};
        $.each(search,function(index,value){
            var Arr = value.split("=");
            param[Arr[0]] = Arr[1];
        });
        return param;
    };
//数据绑定
    (function () {
        var DataBinder = function (objectId) {
            // 使用jQuery空对象作为监听对象
            var pubSub = jQuery({});
            //
            var dataAttr = 'bind-' + objectId;
            var message = objectId + ':change';
            // 监听dom中所有元素的 data-binding 属性变化。并由pubSub来处理。
            $(document).on('input change', '[data-' + dataAttr + ']', function (event) {
                var $ele = $(this);
                pubSub.trigger(message, [$ele.data(dataAttr), $ele.val()]);
            });
            // pubSub把数据变化推送给所有与之绑定的页面元素
            pubSub.on(message, function (event, proName, newValue) {
                $('[data-' + dataAttr + '=' + proName + ']').each(function () {
                    var $ele = $(this);
                    if($ele.is('input, textarea, select')) {
                        $ele.val(newValue);
                    } else {
                        $ele.html(newValue);
                    }
                })
            });
            return pubSub;
        };
        util.bindParam = function (uid) {
            var binder = DataBinder(uid);
            var param = {
                attributes: {},
                set: function (attrName, val) {
                    this.attributes[attrName] = val;
                    binder.trigger(uid + ':change', [attrName, val, this]);
                },
                get: function (attrName) {
                    console.log(this);
                    return this.attributes[attrName];
                },
                _binder: binder
            }
            return param;
        };
    })();
//数字转换中文
    util.coinFormat = function (dValue) {
        var maxDec = 2;
        // 验证输入金额数值或数值字符串:
        dValue = dValue.toString().replace(/,/g, "");
        dValue = dValue.replace(/^0+/, ""); // 金额数值转字符、移除逗号、移除前导零
        if (dValue == "") {
            return '零元整'
        } // (错误:金额为空!)
        else if (isNaN(dValue)) {
            return '错误:金额不是合法的数值!';
        }
        var minus = ''; // 负数的符号“-”的大写:“负”字。可自定义字符,如“(负)”。
        var CN_SYMBOL = ''; // 币种名称(如“人民币”,默认空)
        if (dValue.length > 1) {
            if (dValue.indexOf('-') == 0) {
                dValue = dValue.replace('-', "");
                minus = "负";
            } // 处理负数符号“-”
            if (dValue.indexOf("+") == 0) {
                dValue = dValue.replace("+", "");
            } // 处理前导正数符号“+”(无实际意义)
        }
        // 变量定义:
        var vInt = "";
        var vDec = ""; // 字符串:金额的整数部分、小数部分
        var resAIW; // 字符串:要输出的结果
        var parts; // 数组(整数部分.小数部分),length=1时则仅为整数。
        var digits, radices, bigRadices, decimals; // 数组:数字(0~9——零~玖);基(十进制记数系统中每个数字位的基是10——拾,佰,仟);大基(万,亿,兆,京,垓,杼,穰,沟,涧,正);辅币(元以下,角/分/厘/毫/丝)。
        var zeroCount; // 零计数
        var i, p, d; // 循环因子;前一位数字;当前位数字。
        var quotient, modulus; // 整数部分计算用:商数、模数。
        // 金额数值转换为字符,分割整数部分和小数部分:整数、小数分开来搞(小数部分有可能四舍五入后对整数部分有进位)。
        var NoneDecLen = (typeof (maxDec) == 'undefined' || maxDec == null || Number(maxDec) < 0 || Number(maxDec) > 5); // 是否未指定有效小数位(true/false)
        parts = dValue.split('.'); // 数组赋值:(整数部分.小数部分),Array的length=1则仅为整数。
        if (parts.length > 1) {
            vInt = parts[0];
            vDec = parts[1]; // 变量赋值:金额的整数部分、小数部分
            if (NoneDecLen) {
                maxDec = vDec.length > 5 ? 5 : vDec.length;
            } // 未指定有效小数位参数值时,自动取实际小数位长但不超5。
            var rDec = Number('0.' + vDec);
            rDec *= Math.pow(10, maxDec);
            rDec = Math.round(Math.abs(rDec));
            rDec /= Math.pow(10, maxDec); // 小数四舍五入
            var aIntDec = rDec.toString().split('.');
            if (Number(aIntDec[0]) == 1) {
                vInt = (Number(vInt) + 1).toString();
            } // 小数部分四舍五入后有可能向整数部分的个位进位(值1)
            if (aIntDec.length > 1) {
                vDec = aIntDec[1];
            } else {
                vDec = '';
            }
        } else {
            vInt = dValue;
            vDec = '';
            if (NoneDecLen) {
                maxDec = 0;
            }
        }
        if (vInt.length > 44) {
            return '错误:金额值太大了!整数位长【' + vInt.length.toString() + '】超过了上限——44位/千正/10^43(注:1正=1万涧=1亿亿亿亿亿,10^40)!';
        }
        // 准备各字符数组 Prepare the characters corresponding to the digits:
        digits = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); // 零~玖
        radices = new Array('', '拾', '佰', '仟'); // 拾,佰,仟
        bigRadices = new Array('', '万', '亿', '兆', '京', '垓', '杼', '穰', '沟', '涧', '正'); // 万,亿,兆,京,垓,杼,穰,沟,涧,正
        decimals = new Array('角', '分', '厘', '毫', '丝'); // 角/分/厘/毫/丝
        resAIW = ''; // 开始处理
        // 处理整数部分(如果有)
        if (Number(vInt) > 0) {
            zeroCount = 0;
            for (i = 0; i < vInt.length; i++) {
                p = vInt.length - i - 1;
                d = vInt.substr(i, 1);
                quotient = p / 4;
                modulus = p % 4;
                if (d == '0') {
                    zeroCount++;
                } else {
                    if (zeroCount > 0) {
                        resAIW += digits[0];
                    }
                    zeroCount = 0;
                    resAIW += digits[Number(d)] + radices[modulus];
                }
                if (modulus == 0 && zeroCount < 4) {
                    resAIW += bigRadices[quotient];
                }
            }
            resAIW += '元';
        }
        // 处理小数部分(如果有)
        for (i = 0; i < vDec.length; i++) {
            d = vDec.substr(i, 1);
            if (d != '0') {
                resAIW += digits[Number(d)] + decimals[i];
            }
        }
        // 处理结果
        if (resAIW == '') {
            resAIW = '零' + '元';
        } // 零元
        if (vDec == '') {
            resAIW += '整';
        } // …元整
        resAIW = CN_SYMBOL + minus + resAIW; // 人民币/负……元角分/整
        return resAIW;
    };
    /**
     * 获取本地字典表
     * @param name 字典名
     * @param name 字典值
     */
    util.getLocalDic=function(name,code){
        return this.localDic[name][code];
    };
    util.getLocalDicOfList=function(name){
        var list=[];
        $.each(this.localDic[name],function(i,v){
            list.push({
                id:i,
                text:v
            })
        })
        return list;
    };
    util.getLocalDicOfListAll=function(name){
        var list=[];
        $.each(this.localDic[name],function(i,v){
            list.push({
                id:i,
                text:v
            })
        })
        list.unshift({id:"",text:"全部"});
        return list;
    };
    //数据字典
    configDicEnum = {
        pCodes: JSON.stringify([
            'ORDER_SOURCE',
            'SERVICE_TYPE',
            'BUSINESS_TYPE',
            'ACCT_STATUS',
            'COMPANY_TYPE',
            'REC_TYPE',
            'INVOICE_TYPE',
            'TRADE_TYPE', //行业
            'NOTIFICATION_STATUS',
            'PAY_TYPE',
            'PAY_STATUS',
            'PS_PAY_TYPE',
            'ORDER_STATUS',
            'SERVICE_ORDER_STATUS',
            'AGREEMENT_CHANGE_TYPE',
            'D_BILL_APPLY_INFO_BILL_STATUS',
            'AGREEMENT_STATUS',
            'AGREEMENT_CHANGE_STATUS',
            'COMMODITY_AGREEMENTTYPE',
            'SEARCH_STATUS',
            'SUPPLIER_NAME',
            'PERFORMANCE_TYPE',
            'PERFORMANCE_SOURCE',
            'PERFORMANCE_SCOPE',
            'CONT_AMOUNT',
            'COMMODITY_PURCHASETYPE',
            'RETURN_STATUS',
            'PROJECT_CLASS',
            'COMPLAINT_PURCHASE_TYPE_FZB',
            'COMPLAINT_PURCHASE_TYPE_ZB',
            'COMPLAINT_PURCHASE_TYPE',
            'PROJECT_CLASS',
            'PLAN_TYPE',//询比价-计划类型
            'PLAN_TYPE_COLLECTION',//询比价-计划类型-集采计划
            'PLAN_TYPE_MONTH',//询比价-计划类型-月度
            'PLAN_TYPE_YEAR',//询比价-计划类型-年度
            'PLAN_TYPE_MAKEUP',//询比价-计划类型-采购补录
            'PURCHASE_CATEGORY',//询比价-采购类别
            'PLAN_CLASS',//询比价-计划分类
            'PROJECT_CATEGORY',//询比价-项目类别
            'PURCHASE_METHOD_REASON',//询比价-推荐采购方式理由
            'NO_PUBLIC_REASON',//询比价-不公示理由
            'BUILD_INSPECTION_METHOD',//询比价-施工/服务类评审方法
            'DEILIVERY_DATE_METHOD',//询比价-交货期要求方式-物资
            'COMPLETION_PERIOD_METHOD',//询比价-完工期要求方式-施工
            'SERVICE_COMPLETE_METHOD',//询比价-服务完成要求方式-服务
            'COST_TYPE',//询比价-费用类型
            'APPLY_RANGE_TYPE',//询比价-应用范围类型
            'ATTACHMENT_BUSI_TYPE',//询比价-附件业务类型
            'PLAN_DOC_STATUS',//询比价-单据状态
            'PLAN_TYPE_SAVE',//询比价-销售计划
            'PLAN_CATEGORY',//询比价-计划类别
            'PURCAHSE_METHOD',//询比价-推荐采购方式
            'ENQUIRY_METHOD',//询比价-询价方式
            'REVIEW_METHOD',//询比价-评审方法
            'PLAN_BUSI_STATUS',//询比价-业务状态
            'APPRAISE_PURCHASE_TYPE_ZB',//采购类别  招标
            'APPRAISE_PURCHASE_TYPE_FZB',//采购类别  非招标
            'PERFORMANCE_SOURCE',//不良行为来源
            'BADBEHAVIOR_BUSITYPE', //业务类型
            'BADBEHAVIOR_TYPE_ZTB',//不良行为 招标
            'BADBEHAVIOR_TYPE_XBJ_DLZQ',//不良行为 询比价
            'BADBEHAVIOR_DISPOSE_OPINION_TYPE',//处置意见
            'BADBEHAVIOR_DISPOSE_TERM_JG',//处置期限
            'ADBEHAVIOR_DISPOSE_TERM_ZTZG',
            'BADBEHAVIOR_DISPOSE_TERM_QXZG',
            'BADBEHAVIOR_DISPOSE_TERM_JZZR',
            'BADBEHAVIOR_DISPOSE_TERM_ZTZG',
            'BADBEHAVIOR_DISPOSE_TERM',//不良行为处置期限
            'BADBEHAVIOR_TYPE',//不良行为类型
            'RECOM_PURCHASE_WAY',//快速分配采购方式
            'IQR_QUOTE_METHOD',//报价方式
            'IQR_ORDER_TYPE',//订单类型
            'IQR_REVIEW_METHOD',//评审报告-评审方法,
            'INQUIRY_NODE_STATUS',//询价单节点状态
            'BUSINESS_CATEGORY_OPERATE',//
            'ACCOUNT_PROPERTY',//准入账户属性
        ])
    };
    $.ajax({ data:configDicEnum,url:util.url('SelectDicValBypCodesBusiService') }).done(function (data) {
        util.getData(data,function (data) {
            util.storeSet('dicData',data[0]);
        });
    });
    util.localDic={
        //异议状态0:待处理1:业绩存疑2:业绩无问题
        PERFORMANCE_OBJECTION:{
            "0":"待处理",
            "1":"业绩存疑",
            "2":"业绩无问题",
            "3":"无"
        },
        //FIXME 审核状态:0:待审核,1:驳回,2:公示中,3:已公示,4:过期
        PERFORMANCE_AUDIT:{
            "0":"待审核",
            "1":"驳回",
            "2":"公示中",
            "3":"已公示",
            "4":"过期"
        },
        //业绩信息管理
        //FIXME 购类别 物资范围
        COMMODITY_PURCHASETYPE:{
            "WZ":"物资类",
            "SG":"施工类",
            "FW":"服务类",
        },
        //FIXME 业绩来源
        PERFORMANCE_SOURCE:{
            "PTN":"平台内",
            "PTW":"平台外",
        },
        //FIXME 业绩类别:PERFORMANCE_TYPE
        PERFORMANCE_TYPE:{
            "HTYJ":"合同业绩",
            "TYYJ":"投运业绩",
        },
        //FIXME 业绩范围:PERFORMANCE_SCOPE
        PERFORMANCE_SCOPE:{
            "GDJT":"航天集团",
            "TLYQ":"同类央企",
            "THQY":"同行企业",
            "QT":"其他",
        },
        QUALIFICATION_STATUS:{
            "0":"待审核",
            "1":"驳回",
            "2":"已核实",
            "3":"未核实",
            "4":"过期",
        },
        //合同金额:CONT_AMOUNT
        CONT_AMOUNT:{
            "YBW":"100万以下",
            "YQW":"100~1000万",
            "WQW":"1000万~5000万",
            "YY":"5000万~1亿",
            "YYYS":"1亿以上",
        },
        PERFORMANCE_STATUS:{
            "0":"待审核",
            "1":"驳回",
            "2":"公示中",
            "3":"已公示",
            "4":"过期",
        },
        //    不良行为类型类型
        BADBEHAVIOR_TYPE:{
            "CBWB":"串标围标",
            "JJCJ":"拒绝成交",
            "JJLXHT":"拒绝履行合同",
            "YJZJ":"业绩造假",
            "ZZZJ":"资质造假",
            "QT":"其他",
        },
        //    所有不良行为处置期
        BADBEHAVIOR_DISPOSE_TERM:{
            "W":"无",
            "SGY":"3个月",
            "LGY":"6个月",
            "SEGY":"12个月",
            "ESSGY":"24个月",
            "YN":"1年",
            "SN":"3年",
            "WN":"5年",
            "YJ":"永久",
        },
        //    业务类型
        BADBEHAVIOR_BUSITYPE: {
            "ZTB": "招投标",
            "XBJ": "询比价",
            "DLZQ": "电力专区",
            "QT": "其他",
        },
        //    不良行为审核状态
        BADBEHAVIOR_STATUS:{
            "0":"待核实",
            "1":"初审驳回",
            "2":"待复核",
            "3":"复审驳回",
            "4":"已核实",
            "5":"已撤销",
        },
        //    处置意见
        BADBEHAVIOR_DISPOSE_OPINION_TYPE:{
            "JG":"警告",
            "ZTZG":"暂停资格",
            "QXZG":"取消资格",
            "JZZR":"禁止准入",
        },
        //    处置状态
        BADBEHAVIOR_STATUS_LS:{
            "0":"待处置",
            "1":"处置中",
            "2":"待解禁",
            "3":"已解禁",
        },
        //    评级评价 采购类别  招标
        APPRAISE_PURCHASE_TYPE_ZB:{
            "0":"招投标-物资类",
            "1":"招投标-施工类",
            "2":"招投标-监理类",
            "3":"招投标-勘察设计类",
            "4":"招投标-其他服务",
        },
        APPRAISE_PURCHASE_TYPE_FZB:{
            "0":"询比价-物资类",
            "1":"询比价-施工类",
            "2":"询比价-服务类",
            "3":"自营专区",
            "4":"生活保障"
        },
    //    评级级别
        RATINGLEVEL:{
            "0":"普通",
            "1":"良好",
            "2":"优秀",
        },
        ACCOUNT_PROPERTY:{
            "DGFK":"对公付款",
            "DSFK":"对私付款",
        },
    };
    //数据适配方法
    util.dataAdapter = function (data,arr1,arr2,flag) {
        var dll = {};
        $.each(arr1,function (i,v1) {
            $.each(arr2,function (k,v2) {
                if(i === k){
                    dll[v1] = v2;
                }
            });
        });
        var str = JSON.stringify(data);
        var reg = eval('/('+arr1.join('|')+')/g');
        var result = str.replace(reg,function ($0,$1) {
            return dll[$1];
        });
        var last = '';
        if(flag === false){
            last =$.extend(true,data,JSON.parse(result));
        }else{
            last = JSON.parse(result);
        }
        return last;
    };
    //数据融合
    util.dataMix = function (obj1,obj2) {
        return $.extend(true,obj1,obj2);
    };
//购物车计算统一方法
    (function () {
        var fn = {};
        var data = {};
        var timer;
        $(document).on('click','.btn-compute',function (e) {
            e.preventDefault();
            var _this = $(this);
            var type = _this.data("click");
            data.ele = _this.closest('.content-compute');
            var input = data.ele.find('.input-compute').length === 0 ? data.ele.find('.input-changed') : data.ele.find('.input-compute');

            fn[type] ? fn[type](input) : console.log('未找到对应函数');
        });
        $(document).on('keyup','.input-compute,.input-changed',function (e) {
            e.preventDefault();
            var reg = /^[0]+/g;
            if(reg.test($(this).val())){
                $(this).val(1);
            }else{
                $(this).val(this.value.replace(/[^0-9]/g,''));
            }
        });
        $(document).on('input','.input-changed',function (e) {
            e.preventDefault();
            var _this = $(this);
            var value = _this.val();
            if('' === value){
                layer.msg('商品数量不能为空!');
            }else{
                var num = parseInt(value);
                if(0 === num){
                    layer.msg('商品数量不能为0!');
                }
                if(num >= 1){
                    data = {
                        ele:_this.closest('.content-compute'),
                        num:_this.val()
                    };
                    fn.publishGoods(data);
                }
            }
        });
        $(document).on('blur','.input-compute',function (e) {
            e.preventDefault();
            var _this = $(this);
            var value = _this.val();
            if('' === value){
                layer.msg('商品数量不能为空!');
                _this.val(1);
            }else{
                var num = parseInt(value);
                if(0 === num){
                    _this.val(1);
                }
            }
            data = {
                ele:_this.closest('.content-compute'),
                num:_this.val()
            };
            fn.publishGoods(data);
        });
        fn.minus = function (input) {
            if('' === input.val()){
                input.val(1);
                data.num = input.val();
                fn.publishGoods(data);
            }else{
                var num = parseInt(input.val());
                if (num > 1){
                    input.val(num - 1);
                    data.num = input.val();
                    fn.publishGoods(data);
                }
            }
        };
        fn.add = function (input) {
            if('' === input.val()){
                input.val(1);
                data.num = input.val();
                fn.publishGoods(data);
            }else{
                var num = parseInt(input.val());
                if(num === 999999){
                    layer.msg('超过最大限制!');
                }else{
                    input.val(num + 1);
                    data.num = input.val();
                    fn.publishGoods(data);
                }
            }
        };
        fn.publishGoods = function (data) {
            clearTimeout(timer);
            timer = setTimeout(function () {
                $.publish('goodsCompute',data);
            },500);
        }
    })();

    $.fn.bootstrapTableEx = function(opt){
        var defaults = {
            //data:[],
            method: 'post',           //请求方式(*)
            dataType: 'json',
            contentType: "application/x-www-form-urlencoded",//必须要有!!!!
            toolbar: '#toolbar',        //工具按钮用哪个容器
            striped: true,           //是否显示行间隔色
            cache: false,            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
            pagination: true,          //是否显示分页(*)
            sortable: true,           //是否启用排序
            sortStable: true,
            queryParamsType: '', //默认值为 'limit' ,在默认情况下 传给服务端的参数为:offset,limit,sort // 设置为 '' 在这种情况下传给服务器的参数为:pageSize,pageNumber
            minimumCountColumns: 2, //最少允许的列数
            locale:'zh-CN',//中文支持
            paginationLoop:false,
            paginationPreText: '上一页',
            paginationNextText: '下一页',
            sidePagination: "server",      //分页方式:client客户端分页,server服务端分页(*)
            silentSort:false,
            pageNo:1,            //初始化加载第一页,默认第一页
            pageSize: 10,            //每页的记录行数(*)
            pageList: [10, 25, 50, 100],    //可供选择的每页的行数(*)
            strictSearch: true,
            clickToSelect: false,        //是否启用点击选中行
            //height: 580,            //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
            cardView: false,          //是否显示详细视图
            detailView: false,          //是否显示父子表
            smartDisplay: true,// 智能显示 pagination 和 cardview 等
            responseHandler:function(res){
                if(res.respCode==="0000"){
                    return {
                        data:res.data.rows||[],
                        total:res.data.recordsTotal,
                    }
                }else{
                    layer.msg(res.respDesc,{time:2000});
                    return {
                        data:[],
                        total:0,
                    };
                }
            },
            formatLoadingMessage: function () {
                return "正在努力地加载数据中...";
            },
            formatNoMatches: function () { //没有匹配的结果
                return '没有找到匹配的记录';
            }
        };
        var option = $.extend({}, defaults, opt);
        $(this).bootstrapTable(option);
    };
    return util;
});

你可能感兴趣的:(util.js 常用)