index.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // commpents/form/index.js
  2. const app = getApp()
  3. Component({
  4. options: {
  5. multipleSlots: true // 在组件定义时的选项中启用多 slot 支持
  6. },
  7. /**
  8. * 组件的属性列表
  9. */
  10. properties: {
  11. fields: { type: Array },
  12. },
  13. /**
  14. * 组件的初始数据
  15. */
  16. data: {
  17. form: {
  18. icon: []
  19. },
  20. isSubmit: false,
  21. fileList: [],
  22. },
  23. /**
  24. * 组件的方法列表
  25. */
  26. methods: {
  27. toSubmit() {
  28. const form = this.data.form;
  29. this.triggerEvent('submit', form)
  30. },
  31. toSelected(event) {
  32. const data = event?.detail;
  33. const form = this.data.form;
  34. const { value, model } = data;
  35. form[model] = value;
  36. this.setData({ form })
  37. },
  38. onChange(event) {
  39. // event.detail 为当前输入的值
  40. const data = this.data.form;
  41. const model = event.target?.dataset?.model;
  42. const value = event?.detail;
  43. if (!model) return;
  44. data[model] = value;
  45. this.setData({ form: data })
  46. },
  47. onOChange(event) {
  48. const data = this.data.form;
  49. const model = event.target?.dataset?.model;
  50. const value = event?.detail?.value;
  51. if (!model) return;
  52. data[model] = value;
  53. this.setData({ form: data })
  54. },
  55. uploadIcon(event) {
  56. const data = event?.detail;
  57. if (!data) return;
  58. const form = this.data.form;
  59. if (!form?.icon) form.icon = []
  60. form.icon.push(data);
  61. this.setData({ form })
  62. },
  63. deleteImg(event) {
  64. const i = event?.detail?.index;
  65. if (i <= -1) return;
  66. const form = this.data.form;
  67. form.icon.splice(i, 1)
  68. this.setData({ form })
  69. }
  70. }
  71. })