index.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const currency = require("../../../../../utils/currency"),
  2. CNY = value => currency(value, {
  3. symbol: "¥",
  4. precision: 2
  5. }).format();
  6. Component({
  7. properties: {
  8. list: Array,
  9. deleteItem: Function,
  10. changeQueue: Function, //修改队列
  11. disabled: Boolean
  12. },
  13. options: {
  14. addGlobalClass: true
  15. },
  16. methods: {
  17. onBlur(e) {
  18. let {
  19. index,
  20. name
  21. } = e.currentTarget.dataset,
  22. detail = name == 'qty' ? e.detail.value - 0 : (e.detail.value - 0).toFixed(2),
  23. item = this.data.list[index];
  24. if (item[name] == detail) return;
  25. item[name] = currency(detail).value;
  26. if (name == 'price') {
  27. if (item.price > item.marketprice) item.price = item.marketprice
  28. if (item.price <= 0) item.price = 1
  29. item.discountrate = this.getPercent(item.price, item.marketprice).toFixed(2);
  30. } else if (name == 'discountrate') {
  31. if (item.discountrate > 100) item.discountrate = 100;
  32. if (item.discountrate <= 0) item.discountrate = 1;
  33. item.price = currency(item.marketprice).multiply((item.discountrate / 100)).value;
  34. }
  35. item.showAmount = CNY(currency(item.price).multiply(item.qty));
  36. item.amount = currency(item.price).multiply(item.qty).value;
  37. item.discountDifferenceAmount = CNY(currency(item.price).subtract(item.minPrice));
  38. this.setData({
  39. [`list[${index}]`]: item
  40. })
  41. let obj = {};
  42. ["sa_quotedprice_itemsid", "itemid", "price", "discountrate", "qty", "mindiscountrate", "discountDifferenceAmount", "amount"].forEach(v => obj[v] = item[v]);
  43. obj.discountrate = (obj.discountrate / 100).toFixed(4);
  44. this.triggerEvent("changeQueue", obj)
  45. },
  46. /* 计算百分比 */
  47. getPercent(num, total) {
  48. num = parseFloat(num);
  49. total = parseFloat(total);
  50. if (isNaN(num) || isNaN(total)) {
  51. return "-";
  52. }
  53. return total <= 0 ? "0%" : Math.round((num / total) * 10000) / 100;
  54. },
  55. deleteProduct(e) {
  56. const {
  57. sa_quotedprice_itemsid,
  58. itemname
  59. } = e.currentTarget.dataset.item,
  60. that = this;
  61. wx.showModal({
  62. title: '提示',
  63. content: `是否确认删除“${itemname}”?`,
  64. complete: ({
  65. confirm
  66. }) => {
  67. if (confirm) that.triggerEvent("deleteItem", [sa_quotedprice_itemsid]);
  68. }
  69. })
  70. },
  71. }
  72. })