var selectList = [];
var specialId = "";
var removeList = [];
layui.use(['table', 'form'], function () {

    let table = layui.table;
    let form = layui.form;
    //表格初始化
    table.render({
        elem: '#lay-table' //表格id
        , url: ctxPath + '/specialJob/getMsgContent' //接口地址
        , method: 'post' //方式默认是get
        , where: {} //post请求必须加where ，post请求需要的参数
        , toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
        , defaultToolbar: []
        , title: '首页消息表'
        , cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
        , cols: [[
            //normal（常规列，无需设定）、checkbox（复选框列）、space（空列）、numbers（序号列）
            {type: 'checkbox', title: '复选框',field: 'allCheck',width: "5%"}//序号列
            , {type: 'numbers', title: '序号', width: "10%"}//序号列
            , {field: 'combinName', align: 'center', title: '套餐名称'}
            , {field: 'combinType', align: 'center', title: '套餐内容'}
            , {field: 'combinPrice', width: 120, align: 'center', title: '套餐价格'}
        ]]
        , id: 'menuTable'
        ,done: function (res, curr, count) {
            var state = "";
            for (var i in res.data) {
                var item = res.data[i];
                //特殊工种 后台数据赋值
                if(item.status === '1'){
                    selectList.push(item);
                }
                for (let j = 0; j < removeList.length; j++) {
                    for (let k = 0; k < selectList.length; k++) {
                        if (removeList[j].id === selectList[k].id){
                            removeByValue(selectList,selectList[k].id);
                        }
                    }
                }
                for (let j = 0; j < selectList.length; j++) {
                    if (item.id == selectList[j].id){
                        res.data[i]["LAY_CHECKED"] = true;
                        $('tr[data-index=' + i + '] input[typ' + 'e="checkbox"]').prop('checked', true);
                        $('tr[data-index=' + i + '] input[type="checkbox"]').next().addClass('layui-form-checked');
                        state = "1";// 隐藏表头全选判断状态
                        form.render();// 重新渲染一下
                    }else {
                        res.data[i]["LAY_CHECKED"] = false;
                        $('tr[data-index=' + i + '] input[typ' + 'e="checkbox"]').prop('checked', false);
                        $('tr[data-index=' + i + '] input[type="checkbox"]').next().removeClass('layui-form-checked');
                        state = "1";// 隐藏表头全选判断状态
                        form.render();// 重新渲染一下
                    }
                }
            }
        }
        , page: true
        , loading: true //数据加载中。。。
        , limits: [5, 10, 20,50,100]  //一页选择显示3,5或10条数据
        , limit: 10  //一页显示5条数据
        , response: {
            statusCode: 200 //规定成功的状态码，默认：0
        }
        , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据，res为从url中get到的数据
            let result;
            if (res.data !== '' && res.data != null && res.data !== "null") {
                if (this.page.curr) {
                    result = res.data.slice(this.limit * (this.page.curr - 1), this.limit * this.page.curr);
                } else {
                    result = res.data.slice(0, this.limit);
                }
            }
            return {
                "code": res.code, //解析接口状态
                "msg": res.msg, //解析提示文本
                "count": res.count, //解析数据长度
                "data": result, //解析数据列表
            };
        }
    });

    // 监听表格头部工具栏事件
    table.on('toolbar(table-temp)', obj => {
        var id = obj.config.id;
        var checkStatus = table.checkStatus(id);
        switch (obj.event) {
            case 'searchBt':
                var keyWord = $("#keyWord").val();
                var specialIds = $("#specialPost").val();
                table.reload('menuTable', {
                    url: ctxPath + '/specialJob/getMsgContent'
                    , method: 'post' //方式默认是get
                    , page: true
                    , where: {
                        keyWord: keyWord,
                        specialId:specialId
                    } //设定异步数据接口的额外参数
                });
                /**二次赋值-- 点击搜索按钮之后会进行一次刷新操作*/
                $("#keyWord").val(keyWord);
                break;


            case 'saveBt':
                var finalValue = layui.table.checkStatus('menuTable').data;
                var id = "";
                for (let i = 0; i < finalValue.length; i++) {
                    id += finalValue[i].id +',';
                }
                id = id.substring(0,id.length-1);
                if (isNull(id)){
                    layer.msg("请先勾选需要配置的套餐",{icon:0,time:1500});
                }else {
                    ajaxCommonMethods('/specialJob/addInfo',{'id': id,"specialId":specialId},"保存成功","保存失败","1");
                }

                break;
            default:
                layer.msg("头部(head)工具栏-意外的指令:" + obj.event);
        }
    });


    //checkbox 点击事件
    table.on('checkbox(table-temp)', function (obj) {
        var is_all= obj.type === 'all' ? true : false;//是否全选
        if (is_all) {
            selectList = [];
            selectList = layui.table.checkStatus('menuTable').data;
        }else {
            if (obj.checked === true) {
                var tempList = [];
                selectList.push(obj.data);
                for (var i=0; i<selectList.length;i++){
                    if (obj.data.id != selectList[i].id){
                        tempList.push(selectList[i]);
                    }
                }
                selectList = tempList;
                selectList.push(obj.data);
                tempList = [];
            } else {
                removeList.push(obj.data);
                removeByValue(selectList, obj.data.id);
            }
        }
        form.render('checkbox');
    });

});

/**
 * 获取checkBox所有选中的值
 */
function getValue(){
    return layui.table.checkStatus('menuTable').data;
}

/**
 * 构建对象
 * @param id
 * @param value
 */
function setCheckUNData(id, value) {
    var obj = {};
    obj.id = id;
    obj.value = value;
    return obj;
}

//自定义方法，根据值去移除
function removeByValue(arr, val) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].id === val) {
            arr.splice(i, 1);
            break;
        }
    }
}
