var initpage;
var sbqDate = '';
var djxh = "";
var taxInfos = [];
var Authorization = ""
    // var zhsbPzzl = "10101|10102|11602|10401|10402|11901|11503|10902";
var zhsbPzzl = "10101|10102|11602|10401|10402|10110|10902|10112|10113";
// 10110:房产税 10902:印花税 10112:城镇土地使用税 10113:土地增值税

var prefix = "";
$(function() {
    if (config.environmental == 'test' || config.environmental == 'preProduce') {
        prefix = "/web";
    } else if (config.environmental == 'production') {
        prefix = "/web/online";
    }
    showLoading();
    getInitTable();
})

function getInitTable() {
    $.ajax({
        type: "post",
        url: config.url + "/online/declare/index",
        dataType: "json", // 请求方式为jsonp
        // async: false,
        data: {
            djxh: getUrlParam("djxh"),
            token: getUrlParam("token"),
            sbsq: "",
            pzzlDm: zhsbPzzl,
        },
        // beforeSend:function(){
        //   myAlert("提示", "正在获取初始化信息", "确定")
        // },
        success: function(data, status, xhr) { //客户端jquery预先定义好的callback函数，成功获取跨域服务器上的json数据后，会动态执行这个callback函数
            hideLoading();
            var authorization_sbzj2 = xhr.getResponseHeader("Encryption")
            sessionStorage.setItem("authorization_sbzj2", authorization_sbzj2);
            //el表达式变jqa
            // $("#token").attr("value","");
            if (data.code == '99') {
                myAlert("提示", data.errmsg, "确定")
                return false
            }
            if (data.success) {
                Authorization = data.bean.value
                if (data.bean.url == "error.jsp") {
                    myAlert("提示", data.bean.errorInfo, "确定")
                        // window.location.href = "/jsp/error/index.html?falg="+param;
                    return false
                }
            }
            // var sbsq = data.bean.sbsq.replace('-','');
            // if (data.bean.sfyhzctsBz == 'Y'&&sbsq<='202104') {
            //   myAlert("提示", "尊敬的纳税人、缴费人，为进一步巩固拓展减税降费成效，助力市场主体纾困解难，对部分2020年底到期税费优惠政策（不包括社会保险费），您可暂按原政策文件规定申报享受优惠（原减免性质代码可继续使用）。详细情况可咨询主管税务分局、税务所或12366纳税服务热线。感谢您的理解与支持！！", "确定");
            // }
            // tool.hjDialog(data.bean.djxh)出口退税暂不上线
            zjhm = data.bean.zjhm
            djxh = data.bean.djxh;
            sbqDate = data.bean.sbsq;
            taxInfos = [];
            var skssq
            for (var i in data.bean.taxInfos) {
                if (data.bean.taxInfos[i].bblxDm == '10401') {
                    skssq = data.bean.taxInfos[i].sksssjz
                }
            }
            for (var i = 0; i < data.bean.taxInfos.length; i++) {
                var djxh = data.bean.taxInfos[i].djxh;
                var zsDjxh = data.bean.taxInfos[i].zsDjxh;
                if (djxh == zsDjxh) {
                    taxInfos.push(data.bean.taxInfos[i]);
                }
            }
            data.bean.financialInfos = [];
            data.bean.taxInfos = [{
                "sssqZ": "--",
                "sssqQ": "--",
                "sbrq": "--",
                "pzzlMc": "综合申报表",
            }]
            var companyInfo = data;
            if (companyInfo.success) {
                config.value = companyInfo.bean.value
                companyInfo.bean.config = config
                companyInfo.bean.return = true; /* @Author ygy @Date 10:12 2020/7/8 @Description 前端判断接口成功返回数据标记用于区分是否执行初始化table方法*/
                config.return = true;
                initpage = initPage(companyInfo.bean);
                if (skssq == '20210930') {
                    getJjkjTag(djxh, companyInfo.bean.sbsq.replace(/\-/g, ""))
                }
            } else {
                hideLoading();
                if (data.errmsg != undefined) {
                    alertWarning(data.errmsg);
                } else {
                    alertWarning(data.returnMessage);
                }
                if (!companyInfo.bean) {
                    companyInfo.bean = {};
                    companyInfo.bean.djxh = getUrlParam("djxh");
                    companyInfo.bean.return = false;
                }
                companyInfo.bean.config = config
                initpage = initPage(companyInfo.bean);
                // 弹出错误对话框
            }
            $("#getInputValue").on("focus", function() {
                WdatePicker({
                    isShowClear: false,
                    dateFmt: 'yyyy-MM',
                    onpicking: function(dp) {
                        initpage.changeDate(this, dp);
                    }
                });
            });
        },
        error: function(xhr) {
            hideLoading();
            //jsonp 方式此方法不被触发
            console.log("=======error======================")
        }
    })
}
// pll 所得税弹框
// 获取研发费用加计扣减标志
function getJjkjTag(djxh, nsrsbq) {
    $.ajax({
        type: "post",
        url: config.url + "/online/zxtb/get_yffyjjkcbz",
        dataType: "json", // 请求方式为jsonp
        headers: { 'Encryption': sessionStorage.getItem("authorization_sbzj2") },
        // async: false
        data: {
            djxh: djxh,
            nsrsbq: nsrsbq
        },
        success: function(data) { //客户端jquery预先定义好的callback函数，成功获取跨域服务器上的json数据后，会动态执行这个callback函数
            hideLoading();
            var companyInfo = data;
            if (companyInfo.returnCode == '00') {
                // console.log('9月7号这个接口返回成功啦！！！！')
                if (companyInfo.content == 'Y') {
                    myAlert("提示", "按照最新政策规定，企业(负面清单行业除外)自2021年三季度预缴开始，可就前三季度研发费用申报享受加计扣除。同时，制造业享受研发费用加计扣除比例由75%提高到100%。", "确定");
                }
            } else {
                hideLoading();
                if (data.errmsg != undefined) {
                    alertWarning(data.errmsg);
                } else {
                    alertWarning(data.returnMessage);
                }
                // 弹出错误对话框
            }
        },
        error: function(xhr) {
            hideLoading();
            //jsonp 方式此方法不被触发
            console.log("=======error======================")
        }
    })
}
/**
 * 按期申报填报列表页控制脚本
 *
 * @author 于广洋
 * @modify 王雷
 */
// -------------------------------
/**
 * 绘制税种填报页面
 *
 * @param {*} companyInfo
 */
function initPage(companyInfo) {
    getIEVersion();
    localStorage.setItem("cancellation", null);
    var companyInfo = companyInfo;
    var djxh = companyInfo.djxh;
    var nowdate = ""; // 存储当前选择的时间框;
    var submitData
        /**
         * 展示税种申报信息
         */
    var showTax = function(taxInfo) {
        if (taxInfo.length > 0) {
            for (var i = 0; i < taxInfo.length; i++) {
                if (taxInfo[i].sbrq) {
                    taxInfo[i].sbrq = tool.formatDate(taxInfo[i].sbrq.split(" ")[0]);
                }
            }
        }
        var id = "#taxGrid";
        var buttonHtml = "填写申报表";
        var order = ["pzzlMc", "sssqQ", "sssqZ", "sbrq", "do"];
        var promptStatement = "";
        var headerList = [{
            name: "序号",
            width: "5%"
        }, {
            name: "申报表",
            width: "55%"
        }, {
            name: "税款所属期起",
            width: "10%"
        }, {
            name: "税款所属期止",
            width: "10%"
        }, {
            name: "申报日期",
            width: "10%"
        }, {
            name: "操作",
            width: "10%"
        }];
        //渲染表
        getTableDeclaration(id, order, headerList, taxInfo, buttonHtml, promptStatement)
    };
    /**
     * 税务申报table渲染
     * @param {*} id
     * @param {*} order
     * @param {*} headerList
     * @param {*} ddt
     * @param {*} buttonHtml
     */
    var getTableDeclaration = function(id, order, headerList, ddt, buttonHtml, promptStatement) {
        var tableObj = {
            id: id, //tabel父元素的id
            autoHeight: ddt.length > 0 ? 10 : "",
            containerWidth: "99%", //table占父元素的百分比
            autoHeight: ddt.length > 0 ? 10 : "", // 默认10行
            order: order, //数据按照什么顺序排序  1.do为是否保函操作 2.序号列会自动添加不需要写
            onlyId: "uuId", //数据的唯一标识
            height: "320", //表格的高度
            buttonHeight: "", //表格的高度
            buttonHtml: buttonHtml, //按钮里的字
            headerList: headerList, //表头名字及占比，顺序与order对应
            promptStatement: promptStatement, // 没有数据时默认提示
            data: {
                page: "1",
                pageSize: ddt.length
            },
            jsonReady: ddt,
            callback: function(data, node) {
                    window.mlistener = {
                        zhsbData: {
                            token: getUrlParam("token"),
                            djxh: djxh,
                            sbsq: sbqDate,
                            taxInfos: taxInfos,
                            value: config.value,
                            zjhm: zjhm,
                            Authorization: Authorization
                        },
                    };
                    window.open(prefix + config.zhsbPage, '_blank');
                    Object.defineProperty(mlistener, 'returnSelectRowData', {
                        set: function(val) {
                            setTimeout(function() {
                                getTaxDeclaration(sbqDate, "N", '2', true);
                            }, 1000);
                        }
                    })
                } //点击按钮后的回调函数
        };
        var object = tool.tableCreate(tableObj);
        //        object.jsonReadyTo(ddt, { page: "1", pageSize: ddt.length });
    };

    /**
     * 税务申报 初始化数据获取
     * @param {*} mydate
     */
    //地址
    //http://sbjs.tjsat.gov.cn:18090
    //http://localhost:7070
    var url;
    if (companyInfo) {
        url = companyInfo.config.url;
    }
    var getTaxDeclaration = function(date, type, refreshSbzt, update) {
        // TODO 开始加载等待动画
        showLoading();
        var param = {
            djxh: djxh,
            operateType: companyInfo.operateType,
            sbsq: date,
            isFresh: type.toUpperCase() == "Y",
            pzzlDm: companyInfo.pzzlDm,
            refreshSbzt: refreshSbzt
        }
        $.ajax({
            url: url + "/online/declare/getPzzlList",
            data: param,
            type: "POST",
            dataType: "JSON",
            // beforeSend:function(){
            //   myAlert("提示", "正在获取初始化信息", "确定")
            // },
        }).done(function(data) {
            if (data.success) {
                zjhm = data.bean.zjhm
                if (data.bean.url == "error.jsp") {
                    myAlert("提示", data.bean.errorInfo, "确定")
                    return
                }
                djxh = data.bean.djxh;
                taxInfos = [];
                var skssq
                for (var i in data.bean.taxInfos) {
                    if (data.bean.taxInfos[i].bblxDm == '10401') {
                        skssq = data.bean.taxInfos[i].sksssjz
                    }
                }
                for (var i = 0; i < data.bean.taxInfos.length; i++) {
                    var djxh = data.bean.taxInfos[i].djxh;
                    var zsDjxh = data.bean.taxInfos[i].zsDjxh;
                    if (djxh == zsDjxh) {
                        taxInfos.push(data.bean.taxInfos[i]);
                    }
                }
                data.bean.financialInfos = [];
                data.bean.taxInfos = [{
                    "sssqZ": "--",
                    "sssqQ": "--",
                    "sbrq": "--",
                    "pzzlMc": "综合申报表",
                }]
                drawGrid(data.bean);
                companyInfo = data.bean;
                config.value = companyInfo.value;
                if (update) {
                    window.mlistener = {
                        zhsbData: {
                            token: getUrlParam("token"),
                            djxh: djxh,
                            sbsq: sbqDate,
                            taxInfos: taxInfos,
                            value: config.value,
                        },
                    };
                    Object.defineProperty(mlistener, 'returnSelectRowData', {
                        set: function(val) {
                            setTimeout(function() {
                                getTaxDeclaration(sbqDate, "N", '2', true);
                            }, 1000);
                        }
                    })
                }
                if (type == 'Y') {
                    myAlert("提示", "重置清册成功", "确定")
                }
                if (skssq == '20210930') {
                    getJjkjTag(djxh, sbqDate.replace(/\-/g, ""))
                }
            } else {
                if (data.errmsg != undefined) {
                    alertWarning(data.errmsg);
                } else {
                    alertWarning(data.returnMessage);
                }
            }
        }).always(function(data) {
            hideLoading();
        });
    };
    /**
     * 隐藏modal
     */
    var closeModal = function() {
        $('#ybName').html("");
        $('#dName').html("");
        $('#myMask').hide();
        $('#myModal').hide();
    }

    var drawGrid = function(bean) {
        //两个表合成一个表
        $.each(bean.financialInfos, function(i, item) {
            bean.taxInfos.push(item);
        });
        if (bean.taxInfos.length == 0) {
            showTax(bean.taxInfos);
            alertInfo("税费申报暂无数据");
        } else {
            showTax(bean.taxInfos);
        }
    };

    /**
     * 日期改变时触发
     * N 非强制刷新
     * @param {*} obj
     * @param {*} dp
     */
    var changeDate = function(obj, dp) {
        date = dp.cal.getNewDateStr();
        nowdate = date; // 给缓存时间赋值
        // 加了一个延时，时间改变后时间框没有收起隐藏就加载数据，没有找到好的解决办法，暂时用延时处理
        sbqDate = date
        setTimeout(function() {
            getTaxDeclaration(date, "N", '1', false);
        }, 50);
    };

    var refresh = function() {
        myConfirm("消息", "您确定需要重置申报清册吗？点击确定继续", "确定", "取消", function() {
            getTaxDeclaration(nowdate, "Y", '1', false);
        });
    };
    //申报方式 当iszzsybjc=01同时pzzlDm=010101时，调用改方法
    var declarationMethod = function(statu) {
            submitData.ybjcState = statu;
            submitData.value = config.value;
            //需要判断在线还是税表的开关
            if (submitData.sourceFlag == "ssfwpt_sbzj") {
                window.mlistener = {
                    selectRowData: {},
                };

                submitData.fillingFlag = "normal" // 填报标记
                submitData.saveUserId = "zxtb"; // 用户id
                submitData.zjhm = zjhm
                window.mlistener.selectRowData = submitData;
                window.open(prefix + config.ssfwptPage, '_blank');
                Object.defineProperty(mlistener, 'returnSelectRowData', {
                    set: function(val) {
                        setTimeout(function() {
                            getTaxDeclaration(sbqDate, "N", '2', true);
                        }, 1000);
                    }
                })
            } else {
                //"ssfwpt_zxtb"
                // var form = $("#changeForm");
                // form.find("#changeForm_data").val(JSON.stringify(submitData));
                // form.submit();
                showLoading()
                var falg = "declare";
                $.ajax({
                    type: "POST",
                    url: url + "/online/declare/toPzzl",
                    dataType: "json", // 请求方式为jsonp
                    data: {
                        data: JSON.stringify(submitData)
                    },
                    success: function(data) {
                        hideLoading()
                        if (data.code == 99 || data.code == "99") {
                            if (data.errmsg != undefined) {
                                alertWarning(data.errmsg);
                            } else {
                                alertWarning(data.returnMessage);
                            }
                            return false
                        }
                        window.taxInfo = JSON.stringify(submitData);
                        localStorage.setItem("data", JSON.stringify(submitData));

                        var url = "";
                        if (data.url == "edit.jsp") {
                            url = config.spreadUrl + "/online_report/declare/toPzzl?falg=" + falg
                        } else if (data.url == "yearReport.jsp") {
                            url = config.spreadUrl + "/online_report/declare/yearReport.html?falg=" + falg + '&params=' + encodeURI(JSON.stringify(submitData));
                        } else if (data.url == "yearReportGLB.jsp") {
                            url = config.spreadUrl + "/online_report/declare/yearReportGLB.html?falg=" + falg + '&params=' + encodeURI(JSON.stringify(submitData));
                        } else {
                            //因为后台不知道返回路径是什么样的就直接改成了else data.url == "error.jsp"
                            url = config.spreadUrl + "/online_report/error/index.html?falg=" + falg + '&params=' + encodeURI(JSON.stringify(submitData))
                        }
                        submitData.flag = true;
                        submitData.encryptKey = config.value;
                        var form = $("#changeForm");
                        form.attr('action', url); //通过jquery为action属性赋值
                        form.find("#changeForm_data").val(JSON.stringify(submitData));
                        form.submit();
                    },
                    error: function(xhr) {
                        //jsonp 方式此方法不被触发
                        if (data.returnMessage == undefined) {
                            if (data.returnMessage == undefined) {
                                alertWarning(data.errmsg);
                            } else {
                                alertWarning("程序错误，请联系管理员！");
                            }
                        } else {
                            alertWarning(data.returnMessage);
                        }
                        hideLoading()
                        console.log("=======error======================")
                    }
                })

                closeModal();
            }
        }
        /**
         * 重置调用方法
         * @param {} params
         */
    $("#reset,#reset1").on("click", refresh);
    $("#goRecord").click(function() {
        //TODO 调用备案接口
    });
    // 格式化后台返回的时间
    if (companyInfo.config.return) {
        $("#getInputValue").val(tool.formatDate(companyInfo.sbsq));
        nowdate = companyInfo.sbsq;
        drawGrid(companyInfo);
    }
    //页面出现滚动条，监听滚动条变化将高赋值给模态框
    window.onscroll = function() {
        $("#myModal").css("top", $(document).scrollTop() + 235);
    }
    return {
        changeDate: changeDate,
        reset: reset,
        declarationMethod: declarationMethod,
        closeModal: closeModal
    }
}