fdrcalculator.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*
  2. * @Author: Marte
  3. * @Date: 2017-09-26 14:33:29
  4. * @Last Modified by: Marte
  5. * @Last Modified time: 2017-10-12 11:40:26
  6. */
  7. 'use strict';
  8. var fdrCalculater = {
  9. // 限小数点前5位后5位
  10. "testPrice": function(val) {
  11. var reg = /^(?!0\d)\d{1,5}(\.\d{1,5})?$/;
  12. return reg.test(val);
  13. },
  14. /**
  15. * [商贷/公贷(等额本息还款)]
  16. * @param {[type]} _dksum [贷款总额]
  17. * @param {[type]} _dkrate [贷款利率]
  18. * @param {[type]} _dklimit [贷款期限]
  19. */
  20. "businessBx": function(_dksum, _dkrate, _dklimit) {
  21. var busmodelBx = new Object;
  22. // 等额本息还款:
  23. //贷款总额
  24. var _dedk = _dksum; //贷款总额
  25. // 每月还款:单位(元),精确到个位数;
  26. // 公式:每月还款额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
  27. var _bxsy = (_dedk * 10000) * (_dkrate * Math.pow((1 + _dkrate), _dklimit)) / (Math.pow((1 + _dkrate), _dklimit) - 1);
  28. busmodelBx.bxsy = _bxsy.toFixed(2);
  29. // 利息总额:单位(万元),精确到小数点后2位;
  30. // 公式:总利息=还款月数×每月月供额-贷款本金
  31. var _bxlx = (_dklimit * _bxsy) / 10000 - _dedk;
  32. busmodelBx.bxlx = _bxlx.toFixed(2);
  33. return busmodelBx;
  34. },
  35. /**
  36. * [商贷/公贷(等额本金还款)]
  37. * @param {[type]} _dksum [贷款总额]
  38. * @param {[type]} _dkrate [贷款利率]
  39. * @param {[type]} _dklimit [贷款期限]
  40. */
  41. "businessBj": function(_dksum, _dkrate, _dklimit) {
  42. var busmodelBj = new Object;
  43. var _dedk = _dksum; //贷款总额
  44. // 等额本金还款:
  45. // 首月还款=(贷款本金÷还款月数)+(贷款本金-已归还本金累计额)×月利率
  46. busmodelBj.bjsy = (((_dedk / _dklimit) + (_dedk - 0) * _dkrate) * 10000).toFixed(2);
  47. // 每月递减=贷款本金÷还款月数×月利率
  48. busmodelBj.monthcut = ((_dedk / _dklimit * _dkrate) * 10000).toFixed(2);
  49. // 利息总额=总贷款数×月利率×(还款次数+1)÷2
  50. busmodelBj.bjlx = (_dedk * _dkrate * (_dklimit + 1) / 2).toFixed(2);
  51. return busmodelBj;
  52. },
  53. /**
  54. * [税费计算]
  55. * @param {[type]} _type [购房性质类型 1首套房,2二套房]
  56. * @param {[type]} _sigprice [房屋单价]
  57. * @param {[type]} _sigarea [房屋类型]
  58. */
  59. "sfCount": function(_type, _sigprice, _sigarea) {
  60. var sfmodel = new Object;
  61. var _rate = 0;
  62. if (_sigarea <= 90) {
  63. _rate = 0.01;
  64. } else {
  65. if (_type == 1) {
  66. _rate = 0.015;
  67. } else if (_type == 2) {
  68. _rate = 0.02;
  69. }
  70. }
  71. //房屋总价:房屋单价*房屋面积;
  72. //契税:房屋总价*税率;
  73. var _houseSum = (Number(_sigprice) * Number(_sigarea) / 10000).toFixed(2);
  74. sfmodel.sumprice = _houseSum; //房屋总价
  75. sfmodel.sumtax = (_houseSum * 10000 * _rate).toFixed(2); //契税
  76. return sfmodel;
  77. },
  78. /**
  79. * [购房能力评估]
  80. * @param {[type]} _payment [现有首付金额]
  81. * @param {[type]} _pay [每月购房支出]
  82. * @param {[type]} _limittext [期望贷款年限文字]
  83. * @param {[type]} _limitnum [期望贷款年限数字]
  84. * @param {[type]} _area [期望购房面积]
  85. */
  86. "buyHouseAccess": function(_payment, _pay, _limittext, _limitnum, _area) {
  87. // 可贷款金额=月供*还款年限*商贷标准月利率
  88. var accessmodel = new Object;
  89. var _monthrate = 0.049 / 12; //月利率
  90. //可贷款金额
  91. // 每月还款额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
  92. var _mp = Math.pow((1 + _monthrate), _limitnum);
  93. var _dkprice = (((_mp - 1) * _pay) / (10000 * _monthrate * _mp)).toFixed(2);
  94. var _paysum = ((Number(_payment) + Number(_dkprice))).toFixed(2); //可购房总价(万元)
  95. var _sigprice = ((_paysum * 10000) / Number(_area)).toFixed(2); //(元)
  96. accessmodel.paysum = _paysum;
  97. accessmodel.housearea = _area;
  98. accessmodel.sigprice = _sigprice;
  99. accessmodel.limit = _limittext;
  100. return accessmodel;
  101. }
  102. };