likTools

//上传图片
function likUpload($el) {
    (function ajaxSubmit($el) {
        var token = Admin.get_token();
        $el.upload({
            url: SERVER_URL + '/task/uploadattch',
            // 其他表单数据
            params: {
                token: token
            },
            // 上传完成后, 返回json, text
            dataType: 'json',
            onSend: function (obj, str) {
                var extStart = str.lastIndexOf(".");
                var ext = str.substring(extStart, str.length).toUpperCase();
                if (ext != ".BMP" && ext != ".PNG" && ext != ".GIF" && ext != ".JPG" && ext != ".JPEG") {
                    alert("图片限于bmp,png,gif,jpeg,jpg格式");
                    return false;
                } else {
                    return true;
                }
            },
            // 上传之后回调
            onComplate: function (data) {
                $el.parent().before('<li><input class="hide_input" type="file"/><img class="img_src" imgurl="' + data.imgurl + '" src="' + SERVER_URL + data.imgurl + '"/><i class="del_img">-</i></li>');
            },
            onProgress: function (e) {
                var per = Math.round(e.loaded * 100 / e.total);
                $('.complete').css('width', per + '%')
            }
        });
        $el.upload("ajaxSubmit");
    })($el);
}

//自动生成编号

//	tree list  客户分类
function tree_list(datalist) {
    var html = '';
    $.each(datalist, function (index, data) {
        html += '<ul class="hr_ul1 change">';
        //			html += '<li class="hr_left_1" cusSortId="' + data["id"] + '"><span>' + data['name'] + ' <em class="list_num_null">(<i>'+data['children'].length+'</i>)</em></span></li>';
        html += '<li class="hr_left_1" cussortid="' + data["id"] + '"><span>' + data['name'] + ' <em class="list_num_null">(<i></i>)</em></span></li>';
        if (data['children'] && data['children'].length > 0) {
            html += tree_list(data['children'])
        }
        html += '</li>';
        html += '</ul>'
    });
    return html
}

// 左侧列表终极版
function tree_list_close(datalist, deep) {
    var html = '';
    deep++;
    $.each(datalist, function (index, data) {
        html += '<ul class="hr_ul1 ' + (data['count'] == 0 ? 'none oth' : '') + '" ' + (deep == 1 ? '' : 'style="display: none;"') + '>' + (data['count'] == 0 ? '' : '<i class="nav_arrow"></i>') + '';
//			html += '<li class="hr_left_1" cusSortId="' + data["id"] + '"><span>' + data['name'] + ' <em class="list_num_null">(<i>'+data['children'].length+'</i>)</em></span></li>';
        html += '<li class="hr_left_1 ' + (data['count'] == 0 ? 'none' : '') + '" cusSortId="' + data["id"] + '"><span>' + data['name'] + ' <em class="' + (data['count'] == 0 ? 'none' : '') + '">(<i>' + data['count'] + '</i>)</em></span></li>';
        if (data['children'] && data['children'].length > 0) {
            html += tree_list_close(data['children'], deep)
        }
        html += '</li>';
        html += '</ul>'
    });
    return html
}

//	dialog tree list  弹窗
function tree_list_dialog(datalist, deep) {
    var html = '';
    $.each(datalist, function (index, data) {
        var html_i_list_before = '<i class="list_before_span"></i>';
        html += '<ul class="ul1">';
        for (var j = 0; j < deep; j++) {
            html_i_list_before += '<i class="list_before_span"></i>'
        }
        html += '<li class="left_1" cussortid = "' + data["id"] + '">' + html_i_list_before + '<span class="icon_open change_ba"></span><span class="icon_file"></span><span class="list_msg">' + data['name'] + '</span></li>';
        if (data['children'] && data['children'].length > 0) {
            html += tree_list_dialog(data['children'], deep + 1);
        }
        html += '</li>';
        html += '</ul>'
    });
    return html
}

//	dialog tree list choose dept  选择部门  多选
function tree_list_choose_dept(datalist, deep) {
    var html = '';
    $.each(datalist, function (index, data) {
        var html_i_list_before = '<i class="list_before_span"></i>';
        html += '<ul class="ul1">';
        for (var j = 0; j < deep; j++) {
            html_i_list_before += '<i class="list_before_span"></i>'
        }
        html += '<li class="left_1" deptchosenid = "' + data["id"] + '">' + html_i_list_before + '<span class="icon_open change_ba"></span><span class="icon_file"></span><span class="list_msg">' + data['name'] + '</span><span class="list_check"><em></em></span></li>';
        if (data['children'] && data['children'].length > 0) {
            html += tree_list_choose_dept(data['children'], deep + 1);
        }
        html += '</ul>';
    });
    return html
}

//	dialog tree list person  选择人员  单选
function tree_list_person(datalist, deep) {
    var html = '';
    $.each(datalist, function (index, data) {
        var html_i_list_before = '<i class="list_before_span"></i>';
        html += '<ul class="ul1">';
        for (var j = 0; j < deep; j++) {
            html_i_list_before += '<i class="list_before_span"></i>'
        }
        html += '<li class="left_1" cussortid = "' + data["id"] + '">' + html_i_list_before + '<span class="icon_open"></span><span class="icon_file"></span><span class="list_msg">' + data['name'] + '</span></li>';
        html += '<ul class="ul3">';
        if (data['children'] && data['children'].length > 0) {
            html += tree_list_person(data['children'], deep + 1);
        }
        $.each(data['user_info'], function (index2, data2) {
            var html_i_list_before = '<i class="list_before_span"></i>';
            for (var j = 0; j < deep + 1; j++) {
                html_i_list_before += '<i class="list_before_span"></i>'
            }
            html += '<li class="left_2 person_left_nav" userinfoid="' + data2['id'] + '">' + html_i_list_before + '<span class="list_msg">' + data2['name'] + ' </span></li>'
        })

        html += '</li>';
        html += '</ul>';
        html += '</ul>'
    });
    return html
}

//左侧有限循环树结构 - 包含部门和成员 - 终极版
function tree_list_dept_person(datalist) {
    var html = '';
    var bm_count = datalist['rows'].length;
    $.each(datalist['rows'], function (index, data_list) {

        if (data_list['children'].length > 0 || data_list['user_info'].length > 0) {
            html += '<ul class="hr_ul1 change"><i class="nav_arrow nav_arrow_active"></i>';
        } else {
            html += '<ul class="change"><i class="nav_arrow nav_arrow_active"></i>';
        }
        html += '<li class="hr_left_1" deepid="top_1" id="' + data_list['id'] + '"><span>' + data_list['name'] + '</span></li>';

        if (data_list['children'] && data_list['children'].length > 0) {
            bm_count += data_list['children'].length;
            $.each(data_list['children'], function (v, bmlist) {

                if (bmlist['children'].length > 0 || bmlist['user_info'].length > 0) {
                    html += '<ul class="hr_ul1 change"><i class="nav_arrow nav_arrow_active"></i>';
                } else {
                    html += '<ul class="change"><i class="nav_arrow nav_arrow_active"></i>';
                }

                html += '<li class="hr_left_1" deepid="top_2" id="' + bmlist['id'] + '"><span>' + bmlist['name'] + '</span></li>';

                if (bmlist['children'] && bmlist['children'].length > 0) {
                    bm_count += bmlist['children'].length;
                    $.each(bmlist['children'], function (i, last_list) {

                        if (last_list['children'].length > 0 || last_list['user_info'].length > 0) {
                            html += '<ul class="hr_ul1 change"><i class="nav_arrow nav_arrow_active"></i>';
                        } else {
                            html += '<ul class="change"><i class="nav_arrow nav_arrow_active"></i>';
                        }
                        html += '<li class="hr_left_1" id="' + last_list['id'] + '"><span>' + last_list['name'] + '</span></li>';
                        html += '</ul>'
                    })

                }
                html += '<ul>'
                if (bmlist['user_info'] && bmlist['user_info'].length > 0) {
                    $.each(bmlist['user_info'], function (index3, data3) {

                        html += '<li class="hr_left_bmyg2" manid="' + data3['id'] + '"> <span>' + data3['name'] + ' </span></li>';
                    })
                }
                html += '</ul>'
                html += '</ul>'
            })

        }
        html += '<ul>'
        if (data_list['user_info'] && data_list['user_info'].length > 0) {
            $.each(data_list['user_info'], function (index2, data2) {

                html += '<li class="hr_left_bmyg2" deepid="top_2" manid="' + data2['id'] + '"> <span>' + data2['name'] + ' </span></li>'
            })
        }

        html += '</ul>'
        html += '</ul>'

    })
    html += '<ul>'
    $.each(datalist['list'], function (r, vlist) {

        html += '<li class="hr_left_bmyg2" deepid="top_1" manid="' + vlist['id'] + '"> <span>' + vlist['name'] + ' </span></li>'

    })
    html += '</ul>'
    datalist['bm_count'] = bm_count;
    return html;
}

//	dialog tree list choose dept_person  选择部门下人员  多选
function tree_list_choose_dept_person(datalist, deep) {
    var html = '';
    $.each(datalist, function (index, data) {
        var html_i_list_before = '<i class="list_before_span"></i>';
        html += '<ul class="ul1">';
        for (var j = 0; j < deep; j++) {
            html_i_list_before += '<i class="list_before_span"></i>'
        }
        html += '<li class="left_1" deptchosenid = "' + data["id"] + '">' + html_i_list_before + '<span class="icon_open change_ba"></span><span class="icon_file"></span><span class="list_msg">' + data['name'] + '</span><span class="list_check"><em></em></span></li>';
        if (data['children'] && data['children'].length > 0) {
            html += tree_list_choose_dept_person(data['children'], deep + 1);
        }
        html += '<ul class="ul3" style="display:block;">';
        $.each(data['user_info'], function (index2, data2) {
            var html_i_list_before = '<i class="list_before_span"></i>';
            for (var j = 0; j < deep + 1; j++) {
                html_i_list_before += '<i class="list_before_span"></i>'
            }
            html += '<li class="left_2 person_left_nav li_person" userinfoid="' + data2['id'] + '">' + html_i_list_before + '<span class="list_msg">' + data2['name'] + ' </span><span class="list_check"><em></em></span></li>'
        });
        html += '</ul>';
        html += '</ul>';
    });
    return html
}

// 部门id和名字关联
function getDataArr(key, val) {
    // 定义空json数组
    var newArr = [];
    // 切割字符串
    var keyArr = key.split(',');
    var valArr = val.split('、');
    // 循环
    $.each(keyArr, function (index, value) {
        newArr.push({'title': keyArr[index], 'val': valArr[index]});
    });
    // 返回json数组
    return newArr
}

//返回值为空字符串或为空则用“ - ”代替函数
function likNullData(data) {
    var newData = '';
    if (data === '' || data == null || data.length == 0) {
        newData = ' - ';
    } else {
        newData = data;
    }
    return newData;
}

//js实现数组转换成json
function arrayToJson(o) {
    var r = [];
    if (typeof o == "string") return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
    if (typeof o == "object") {
        if (!o.sort) {
            for (var i in o)
                r.push("\"" + i + "\"" + ":" + arrayToJson(o[i]));
            if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
                r.push("toString:" + o.toString.toString());
            }
            r = "{" + r.join() + "}";
        } else {
            for (var i = 0; i < o.length; i++) {
                r.push(arrayToJson(o[i]));
            }
            r = "[" + r.join() + "]";
        }
        return r;
    }
    return o.toString();
}

//金额转换
function moneyToFixed(money) {
    return money.toFixed(2);
}

//	补零函数
function l_dbl(x) {
    return x < 10 ? '0' + x : x
}

//获取当前系统时间
function getCurrentDate() {
    var oDate = new Date();
    var sTime = '';
    sTime = oDate.getFullYear() + '-' + l_dbl(oDate.getMonth() + 1) + '-' + l_dbl(oDate.getDate()) + '   ' + l_dbl(oDate.getHours()) + ':' + l_dbl(oDate.getMinutes()) + ':' + l_dbl(oDate.getSeconds());
    return sTime
}

//获取当前系统时间 - 短
function getCurrentDateShort() {
    var oDate = new Date();
    var sTime = '';
    sTime = oDate.getFullYear() + '-' + l_dbl(oDate.getMonth() + 1) + '-' + l_dbl(oDate.getDate());
    return sTime
}

//自动生成编号函数
function likGetCodeFn(arg) {
    var needCode = '';
    $.ajax({
        url: SERVER_URL + '/admin/autoload',
        type: 'GET',
        data: {token: token, args: arg},
        async: false,
        dataType: 'json',
        success: function (oE) {
            if (oE.code == 0) {
                needCode = oE['data'];
            }
        },
        error: function () {
            alert('编号生成编号失败,请重试!');
            return false;
        }
    });
    return needCode;
}

// json数组去重
function getJsonArr(arr) {
    //定义需要的空数组
    var newArr = [];
    //定义转换字符串后的数组
    var newStringArr = [];
    $.each(arr, function (i, v) {
        var sArr = JSON.stringify(v);
        if ($.inArray(sArr, newStringArr) == -1 && sArr.indexOf('null') == -1) {
            // 根据字符串数组push对象
            newStringArr.push(sArr);
            newArr.push(v)
        }
    });
    return newArr;
}

// json数组去重 - 某一项不考虑
function getJsonArrIgnore(arr, ignore) {
    //定义需要的空数组
    var newArr = [];
    //定义转换字符串后的数组
    var newStringArr = [];
    $.each(arr, function (i, v) {
        var sIgnore = v[ignore];
        v[ignore] = '';
        var sArr = JSON.stringify(v);
        if ($.inArray(sArr, newStringArr) == -1) {
            // 根据字符串数组push对象
            newStringArr.push(sArr);
            newArr.push(v);
            v[ignore] = sIgnore;
        }
    });
    return newArr;
}

//字符串转数组去重
function getStringArr(str) {
    if (str == null) {
        return;
    } else {
        var arr = str.split('、');
        var newArr = [];
        $.each(arr, function (i, v) {
            if ($.inArray(v, newArr) == -1) {
                newArr.push(v);
            }
        });
        var newStr = newArr.join('、');
        return newStr;
    }

}

// 分页函数
function list_table_render_pagination(pag_block_class, params_data, get_list_fun, total_count, item_count, param_url) {
    likTableHeadFixed(pag_block_class);
    $(window).resize(function () {
        likTableHeadFixed(pag_block_class);
        $(pag_block_class).closest('.lik_table_wrap').find('.table-container').trigger('scroll');
    });
    // config
    var pagination_block_class = pag_block_class + ' ';
    var top_class = pagination_block_class;
    var _params = params_data;
    var _get_list = get_list_fun;

    // end config
    total_count = parseInt(total_count);
    var page = parseInt(_params['page']);
    var numOld = (_params['num']) ? (_params['num']) : (_params['limit']);
    var num = parseInt(numOld);

    var total_page_count = Math.ceil(total_count / num);
    $(pag_block_class).html('<span>显示行数</span>\
        <div class="inline_block select_mormal">\
        <input type="text" class="select_input" value="' + num + '">\
        <ul class="select_list select_list_to_top">\
        <li>5</li>\
        <li>10</li>\
        <li>15</li>\
        <li>20</li>\
        </ul>\
        <i></i>\
        </div>\
        <span>' + ((page - 1) * num + 1) + '-' + (page * num) + '条/共' + total_count + '条</span>\
        <div class="fenye_btn first_page_valid"><span></span></div>\
        <div class="fenye_btn prev_page_valid"><span></span></div>\
        <span class="page_box on">1</span>\
        <span class="page_box">2</span>\
        <span class="page_box">3</span>\
        <span class="page_box">4</span>\
        <div class="fenye_btn next_page_valid"><span></span></div>\
        <div class="fenye_btn last_page_valid"><span></span></div>');
    $(top_class + '.select_list li').unbind('click').bind('click', function () {
        $(this).parent().parent().children(".select_input").val($(this).text());
        _params['num'] = $(this).text();
        _params['limit'] = $(this).text();
        _params['page'] = 1;
        _get_list(param_url);
    });
    //如果第一页则disable首页和上一页
    if (page == 1 && total_page_count == 1) {
        $(top_class + '.fenye_btn').eq(0).removeClass('first_page_valid').addClass('first_page_invalid');
        $(top_class + '.fenye_btn').eq(1).removeClass('prev_page_valid').addClass('prev_page_invalid');
        $(top_class + '.fenye_btn').eq(2).removeClass('next_page_valid').addClass('next_page_invalid');
        $(top_class + '.fenye_btn').eq(3).removeClass('last_page_valid').addClass('last_page_invalid');
    } else if (page == 1) {
        $(top_class + '.fenye_btn').eq(0).removeClass('first_page_valid').addClass('first_page_invalid');
        $(top_class + '.fenye_btn').eq(1).removeClass('prev_page_valid').addClass('prev_page_invalid');
        $(top_class + '.fenye_btn').eq(2).removeClass('next_page_invalid').addClass('next_page_valid');
        $(top_class + '.fenye_btn').eq(3).removeClass('last_page_invalid').addClass('last_page_valid');
    } else if (page == total_page_count) {
        $(top_class + '.fenye_btn').eq(0).removeClass('first_page_invalid').addClass('first_page_valid');
        $(top_class + '.fenye_btn').eq(1).removeClass('prev_page_invalid').addClass('prev_page_valid');
        $(top_class + '.fenye_btn').eq(2).removeClass('next_page_valid').addClass('next_page_invalid');
        $(top_class + '.fenye_btn').eq(3).removeClass('last_page_valid').addClass('last_page_invalid');
    } else {
        $(top_class + '.fenye_btn').eq(0).removeClass('first_page_invalid').addClass('first_page_valid');
        $(top_class + '.fenye_btn').eq(1).removeClass('prev_page_invalid').addClass('prev_page_valid');
        $(top_class + '.fenye_btn').eq(2).removeClass('next_page_invalid').addClass('next_page_valid');
        $(top_class + '.fenye_btn').eq(3).removeClass('last_page_invalid').addClass('last_page_valid');
    }

    if (total_page_count >= 4 && page >= 3) {
        if (total_page_count - page >= 2) {
            $(top_class + '.page_box').eq(0).text(page - 1).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(1).text(page).css('display', 'inline-block').addClass('on');
            $(top_class + '.page_box').eq(2).text(page + 1).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(3).text(page + 2).css('display', 'inline-block').removeClass('on');
        } else if (total_page_count - page == 1) {
            $(top_class + '.page_box').eq(0).text(page - 2).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(1).text(page - 1).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(2).text(page).css('display', 'inline-block').addClass('on');
            $(top_class + '.page_box').eq(3).text(page + 1).css('display', 'inline-block').removeClass('on');

        } else if (total_page_count - page == 0) {
            $(top_class + '.page_box').eq(0).text(page - 3).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(1).text(page - 2).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(2).text(page - 1).css('display', 'inline-block').removeClass('on');
            $(top_class + '.page_box').eq(3).text(page).css('display', 'inline-block').addClass('on');

        }
    } else {
        for (var i = 1; i <= total_page_count; i++) {
            $(top_class + '.page_box').eq(i - 1).text(i).css('display', 'inline-block').removeClass('on');
        }
        for (; i <= 4; i++) {
            $(top_class + '.page_box').eq(i - 1).css('display', 'none').removeClass('on');
        }
        $(top_class + '.page_box').eq(page - 1).addClass('on');
    }
    $(top_class + '.f_color.mLR_5:eq(0)').text(item_count);
    $(top_class + '.f_color.mLR_5:eq(1)').text(total_page_count);
    $(top_class + '.fenye_btn').eq(0).unbind('click').bind('click', function () {
        if ($(this).hasClass('first_page_invalid')) return false;
        _params['page'] = 1;
        _get_list(param_url);
    });
    $(top_class + '.fenye_btn').eq(1).unbind('click').bind('click', function () {
        if ($(this).hasClass('prev_page_invalid')) return false;
        _params['page'] = page == 1 ? 1 : page - 1;
        _get_list(param_url);
    });
    $(top_class + '.fenye_btn').eq(2).unbind('click').bind('click', function () {
        if ($(this).hasClass('next_page_invalid')) return false;
        _params['page'] = page == total_page_count ? total_page_count : page + 1;
        _get_list(param_url);
    });
    $(top_class + '.fenye_btn').eq(3).unbind('click').bind('click', function () {
        if ($(this).hasClass('last_page_invalid')) return false;
        _params['page'] = total_page_count;
        _get_list(param_url);
    });

    //表头固定需要用到
    $(window).trigger('resize');

    $(top_class + '.page_box').unbind('click').bind('click', function () {
        var page = $(this).text();
        if (page == '...') {
            return;
        }
        _params['page'] = page;
        _get_list(param_url);
        return false;
    });
}

//固定表头
function likTableHeadFixed(wrapClass) {
    $(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul').remove();
    $(wrapClass).closest('.lik_table_wrap').closest('div').css('position', 'relative');
    var $_curTable = $(wrapClass).closest('.lik_table_wrap').find('table');
    var likHtml = '';
    var likC = '';
    var likClassNone = '';
    $.each($(wrapClass).closest('.lik_table_wrap').find('table thead th'), function (i, v) {
        if ($_curTable.find('thead th').eq(i).attr('class')) {
            likC = $_curTable.find('thead th').eq(i).attr('class');
        } else {
            likC = '';
        }
        //火狐th宽度有小数
        $(wrapClass).closest('.lik_table_wrap').find('table thead th').eq(i).width(parseFloat($(wrapClass).closest('.lik_table_wrap').find('table thead th').eq(i).width()));
        likHtml += '<li class="' + likC + '">' + ($_curTable.find('thead th').eq(i).html()) + '</li>';
    });
    $('<ul/>').addClass('lik_table_ul').html(likHtml).width($_curTable.width()).prependTo($_curTable.closest('.lik_table_wrap'));
    for (var i = 0, leng = $(wrapClass).closest('.lik_table_wrap').find('table thead th').length; i < leng; i++) {
        $(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(i).width($(wrapClass).closest('.lik_table_wrap').find('table thead th').eq(i).width());
        if ($(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(i).width() == 0) {
            $(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(i).remove();
            i--;
        }
    }
    $(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(i).width($(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(i).width() - 2);
    $(wrapClass).closest('.lik_table_wrap').find('.table-container').scroll(function () {
        $(wrapClass).closest('.lik_table_wrap').find('ul.lik_table_ul').css('left', -$(this).scrollLeft());
    });
}

//选择查看项函数
function likShow(tableId, lookAbledField, lookAbledUlId, lookAbledSaveId, lookAbledResetId) {
    var aTh = $(tableId).find('thead th');
    var aThText = [];
    $.each(aTh, function (i, v) {
        aThText.push(v.innerText)
    });
    $.each(lookAbledField, function (i, v) {
        v.index = $.inArray(v['field'], aThText)
    });
    var html = '';
    $.each(lookAbledField, function (i, v) {
        if (v["index"] == -1) return true;
        html += '<li class="l-li-b drag" lookindex="' + v["index"] + '"><input type="checkbox" checked><p class="z-d-l">' + v["field"] + '</p></li>'
    });
    $(lookAbledUlId).html(html);
    likDragSort(lookAbledUlId);
    $(".l-li-b").unbind('click').bind("click", function (e) {
        if ($(this).find("input").attr("checked") == 'checked') {
            $(this).find("input").attr("checked", null);
        } else {
            $(this).find("input").attr("checked", "checked");
        }
    });
    $(lookAbledSaveId).unbind('click').bind('click', function () {
        for (var i = 0; i < $(lookAbledUlId).find('input[type="checkbox"]').length; i++) {
            if ($(lookAbledUlId).find('input[type="checkbox"]').eq(i).prop('checked') == false) {
                var index = parseInt($(lookAbledUlId).find('input[type="checkbox"]').eq(i).parents('li').attr('lookindex'));
                for (var j = 0; j < $(tableId).find('tr').length; j++) {
                    $(tableId).find('tr').eq(j).children().eq(index).addClass('none');
                    $(tableId).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(index).addClass('none');
                }
            } else {
                var index = parseInt($(lookAbledUlId).find('input[type="checkbox"]').eq(i).parents('li').attr('lookindex'));
                for (var j = 0; j < $(tableId).find('tr').length; j++) {
                    $(tableId).find('tr').eq(j).children().eq(index).removeClass('none');
                    $(tableId).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(index).removeClass('none');
                }
            }
        }
        $(".ckx_btn").trigger("click");
        $(".closeckx_cont").trigger("click");
        //表格重新循环
        $.each($(tableId).find('thead tr th'), function (i, v) {
            $(tableId).closest('.lik_table_wrap').find('ul.lik_table_ul li').eq(i).width($(tableId).find('thead tr th').eq(i).width());
        });
        $(window).trigger('resize');
    });
    $(lookAbledResetId).unbind('click').bind('click', function () {
        for (var i = 0; i < $(lookAbledUlId).find('input[type="checkbox"]').length; i++) {
            $(lookAbledUlId).find('input[type="checkbox"]').eq(i).prop('checked', true)
        }
    })
}

//拖拽
function likDragSort(ulId) {
    $(ulId).DDSort({
        target: 'li',		// 示例而用,默认即 li,
        delay: 100,         // 延时处理,默认为 50 ms,防止手抖点击 A 链接无效
        floatStyle: {
            'border': '1px solid #ccc',
            'background-color': '#fff'
        }
    });
}

  

基于模拟退火的计算器 在线运行 访问run.bcjh.xyz。 先展示下效果 https://pan.quark.cn/s/cc95c98c3760 参见此仓库。 使用方法(本地安装包) 前往Releases · hjenryin/BCJH-Metropolis下载最新 ,解压后输入游戏内校验码即可使用。 配置厨具 已在2.0.0弃用。 直接使用白菜菊花代码,保留高级厨具,新手池厨具可变。 更改迭代次数 如有需要,可以更改 中39行的数字来设置迭代次数。 本地编译 如果在windows平台,需要使用MSBuild编译,并将 改为ANSI编码。 如有条件,强烈建议这种本地运行(运行可加速、可多次重复)。 在 下运行 ,是游戏中的白菜菊花校验码。 编译、运行: - 在根目录新建 文件夹并 至build - - 使用 (linux) 或 (windows) 运行。 最后在命令行就可以得到输出结果了! (注意顺序)(得到厨师-技法,表示对应新手池厨具) 注:linux下不支持多任务选择 云端编译已在2.0.0弃用。 局限性 已知的问题: - 无法得到最优解! 只能得到一个比较好的解,有助于开阔思路。 - 无法选择菜品数量(默认拉满)。 可能有一定门槛。 (这可能有助于防止这类辅助工具的滥用导致分数膨胀? )(你问我为什么不用其他语言写? python一个晚上就写好了,结果因为有涉及json读写很多类型没法推断,jit用不了,算这个太慢了,所以就用c++写了) 工作原理 采用两层模拟退火来最大化总能量。 第一层为三个厨师,其能量用第二层模拟退火来估计。 也就是说,这套方法理论上也能算厨神(只要能够在非常快的时间内,算出一个厨神面板的得分),但是加上厨神的食材限制工作量有点大……以后再说吧。 (...
VulCan资产安全管理系统是一个基于Python微服务架构的综合性网络安全管理系统,主要用于企业资产探测、漏洞扫描和定时安全监控。该系统采用模块化设计和事件驱动架构,能够高效地管理网络资产并识别潜在安全风险,是网络安全领域的重要工具。 系统核心功能包括资产探测、漏洞扫描和定时扫描三大模块。资产探测模块能够自动发现网络中的主机、服务和端口,建立完整的资产清单;漏洞扫描模块利用多种扫描引擎对资产进行安全检测,识别常见漏洞和配置问题;定时扫描模块支持自定义扫描任务,实现自动化安全监控。系统还提供了用户友好的Web界面,便于管理员查看扫描结果、管理任务和生成报告。 技术架构方面,VulCan系统采用Python作为主要开发语言,后端基于Flask框架构建RESTful API,前端使用现代Web技术实现交互界面。系统采用微服务架构,各功能模块独立部署,通过消息队列进行通信,提高了系统的可扩展性和可靠性。Celery作为分布式任务队列,处理耗时的扫描任务;MongoDB存储扫描结果和配置数据;Redis作为缓存和消息代理,优化系统性能。 设计模式应用上,系统采用了工厂模式实现扫描引擎的灵活扩展,单例模式确保关键组件的唯一性,观察者模式处理事件通知和日志记录。这些设计模式的应用提高了代码的可维护性和系统的稳定性。 应用场景广泛,VulCan系统适用于各类企业的网络安全管理工作,特别是IT部门、安全运维团队和渗透测试人员。系统可以帮助企业建立资产台账,定期进行安全评估,及时发现和修复漏洞,符合网络安全法规要求。对于计算机科学和软件工程专业的毕业设计,该项目提供了完整的系统设计和实现案例,包含源码和详细文档,是学习和研究网络安全系统开发的优质资源。 资源包含完整的毕业设计论文和系统源码,论文详细阐述了系统需求分析、架构设计、模块实现和测试验证过程,源码结构清晰,注释完整,便于学
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值