
/**
 * 等额本金 摘要
 * @param {*} money 
 * @param {*} year 
 * @param {*} rate 
 */
export function calcBJ (moneyW, year, rateB) {
  const money = moneyW * 10000;
  const month = year * 12;
  const rate= rateB / 100 / 12; // 月利率

  // 等额本金 每个月还款本金是固定的, 利息不固定
  const benjin = money / month; //每个月还款本金 

  const list = [];
  let bjLeft = money; //剩余本金
  let paid = 0; // 已还贷款
  let totalRate = 0;
  let firstRate = 0; // 最高利息
  let firstMoney = 0; // 最高月付
  for(let i = 0; i < month; i += 1) {
    // 每月还款利息
    const lx = bjLeft * rate;
    // 每月还金额
    const benxi = benjin + lx;

    bjLeft -= benjin; //剩余本金
    totalRate += lx; //利息总额
    paid += benxi;

    if(i === 0) {
      firstRate = lx;
      firstMoney = benjin + firstRate;
    }

    list.push({
      benjin,
      benxi,
      rate: lx,
      paid,
    })
  }

  const summary = {
    year,
    money,
    totalRate,
    totalMoney: money + totalRate,
    rateOfFirstMonth: firstRate,
    moneyOfFirstMonth: firstMoney,
  }

  return { summary, list }
}

// /**
//  * 等额本金 列表
//  * @param {*} moneyW 
//  * @param {*} year 
//  * @param {*} rateB 
//  * @returns 
//  */
// export function calcBJList (moneyW, year, rateB) {
//   let money = moneyW * 10000;
//   const month = year * 12;
//   const rate = rateB / 100 / 12; // 月利率
//   const benjin = money / month; //每个月还款本金 

//   const result = [];
//   let left = money;
//   for(let i = 0; i < month; i += 1) {
//     const lx = (money * rate); // 每月还款利息
//     money -= benjin;
//     left = left - benjin - lx;

//     result.push({
//       benjin,
//       benxi: benjin + lx,
//       rate: lx,
//       left,
//     })
//   }

//   return result;
// }

/**
 * 等额本息 摘要
 * @param {*} moneyW 
 * @param {*} year 
 * @param {*} rateB 
 */
export function calcBX (moneyW, year, rateB) {
  const money = moneyW * 10000;
  const month = year * 12;
  const rate = rateB / 100 / 12; // 月利息

  // 等额本息 每个月还款额是固定的, 本金 与 利息不固定
  const benxi = (money * rate * Math.pow(1 + rate, month) / (Math.pow(1 + rate, month) - 1)); // 每月还款金额

  const list = [];
  let bjLeft = money; //剩余本金
  let paid = 0; // 已还贷款
  let totalRate = 0;
  let firstRate = 0; // 
  for (var i = 0; i < month; i+=1) {
    // 每月还款利息
    const lx = bjLeft * rate;
    //每月还款本金
    const benjin = benxi - lx;

    bjLeft -= benjin;
    totalRate += lx;
    paid += benxi;

    if (i === 0) {
      firstRate = lx
    }
      
    list.push({
      benjin,
      benxi,
      rate: lx,
      paid,
    })
  }

  const summary = {
    year,
    money,
    totalRate,
    totalMoney: money + totalRate,
    rateOfFirstMonth: firstRate,
    moneyOfFirstMonth: benxi,
  }

  return { summary, list } 
}

// /**
//  * 等额本息 列表
//  * @param {*} moneyW 
//  * @param {*} year 
//  * @param {*} rateB 
//  * @returns 
//  */
// export function calcBXList (moneyW, year, rateB) {
//   let money = moneyW*10000;
//   const month = year * 12;
//   const rate = rateB / 100 / 12; // 月利息
//   const emTotal = (money * rate * Math.pow(1 + rate, month) / (Math.pow(1 + rate, month) - 1)); //每月还款金额

//   const result = [];
//   let left = money;
//   for(let i = 0; i < month; i += 1) {
//     const lx = money * rate;  //每月还款利息
//     const em = emTotal-lx; //每月还款本金 
//     money -= em;
//     left = left - em - lx;

//     result.push({
//       benjin: parseFloat(em).toFixed(2),
//       benxi: parseFloat(em +lx).toFixed(2),
//       rate: parseFloat(lx).toFixed(2),
//       left: parseFloat(left).toFixed(2),
//     })
//   }

//   return result;
// }
