//index.js
//获取应用实例
import Toast from '../../../dist/toast/toast'
const calcute = require('../../../utils/calcute.js').calcute
const app = getApp()

Page({
  onShow() {
    wx.setNavigationBarTitle({
      title: '房贷计算器'
    })
  },
  data: {
    NavList: [{ // 贷款方式选项
      value: '商业贷款',
      id: '1'
    }, {
      value: '公积金贷款',
      id: '2'
    }, {
      value: '组合贷款',
      id: '3'
    }],
    ActiveIndex: 0,
    RepaymentTypeList: [{ // 还款方式选项
      value: '等额本金',
      id: '1'
    }, {
      value: '等额本息',
      id: '2'
    }],
    CalcType: [{ // 计算方式选项
      value: '根据贷款总额计算',
      id: '1'
    }, {
      value: '根据房价总额计算',
      id: '2'
    }],
    ShowFirstPercentList: false,
    FirstPercentList: [{ // 首付比例选项
      value: '三成',
      id: '0.3'
    }, {
      value: '四成',
      id: '0.4'
    }, {
      value: '五成',
      id: '0.5'
    }, {
      value: '六成',
      id: '0.6'
    }, {
      value: '七成',
      id: '0.7'
    }, {
      value: '八成',
      id: '0.8'
    }, {
      value: '九成',
      id: '0.9'
    }],
    ShowStagesNumList: false,
    StagesNumList: [{ // 按揭年数选项
      value: '1年（12期）',
      id: '1'
    }, {
      value: '5年（60期）',
      id: '5'
    }, {
      value: '10年（120期）',
      id: '10'
    }, {
      value: '15年（180期）',
      id: '15'
    }, {
      value: '20年（240期）',
      id: '20'
    }, {
      value: '25年（300期）',
      id: '25'
    }, {
      value: '30年（360期）',
      id: '30'
    }],
    ShowCommercialLoanRateList: false,
    CommercialLoanRateList: [{ // 商业贷款利率选项
      value: '基准利率（4.9%）',
      id: '0.049'
    }, {
      value: '基准利率7折（3.43%）',
      id: '0.0343'
    }, {
      value: '基准利率75折（3.68%）',
      id: '0.0368'
    }, {
      value: '基准利率8折（3.92%）',
      id: '0.0392'
    }, {
      value: '基准利率85折（4.17%）',
      id: '0.0417'
    }, {
      value: '基准利率9折（4.41%）',
      id: '0.0441'
    }, {
      value: '基准利率95折（4.66%）',
      id: '0.0466'
    }, {
      value: '基准利率1.05倍（5.15%）',
      id: '0.0515'
    }, {
      value: '基准利率1.1倍（5.39%）',
      id: '0.0539'
    }, {
      value: '基准利率1.2倍（5.88%）',
      id: '0.0588'
    }, {
      value: '基准利率1.3倍（6.37%）',
      id: '0.0637'
    }],
    ShowPublicHousingFundLoanRateList: false,
    PublicHousingFundLoanRateList: [{ // 公积金贷款利率选项
      value: '基准利率（3.25%）',
      id: '0.0325'
    }, {
      value: '基准利率7折（2.27%）',
      id: '0.0227'
    }, {
      value: '基准利率75折（2.44%）',
      id: '0.0244'
    }, {
      value: '基准利率8折（2.60%）',
      id: '0.026'
    }, {
      value: '基准利率85折（2.76%）',
      id: '0.0276'
    }, {
      value: '基准利率9折（2.93%）',
      id: '0.0293'
    }, {
      value: '基准利率95折（3.09%）',
      id: '0.0309'
    }, {
      value: '基准利率1.05倍（3.41%）',
      id: '0.0341'
    }, {
      value: '基准利率1.1倍（3.58%）',
      id: '0.0358'
    }, {
      value: '基准利率1.2倍（3.90%）',
      id: '0.039'
    }, {
      value: '基准利率1.3倍（4.23%）',
      id: '0.0423'
    }],
    Options: {
      RepaymentType: '2', // 还款方式： 1-等额本金；2-等额本息（123）
      CalcType: '1', // 计算方式： 1-根据贷款总额计算；2-根据房价总额计算（12）
      TotalPrice: '0', // 房价总额（12）
      FirstPercent: '0.3', //  首付比例id（12）
      FirstPercentName: '三成', // 首付比例名称
      FirstPrice: '0', // 首付金额（12）
      StagesNum: '30', // 按揭年数（123）
      StagesNumName: '30年（360期）', // 按揭年数名称（123）
      CommercialLoanRate: '0.049', // 商业贷款利率（1）
      CommercialLoanRateNumName: '4.9', // 商业贷款利率名称（1）
      CommercialLoanRateName: '基准利率（4.9%）', // 商业贷款利率名称（1）
      PublicHousingFundLoanRate: '0.0325', // 公积金贷款利率（2）
      PublicHousingFundLoanRateNumName: '3.25', // 公积金贷款利率名称（2）
      PublicHousingFundLoanRateName: '基准利率（3.25%）', // 公积金贷款利率名称（2）
      CommercialPrice: '0', // 商业贷款总额（3）
      PublicHousingFundPrice: '0', // 公积金贷款总额（3）
    },
    MainResult: {
      PriceOfMonth: '0.00', // 月供
      TotalInterest: '0.00', // 总利息
      TotalPrice: '0.00', // 还款总额
      TotalPriceFloat: '0.00',
      TotalLoanSum: '0.00', // 总贷款数
      TotalInterestFloat: '0.00' // 总利息（万）
    },
    ShowRepaymentList: false, // 显示还款详情
    CanCheck: false,
    RepaymentList: [] // 还款详情
  },
  CutNav(e) { // 切换贷款方式
    this.setData({
      ActiveIndex: e.target.dataset.index
    })
  },
  CloseRepaymentList() { // 关闭还款详情
    this.setData({
      ShowRepaymentList: false
    })
  },
  CheckRepaymentList() { // 查看还款详情
    if (this.data.CanCheck) {
      this.setData({
        ShowRepaymentList: true
      })
    }
  },
  SelectPublicHousingFundLoanRate() { // 打开公积金贷利率选项
    this.setData({
      ShowPublicHousingFundLoanRateList: true
    })
  },
  SelectPublicHousingFundCancel() { // 关闭公积金贷利率选项
    this.setData({
      ShowPublicHousingFundLoanRateList: false
    })
  },
  SelectPublicHousingFundConfirm(e) { // 确认公积金贷利率选项
    this.setData({
      Options: {
        ...this.data.Options,
        PublicHousingFundLoanRate: e.detail.value.id,
        PublicHousingFundLoanRateNumName: ((e.detail.value.id - 0) * 100).toFixed(2),
        PublicHousingFundLoanRateName: e.detail.value.value
      },
      ShowPublicHousingFundLoanRateList: false
    })
  },
  SelectCommercialLoanRate() { // 打开商贷利率选项
    this.setData({
      ShowCommercialLoanRateList: true
    })
  },
  SelectCommercialLoanRateCancel() { // 关闭商贷利率选项
    this.setData({
      ShowCommercialLoanRateList: false
    })
  },
  SelectCommercialLoanRateConfirm(e) { // 确认商贷利率选项
    this.setData({
      Options: {
        ...this.data.Options,
        CommercialLoanRate: e.detail.value.id,
        CommercialLoanRateNumName: ((e.detail.value.id - 0) * 100).toFixed(2),
        CommercialLoanRateName: e.detail.value.value
      },
      ShowCommercialLoanRateList: false
    })
  },
  SelectStagesNum() { // 打开按揭年数选项
    this.setData({
      ShowStagesNumList: true
    })
  },
  SelectStagesNumListCancel() { // 关闭按揭年数选项
    this.setData({
      ShowStagesNumList: false
    })
  },
  SelectStagesNumListConfirm(e) { // 确认按揭年数选项
    this.setData({
      Options: {
        ...this.data.Options,
        StagesNum: e.detail.value.id,
        StagesNumName: e.detail.value.value
      },
      ShowStagesNumList: false
    })
  },
  SelectFirstPercent() { // 打开首付比例选项
    this.setData({
      ShowFirstPercentList: true
    })
  },
  SelectFirstPercentCancel() { // 关闭首付比例选项
    this.setData({
      ShowFirstPercentList: false
    })
  },
  SelectFirstPercentConfirm(e) { // 确认选择首付比例
    this.setData({
      Options: {
        ...this.data.Options,
        FirstPercent: e.detail.value.id,
        FirstPercentName: e.detail.value.value
      },
      ShowFirstPercentList: false
    })
    if (this.data.Options.TotalPrice - 0 !== 0) {
      this.setData({
        Options: {
          ...this.data.Options,
          FirstPrice: (this.data.Options.TotalPrice * 10000 * this.data.Options.FirstPercent).toFixed(2)
        }
      })
    }
  },
  TextInput(e) { // input输入事件
    this.setData({
      Options: {
        ...this.data.Options,
        [e.currentTarget.dataset.name]: e.detail.value
      }
    })
    if (e.currentTarget.dataset.name === 'TotalPrice') {
      this.setData({
        Options: {
          ...this.data.Options,
          FirstPrice: (e.detail.value * 10000 * this.data.Options.FirstPercent).toFixed(2)
        }
      })
    }
  },
  RadioChange(e) { // radio改变事件
    this.setData({
      Options: {
        ...this.data.Options,
        [e.currentTarget.dataset.name]: e.detail.id
      }
    })
  },
  ResetMainResult() { // 重置贷款主信息
    this.setData({
      MainResult: {
        PriceOfMonth: '0.00', // 月供
        TotalInterest: '0.00', // 总利息
        TotalPrice: '0.00', // 还款总额
        TotalPriceFloat: '0.00',
        TotalLoanSum: '0.00', // 总贷款数
        TotalInterestFloat: '0.00' // 总利息（万）
      },
      RepaymentList: []
    })
  },
  StartCalc() { // 计算房贷
    // console.log(JSON.stringify(this.data.Options))
    let Options = this.data.Options
    if (this.data.ActiveIndex !== 2) {
      if (Options.TotalPrice - 0 === 0) {
        Toast('房价总额须为大于0数字')
        this.setData({
          CanCheck: false
        })
        return false
      }
    } else {
      if (Options.CommercialPrice - 0 === 0) {
        Toast('商贷总额须为大于0数字')
        this.setData({
          CanCheck: false
        })
        return false
      }
      if (Options.PublicHousingFundPrice - 0 === 0) {
        Toast('公积金贷款总额须为大于0数字')
        this.setData({
          CanCheck: false
        })
        return false
      }
    }
    this.ResetMainResult()
    let SdSum = Options.TotalPrice * (1 - Options.FirstPercent) // 商贷金额
    let GdSum = Options.TotalPrice * (1 - Options.FirstPercent) // 公积金贷款金额
    let SdTotalSum = Options.CommercialPrice // 商贷总额
    let GdTotalSum = Options.PublicHousingFundPrice // 公积金贷款总额
    let SdYears = Options.StagesNum // 商贷按揭年数
    let GdYears = Options.StagesNum // 公积金贷款按揭年数
    let SdInterestRate = Options.CommercialLoanRate - 0 // 商贷利率
    let GdInterestRate = Options.PublicHousingFundLoanRate - 0 // 公积金贷款利率
    let Result = null
    let RepaymentList = []
    if (this.data.ActiveIndex === 0) { // 商业贷款逻辑
      if (Options.RepaymentType - 0 === 1) { // 等额本金
        Result = calcute.singleDk(2, SdSum, SdYears, SdInterestRate)
      } else { // 等额本息
        Result = calcute.singleDk(1, SdSum, SdYears, SdInterestRate)
      }
    } else if (this.data.ActiveIndex === 1) { // 公积金贷款逻辑
      if (Options.RepaymentType - 0 === 1) { // 等额本金
        Result = calcute.singleDk(2, GdSum, GdYears, GdInterestRate)
      } else { // 等额本息
        Result = calcute.singleDk(1, GdSum, GdYears, GdInterestRate)
      }
    } else if (this.data.ActiveIndex === 2) { // 组合贷款逻辑
      if (Options.RepaymentType - 0 === 1) { // 等额本金
        Result = calcute.zuhe(2, SdTotalSum, GdTotalSum, SdYears, GdYears, SdInterestRate, GdInterestRate)
      } else { // 等额本息
        Result = calcute.zuhe(1, SdTotalSum, GdTotalSum, SdYears, GdYears, SdInterestRate, GdInterestRate)
      }
    }
    Result.monthdataArray.map((item) => {
      RepaymentList.push({
        Month: item.monthName,
        Price: ((item.yuelixi - 0) + (item.yuebenjin - 0)).toFixed(2),
        StockSum: item.leftFund.toFixed(2)
      })
    })
    this.setData({
      MainResult: {
        PriceOfMonth: Result.yuegong.toFixed(2), // 月供
        TotalInterest: Result.totalLixi.toFixed(2), // 总利息
        TotalPrice: Result.totalPrice.toFixed(2), // 还款总额
        TotalPriceFloat: (Result.totalPrice / 10000).toFixed(2),
        TotalLoanSum: Result.totalDknum.toFixed(2), // 总贷款数
        TotalInterestFloat: (Result.totalLixi / 10000).toFixed(2)
      },
      RepaymentList: RepaymentList,
      CanCheck: true
    })
  }
})