| /** 级联选择器模块 date:2020-03-11   License By http://easyweb.vip */ | 
| layui.define(['jquery'], function (exports) { | 
|     var $ = layui.jquery; | 
|     if ($('#ew-css-cascader').length <= 0) { | 
|         layui.link(layui.cache.base + 'cascader/cascader.css'); | 
|     } | 
|     var onVisibleChangeList = [];  // 所有展开和关闭回调 | 
|   | 
|     var cascader = { | 
|         /* 初始化 */ | 
|         render: function (param) { | 
|             // 默认参数 | 
|             var defaultOptions = { | 
|                 renderFormat: function (labels, values) { | 
|                     return labels.join(' / '); | 
|                 }, | 
|                 clearable: true, | 
|                 clearAllActive: false, | 
|                 disabled: false, | 
|                 trigger: 'click', | 
|                 changeOnSelect: false, | 
|                 filterable: false, | 
|                 notFoundText: '没有匹配数据' | 
|             }; | 
|             param = $.extend(defaultOptions, param); | 
|             var elem = param.elem;  // 目标元素 | 
|             var mDataList = param.data;  // 数据 | 
|             var renderFormat = param.renderFormat;  // 选择后用于展示的函数 | 
|             var clearable = param.clearable;  // 是否支持清除 | 
|             var clearAllActive = param.clearAllActive;  // 清除所有选中 | 
|             var disabled = param.disabled;  // 是否禁用 | 
|             var trigger = param.trigger;  // 次级菜单触发方式 | 
|             var changeOnSelect = param.changeOnSelect;  // 是否点击每项选项值都改变 | 
|             var reqData = param.reqData;  // 自定义获取数据的方法 | 
|             var filterable = param.filterable;  // 是否开启搜索 | 
|             var notFoundText = param.notFoundText;  // 搜索列表为空时显示的内容 | 
|             var reqSearch = param.reqSearch;  // 自定义搜索的方法 | 
|             var onChange = param.onChange;  // 数据选择完成的回调 | 
|             var onVisibleChange = param.onVisibleChange;  // 展开和关闭弹窗时触发 | 
|             var itemHeight = param.itemHeight;  // 下拉列表每一项高度 | 
|             var isFirst = true; | 
|             // 如果渲染过重新渲染 | 
|             var $elem = $(elem); | 
|             if ($elem.next().hasClass('ew-cascader-group')) { | 
|                 $elem.next().remove(); | 
|                 for (var i = 0; i < onVisibleChangeList.length; i++) { | 
|                     if (elem == onVisibleChangeList[i].elem) { | 
|                         onVisibleChangeList.splice(i, 1); | 
|                         break; | 
|                     } | 
|                 } | 
|             } | 
|             onVisibleChangeList.push({elem: elem, onVisibleChange: onVisibleChange}); | 
|             $elem.addClass('ew-cascader-hide'); | 
|             var htmlStr = '<div class="ew-cascader-group">'; | 
|             htmlStr += '      <div class="ew-cascader-input-group">'; | 
|             htmlStr += '         <input class="layui-input ew-cascader-input" readonly/>'; | 
|             htmlStr += '         <input class="layui-input ew-cascader-input-search"/>'; | 
|             htmlStr += '         <i class="layui-icon layui-icon-triangle-d ew-icon-arrow"></i>'; | 
|             htmlStr += '         <i class="layui-icon layui-icon-loading-1 layui-anim layui-anim-rotate layui-anim-loop ew-icon-loading"></i>'; | 
|             htmlStr += '         <i class="layui-icon layui-icon-close-fill ew-icon-clear"></i>'; | 
|             htmlStr += '      </div>'; | 
|             htmlStr += '      <div class="ew-cascader-dropdown layui-anim layui-anim-upbit"></div>'; | 
|             htmlStr += '      <div class="ew-cascader-search-list"></div>'; | 
|             htmlStr += '   </div>'; | 
|             $elem.after(htmlStr); | 
|   | 
|             var $cascader = $elem.next(); | 
|             var $inputGroup = $cascader.children('.ew-cascader-input-group'); | 
|             var $input = $inputGroup.children('.ew-cascader-input'); | 
|             var $inputSearch = $inputGroup.children('.ew-cascader-input-search'); | 
|             var $dropdown = $cascader.children('.ew-cascader-dropdown'); | 
|             var $search = $cascader.children('.ew-cascader-search-list'); | 
|   | 
|             $input.attr('placeholder', $elem.attr('placeholder')); | 
|             disabled && $input.addClass('layui-disabled'); | 
|   | 
|             // 构建渲染后的实例 | 
|             var _instance = { | 
|                 data: mDataList, | 
|                 getData: function () { | 
|                     return mDataList; | 
|                 }, | 
|                 /* 展开 */ | 
|                 open: function () { | 
|                     if ($cascader.hasClass('ew-cascader-open')) { | 
|                         return; | 
|                     } | 
|                     cascader.hideAll(); | 
|                     $cascader.addClass('ew-cascader-open'); | 
|                     cascader.checkWidthPosition($dropdown);  // 溢出屏幕判断 | 
|                     cascader.checkHeightPosition($dropdown);  // 溢出屏幕判断 | 
|                     onVisibleChange && onVisibleChange(true);  // 展开回调 | 
|                     if (filterable) {  // 如果开启搜索功能让输入框获取焦点 | 
|                         $inputGroup.addClass('show-search'); | 
|                         $inputSearch.focus(); | 
|                     } | 
|                 }, | 
|                 /* 关闭 */ | 
|                 hide: function () { | 
|                     if (!$cascader.hasClass('ew-cascader-open')) { | 
|                         return; | 
|                     } | 
|                     $cascader.removeClass('ew-cascader-open'); | 
|                     $cascader.removeClass('dropdown-show-top'); | 
|                     $cascader.removeClass('dropdown-show-left'); | 
|                     cascader.hideAllSearch(); | 
|                     onVisibleChange && onVisibleChange(false);  // 关闭回调 | 
|                 }, | 
|                 /* 移除加载中的状态*/ | 
|                 removeLoading: function () { | 
|                     $cascader.removeClass('show-loading'); | 
|                     $dropdown.find('.ew-cascader-dropdown-list-item').removeClass('show-loading'); | 
|                 }, | 
|                 /* 设置禁用状态 */ | 
|                 setDisabled: function (dis) { | 
|                     disabled = dis; | 
|                     if (dis) { | 
|                         $input.addClass('layui-disabled'); | 
|                         _instance.hide(); | 
|                     } else { | 
|                         $input.removeClass('layui-disabled'); | 
|                     } | 
|                 }, | 
|                 /* 获取值*/ | 
|                 getValue: function () { | 
|                     return $elem.val(); | 
|                 }, | 
|                 /* 获取label */ | 
|                 getLabel: function () { | 
|                     return $input.val(); | 
|                 }, | 
|                 /* 设置值*/ | 
|                 setValue: function (value) { | 
|                     if (value == undefined || value == null || !value.toString()) { | 
|                         $input.val(''); | 
|                         $elem.val(''); | 
|                         if (clearAllActive || changeOnSelect) {  // 清除所有 | 
|                             $dropdown.children('.ew-cascader-dropdown-list').not(':first').remove(); | 
|                             $dropdown.find('.ew-cascader-dropdown-list-item').removeClass('active'); | 
|                             cascader.checkWidthPosition($dropdown);  // 溢出屏幕判断 | 
|                         } else {  // 仅清除最后一项 | 
|                             $dropdown.find('.ew-cascader-dropdown-list-item.is-last').removeClass('active'); | 
|                         } | 
|                         $inputGroup.removeClass('show-clear'); | 
|                         return; | 
|                     } | 
|                     value = value.toString().split(','); | 
|                     var labels = []; | 
|   | 
|                     // 通过递归控制异步加载回显默认值对应label时的请求顺序 | 
|                     function doReqData(tValues, data, i, values, callback) { | 
|                         if (!tValues && data) { | 
|                             tValues = []; | 
|                             setData(data); | 
|                         } else if (tValues && data && data.children) { | 
|                             setData(data.children); | 
|                         } else {  // 数据不存在时才去请求数据 | 
|                             $cascader.addClass('show-loading'); | 
|                             reqData(tValues, function (dataList) { | 
|                                 if (tValues) { | 
|                                     data.children = dataList; | 
|                                 } else { | 
|                                     mDataList = dataList; | 
|                                     tValues = []; | 
|                                 } | 
|                                 setData(dataList); | 
|                             }, data); | 
|                         } | 
|   | 
|                         function setData(dataList) { | 
|                             for (var j = 0; j < dataList.length; j++) { | 
|                                 if (dataList[j].value == values[i]) { | 
|                                     labels[i] = dataList[j].label; | 
|                                     tValues[i] = dataList[j].value; | 
|                                     if (i < values.length - 1) { | 
|                                         doReqData(tValues, dataList[j], i + 1, values, callback); | 
|                                     } else { | 
|                                         callback(); | 
|                                     } | 
|                                     break; | 
|                                 } | 
|                             } | 
|                         } | 
|                     } | 
|   | 
|                     doReqData(undefined, mDataList, 0, value, function () { | 
|                         $cascader.removeClass('show-loading'); | 
|                         $input.val(renderFormat(labels, value)); | 
|                         $elem.val(value.join(',')); | 
|                     }); | 
|                 } | 
|             }; | 
|   | 
|             // 回显初始值 | 
|             _instance.setValue($elem.val()); | 
|   | 
|             // 点击展开/关闭下拉列表 | 
|             $inputGroup.off('click').on('click', function (e) { | 
|                 // 判断是否是禁用状态 | 
|                 if ($input.hasClass('layui-disabled')) { | 
|                     return; | 
|                 } | 
|                 // 判断是否是加载中状态 | 
|                 if ($cascader.hasClass('show-loading')) { | 
|                     return; | 
|                 } | 
|                 // 关闭 | 
|                 if ($cascader.hasClass('ew-cascader-open')) { | 
|                     if (!filterable) {  // 是否开启搜索功能 | 
|                         _instance.hide(); | 
|                     } | 
|                     return; | 
|                 } | 
|                 // 展开 | 
|                 if (isFirst) {  // 第一次展开渲染第一列数据 | 
|                     if (mDataList) { | 
|                         isFirst = false; | 
|                         renderList($dropdown, mDataList, undefined, itemHeight); | 
|                         initLabel(); | 
|                         _instance.open(); | 
|                     } else {  // 异步方式 | 
|                         $cascader.addClass('show-loading'); | 
|                         reqData(undefined, function (dataList) { | 
|                             isFirst = false; | 
|                             mDataList = dataList; | 
|                             renderList($dropdown, dataList, undefined, itemHeight); | 
|                             $cascader.removeClass('show-loading'); | 
|                             _instance.open(); | 
|                         }, undefined); | 
|                     } | 
|                 } else { | 
|                     initLabel(); | 
|                     _instance.open(); | 
|                 } | 
|   | 
|                 // 回显上次选中项 | 
|                 function initLabel() { | 
|                     var value = $elem.val().toString(); | 
|                     if (value) { | 
|                         value = value.split(','); | 
|                         for (var i = 0; i < value.length; i++) { | 
|                             var $item = $dropdown.children('.ew-cascader-dropdown-list').eq(i).children('.ew-cascader-dropdown-list-item[data-value="' + value[i] + '"]'); | 
|                             if (i == value.length - 1) { | 
|                                 $item.addClass('active'); | 
|                             } else { | 
|                                 $item.trigger('click'); | 
|                             } | 
|                         } | 
|                     } else { | 
|                         _instance.setValue(); | 
|                     } | 
|                 } | 
|             }); | 
|             $inputGroup.children('.ew-icon-arrow').off('click').on('click', function (e) { | 
|                 if ($cascader.hasClass('ew-cascader-open')) { | 
|                     _instance.hide(); | 
|                     e.stopPropagation(); | 
|                 } | 
|             }); | 
|   | 
|             // 点击渲染次级列表 | 
|             $dropdown.off('click').on('click', '.ew-cascader-dropdown-list-item', function () { | 
|                 var $this = $(this); | 
|                 // 防止重复点击 | 
|                 if ($this.hasClass('active')) { | 
|                     if ($this.hasClass('is-last')) { | 
|                         _instance.hide(); | 
|                     } | 
|                     return; | 
|                 } | 
|                 // 判断是否是禁用状态 | 
|                 if ($this.hasClass('ew-cascader-disabled')) { | 
|                     return; | 
|                 } | 
|                 // 判断是否是加载中状态 | 
|                 if ($this.parent().parent().find('.ew-cascader-dropdown-list-item').hasClass('show-loading')) { | 
|                     return; | 
|                 } | 
|                 var index = $this.data('index').toString(); | 
|                 var indexList = index.split('-'); | 
|                 var data = mDataList[parseInt(indexList[0])], values = [data.value], labels = [data.label]; | 
|                 for (var i = 1; i < indexList.length; i++) { | 
|                     data = data.children[parseInt(indexList[i])]; | 
|                     values[i] = data.value; | 
|                     labels[i] = data.label; | 
|                 } | 
|                 if (data.haveChildren) {  // 非最后一项 | 
|                     if (data.children) {  // 数据方式或已经异步加载直接渲染 | 
|                         $this.parent().nextAll().remove(); | 
|                         cascader.checkWidthPosition($dropdown);  // 检查是否溢出屏幕 | 
|                         activeThis(); | 
|                         renderList($dropdown, data.children, index, itemHeight); | 
|                     } else {  // 异步方式先请求数据再渲染 | 
|                         $this.addClass('show-loading'); | 
|                         reqData(values, function (dataList) { | 
|                             data.children = dataList; | 
|                             $this.parent().nextAll().remove(); | 
|                             cascader.checkWidthPosition($dropdown);  // 检查是否溢出屏幕 | 
|                             activeThis(); | 
|                             renderList($dropdown, dataList, index, itemHeight); | 
|                             $this.removeClass('show-loading'); | 
|                         }, data); | 
|                     } | 
|                     // 点击非最后一项也触发选中 | 
|                     if (changeOnSelect) { | 
|                         activeThis(); | 
|                         doChange(); | 
|                     } | 
|                 } else {  // 最后一项 | 
|                     $this.parent().nextAll().remove(); | 
|                     activeThis(); | 
|                     doChange(); | 
|                     _instance.hide();  // 选中后关闭 | 
|                 } | 
|   | 
|                 /* 选中当前 */ | 
|                 function activeThis() { | 
|                     $this.parent().children('.ew-cascader-dropdown-list-item').removeClass('active'); | 
|                     $this.addClass('active'); | 
|                 } | 
|   | 
|                 /* 触发选中回调 */ | 
|                 function doChange() { | 
|                     $input.val(renderFormat(labels, values));  // 赋值label | 
|                     $elem.val(values.join(','));  // 赋值value | 
|                     $elem.removeClass('layui-form-danger');  // 移除表单验证 | 
|                     onChange && onChange(values, data);  // 选中回调 | 
|                 } | 
|             }); | 
|   | 
|             // hover方式触发 | 
|             if (trigger == 'hover') { | 
|                 $dropdown.off('mouseenter').on('mouseenter', '.ew-cascader-dropdown-list-item', function () { | 
|                     if (!$(this).hasClass('is-last')) { | 
|                         $(this).trigger('click'); | 
|                     } | 
|                 }); | 
|             } | 
|   | 
|             // 开启清除功能 | 
|             if (clearable) { | 
|                 $inputGroup.off('mouseenter').on('mouseenter', function () { | 
|                     if ($elem.val().toString() && !$input.hasClass('layui-disabled')) { | 
|                         $(this).addClass('show-clear'); | 
|                     } | 
|                 }); | 
|                 $inputGroup.off('mouseleave').on('mouseleave', function () { | 
|                     $(this).removeClass('show-clear'); | 
|                 }); | 
|                 // 点击清除 | 
|                 $inputGroup.children('.ew-icon-clear').off('click').on('click', function (e) { | 
|                     e.stopPropagation(); | 
|                     _instance.setValue(); | 
|                     onChange && onChange();  // 选中回调 | 
|                 }); | 
|             } | 
|   | 
|             // 开启搜索功能 | 
|             if (filterable) { | 
|                 $inputSearch.off('input').on('input', function () { | 
|                     var value = $(this).val(); | 
|                     if (!value) { | 
|                         $cascader.removeClass('show-search-list'); | 
|                         $inputGroup.removeClass('have-value'); | 
|                         return; | 
|                     } | 
|                     $inputGroup.addClass('have-value'); | 
|                     if (reqSearch) {  // 异步搜索 | 
|                         reqSearch(value, function (rsList) { | 
|                             // 渲染搜索结果 | 
|                             renderSearchList($search, rsList, notFoundText); | 
|                             $cascader.addClass('show-search-list'); | 
|                         }, mDataList); | 
|                     } else {  // 前端搜索 | 
|                         var allList = [], rsList = []; | 
|   | 
|                         // 把树形list转一维list | 
|                         function toAllList(arr, label, value, disabled) { | 
|                             for (var i = 0; i < arr.length; i++) { | 
|                                 var item = arr[i]; | 
|                                 item.__label = label ? label + ' / ' + item.label : item.label; | 
|                                 item.__value = value ? value + ',' + item.value : item.value; | 
|                                 item.__disabled = item.disabled ? item.disabled : disabled; | 
|   | 
|                                 if (item.children && item.children.length) { | 
|                                     toAllList(item.children, item.__label, item.__value, item.__disabled); | 
|                                     delete item.__label; | 
|                                     delete item.__value; | 
|                                 } else { | 
|                                     allList.push({ | 
|                                         label: item.__label, | 
|                                         value: item.__value, | 
|                                         disabled: item.__disabled | 
|                                     }); | 
|                                 } | 
|                             } | 
|                         } | 
|   | 
|                         toAllList(mDataList); | 
|   | 
|                         // 过滤数据 | 
|                         for (var i = 0; i < allList.length; i++) { | 
|                             var item = allList[i]; | 
|                             if (item.label.indexOf(value) > -1) { | 
|                                 item.label = item.label.replace(new RegExp(value, 'g'), '<span class="search-keyword">' + value + '</span>'); | 
|                                 rsList.push(item); | 
|                             } | 
|                         } | 
|                         // 渲染搜索结果 | 
|                         renderSearchList($search, rsList, notFoundText); | 
|                         $cascader.addClass('show-search-list'); | 
|                     } | 
|                 }); | 
|                 $search.off('click').on('click', '.ew-cascader-search-list-item', function (e) { | 
|                     e.stopPropagation(); | 
|                     if ($(this).hasClass('ew-cascader-disabled')) {  // 是否禁用 | 
|                         return; | 
|                     } | 
|                     var value = $(this).data('value').toString(); | 
|                     _instance.hide(); | 
|                     _instance.setValue(value); | 
|                     var values = value.split(','); | 
|                     var data = _instance.getData(); | 
|                     for (var i = 0; i < values.length; i++) { | 
|                         for (var j = 0; j < data.length; j++) { | 
|                             if (data[j].value == values[i]) { | 
|                                 if (i === values.length - 1) { | 
|                                     data = data[j]; | 
|                                 } else { | 
|                                     data = data[j].children; | 
|                                 } | 
|                                 break; | 
|                             } | 
|                         } | 
|                     } | 
|                     onChange && onChange(values, data);  // 选中回调 | 
|                 }); | 
|             } | 
|   | 
|             return _instance; | 
|         }, | 
|         /** 关闭所有 */ | 
|         hideAll: function () { | 
|             cascader.hideAllSearch(); | 
|             for (var i = 0; i < onVisibleChangeList.length; i++) { | 
|                 var elem = onVisibleChangeList[i].elem; | 
|                 var onVisibleChange = onVisibleChangeList[i].onVisibleChange; | 
|                 var $cascader = $(elem).next(); | 
|                 if ($cascader.hasClass('ew-cascader-open')) { | 
|                     $cascader.removeClass('ew-cascader-open'); | 
|                     $cascader.removeClass('dropdown-show-top'); | 
|                     $cascader.removeClass('dropdown-show-left'); | 
|                     onVisibleChange && onVisibleChange(false); | 
|                 } | 
|             } | 
|         }, | 
|         /** 关闭所有搜索面板 */ | 
|         hideAllSearch: function () { | 
|             $('.ew-cascader-input-group').removeClass('show-search'); | 
|             $('.ew-cascader-group').removeClass('show-search-list'); | 
|             $('.ew-cascader-input-group').removeClass('have-value'); | 
|             $('.ew-cascader-input-search').val(''); | 
|         }, | 
|         /* 获取浏览器高度 */ | 
|         getPageHeight: function () { | 
|             return document.documentElement.clientHeight || document.body.clientHeight; | 
|         }, | 
|         /* 获取浏览器宽度 */ | 
|         getPageWidth: function () { | 
|             return document.documentElement.clientWidth || document.body.clientWidth; | 
|         }, | 
|         /* 检查宽度是否溢出屏幕 */ | 
|         checkWidthPosition: function ($dropdown) { | 
|             if ($dropdown.offset().left + $dropdown.outerWidth() > cascader.getPageWidth()) { | 
|                 $dropdown.parent().addClass('dropdown-show-left'); | 
|             } else { | 
|                 $dropdown.parent().removeClass('dropdown-show-left'); | 
|             } | 
|         }, | 
|         /* 检查高度是否溢出屏幕 */ | 
|         checkHeightPosition: function ($dropdown) { | 
|             if ($dropdown.offset().top + $dropdown.outerHeight() > cascader.getPageHeight()) { | 
|                 $dropdown.parent().addClass('dropdown-show-top'); | 
|                 if ($dropdown.offset().top < 0) { | 
|                     $dropdown.parent().removeClass('dropdown-show-top'); | 
|                 } | 
|             } | 
|         } | 
|     }; | 
|   | 
|     /* 处理省市区数据,value变中文 */ | 
|     cascader.getCityData = function (data) { | 
|         for (var i = 0; i < data.length; i++) { | 
|             data[i].value = data[i].label; | 
|             if (data[i].children) { | 
|                 data[i].children = cascader.getCityData(data[i].children); | 
|             } | 
|         } | 
|         return data; | 
|     }; | 
|   | 
|     /* 处理省市区数据,不要区域 */ | 
|     cascader.getCity = function (data) { | 
|         for (var i = 0; i < data.length; i++) { | 
|             for (var j = 0; j < data[i].children.length; j++) { | 
|                 delete data[i].children[j].children; | 
|             } | 
|         } | 
|         return data; | 
|     }; | 
|   | 
|     /* 处理省市区数据,只要省 */ | 
|     cascader.getProvince = function (data) { | 
|         for (var i = 0; i < data.length; i++) { | 
|             delete data[i].children; | 
|         } | 
|         return data; | 
|     }; | 
|   | 
|     /** 渲染列表 */ | 
|     var renderList = function ($dropdown, dataList, pIndex, itemHeight) { | 
|         var style = itemHeight ? ' style="height:' + itemHeight + ';"' : ''; | 
|         var htmlStr = '<div class="ew-cascader-dropdown-list" ' + style + '>'; | 
|         for (var i = 0; i < dataList.length; i++) { | 
|             var item = dataList[i]; | 
|             var index = pIndex == undefined ? i : (pIndex + '-' + i); | 
|             if (item.haveChildren == undefined) { | 
|                 item.haveChildren = item.children ? true : false; | 
|             } | 
|             var className = item.haveChildren ? '' : ' is-last';  // 是否是叶子节点 | 
|             item.disabled && (className += ' ew-cascader-disabled');  // 是否禁用 | 
|             htmlStr += '   <div class="ew-cascader-dropdown-list-item' + className + '" data-index="' + index + '" data-value="' + item.value + '">' + item.label + '<i class="layui-icon layui-icon-right ew-icon-right"></i><i class="layui-icon layui-icon-loading-1 layui-anim layui-anim-rotate layui-anim-loop ew-icon-loading"></i></div>'; | 
|         } | 
|         htmlStr += '   </div>'; | 
|         $dropdown.append(htmlStr); | 
|         cascader.checkWidthPosition($dropdown);  // 检查是否溢出屏幕 | 
|     }; | 
|   | 
|     /** 渲染搜索列表 */ | 
|     var renderSearchList = function ($search, dataList, notFoundText) { | 
|         var htmlStr = ''; | 
|         if (dataList.length == 0) { | 
|             htmlStr = '<div class="ew-cascader-search-list-empty">' + notFoundText + '</div>'; | 
|         } else { | 
|             for (var i = 0; i < dataList.length; i++) { | 
|                 var item = dataList[i]; | 
|                 var className = item.disabled ? ' ew-cascader-disabled' : '';  // 是否禁用 | 
|                 htmlStr += '<div class="ew-cascader-search-list-item' + className + '" data-value="' + item.value + '">' + item.label + '</div>'; | 
|             } | 
|         } | 
|         $search.html(htmlStr); | 
|     }; | 
|   | 
|     // 点击空白区域关闭下拉列表 | 
|     $(document).off('click.cascader').on('click.cascader', function (e) { | 
|         try { | 
|             var classNames = e.target.className.split(' '); | 
|             var cascaders = ['ew-cascader-group', 'ew-cascader-input', 'ew-icon-arrow', 'ew-cascader-dropdown', 'ew-cascader-dropdown-list', 'ew-cascader-dropdown-list-item', 'ew-icon-right', 'ew-cascader-input-search', 'ew-cascader-search-list', 'ew-cascader-search-list-item']; | 
|             for (var i in classNames) { | 
|                 for (var j in cascaders) { | 
|                     if (classNames[i] == cascaders[j]) { | 
|                         return; | 
|                     } | 
|                 } | 
|             } | 
|         } catch (e) { | 
|         } | 
|         cascader.hideAll(); | 
|     }); | 
|   | 
|     exports('cascader', cascader); | 
| }); |