index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. Component({
  2. properties: {
  3. list: Array,
  4. deleteItem: Function,
  5. changeQueue: Function, //修改队列
  6. disabled: Boolean
  7. },
  8. options: {
  9. addGlobalClass: true
  10. },
  11. methods: {
  12. onBlur(e) {
  13. let {
  14. index,
  15. name
  16. } = e.currentTarget.dataset,
  17. detail = name == 'qty' ? e.detail.value - 0 : (e.detail.value - 0).toFixed(2),
  18. item = this.data.list[index];
  19. switch (name) {
  20. case "qty":
  21. item.qty = detail;
  22. item.amount = (item.price * item.qty).toFixed(2);
  23. break;
  24. case "discountrate":
  25. if (detail >= 100) {
  26. item.discountrate = 100
  27. } else if (detail <= 0) {
  28. item.discountrate = 1
  29. } else {
  30. item.discountrate = detail;
  31. }
  32. //改变折扣 重新计算现价和总价
  33. item.price = (item.marketprice * (item.discountrate / 100) - 0).toFixed(2);
  34. item.amount = (item.price * item.qty).toFixed(2);
  35. console.log(item.price)
  36. break;
  37. case "price":
  38. if (detail >= item.marketprice) {
  39. item.price = item.marketprice
  40. } else if (detail <= 0) {
  41. item.discountrate = 1;
  42. item.price = (item.marketprice * (item.discountrate / 100) - 0).toFixed(2);
  43. } else {
  44. item.price = detail;
  45. }
  46. //改变现价 重新计算总价和折扣
  47. item.amount = (item.price * item.qty).toFixed(2);
  48. item.discountrate = this.getPercent(item.price, item.marketprice).toFixed(2);
  49. break;
  50. case "remarks":
  51. item.remarks = e.detail.value;
  52. break;
  53. }
  54. this.setData({
  55. [`list[${index}]`]: item
  56. })
  57. let obj = {};
  58. ["sa_contract_itemsid", "itemid", "price", "discountrate", "qty", "remarks", 'marketprice'].forEach(v => obj[v] = item[v]);
  59. obj.discountrate = (obj.discountrate / 100).toFixed(4);
  60. obj.showAmount = item.amount;
  61. this.triggerEvent("changeQueue", obj)
  62. },
  63. /* 计算百分比 */
  64. getPercent(num, total) {
  65. num = parseFloat(num);
  66. total = parseFloat(total);
  67. if (isNaN(num) || isNaN(total)) {
  68. return "-";
  69. }
  70. return total <= 0 ? "0%" : Math.round((num / total) * 10000) / 100;
  71. },
  72. deleteProduct(e) {
  73. const {
  74. sa_contract_itemsid,
  75. itemname
  76. } = e.currentTarget.dataset.item,
  77. that = this;
  78. wx.showModal({
  79. title: '提示',
  80. content: `是否确认删除“${itemname}”?`,
  81. complete: ({
  82. confirm
  83. }) => {
  84. if (confirm) that.triggerEvent("deleteItem", [sa_contract_itemsid]);
  85. }
  86. })
  87. },
  88. }
  89. })