calc_fees.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * Created by Mai on 2017/7/21.
  3. */
  4. let feeType = [
  5. {type: 'common', name: '工程造价'},
  6. {type: 'labour', name: '人工费'},
  7. {type: 'material', name: '材料费'},
  8. {type: 'machine', name: '机械费'},
  9. {type: 'rationDirect', name: '定额直接费'},
  10. {type: 'management', name: '企业管理'},
  11. {type: 'profit', name: '利润'},
  12. {type: 'risk', name: '风险费'},
  13. // 模拟用户新增
  14. {type: 'fee1', name: '甲供材料费'}
  15. ];
  16. let calcFees = {
  17. findFee: function (data, fieldName) {
  18. if (!data.fees) {
  19. data.fees = [];
  20. }
  21. for (let fee of data.fees) {
  22. if (fee.fieldName === fieldName) {
  23. return fee;
  24. }
  25. }
  26. return null;
  27. },
  28. AddFee: function (data, fieldName) {
  29. let fee = {
  30. 'fieldName': fieldName,
  31. 'unitFee': 0,
  32. 'totalFee': 0,
  33. 'tenderUnitFee': 0,
  34. 'tenderTotalFee': 0
  35. };
  36. data.fees.push(fee);
  37. data.feesIndex[fieldName] = fee;
  38. },
  39. checkFields: function (data, fields) {
  40. if (!data.fees) {
  41. data.fees = [];
  42. data.feesIndex = {};
  43. }
  44. for (let field of fields) {
  45. if (!this.findFee(data, field.type)) {
  46. this.AddFee(data, field.type);
  47. }
  48. }
  49. },
  50. getFee: function (data, fullField) {
  51. let fields = fullField.split('.'), value = data;
  52. for (let field of fields) {
  53. if (value[field]) {
  54. value = value[field];
  55. } else {
  56. return 0;
  57. }
  58. }
  59. return value;
  60. },
  61. getFeeSplit: function (data, fullFields) {
  62. let value = data;
  63. for (let field of fullFields) {
  64. if (value[field]) {
  65. value = value[field];
  66. } else {
  67. return 0;
  68. }
  69. }
  70. return value;
  71. }
  72. }