index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import {
  2. getCustomItems
  3. } from "../../../utils/customItemType";
  4. Component({
  5. properties: {
  6. topHei: {
  7. type: String,
  8. value: "20rpx"
  9. },
  10. onChange: {
  11. type: Function
  12. }
  13. },
  14. options: {
  15. multipleSlots: true
  16. },
  17. externalClasses: ["external-custom-box", "external-custom-label"],
  18. data: {
  19. list: []
  20. },
  21. methods: {
  22. init(data) {
  23. getCustomItems(data).then(list => {
  24. this.setData({
  25. list
  26. })
  27. this.getResult();
  28. console.log(this.data.list)
  29. })
  30. },
  31. onOption(e) {
  32. const {
  33. index,
  34. value
  35. } = e.currentTarget.dataset;
  36. if (this.data.list[index].value == value) return;
  37. this.setData({
  38. [`list[${index}].value`]: value
  39. });
  40. this.getResult();
  41. },
  42. getResult(isSubmit) {
  43. let obj = {};
  44. let breakOff = false;
  45. this.data.list.filter(v => {
  46. if (breakOff) return;
  47. if (v.type == '自定义') {
  48. if (!v.value) v.value = 0;
  49. if (v.value < v.min) v.value = v.min;
  50. }
  51. obj[v.key] = v.value || '';
  52. if (isSubmit && !obj[v.key]) {
  53. wx.showToast({
  54. title: `请完成定制"${v.label}"选项`,
  55. icon: "none"
  56. })
  57. breakOff = true;
  58. }
  59. })
  60. console.log("result", obj)
  61. this.triggerEvent("onChange", breakOff ? false : obj)
  62. return breakOff ? false : obj
  63. },
  64. /* 定制步进器 */
  65. changeStepper(e) {
  66. const {
  67. index,
  68. item
  69. } = e.currentTarget.dataset;
  70. if (!item.value) item.value = 0;
  71. if (e.type == 'plus') {
  72. item.value += 1
  73. } else if (e.type == 'minus') {
  74. item.value -= 1
  75. } else {
  76. item.value = (e.detail.value - 0).toFixed(item.decimalplaces);
  77. }
  78. item.value = item.value - 0;
  79. if (item.value > item.max) item.value = item.max;
  80. if (item.value < item.min) item.value = item.min;
  81. this.setData({
  82. [`list[${index}]`]: item
  83. })
  84. this.getResult();
  85. },
  86. }
  87. })