dropDown.js 6.25 KB
require('../util/select2');

var $ = require('jquery');

var urlObj = {
    'supplier': '/supplier/supplier/getSupplierListByIdName',
    'brand': '/brand/getBrandNames',
    'managerName': '/supplier/storeadmin/managerName', //根据身份选择管理员
    'sortattribute': '/erpproduct/sortattribute/ajax/automatic', // 品类关联实物测量属性
    'sortsize': '/erpproduct/sortsize/ajax/automatic', //尺码模糊查询【验证通过】
    'queryBrand': '/goods/query/brand', //查询品牌列表接口
    'querySupplier': '/goods/query/supplier', //查询供应商列表接口
    'queryShop': '/goods/query/shop', // 查询店铺列表接口
    'queryShopPass': '/goods/query/shopPass', // 查询通过审核店铺列表接口
    'maxSort': '/goods/query/maxSort', //查询一级类目列表接口
    'shopsRest': '/ShopsRest/getShopsByName', // 店铺列表
    'xiangouID': '/limit/xiangouID/selectActivityListForSelect', //限购ID
    'sortsize2': '/erpproduct/sortsize/ajax/querySizeListBySortId4Html', //尺码
    'sortbybrand': '/goods/query/queryShopsByBrandId',
    'getjitSup': '/goods/query/getJitSupplierByBrandld',
    // 'getsort':'/goods/query/querySortBySmallSort',

    'sortlist': '/product/class/queryAllProductSortList',
    'productPool': '/runManage/subjectManage/queryBaseProductPoolListByName',
    'firstCategory': '/operations/helpcategory/getCategoryListByPid',
    'getByCategoryId': '/operations/helpcontent/getSecondCategoryList',
    'getAllHelpCategory': '/operations/helpcontent/getAllHelpCategory',
    'getHelpCategory': '/operations/helpcontent/getHelpCategory',
    'queryAll4Select': '/goods/brandSeries/queryAll4Select', //品牌款型系列

    'getSelectItems': '/meterManage/brand/getSelectItems',//品牌获取选择选项的枚举

    // 逛
    'guangGetAuthorList':'/guang/article/getAuthorList', // 逛-获取作者
    'guangGetSortList':'/guang/article/getSortList', // 逛-获取作者
    'guangGetTagCategoryByStatus':'/guang/tagSort/getTagItems',
    'guangCommentGetFilterItems':'/guang/comment/getItems', // 逛-评论列表-获取筛选条件
    'guangPlusSatrChannel':'/guang/plustarcategory/getCategoryNames', // 逛-plus star 频道
    'queryBrandByShopId': '/query/brandByshopId', //查询店铺下关联品牌
    'querySupplierByShopId': '/query/supplierByshopId' //查询店铺下关联供应商
};

var minimumResultsForSearch = ["sortbybrand", "getjitSup", "sortsize2"];

var dropDown = function(option) {
    new dropDown.prototype.init(option);
}

dropDown.prototype = {
    constructor: dropDown,
    init: function(_option) {
        var option = {
            el: '.select2-offscreen',
            url: urlObj[_option.ajax]
        };
        for (var i in _option) {
            if (_option.hasOwnProperty(i)) {
                option[i] = _option[i];
            }
        }
        if (minimumResultsForSearch.indexOf(_option.ajax) > -1) {
            option.minimumResultsForSearch = Infinity
        }
        if (option.ajax) {
            var defaultName="请选择";
            if($(option.el).val()==-1){
                defaultName=$(option.el).find("option[value='-1']").text()
            }
            if(option.hash){
                if($(option.el).val()==null){
                    
                    var name=option.el.replace(/\.|#/g,'');
                    var arr=location.hash.replace(/^#/,'').split("&&");
                    var map={};
                    arr.forEach(function(item){
                        var _a=item.split('=');
                        if(_a&&_a[0]){
                            map[_a[0]]=_a[1];
                        }
                    });

                    var id=map[name];
                    var text=map[name+"Name"];
                    $(option.el).html('');
                    $(option.el).append("<option value="+id+" >"+text+"</option>");
                }
                $(document).on("change",option.el,function(){
                    var name=option.el.replace(/\.|#/g,'');
                    var id=$(option.el).val();
                    var text=$(option.el).find("option[value='"+id+"']").text();
                    var arr=location.hash.replace(/^#/,'').split("&&");
                    var map={};
                    arr.forEach(function(item){
                        var _a=item.split('=');
                        if(_a&&_a[0]){
                            map[_a[0]]=_a[1];
                        }
                    });
                    map[name]=id;
                    map[name+"Name"]=text;
                    var urlHash = '';
                    $.each(map, function(key, value) {
                        if (value || value == '0') {
                            urlHash += key + '=' + value + '&&';
                        }
                    });
                    location.hash = urlHash;
                });
            }

            $(option.el).select2({
                minimumResultsForSearch: option.minimumResultsForSearch || 0,
                ajax: {
                    url: option.url,
                    dataType: 'json',
                    type: 'POST',
                    delay: 250,
                    data: function(params) {

                        var param = {};
                        if (Object.prototype.toString.call(option.params) == "[object Function]") {
                            param = option.params();
                        } else {
                            param = option.params;
                        }
                        var data = $.extend({}, {
                            idName: params.term
                        }, param || {});
                        return data;
                    },
                    processResults: function(data, params) {
                        params.page = params.page || 1;
                        data.data.data.unshift({
                            id: '-1',
                            text: defaultName
                        });
                        return {
                            results: data.data.data
                        }
                    },
                    cache: true
                }
            });
            

        } else {
            $(option.el).select2();
        }
    }
}
dropDown.prototype.init.prototype = dropDown.prototype;

module.exports = dropDown;