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') {
    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) { //客户端jquery预先定义好的callback函数，成功获取跨域服务器上的json数据后，会动态执行这个callback函数
      hideLoading();
      //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
        }
      }
      if (data.bean.sfyhzctsBz == 'Y') {
        myAlert("提示", "尊敬的纳税人、缴费人，为进一步巩固拓展减税降费成效，助力市场主体纾困解难，对部分2020年底到期税费优惠政策（不包括社会保险费），您可暂按原政策文件规定申报享受优惠（原减免性质代码可继续使用）。详细情况可咨询主管税务分局、税务所或12366纳税服务热线。感谢您的理解与支持！！", "确定");
      }
      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
    // 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
  }
}