/*
每一步内容都必须存放在一个标签页,标签页横向排列,标签页前后各空出一列
每个标签都要在默认的style属性上设置为opacity:0,以默认隐藏步骤内容
每个步骤的内容默认隐藏
方法参数为对象:
{
    curStepFieldId: curStep_FI,
    cols: 5,
    title_class: ".title",
    title_value: ["OA开发需求", "流程开发需求", "台账开发需求"],
    vars: [{
        page: "tab1",
        cnt: "cnt1",
        top: 1,
        titleIndex: 0,
        mainTabCol: 1,
        default_tab: 5,
        tab_required_info: [
            {
                tabid: 5,
                main_feild: [xqlx_FI, cdfj_FI, ssbk_FI, glbm_FI, syjg_FI, sybm_FI, aim_FI],
                det_field: [],
            }
        ],
    }],
    els: ["title"],
}
curStepFieldId为当前步骤字段id
cols为表格有效范围内的列数
title_class为流程页面标题的jQuery选择器
title_value为所有步骤相关的标题名称
vars为每个步骤对应的一组参数,vars参数组顺序与标签页DOM节点顺序一致
其中第一组参数代表意思为:tab1为标签页class,cnt1为步骤一页面全部内容的统一class,top值1表示隐藏标签页顶部标签(0表示不隐藏),titleIndex值0为该标签对应的标题名称在title_value中的序号(从0开始),mainTabCol为标签页在主表中的列数(从0开始),default_tab为默认子标签,tab_required_info用于处理标签页内子标签的必填字段排查、必增明细排查
els为其他需要在方法中将display属性还原的单元格class

注意:
(1)当步骤发生变化时,需修改参数对象 sld_obj ,并执行一遍 initialization(sld_obj)的列宽设置
(2)这个方法需要结合以下CSS样式使用,以解决明细表头的问题
.excelDetailFixedHead {
    position: sticky !important;
    top: 0px !important;
}
(3)结合以下CSS样式,以解决提交按钮闪烁问题,前提是要把提交按钮放在快捷按钮的第一位
.ant-col-xs-18>div>span:nth-of-type(1):not(.wea-new-top-req-drop-btn) {
    display: none !important;
  }
*/
function pageLateralSlider(sld_obj) {
    Object.assign(sld_obj, {
        currentnode: true,
    });
    if (WfForm.getGlobalStore().commonParam.currentnodeid != WfForm.getGlobalStore().commonParam.nodeid) {
        sld_obj.currentnode = false;
    }
    if (sld_obj.currentnode == true) {
        document.getElementsByClassName("wf-req-top-button")[0].parentNode.parentNode.id = "submitBtn";
        $("#submitBtn").css("cssText", "display:none !important;");
    }
    var steps = sld_obj.vars.length;
    let myIntv1 = setInterval(() => {
        //页面元素加载判断
        for (let i = 0; i < steps; i++) {
            if ($("." + sld_obj.vars[i].page).length === 0 || $("." + sld_obj.vars[i].cnt).length === 0) {
                return;
            }
        }
        for (let i = 0; i < sld_obj.els.length; i++) {
            if ($("." + sld_obj.els[i]).length === 0) {
                return;
            }
        }
        if ($("#buttonCell").length === 0) {
            return;
        }
        if ($(sld_obj.title_class + " span").length === 0) {
            return;
        }
        if ($(".excelMainTable>colgroup col").length !== sld_obj.cols) {
            return;
        }
        if ($(".wf-req-form").length === 0) {
            return;
        }
        if ($(".wf-req-top-button").length === 0 && sld_obj.currentnode == true) {
            return;
        }
        clearInterval(myIntv1);
        //自适应列宽            
        const screen_width = $(".wf-req-form")[0].offsetWidth;
        const padding_width = Math.floor(0.02 * screen_width);
        const content_width = screen_width - 2 * padding_width;
        Object.assign(sld_obj, {
            content_width: content_width,
        });
        $(".excelMainTable>colgroup col")[0].style.width = `${padding_width}px`;
        $(".excelMainTable>colgroup col")[sld_obj.cols - 1].style.width = `${padding_width}px`;
        initialization(sld_obj);
        //添加消除prompt的字段集
        Object.assign(sld_obj, {
            eraser_fis: [],
        });
        //获取当前步骤标题信息
        Object.assign(sld_obj, {
            curStep: 0,
        });
        var curStepVar = + WfForm.getFieldValue(sld_obj.curStepFieldId);
        //添加功能按钮        
        $("#buttonCell").append("<span class='ant-btn preStep' style='display:none;'>上一步</span><span class='step-blank' style='display:none;'>&emsp;&emsp;</span><span class='ant-btn nexStep' style='display:none;'>下一步</span>");
        //添加按钮功能
        pageLateralSliderClick(sld_obj);
        //显示其他需要还原display属性的单元格
        sld_obj.els.forEach(e => {
            $("." + e).css("display", "");
        });
        //显示当前步骤内容
        $("." + sld_obj.vars[0].cnt).css("display", "");
        $("." + sld_obj.vars[0].page).css("opacity", "1");
        $(".preStep").css({ "display": "none" });
        $(".step-blank").css({ "display": "none" });
        $(".nexStep").css({ "display": "inline" });
        if (sld_obj.currentnode == true) {
            $("#submitBtn").css("cssText", "display:none !important;");
        }
        if (curStepVar > 0) {
            for (let i = 0; i < curStepVar; i++) {
                if (i === 0) {
                    $(".nexStep")[0].click();
                } else {
                    setTimeout(() => {
                        $(".nexStep")[0].click();
                    }, i * 500);
                }
            }
        }
    }, 100);
}
function initialization(init_obj) {
    //设置列宽
    let useful_cols = [];
    init_obj.vars.forEach(e => {
        useful_cols.push(e.mainTabCol);
    });
    for (let i = 1; i <= init_obj.cols - 2; i++) {
        if (useful_cols.includes(i)) {
            $(".excelMainTable>colgroup col")[i].style.width = `${init_obj.content_width}px`;
        } else {
            $(".excelMainTable>colgroup col")[i].style.width = `1px`;
        }
    }
    //隐藏标签页顶部标签
    init_obj.vars.forEach(e => {
        if (e.top === 1) {
            $("." + e.page + " .tab_top")[0].style.display = "none";
        }
    });
}
function pageLateralSliderClick(clc_obj) {
    var clc_content_width = clc_obj.content_width;
    $(".nexStep").off("click");
    $(".preStep").off("click");
    //点击事件
    var click_judg = 0;
    $(".nexStep").click(() => {
        if (click_judg === 0) {
            if (showEmptyRequiredField(clc_obj) == false) {
                return;
            }
            click_judg++;
            clc_obj.curStep++;
            $(clc_obj.title_class + " span")[0].innerHTML = clc_obj.title_value[clc_obj.vars[clc_obj.curStep].titleIndex];
            let offset = (clc_obj.vars[clc_obj.curStep].mainTabCol - 1 - clc_obj.curStep);
            clc_obj.vars.forEach((e, index) => {
                if (index !== clc_obj.curStep) {
                    anime({
                        targets: '.' + e.page,
                        translateX: - clc_obj.curStep * clc_content_width - offset,
                        opacity: 0,
                        duration: 500,
                        easing: 'easeInOutQuad',
                        complete: () => {
                            $("." + e.cnt).css("display", "none");
                            $("#tab_" + e.default_tab).click();
                        }
                    });
                }
            });
            $("." + clc_obj.vars[clc_obj.curStep].cnt).css("display", "");
            anime({
                targets: '.' + clc_obj.vars[clc_obj.curStep].page,
                translateX: - clc_obj.curStep * clc_content_width - offset,
                opacity: 1,
                duration: 500,
                easing: 'easeInOutQuad',
                complete: () => {
                    $('.' + clc_obj.vars[clc_obj.curStep].cnt).css("display", "");
                }
            });
            if (clc_obj.curStep === 0) {
                $(".preStep").css({ "display": "none" });
                $(".step-blank").css({ "display": "none" });
                $(".nexStep").css({ "display": "inline" });
                if (clc_obj.currentnode == true) {
                    $("#submitBtn").css("cssText", "display:none !important;");
                }
            } else if (clc_obj.curStep === clc_obj.vars.length - 1) {
                $(".preStep").css({ "display": "inline" });
                $(".step-blank").css({ "display": "none" });
                $(".nexStep").css({ "display": "none" });
                if (clc_obj.currentnode == true) {
                    $("#submitBtn").css("cssText", "display:inline-block !important;");
                }
            } else {
                $(".preStep").css({ "display": "inline" });
                $(".step-blank").css({ "display": "inline" });
                $(".nexStep").css({ "display": "inline" });
                if (clc_obj.currentnode == true) {
                    $("#submitBtn").css("cssText", "display:none !important;");
                }
            }
            WfForm.changeFieldValue(clc_obj.curStepFieldId, { value: clc_obj.curStep });
            click_judg--;
        }
    });
    $(".preStep").click(() => {
        $(`.myprom`).remove();
        if (click_judg === 0) {
            click_judg++;
            clc_obj.curStep--;
            $(clc_obj.title_class + " span")[0].innerHTML = clc_obj.title_value[clc_obj.vars[clc_obj.curStep].titleIndex];
            let offset = (clc_obj.vars[clc_obj.curStep].mainTabCol - 1 - clc_obj.curStep);
            clc_obj.vars.forEach((e, index) => {
                if (index !== clc_obj.curStep) {
                    anime({
                        targets: '.' + e.page,
                        translateX: - clc_obj.curStep * clc_content_width - offset,
                        opacity: 0,
                        duration: 500,
                        easing: 'easeInOutQuad',
                        complete: () => {
                            $("." + e.cnt).css("display", "none");
                            $("#tab_" + e.default_tab).click();
                        }
                    });
                }
            });
            $("." + clc_obj.vars[clc_obj.curStep].cnt).css("display", "");
            anime({
                targets: '.' + clc_obj.vars[clc_obj.curStep].page,
                translateX: - clc_obj.curStep * clc_content_width - offset,
                opacity: 1,
                duration: 500,
                easing: 'easeInOutQuad',
                complete: () => {
                    $('.' + clc_obj.vars[clc_obj.curStep].cnt).css("display", "");
                }
            });
            if (clc_obj.curStep === 0) {
                $(".preStep").css({ "display": "none" });
                $(".step-blank").css({ "display": "none" });
                $(".nexStep").css({ "display": "inline" });
                if (clc_obj.currentnode == true) {
                    $("#submitBtn").css("cssText", "display:none !important;");
                }
            } else if (clc_obj.curStep === clc_obj.vars.length - 1) {
                $(".preStep").css({ "display": "inline" });
                $(".step-blank").css({ "display": "none" });
                $(".nexStep").css({ "display": "none" });
                if (clc_obj.currentnode == true) {
                    $("#submitBtn").css("cssText", "display:inline-block !important;");
                }
            } else {
                $(".preStep").css({ "display": "inline" });
                $(".step-blank").css({ "display": "inline" });
                $(".nexStep").css({ "display": "inline" });
                if (clc_obj.currentnode == true) {
                    $("#submitBtn").css("cssText", "display:none !important;");
                }
            }
            WfForm.changeFieldValue(clc_obj.curStepFieldId, { value: clc_obj.curStep });
            click_judg--;
        }
    });
}
function showEmptyRequiredField(serf_obj) {
    let serf_arr = serf_obj.vars[serf_obj.curStep].tab_required_info;
    for (let e of serf_arr) {
        for (let me of e.main_feild) {
            if (WfForm.getFieldValue(me) == "") {
                $(`.myprom`).remove();
                showPrompt(me, "必填字段不能空!", e.tabid);
                checkPrompt();
                if (!serf_obj.eraser_fis.includes(me)) {
                    serf_obj.eraser_fis.push(me);
                    WfForm.bindFieldChangeEvent(me, function (obj, id, value) {
                        if (value !== "") {
                            eraseFieldPrompt(me);
                        }
                    });
                }
                return false;
            }
        }
        for (let de of e.det_field) {
            let detRows_str = WfForm.getDetailAllRowIndexStr("detail_" + de.det_id);
            if (detRows_str.length > 0) {
                let detRows_arr = detRows_str.split(",");
                for (let rowI of detRows_arr) {
                    for (let de_f of de.field_id) {
                        if (WfForm.getFieldValue(de_f + "_" + rowI) == "") {
                            $(`.myprom`).remove();
                            showPrompt(de_f, "必填字段不能空!", e.tabid, rowI);
                            checkPrompt();
                            if (!serf_obj.eraser_fis.includes(de_f)) {
                                serf_obj.eraser_fis.push(de_f);
                                WfForm.bindDetailFieldChangeEvent(de_f, function (id, rowIndex, value) {
                                    if (value !== "") {
                                        eraseFieldPrompt(de_f, rowIndex);
                                    }
                                });
                            }
                            return false;
                        }
                    }
                }
            } else if (de.noEmpty == true) {
                WfForm.showMessage(de.det_name + "不能为空!", 2, 5);
                return false;
            }
        }
    }
    return true;
}
function showPrompt(SP_fieldid, SP_content, SP_tabid, SP_rowIndex) {//添加提示,SP_rowIndex选填;如要填SP_rowIndex,SP_tabid必填,可填null
    if (SP_rowIndex === null || SP_rowIndex === undefined) {
        $(`.myprom_${SP_fieldid}`).remove();
        if ($(`.${SP_fieldid}_swapDiv`).length > 0) {
            $(`.${SP_fieldid}_swapDiv`).after(`<div class="prompt-box myprom myprom_${SP_fieldid}" data_tab_id=${SP_tabid}><div class="prompt-arrow" style="top: -3px;"></div><div class="prompt-content"><i class="anticon anticon-exclamation-circle"></i><span class="prompt-content-label">${SP_content}</span><span class="prompt-content-info"></span></div></div>`);
        }
    } else {
        $(`.myprom_${SP_fieldid}_${SP_rowIndex}`).remove();
        if ($(`.${SP_fieldid}_${SP_rowIndex}_swapDiv`).length > 0) {
            $(`.${SP_fieldid}_${SP_rowIndex}_swapDiv`).after(`<div class="prompt-box myprom myprom_${SP_fieldid}_${SP_rowIndex}" data_tab_id=${SP_tabid}><div class="prompt-arrow" style="top: -3px;"></div><div class="prompt-content"><i class="anticon anticon-exclamation-circle"></i><span class="prompt-content-label">${SP_content}</span><span class="prompt-content-info"></span></div></div>`);
        }
    }
}
function eraseFieldPrompt(EFP_fieldid, EFP_rowIndex) {//移除提示,SP_rowIndex选填
    if (EFP_rowIndex === null || EFP_rowIndex === undefined) {
        $(`.myprom_${EFP_fieldid}`).remove();
    } else {
        $(`.myprom_${EFP_fieldid}_${EFP_rowIndex}`).remove();
    }
}
function checkPrompt() {//提交前判断,先做一次if ($(".myprom").length > 0) {}判断,true则触发该方法,并禁断提交,false不执行
    let tab_id = $(".myprom")[0].getAttribute("data_tab_id");
    if (tab_id === "null" || tab_id === "undefined") {
        let scroll_to_windowTop = $(".wf-req-form-scroll")[0].getBoundingClientRect().top;//scroll框距离window顶部的距离
        let dom_to_scrollTop = $(".myprom")[0].getBoundingClientRect().top - scroll_to_windowTop;//DOM节点距离scroll框顶部的距离
        let scroll_display_height = window.innerHeight - scroll_to_windowTop;//scroll框最大显示高度
        if (dom_to_scrollTop < scroll_display_height / 4 || dom_to_scrollTop > scroll_display_height / 4 * 3) {
            $(".wf-req-form-scroll")[0].scrollTo({
                top: dom_to_scrollTop + $(".wf-req-form-scroll")[0].scrollTop - scroll_display_height / 2,
                behavior: "smooth"
            });
        }
    } else {
        $("#tab_" + tab_id)[0].click();
        let myInterval2;
        myInterval2 = setInterval(() => {
            if ($("#tab_" + tab_id + "_content").css("display") == "block") {
                clearInterval(myInterval2);
                let scroll_to_windowTop = $(".wf-req-form-scroll")[0].getBoundingClientRect().top;//scroll框距离window顶部的距离
                let dom_to_scrollTop = $(".myprom")[0].getBoundingClientRect().top - scroll_to_windowTop;//DOM节点距离scroll框顶部的距离
                let scroll_display_height = window.innerHeight - scroll_to_windowTop;//scroll框最大显示高度
                if (dom_to_scrollTop < scroll_display_height / 4 || dom_to_scrollTop > scroll_display_height / 4 * 3) {
                    $(".wf-req-form-scroll")[0].scrollTo({
                        top: dom_to_scrollTop + $(".wf-req-form-scroll")[0].scrollTop - scroll_display_height / 2,
                        behavior: "smooth"
                    });
                }
            }
        }, 50);
    }
}