var zjhm = '';
var initpage;
var sbqDate = '';
var yearBblxDm = ['10414', '10420'];
var sfyhzctsBz = "";
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: getUrlParam("pzzlDm"),
        },
        success: function(data, status, xhr) { //客户端jquery预先定义好的callback函数，成功获取跨域服务器上的json数据后，会动态执行这个callback函数
            hideLoading();
            var authorization_sbzj2 = xhr.getResponseHeader("Encryption")
            sessionStorage.setItem("authorization_sbzj2", authorization_sbzj2);
            var companyInfo = data;
            if (companyInfo.success) {
                // tool.hjDialog(companyInfo.bean.djxh)出口退税暂不上线
                zjhm = companyInfo.bean.zjhm
                sfyhzctsBz = companyInfo.bean.sfyhzctsBz
                var sbsq = companyInfo.bean.sbsq.replace('-','');
                if (companyInfo.bean.sfyhzctsBz == 'Y'&&sbsq<='202104') {
                    myAlert("提示", "尊敬的纳税人、缴费人，为进一步巩固拓展减税降费成效，助力市场主体纾困解难，对部分2020年底到期税费优惠政策（不包括社会保险费），您可暂按原政策文件规定申报享受优惠（原减免性质代码可继续使用）。详细情况可咨询主管税务分局、税务所或12366纳税服务热线。感谢您的理解与支持！！", "确定");
                }
                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);
                var djxhbz = companyInfo.bean.djxh
                var skssq
                for (var i in companyInfo.bean.taxInfos) {
                    if (companyInfo.bean.taxInfos[i].bblxDm == '10401') {
                        skssq = companyInfo.bean.taxInfos[i].sksssjz
                    }
                }
                if (skssq == '20210930') {
                    getJjkjTag(djxhbz, 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======================")
        }
    })
}
// 获取研发费用加计扣减标志
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%。", "确定");
                    // localStorage.setItem('isShow','Y')
                }
            } 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]);
                }
                if (taxInfo[i].bblxDm == '30101' || taxInfo[i].bblxDm == '30103') {
                    taxInfo[i].sssqQ = "-";
                    taxInfo[i].sssqZ = "-";
                }
            }
        }
        var id = "#taxGrid";
        var buttonHtml = "填写申报表";
        var order = ["pzzlMc", "djxh", "zgswskfjMc", "sssqQ", "sssqZ", "sbrq", "do"];
        var promptStatement = "";
        var headerList = [{
                name: "序号",
                width: "2%"
            }, {
                name: "申报表",
                width: "30%"
            },
            {
                name: "登记序号",
                width: "12%"
            },
            {
                name: "主管税务所（科、分局）",
                width: "25%"
            },
            {
                name: "税款所属期起",
                width: "7%"
            }, {
                name: "税款所属期止",
                width: "7%"
            }, {
                name: "申报日期",
                width: "7%"
            }, {
                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) {
                    data.operateType = '3';
                    data.sbbz = '3';
                    data.value = config.value;
                    if (data.sbzt == "Y") {
                        myAlert("提示", "当前申报表已经申报", "确定")
                        return false;
                    }
                    if (data.sourceFlag == "ssfwpt_sbzj") {
                        window.mlistener = {
                            selectRowData: {},
                        };
                        data.sfyhzctsBz = sfyhzctsBz //首次进表标志
                        data.fillingFlag = "normal" // 填报标记
                        data.saveUserId = "zxtb"; // 用户id
                        data.zjhm = zjhm
                        window.mlistener.selectRowData = data;
                        if (yearBblxDm.indexOf(data.bblxDm) == -1) {
                            window.open(prefix + config.ssfwptPage, '_blank');
                        } else {
                            data.saveUserId = "zxtb_singleReport"; // 用户id
                            data.userId = "zxtb"; // userId
                            window.open(prefix + config.yearTaxTable, '_blank');
                        }
                        Object.defineProperty(mlistener, 'returnSelectRowData', {
                            set: function(val) {
                                setTimeout(function() {
                                    getTaxDeclaration(sbqDate, "N", '2');
                                }, 1000);
                            }
                        })
                    } else if (data.sourceFlag == "ssfwpt_sbzj_version_2") { //税表组件2.0
                        window.mlistener = {
                            selectRowData: {},
                            urlList: {
                                getMenu: '/tax_service/getBbLb', //菜单接口
                                openTable: "/tax_service/open_table", //开表接口
                                getData: "/tax_service/get_data", //提取数据接口  
                                saveTable: "/tax_service/save_single_sbb_info", //保存
                                deleteTable: "/tax_service/delete_single_sbb_info", //删除
                                checkTaxTable: "/tax_service/report_data_validate", //表间校验
                                declareTable: "/tax_service/declare", //申报
                                downloadFile: "/tax_service/load_declare_file" //下载申报文件接口
                            }
                        };
                        data.sfyhzctsBz = sfyhzctsBz //首次进表标志
                        data.fillingFlag = "normal" // 填报标记
                        data.flag = '' //清算标志 1是清算,空是正常开表
                        window.mlistener.selectRowData = data;
                        var openUrl = prefix + config.tableBridge; //测试环境
                        window.open(openUrl, '_blank');
                        Object.defineProperty(mlistener, 'returnSelectRowData', {
                            set: function(val) {
                                setTimeout(function() {
                                    getTaxDeclaration(sbqDate, "N", '2');
                                }, 1000);
                            }
                        })
                    } else {
                        data.sfyhzctsBz = sfyhzctsBz //首次进表标志
                        data.djxh = companyInfo.djxh;
                        data.iszzsybjc = companyInfo.iszzsybjc; // 一表申报代码
                        data.nsrsbh = companyInfo.nsrsbh; // 那随人识别号
                        data.nssbq = nowdate;
                        data.checkTime = false;
                        if (data.pzzlDm === '11602') {
                            var List = companyInfo.taxInfos.filter(function(item) {
                                return item.pzzlDm == '10101' || item.pzzlDm == '10102'
                            })
                            if (List.length === 0) {
                                data.checkTime = true;
                            }
                            for (var i = 0; i < List.length; i++) {
                                if (List[i].sssqQ !== data.sssqQ || List[i].sssqZ !== data.sssqZ) {
                                    data.checkTime = true;
                                    break;
                                }
                            }
                        }
                        submitData = data;
                        if (node.context.innerText == "填写申报表" && companyInfo.iszzsybjc == "01" && data.pzzlDm == "10101") {
                            initpage.declarationMethod('N')
                        } else {
                            declarationMethod("N")
                        }
                    }
                } //点击按钮后的回调函数
        };
        var object = tool.tableCreate(tableObj);
    };

    /**
     * 税务申报 初始化数据获取
     * @param {*} mydate
     */
    var url;
    if (companyInfo) {
        url = companyInfo.config.url;
    }
    var getTaxDeclaration = function(date, type, refreshSbzt) {
        // TODO 开始加载等待动画
        showLoading();
        var param = {
            djxh: djxh,
            operateType: '3',
            sbsq: date,
            isFresh: type.toUpperCase() == "Y",
            pzzlDm: companyInfo.pzzlDm,
            refreshSbzt: refreshSbzt
        }
        $.ajax({
            url: url + "/online/declare/getPzzlList",
            data: param,
            type: "POST",
            dataType: "JSON",
            headers: { 'Encryption': sessionStorage.getItem("authorization_sbzj2") },
        }).done(function(data) {
            if (data.success) {
                if (data.bean.url == "error.jsp") {
                    myAlert("提示", data.bean.errorInfo, "确定")
                    return
                }
                drawGrid(data.bean);
                companyInfo = data.bean;
                var djxhbz = companyInfo.djxh
                zjhm = companyInfo.zjhm
                config.value = companyInfo.value;
                if (type == 'Y') {
                    myAlert("提示", "重置清册成功", "确定")
                }
                var skssq
                for (var i in data.bean.taxInfos) {
                    if (data.bean.taxInfos[i].bblxDm == '10401') {
                        skssq = data.bean.taxInfos[i].sksssjz
                    }
                }
                if (skssq == '20210930') {
                    getJjkjTag(djxhbz, 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);
        });
        /*wds  add 增量房*/
        var clf = {}
        for (var i in bean.taxInfos) {
            if (bean.taxInfos[i].pzzlDm == '12001') {
                clf = bean.taxInfos[i]
            }
        }
        // console.log(clf)
        // console.log(clf.sksssjq)
        var obj = {
                bblxDm: "12002",
                bblxMc: "《增量房交易税收申报表》",
                bczt: "W",
                checkTime: false,
                djxh: bean.djxh,
                flKey: "",
                flag: "",
                gdsbz: "G",
                gzFlag: "0",
                gzcs: null,
                hyDm: "5172",
                id: null,
                initTableArrs: "",
                initTableData: "",
                iszzsybjc: "01",
                jkrq: "",
                jkzt: "N",
                kjzd: "",
                label: null,
                multiPatch: "Y",
                nsqxDm: "11",
                nsqxdm: null,
                nsrlx: null,
                nsrmc: "",
                nsrsbh: bean.nsrsbh,
                nsrsbq: bean.sbsq.replace(/\-/g, ""),
                nssbq: bean.sbsq.replace(/\-/g, ""),
                nssbqq2: null,
                nssbqz2: null,
                operateType: bean.operateType,
                pcDm: 1,
                pzxh: "",
                pzzlDm: "12002",
                pzzlMc: "《增量房交易税收申报表》",
                qsbz: "N",
                sbbdm: null,
                sbbsx: "11",
                sbbz: "3",
                sbjg: null,
                sbqx: null,
                sbrq: null,
                sbrq1: "",
                sbuuid: "",
                sbxxId: "",
                sbzt: "N",
                se: null,
                sfyczb: "N",
                skssqq: null,
                skssqz: null,
                sksssjq: clf.sksssjq ? clf.sksssjq : "",
                sksssjz: clf.sksssjq ? clf.sksssjz : "",
                sourceFlag: "ssfwpt_sbzj",
                ssdabh: "",
                sssqQ: clf.sssqQ ? clf.sssqQ : '-',
                sssqZ: clf.sssqZ ? clf.sssqZ : '-',
                swjgmc: null,
                token: "",
                tsxx: null,
                type: "taxName",
                uuId: "",
                ybjcState: "N",
                ybtse: "",
                yzpzxh: null,
                yzpzzlDm: "",
                zgswskfjDm: "",
                zgswskfjMc: "",
                zsDjxh: bean.djxh,
                zsxmDm: "",
            }
            // console.log(obj)
        var obj1 = []
        for (var i in bean.taxInfos) {
            obj1.push(bean.taxInfos[i].pzzlDm)
        }
        if (bean.taxInfos.length == 0) {
            showTax(bean.taxInfos);
            alertInfo("税费申报暂无数据");
        } else {
            if (obj1.indexOf('12001') > -1) {
                bean.taxInfos.push(obj)
            }
            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');
        }, 50);
    };

    var refresh = function() {
        myConfirm("消息", "您确定需要重置申报清册吗？点击确定继续", "确定", "取消", function() {
            getTaxDeclaration(nowdate, "Y", '1');
        });
    };
    //申报方式 当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;
                if (yearBblxDm.indexOf(submitData.bblxDm) == -1) {
                    window.open(prefix + config.ssfwptPage, '_blank');
                } else {
                    submitData.saveUserId = "zxtb_singleReport"; // 用户id
                    submitData.userId = "zxtb"; // userId
                    window.open(prefix + config.yearTaxTable, '_blank');
                }
                Object.defineProperty(mlistener, 'returnSelectRowData', {
                    set: function(val) {
                        setTimeout(function() {
                            getTaxDeclaration(sbqDate, "N", '2');
                        }, 1000);
                    }
                })
            } else if (submitData.sourceFlag == "ssfwpt_sbzj_version_2") {
                window.mlistener = {
                    selectRowData: {},
                    urlList: {
                        getMenu: '/tax_service/getBbLb', //菜单接口
                        openTable: "/tax_service/open_table", //开表接口
                        getData: "/tax_service/get_data", //提取数据接口  
                        saveTable: "/tax_service/save_single_sbb_info", //保存
                        deleteTable: "/tax_service/delete_single_sbb_info", //删除
                        checkTaxTable: "/tax_service/report_data_validate", //表间校验
                        declareTable: "/tax_service/declare", //申报
                        downloadFile: "/tax_service/load_declare_file" //下载申报文件接口
                    }
                };
                submitData.fillingFlag = "normal" // 填报标记
                submitData.flag = '' //清算标志 1是清算,空是正常开表
                window.mlistener.selectRowData = submitData;
                var openUrl = prefix + config.tableBridge; //测试环境
                window.open(openUrl, '_blank');
                Object.defineProperty(mlistener, 'returnSelectRowData', {
                    set: function(val) {
                        setTimeout(function() {
                            getTaxDeclaration(sbqDate, "N", '2');
                        }, 1000);
                    }
                })
            } else {
                var falg = "declare";
                window.taxInfo = JSON.stringify(submitData);
                localStorage.setItem("data", JSON.stringify(submitData));
                submitData.flag = true;
                submitData.encryptKey = config.value;
                var url = config.spreadUrl + "/online_report/declare/toPzzl?falg=" + falg
                var form = $("#changeForm");
                form.attr('action', url); //通过jquery为action属性赋值
                form.find("#changeForm_data").val(JSON.stringify(submitData));
                form.submit();
                return false;
            }
        }
        /**
         * 重置调用方法
         * @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
    }
}