severOne.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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 = 'indexs'
  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. indexs: [0,0,0],
  38. }
  39. },
  40. created(){
  41. this.columns.push(this.classData)
  42. this.columns.push(this.classData[0].children)
  43. this.columns.push(this.classData[0].children[0].children)
  44. console.log(this.columns)
  45. },
  46. updated(){
  47. // this.pickerShow()
  48. },
  49. methods: {
  50. pickerShow(){
  51. // this.show = true
  52. // this.$refs.uPicker.setColumnValues(0, this.classData)
  53. this.$refs.uPicker.setColumnValues(1, [])
  54. this.$refs.uPicker.setColumnValues(2, [])
  55. },
  56. confirm(e) {
  57. console.log(e)
  58. if(e.indexs[0] == 0 && e.indexs.length == 1){
  59. this.confirmData = e.values[2][0].label
  60. var data = e.values[2][0]
  61. this.indexs=[0,0,0]
  62. }else{
  63. this.confirmData = e.value[e.value.length -1].label
  64. var data = e.value[e.value.length -1]
  65. this.indexs = e.indexs
  66. }
  67. console.log('confirm', data)
  68. this.$emit('search', data)
  69. this.show = false
  70. },
  71. changeHandler(e) {
  72. const {
  73. columnIndex,
  74. value,
  75. values, // values为当前变化列的数组内容
  76. index,
  77. // 微信小程序无法将picker实例传出来,只能通过ref操作
  78. picker = this.$refs.uPicker
  79. } = e
  80. // 当第一列值发生变化时,变化第二列(后一列)对应的选项
  81. if (columnIndex === 0) {
  82. // picker为选择器this实例,变化第二列对应的选项
  83. // if(index == 0){
  84. // console.log('w')
  85. // picker.setColumnValues(1, [])
  86. // picker.setColumnValues(2, [])
  87. // return
  88. // }
  89. picker.setColumnValues(1, this.classData[index].children)
  90. picker.setColumnValues(2, this.classData[index].children[0].children)
  91. }
  92. if (columnIndex === 1) {
  93. // picker为选择器this实例,变化第二列对应的选项
  94. console.log('value', e, 'index', index)
  95. picker.setColumnValues(2, value[0].children[index].children)
  96. }
  97. },
  98. // 关闭
  99. cancel(){
  100. this.$emit('cancelClass')
  101. },
  102. },
  103. }
  104. </script>
  105. <style lang="scss" scoped>
  106. .choice-left{
  107. float: left;
  108. overflow: hidden;
  109. display: flex;
  110. width: 250rpx;
  111. }
  112. </style>