SeverTwo.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <view>
  3. <u-picker
  4. :show="classShow"
  5. ref="uPicker"
  6. :columns="columns"
  7. @confirm="confirm"
  8. keyName="label"
  9. @close="cancel"
  10. @change="changeHandler"
  11. :closeOnClickOverlay="true"
  12. @cancel="cancel"
  13. :defaultIndex = '[0]'
  14. ></u-picker>
  15. </view>
  16. </template>
  17. <script>
  18. export default {
  19. props: {
  20. classData: {
  21. type: Array,
  22. default: ['1'],
  23. },
  24. classShow: {
  25. type: Boolean,
  26. default: false,
  27. }
  28. },
  29. data() {
  30. return {
  31. show: this.classShow, // 控制全校多联选择器显隐
  32. confirmData: this.classData[0].label, // 选中
  33. // columns: [
  34. // ['全校', '小学', '初中'],
  35. // ],
  36. columns: [],
  37. }
  38. },
  39. created(){
  40. this.columns.push(this.classData)
  41. console.log(this.columns)
  42. },
  43. updated(){
  44. this.pickerShow()
  45. },
  46. methods: {
  47. pickerShow(){
  48. // this.show = true
  49. // this.$refs.uPicker.setColumnValues(0, this.classData)
  50. this.$refs.uPicker.setColumnValues(1, [])
  51. this.$refs.uPicker.setColumnValues(2, [])
  52. },
  53. confirm(e) {
  54. if(e.indexs[0] == 0){
  55. this.confirmData = e.value[0].label
  56. var data = e.value[0]
  57. }else{
  58. this.confirmData = e.value[e.value.length -1].label
  59. var data = e.value[e.value.length -1]
  60. }
  61. console.log('confirm', data)
  62. this.$emit('search', data)
  63. this.show = false
  64. },
  65. changeHandler(e) {
  66. const {
  67. columnIndex,
  68. value,
  69. values, // values为当前变化列的数组内容
  70. index,
  71. // 微信小程序无法将picker实例传出来,只能通过ref操作
  72. picker = this.$refs.uPicker
  73. } = e
  74. // 当第一列值发生变化时,变化第二列(后一列)对应的选项
  75. if (columnIndex === 0) {
  76. // picker为选择器this实例,变化第二列对应的选项
  77. if(index == 0){
  78. console.log('w')
  79. picker.setColumnValues(1, [])
  80. picker.setColumnValues(2, [])
  81. return
  82. }
  83. picker.setColumnValues(1, this.classData[index].children)
  84. picker.setColumnValues(2, this.classData[index].children[0].children)
  85. }
  86. if (columnIndex === 1) {
  87. // picker为选择器this实例,变化第二列对应的选项
  88. console.log('value', e, 'index', index)
  89. picker.setColumnValues(2, value[0].children[index].children)
  90. }
  91. },
  92. // 关闭
  93. cancel(){
  94. this.$emit('cancelClass')
  95. },
  96. },
  97. }
  98. </script>
  99. <style lang="scss" scoped>
  100. .choice-left{
  101. float: left;
  102. overflow: hidden;
  103. display: flex;
  104. width: 250rpx;
  105. }
  106. </style>