field-cascader.ts 905 B

123456789101112131415161718192021222324252627282930313233
  1. // module/user/components/field-cascader/field-cascader.ts
  2. Component({
  3. behaviors: ['wx://form-field'],
  4. lifetimes: {},
  5. properties: {
  6. name: { type: String, value: '' },
  7. title: { type: String, value: '' },
  8. closeOnOverlayClick: { type: Boolean, value: true },
  9. },
  10. data: {
  11. visible: false,
  12. value: [] as { code: string; name: string; }[],
  13. },
  14. observers: {
  15. },
  16. methods: {
  17. onShow() {
  18. this.setData({ visible: true });
  19. },
  20. onConfirm(event: { detail: { value: string[]; code: string[] } }) {
  21. const { value, code } = event.detail;
  22. const gather = value.map((name, index) => ({ name, code: code[index] }))
  23. this.setData({ value: gather });
  24. const name = this.data.name;
  25. if (name) this.triggerEvent('change', { [name]: gather }, { bubbles: true, composed: true });
  26. },
  27. onClose() {
  28. this.setData({ visible: false })
  29. }
  30. }
  31. })