<template>
  <div>
    <h2>Параметры ипотеки</h2>
    <div>
      <label for="sum">Сумма ипотеки:</label>
      <input type="number" id="sum" v-model="sum">
      <select id="currency" v-model="currency">
        <option value="rub">рубль</option>
        <option value="usd">доллар</option>
        <option value="eur">евро</option>
      </select>
    </div>
    <div>
      <label for="term">Срок ипотеки:</label>
      <input type="number" id="term" v-model="term">
      <select id="timeUnit" v-model="timeUnit">
        <option value="years">лет</option>
        <option value="months">месяцев</option>
      </select>
    </div>
    <div>
      <label for="rate">Процентная ставка:</label>
      <input type="number" id="rate" v-model="rate">
      <select id="rateUnit" v-model="rateUnit">
        <option value="year">процентов в год</option>
        <option value="month">процентов в месяц</option>
      </select>
    </div>
    <button @click="calculate">Рассчитать</button>
    <table v-if="result">
      <tr>
        <td>Сумма ежемесячного платежа:</td>
        <td>{{ result.monthlyPayment }} {{ currency }}</td>
      </tr>
      <tr>
        <td>Переплата процентов по ипотеке:</td>
        <td>{{ result.overpayment }} {{ currency }}</td>
      </tr>
      <tr>
        <td>Итоговая переплата с учетом комиссий:</td>
        <td>{{ result.totalOverpayment }} {{ currency }}</td>
      </tr>
      <tr>
        <td>Итоговая переплата за весь период:</td>
        <td>{{ result.percent }} %</td>
      </tr>
      <tr>
        <td>Полная стоимость кредита, годовых:</td>
        <td>{{ result.annualCost }} %</td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      sum: 30000,
      currency: 'rub',
      term: 10,
      timeUnit: 'months',
      rate: 12,
      rateUnit: 'year',
      result: null
    }
  },
  methods: {
    calculate() {
      let P // процентная ставка в месяц
      let n // количество месяцев
      let K // коэффициент аннуитета
      let monthlyPayment // ежемесячный платеж
      let overpayment // переплата процентов
      let totalOverpayment // итоговая переплата с учетом комиссий
      let percent // итоговая переплата в процентах от суммы кредита
      let annualCost // полная стоимость кредита, годовых
      
      if (this.rateUnit === 'year') {
        P = this.rate / 100 / 12
      } else {
        P = this.rate / 100
      }
      
      if (this.timeUnit === 'years') {
        n = this.term * 12
      } else {
        n = this.term
      }
      
      K = P + P / ((1 + P)  n - 1)
      monthlyPayment = this.sum * K
      overpayment = monthlyPayment * n - this.sum
      totalOverpayment = overpayment + 624
      percent = overpayment / this.sum * 100
      annualCost = (((monthlyPayment * n) / this.sum)  (12 / n) - 1) * 100
      
      this.result = {
        monthlyPayment: monthlyPayment.toFixed(2),
        overpayment: overpayment.toFixed(2),
        totalOverpayment: totalOverpayment.toFixed(2),
        percent: percent.toFixed(2),
        annualCost: annualCost.toFixed(2)
      }
    }
  }
}
</script>
К этому коду нужно добавить блок "Дополнительны параметры", который можно скрыть (он не обязательный), если он скрыт, то данные из него не учитываются, при нажатии он открывается или закрывается, в нем следующие строки: 
"Первоначальный взнос:" с числом и выпадающем списком выбора валюты,
"Единовременные комиссии:" с числом процентом от ипотеки,
"Ежемесячные комиссии:" также  с числом процентом от ипотеки,
"Вид платежа:" с выпадающем списком (аннуитетный, либо дифференцированный),
"Начало выплат:" с выпадающими списками месяца и отдельно года.
Используй только 2 месяца и 2 года. Сделай код максимально коротким и рабочим