index.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. export default {
  2. data() {
  3. return {};
  4. },
  5. props: {
  6. // 所有列选项数据
  7. columns: {
  8. type: Array,
  9. default: () => []
  10. },
  11. // 每一列默认选中值数组,不传默认选中第一项
  12. selectVals: {
  13. type: Array,
  14. default: () => []
  15. }
  16. },
  17. computed: {
  18. // 每一列选中项的索引,当默认选中值变化的时候这个值也要变化
  19. indexArr: {
  20. // 多维数组,深度监听
  21. cache: false,
  22. get() {
  23. if (this.selectVals.length > 0) {
  24. return this.columns.map((col, cIdx) => {
  25. return col.findIndex((i) => i == this.selectVals[cIdx]);
  26. });
  27. } else {
  28. return [].fill(0, 0, this.columns.length);
  29. }
  30. }
  31. }
  32. },
  33. methods: {
  34. onChange(e) {
  35. const { value } = e.detail;
  36. let ret = this.columns.map((item, index) => {
  37. let idx = value[index];
  38. if (idx < 0) {
  39. idx = 0;
  40. }
  41. if (idx > item.length - 1) {
  42. idx = item.length - 1;
  43. }
  44. return item[idx];
  45. });
  46. this.$emit('onChange', {
  47. value: ret
  48. });
  49. }
  50. }
  51. };