var idNumber;
var loadingMsg;
var trainFileNames = [];
var trainFilePaths = [];
var examFileNames = [];
var examFilePaths = [];
var assignmentTypeStatus = "";

var workTypeValue = "";
var workMethodValue = "";
var controlLevelValue = "";
var riskLevelValue = "";
var controlMethodsValue = "";
var isSupportValue = "";
layui.use(['layer', 'form', 'upload','laydate'], function () {
    var laydate = layui.laydate;
    var upload1 = layui.upload;
    var upload2 = layui.upload;
    var form = layui.form;
    var layer = layui.layer;


    //按钮样式
    btnStyle();

    // 渲染开始时间选择器
    laydate.render({
        elem: '#planStartTime',
        type: 'datetime',
        format: 'yyyy-MM-dd HH:mm',
        fullPanel: true,
        done: function(value) {
            // 当选择开始时间大于结束时间，将结束时间置为空
            var statrTime = value;
            var endTime= $("#planEndTime").val();
            if (statrTime != '') {
                if (endTime != '') {
                    if (statrTime > endTime) {
                        $("#planEndTime").val('');
                    }
                }
            }

            // 当选择开始时间后，更新结束时间选择器的最小值
            // 当选择开始时间后，更新结束时间选择器的最小值
            var endTimePicker = laydate.render({
                elem: '#planEndTime',
                type: 'datetime',
                format: 'yyyy-MM-dd HH:mm',
                fullPanel: true,
                // 将开始时间作为结束时间选择器的最小值，包括时分
                min: value,
                // 设置结束日期最大值为下个月的最后一天
                max: getNextMonthLastDay(),
                done: function(value) {
                    var startTime = $("#planStartTime").val();
                    if (startTime != '' && value != '') {
                        if (value < startTime) {
                            $("#planStartTime").val('');
                        }
                    }
                }
            });
        },
        // 设置开始日期最小值为下个月的第一天
        min: getNextMonthFirstDay(),
        // 设置开始日期最大值为下个月的最后一天
        max: getNextMonthLastDay()
    });

    // 渲染结束时间选择器
    laydate.render({
        elem: '#planEndTime',
        type: 'datetime',
        format: 'yyyy-MM-dd HH:mm',
        fullPanel: true,
        // 设置结束日期最小值为下个月的第一天
        min: getNextMonthFirstDay(),
        // 设置结束日期最大值为下个月的最后一天
        max: getNextMonthLastDay()
    });

    // 监听输入框值变化
    //预估运检站投入人员数（人）
    $('#stationNum').on('input', function() {
        var inputVal = $(this).val();
        if (inputVal==''){
            $(this).val('');
        }
        // 转换为数字，并检查是否超出范围
        var numVal = Number(inputVal);
        if (isNaN(numVal) || numVal < 0 || numVal > 10000) {
            // 如果值不合法，清空输入框
            layer.msg('请输入不超过10000的正整数', {icon: 5});
            $(this).val('');
        }
    });
    //预估需要外协高空人员数（人）
    $('#highNum').on('input', function() {
        var inputVal = $(this).val();
        if (inputVal==''){
            $(this).val('');
        }
        // 转换为数字，并检查是否超出范围
        var numVal = Number(inputVal);
        if (isNaN(numVal) || numVal < 0 || numVal > 10000) {
            // 如果值不合法，清空输入框
            layer.msg('请输入不超过10000的正整数', {icon: 5});
            $(this).val('');
        }
    });
    //预估需要外协地面人员数（人）
    $('#groundNum').on('input', function() {
        var inputVal = $(this).val();
        if (inputVal==''){
            $(this).val('');
        }
        // 转换为数字，并检查是否超出范围
        var numVal = Number(inputVal);
        if (isNaN(numVal) || numVal < 0 || numVal > 10000) {
            // 如果值不合法，清空输入框
            layer.msg('请输入不超过10000的正整数', {icon: 5});
            $(this).val('');
        }
    });

    $("#closeBt").click(function () {
        var index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
        parent.layer.close(index); //再执行关闭
    });

    // 验证成功后才会执行下面的操作
    form.on('submit(formDemo)', function (data) {
        if($("#id").val()==''){
            addData(data); // 新增
        }else{
            updateData(data); // 修改
        }
    });
});

/**
 * 获取下个月第一天
 * @returns {string}
 */
function getNextMonthFirstDay() {
    var today = new Date();
    var nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);
    return nextMonth.getFullYear() + '-' + (nextMonth.getMonth() + 1) + '-01 00:00';
}

/**
 * 获取下个月最后一天
 * @returns {string}
 */
function getNextMonthLastDay() {
    var today = new Date();
    var nextMonth = new Date(today.getFullYear(), today.getMonth() + 2, 0);
    return nextMonth.getFullYear() + '-' + (nextMonth.getMonth() + 1) + '-' + nextMonth.getDate() + ' 23:59';
}


/**
 * 新增
 * @param formData
 */
function addData(formData) {
    if (workTypeValue == "") {
        layer.msg("请选择作业类型", {icon: 0})
        return
    }else if (workMethodValue == "") {
        layer.msg("请选择作业方式", {icon: 0})
        return
    }else if (controlLevelValue == "") {
        layer.msg("请选择管控层级", {icon: 0})
        return
    }else if (riskLevelValue == "") {
        layer.msg("请选择风险等级", {icon: 0})
        return
    }else if (controlMethodsValue == "") {
        layer.msg("请选择管控方式", {icon: 0})
        return
    }else if (isSupportValue == "") {
        layer.msg("请选择是否需要外协人员支援", {icon: 0})
        return
    }else {
        console.log(formData.field);
        var allCheckboxStates = getAllCheckboxStates();
        console.log(allCheckboxStates);


        // 加载提示
        let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
        // form请求地址
        let formUrl = oiPlanUrl + "/monthlyPlanSubmission/add";
        $.ajax({
            type: 'POST',
            async: false, // 默认异步true,false表示同步
            url: formUrl, // 请求地址
            data:{
                "proName": $("#proName").val(),
                "content": $("#content").val(),
                "taskSourceId": $("#taskSourceId").val(),
                "workType": workTypeValue,
                "planStartTime": $("#planStartTime").val(),
                "planEndTime": $("#planEndTime").val(),
                "workMethod": workMethodValue,
                "powerDevice": $("#powerDevice").val(),
                "supervisorPhone": $("#supervisorPhone").val(),
                "personLiablePhone": $("#personLiablePhone").val(),
                "controlLevel": controlLevelValue,
                "riskLevel": riskLevelValue,

                "controlMethods": controlMethodsValue,
                "constructionPlan": allCheckboxStates['AAA'],
                "workGuideBook": allCheckboxStates['BBB'],
                "workForm": allCheckboxStates['CCC'],
                "workTicket": allCheckboxStates['DDD'],

                "isSupport": isSupportValue,
                "stationNum": $("#stationNum").val(),
                "highNum": $("#highNum").val(),
                "groundNum": $("#groundNum").val(),
                "remark": $("#remark").val(),
                "remarks": $("#remarks").val()

            },
            success: function (data) {
                layer.close(loadingMsg); // 关闭提示层
                if(data.code == 200){
                    top.layer.msg("添加成功");
                    reloading();
                }else{
                    layer.alert(data.msg);
                }
            },
            error: function (XMLHttpRequest, textStatus, e) {
                layer.close(loadingMsg);
                layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
            }
        });
    }
}

/**
 * 修改
 * @param formData
 * @returns {boolean}
 */
function updateData(formData) {
    var allCheckboxStates = getAllCheckboxStates();
        // 加载提示
        let loadingMsg = layer.msg('数据请求中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
        // form请求地址
        let formUrl = oiPlanUrl + "/monthlyPlanSubmission/update";
        $.ajax({
            type: 'POST',
            async: false, // 默认异步true,false表示同步
            url: formUrl, // 请求地址
            data:{
                "id": $("#id").val(),
                "proName": $("#proName").val(),
                "content": $("#content").val(),
                "taskSourceId": $("#taskSourceId").val(),
                "workType": workTypeValue,
                "planStartTime": $("#planStartTime").val(),
                "planEndTime": $("#planEndTime").val(),
                "workMethod": workMethodValue,
                "powerDevice": $("#powerDevice").val(),
                "supervisorPhone": $("#supervisorPhone").val(),
                "personLiablePhone": $("#personLiablePhone").val(),
                "controlLevel": controlLevelValue,
                "riskLevel": riskLevelValue,

                "controlMethods": controlMethodsValue,
                "constructionPlan": allCheckboxStates['AAA'],
                "workGuideBook": allCheckboxStates['BBB'],
                "workForm": allCheckboxStates['CCC'],
                "workTicket": allCheckboxStates['DDD'],

                "isSupport": isSupportValue,
                "stationNum": $("#stationNum").val(),
                "highNum": $("#highNum").val(),
                "groundNum": $("#groundNum").val(),
                "remark": $("#remark").val(),
                "remarks": $("#remarks").val()
            },
            success: function (data) {
                layer.close(loadingMsg); // 关闭提示层
                if(data.code == 200){
                    top.layer.msg("修改成功");
                    reloading();
                }else{
                    layer.alert(data.msg);
                }
            },
            error: function (XMLHttpRequest, textStatus, e) {
                layer.close(loadingMsg);
                layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
            }
        });
}

// 获取所有复选框的当前状态
function getAllCheckboxStates() {
    var checkboxes = document.querySelectorAll('.bmscTrain input[type="checkbox"]');
    var states = {};
    checkboxes.forEach(function(checkbox) {
        if (checkbox.checked){
            states[checkbox.name] = 1;
        }else {
            states[checkbox.name] = 0;
        }
    });
    console.log(states);
    return states;
}


/**
 * 按钮样式，以及取值
 */
function btnStyle() {
    $('.btnOption1 > div').click(function () {
        $(this).addClass('pass').siblings().removeClass('pass');
        var value = $(this).data('value');
        $(this).attr('value', value).siblings().attr('value', '');
        workTypeValue = value;
    });

    $('.btnOption2 > div').click(function () {
        $(this).addClass('pass').siblings().removeClass('pass');
        var value = $(this).data('value');
        $(this).attr('value', value).siblings().attr('value', '');
        workMethodValue = value;
    });

    $('.btnOption3 > div').click(function () {
        $(this).addClass('pass').siblings().removeClass('pass');
        var value = $(this).data('value');
        $(this).attr('value', value).siblings().attr('value', '');
        controlLevelValue = value;
    });

    $('.btnOption4 > div').click(function () {
        $(this).addClass('pass').siblings().removeClass('pass');
        var value = $(this).data('value');
        $(this).attr('value', value).siblings().attr('value', '');
        riskLevelValue = value;
    });

    $('.btnOption5 > div').click(function () {
        $(this).addClass('pass').siblings().removeClass('pass');
        var value = $(this).data('value');
        $(this).attr('value', value).siblings().attr('value', '');
        controlMethodsValue = value;
    });

    $('.btnOption6 > div').click(function () {
        $(this).addClass('pass').siblings().removeClass('pass');
        var value = $(this).data('value');
        $(this).attr('value', value).siblings().attr('value', '');
        isSupportValue = value;
        console.log(isSupportValue);
    });

}



function importData() {
    var fileData = new FormData();
    fileData.append('file', $('#file')[0].files[0]);
    fileData.append('remark', $("#remark").val());
    fileData.append('trainFileName', trainFileNames.toString());
    fileData.append('trainFilePath', trainFilePaths.toString());
    fileData.append('examFileName', examFileNames.toString());
    fileData.append('examFilePath', examFilePaths.toString());
    // 加载提示
    loadingMsg = top.layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
    // form请求地址
    var formUrl = oiPlanUrl + "/offlineResUpload/importData";
    $.ajax({
        type: 'POST',
        url: formUrl, // 请求地址
        data: fileData,
        processData: false,
        contentType: false,
        success: function (data) {
            top.layer.close(loadingMsg); //再执行关闭
            if (data.code == 200) {
                top.layer.alert(data.msg);

                reloading();
            } else {
                top.layer.alert(data.msg, {icon: 2});
            }
        },
        error: function (XMLHttpRequest, textStatus, e) {
            layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
            top.layer.close(addLoadingMsg); //再执行关闭
        }
    });
}

/**
 * 获取任务来源
 * @param id
 * @param key
 */
function getTaskSource(id,key) {
    $("#"+id).empty();
    $.ajax({
        type: 'get',
        url: oiPlanUrl + '/monthlyPlanSubmission/getTaskSource',
        async: false,
        success: function (data) {
            if(data.code == 200){
                var html = ''
                for (let i = 0; i < data.data.length; i++) {
                    if (key == data.data[i].id) {
                        html += '<option selected  value=\'' + data.data[i].id + '\'>' + data.data[i].name + '</option>';
                    } else {
                        html += '<option value=\'' + data.data[i].id + '\'>' + data.data[i].name + '</option>';
                    }
                }
                $("#"+id).append(html);
            }else{
                $("#"+id).append('<option value="">--无数据--</option>');
            }
            layui.form.render();
        },
        error: function (err) {
            console.log("获取字典表出错：", err);
        }
    });
}

/**
 * 隐藏提交按钮和关闭按钮
 */
function hideSubmit() {
    // 使用getElementById根据ID选择按钮
    var submitButton = document.getElementById('submitBt');
    var closeButton = document.getElementById('closeBt');
    // 如果按钮存在，则隐藏它
    if (submitButton) {
        submitButton.style.display = 'none';
    }
    if (closeButton) {
        closeButton.style.display = 'none';
    }
}

/**
 * 设置数据
 * @param data
 */
function setData(data) {
    console.log(data);
    $("#id").val(data[0].id);
    $("#proName").val(data[0].proName);
    $("#content").val(data[0].content);
    getTaskSource("taskSourceId",data[0].taskSourceId);
    // $("#taskSourceId").val(data[0].taskSourceId);
    // 首先移除所有选项的 pass 类
    $('.btnOption1 > div').removeClass('pass');
    // 根据 值 添加 pass 类和设置 value 属性
    $('.btnOption1 > div').each(function () {
        if ($(this).data('value') === data[0].workType) {
            $(this).addClass('pass').attr('value', data[0].workType);
        } else {
            $(this).attr('value', '');
        }
    });

    $("#planStartTime").val(data[0].planStartTime);
    $("#planEndTime").val(data[0].planEndTime);
    // 首先移除所有选项的 pass 类
    $('.btnOption2 > div').removeClass('pass');
    // 根据 值 添加 pass 类和设置 value 属性
    $('.btnOption2 > div').each(function () {
        if ($(this).data('value') == data[0].workMethod) {
            $(this).addClass('pass').attr('value', data[0].workMethod);
        } else {
            $(this).attr('value', '');
        }
    });
    $("#powerDevice").val(data[0].powerDevice);
    $("#supervisorPhone").val(data[0].supervisorPhone);
    $("#personLiablePhone").val(data[0].personLiablePhone);
    // 首先移除所有选项的 pass 类
    $('.btnOption3 > div').removeClass('pass');
    // 根据 值 添加 pass 类和设置 value 属性
    $('.btnOption3 > div').each(function () {
        if ($(this).data('value') == data[0].controlLevel) {
            $(this).addClass('pass').attr('value', data[0].controlLevel);
        } else {
            $(this).attr('value', '');
        }
    });
    // 首先移除所有选项的 pass 类
    $('.btnOption4 > div').removeClass('pass');
    // 根据 值 添加 pass 类和设置 value 属性
    $('.btnOption4 > div').each(function () {
        if ($(this).data('value') == data[0].riskLevel) {
            $(this).addClass('pass').attr('value', data[0].riskLevel);
        } else {
            $(this).attr('value', '');
        }
    });
    // 首先移除所有选项的 pass 类
    $('.btnOption5 > div').removeClass('pass');
    // 根据 值 添加 pass 类和设置 value 属性
    $('.btnOption5 > div').each(function () {
        if ($(this).data('value') == data[0].controlMethods) {
            $(this).addClass('pass').attr('value', data[0].controlMethods);
        } else {
            $(this).attr('value', '');
        }
    });

    var checkStatus = {};
    console.log(data[0].constructionPlan);
    console.log(data[0].workGuideBook);
    console.log(data[0].workForm);
    console.log(data[0].workTicket);
    checkStatus['AAA'] = data[0].constructionPlan==1 ? true : false;
    checkStatus['BBB'] = data[0].workGuideBook==1 ? true : false;
    checkStatus['CCC'] = data[0].workForm==1 ? true : false;
    checkStatus['DDD'] = data[0].workTicket==1 ? true : false;
    setCheckboxStates(checkStatus);
    console.log(checkStatus);

    // 首先移除所有选项的 pass 类
    $('.btnOption6 > div').removeClass('pass');
    // 根据 值 添加 pass 类和设置 value 属性
    $('.btnOption6 > div').each(function () {
        if ($(this).data('value') == data[0].isSupport) {
            $(this).addClass('pass').attr('value', data[0].isSupport);
        } else {
            $(this).attr('value', '');
        }
    });
    $("#stationNum").val(data[0].stationNum);
    $("#highNum").val(data[0].highNum);
    $("#groundNum").val(data[0].groundNum);
    $("#remark").val(data[0].remark);
    $("#remarks").val(data[0].remarks);
}

// 根据提供的状态对象来设置复选框的状态
function setCheckboxStates(states) {
    var checkboxes = document.querySelectorAll('.bmscTrain input[type="checkbox"]');
    checkboxes.forEach(function(checkbox) {
        if (states.hasOwnProperty(checkbox.name)) {
            checkbox.checked = states[checkbox.name]; // 直接赋值布尔值
        }
    });
}

/**
 * 关闭页面 刷新页面
 */
function reloading() {
    var index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引
    parent.layer.close(index); //再执行关闭
    window.parent.location.reload();
}