calc_fees.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * Created by Mai on 2017/7/21.
  3. */
  4. let calcFees = {
  5. findFee: function (data, fieldName) {
  6. if (!data.fees) {
  7. data.fees = [];
  8. data.feesIndex = {};
  9. }
  10. for (let fee of data.fees) {
  11. if (fee.fieldName === fieldName) {
  12. return fee;
  13. }
  14. }
  15. return null;
  16. },
  17. addFee: function (data, fieldName) {
  18. let fee = {
  19. 'fieldName': fieldName,
  20. 'unitFee': 0,
  21. 'totalFee': 0,
  22. 'tenderUnitFee': 0,
  23. 'tenderTotalFee': 0
  24. };
  25. data.fees.push(fee);
  26. data.feesIndex[fieldName] = fee;
  27. },
  28. checkFields: function (data, fields) {
  29. if (!data.fees) {
  30. data.fees = [];
  31. data.feesIndex = {};
  32. }
  33. for (let field of fields) {
  34. if (!this.findFee(data, field.type)) {
  35. this.addFee(data, field.type);
  36. }
  37. }
  38. },
  39. getFee: function (data, fullField) {
  40. let fields = fullField.split('.'), value = data;
  41. for (let field of fields) {
  42. if (value[field]!=undefined||value[field]!=null) {
  43. value = value[field];
  44. } else {
  45. return 0;
  46. }
  47. }
  48. return value;
  49. },
  50. getFeeSplit: function (data, fullFields) {
  51. let value = data;
  52. for (let field of fullFields) {
  53. if (value[field]) {
  54. value = value[field];
  55. } else {
  56. return 0;
  57. }
  58. }
  59. return value;
  60. },
  61. setFee: function (data, fullField, value) {
  62. let fields = fullField.split('.'), valueField = data;
  63. for (let i in fields) {
  64. if (valueField[fields[i]]) {
  65. if (i == fields.length - 1) {
  66. valueField[fields[i]] = value;
  67. } else {
  68. valueField = valueField[fields[i]];
  69. }
  70. } else {
  71. if (i == fields.length - 1) {
  72. valueField[fields[i]] = value;
  73. } else {
  74. valueField[fields[i]] = {};
  75. };
  76. }
  77. }
  78. }
  79. }