var personName;
var  table;
var personIdArray = [];
layui.use(['table', 'layer', 'laydate', 'jquery', 'form'], function () {
    table = layui.table;
    var laydate = layui.laydate;
    let form = layui.form;
    //渲染table
    table.render({
        elem: '#demo'
        , url: ctxPath + '/retirement/getMsgContent' //数据接口
        , method: 'post' //方式默认是get
        , toolbar: 'default' //开启工具栏，此处显示默认图标，可以自定义模板，详见文档
        , where: {"higherJob":"0"} //post请求必须加where ，post请求需要的参数
        , cellMinWidth: 80
        , cols: [[ //表头
            {type: 'checkbox', title: '复选框',field: 'allCheck',width: 50}//序号列
            , {field: 'personName', width:100 ,align: 'center', title: '姓名'}
            ,{field: 'idNumber', align: 'center',width : 220,title: '身份证号码',templet:function(res){
                    return res.idNumber + "\t";
                }}
            , {field: 'age', width: 80, align: 'center', title: '年龄'}
            , {field: 'sex', width: 80, align: 'center', title: '性别'}
            , {field: 'phone', width: 150, align: 'center', title: '联系方式'}
            , {field: 'department', width: 240, align: 'center', title: '部门'}
            , {field: 'reservationTime', width: 150, align: 'center', title: '预约体检时间'}
            , {field: 'name', width: 200, align: 'center', title: '预约医院'}
            , {field: 'operateTime', width: 130, align: 'center', title: '操作时间'}
            , {field: 'operatePerson', width: 120, align: 'center', title: '操作人员'}

                , {fixed: 'right', title: '操作', width: 100, align: 'center', toolbar: '#toolsBar'}
        ]]
        ,done: function (res, curr, count) {
            var state = "";
            for (var i in res.data) {
                var item = res.data[i];
                /**
                 * 初始化数据表格赋值
                 */
                if (!isNull(item.reservationTime) ){
                    res.data[i]["LAY_CHECKED"] = false;
                    $('tr[data-index=' + i + '] input[type="checkbox"]').prop('disabled', true);
                    // $('tr[data-index=' + i + '] input[type="checkbox"]').prop('checked', false);
                 //   $('tr[data-index=' + i + '] input[type="checkbox"]').next().addClass('layui-form-checked');
                    state = "1";// 隐藏表头全选判断状态
                    form.render();// 重新渲染一下
                }
                 for (var j in personIdArray) {
                     if(personIdArray[j].personId == res.data[i].personId){
                         res.data[i]["LAY_CHECKED"] = true;
                         $('tr[data-index=' + i + '] input[type="checkbox"]').prop('checked', true);
                         $('tr[data-index=' + i + '] input[type="checkbox"]').next().addClass('layui-form-checked');
                     }
                 }

            };
        }
        , id: 'menuTable'
        , page: true //开启分页
        , loading: true //数据加载中。。。
        , limits: [5, 10, 20]  //一页选择显示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, //解析数据列表
            };
        },

        toolbar: "#toolbar"
    });

    // 行工具事件
    table.on('tool(test)', function (obj) {
        var data = obj.data //获得当前行数据
        var layEvent = obj.event; //获得 lay-event 对应的值
        var id = data.reservationId
        if (layEvent === 'edit') {
            openForm(id);
        }
    });
    table.on('checkbox(test)', function (obj) {
       // console.log(obj);
        //当前页面数据
        var thisPageData = table.cache.menuTable;//当前页面数据
        //one 单条数据 all全选
        var checkType = obj.type;
        //  true选择 false取消
        var isCheck = obj.checked;
        if(checkType == "one"){
            var personId = obj.data.personId;
            var personData = obj.data;
            if(isCheck){
                personIdArray.push(personData);

                personIdArray = personIdArray.filter(function (element, index, self) {
                    return self.indexOf(element) === index;
                });
            }else{
                personIdArray = personIdArray.filter(function(item) {
                    return item.personId !== personId;
                });
            }
        }else{
            if(isCheck){
                for (var i in thisPageData) {
                    var item = thisPageData[i];
                    /**
                     * 初始化数据表格赋值
                     */
                    if (!isNull(item.reservationTime) ){
                        item["LAY_CHECKED"] = false;
                        $('tr[data-index=' + i + '] input[type="checkbox"]').prop('disabled', true);
                        $('tr[data-index=' + i + '] input[type="checkbox"]').next().removeAttr('layui-form-checked');
                        form.render();// 重新渲染一下
                    }else{
                        personIdArray.push(item);
                    }

                };
                personIdArray = repeatArray(personIdArray);
                console.log("personIdArray="+JSON.stringify(personIdArray));
            }else{
                //thisPageData
                var itemArray = [];
                for (var i in thisPageData) {
                    var item = thisPageData[i];
                    var personId = item.personId;
                    for (var j in personIdArray) {
                        if(personId == personIdArray[j].personId){
                            itemArray.push(personIdArray[j])
                        }
                    }
                }
                personIdArray = personIdArray.filter(v => !itemArray.some((item) => item === v))
                personIdArray = repeatArray(personIdArray);

                console.log("personIdArray="+JSON.stringify(personIdArray))
            }
        }

    });

    //头监听事件 -- checkBox 选中行和选中条数
    table.on('toolbar(test)', function (obj) {
        // 获取当前表格被选中的记录对象，返回数据
        var checkStatus = table.checkStatus(obj.config.id);
        //获取事件名，执行对应的代码
        var eventName = obj.event;
        switch (eventName) {
            case "searchBt":
                personName = $("#personName").val();
                var selectVal = $("#higherJob").val();
                table.reload('menuTable', {
                    url: ctxPath + '/retirement/getMsgContent'
                    , method: 'post' //方式默认是get
                    , page: true
                    , where: {
                        personName: personName,
                        "higherJob":$("#higherJob").val()
                    } //设定异步数据接口的额外参数
                });

                $("#higherJob").val(selectVal);
                $("#personName").val(personName);
                break;

            case "searchBat":
                var data = personIdArray;
                //console.log("personIdArray="+JSON.stringify(personIdArray))
                if(data.length <1){
                    layer.msg("请选择预约人员");
                    break;
                }
                addFlow(data);
                break;
        }
    });



});

function addFlow(data) {
    var personData = dataHandle(data);
    if(personData !={} && personData !="{}"){

        var manNum = personData.manNum;
        var womenNum = personData.womenNum;
        var idStr = personData.idStr;

        let height = '550px';
        let width = '800px';
        var tts = "预约";
        let index = layer.open({
            title: [tts,'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
            type: 2,
            content: './retirementForm.html',
            area: [width, height],
            maxmin: false,
            btn: ['确定', '关闭'],
            success: function (layero, index) {
                var myIframe = window[layero.find('iframe')[0]['name']];
                var body=layer.getChildFrame('body',index);//少了这个是不能从父页面向子页面传值的
                body.contents().find("#manNumStr").html("套餐男："+manNum+"人");
                body.contents().find("#womenNumStr").html(" 套餐女："+womenNum+"人");
                body.contents().find("#personId").val(idStr);
                body.contents().find("#manNum").val(manNum);
                body.contents().find("#womenNum").val(womenNum);
                body.contents().find("#higherJob").val($("#higherJob").val());
            },
            yes: function (index, layero) {
                personIdArray = [];
                //提交子页面时执行
                // 获取弹出层中的form表单元素
                var formSubmit = layer.getChildFrame('form', index);
                // 查找class样式为submitBtn的按钮
                let submited = formSubmit.find('button.subBtn');
                // 触发点击事件，会对表单进行验证，验证成功则提交表单，失败则返回错误信息
                submited.click();
            },
            btn2: function (index, layero) {
            },
            end:function () {
                personName = $("#personName").val();
                var selectVal = $("#higherJob").val();
                table.reload('menuTable', {
                    url: ctxPath + '/retirement/getMsgContent'
                    , method: 'post' //方式默认是get
                    , page: true
                    , where: {
                        personName: personName,
                        "higherJob":$("#higherJob").val()
                    } //设定异步数据接口的额外参数
                });

                $("#higherJob").val(selectVal);
                $("#personName").val(personName);
            }
        });
    }

}

function dataHandle(data) {
    var personData = {};
    var manNum = 0;
    var womenNum = 0;
    var idStr = "";
    for (var i=0;i<data.length;i++){
        let sex = data[i].sex;
        let id = data[i].personId;
        if(sex == "男"){
            manNum ++;
        }else{
            womenNum ++;
        }
        if(i==0){
            idStr += id;
        }else{
            idStr +=","+id;
        }
    }
    personData = {
        manNum:manNum,
        womenNum:womenNum,
        idStr:idStr
    }
    return personData;
}

/**
 * 修改功能
 */
function openForm(id){
    layer.open({
        content: '是否确认取消预约？?'
        ,btn: ['确认', '返回']
        ,yes: function(index, layero){
            $.ajax({
                type: 'post',
                async: false, // 默认异步true,false表示同步
                url: ctxPath + '/retirement/cancelReservation', // 请求地址
                dataType: 'json', // 服务器返回数据类型
                data: {"id":id,
                    ifCancel:"1"}, //获取提交的表单字段
                success: function (data) {
                    var count = data.count;//1数据已存在，2数据添加成功，3数据添加失败
                    if(count ==1){
                        layer.msg("取消预约成功！", {icon: 1});
                        setTimeout(function () {
                            personName = $("#personName").val();
                            var selectVal = $("#higherJob").val();
                            table.reload('menuTable', {
                                url: ctxPath + '/retirement/getMsgContent'
                                , method: 'post' //方式默认是get
                                , page: true
                                , where: {
                                    personName: personName,
                                    "higherJob":$("#higherJob").val()
                                } //设定异步数据接口的额外参数
                            });

                            $("#higherJob").val(selectVal);
                            $("#personName").val(personName);
                        },1500)
                    }else{
                        layer.msg("取消预约失败！", {icon: 2});
                    }

                },
                error: function (XMLHttpRequest, textStatus, e) {
                    layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
                }
            });
        }
        ,btn2: function(index, layero){
        }
        ,cancel: function(){
        }
    });
}

// 对象数组去重
function repeatArray(arr) {
    let list = [];
    return arr.filter((item) => !list.includes(item.personId) && list.push(item.personId));
}