当前位置:   article > 正文

elementui中的穿梭框实现单选以及联动_el-transfer 单选

el-transfer 单选

最近做的项目中用到了elementui中的穿梭框,要求老师和学生对应的关系是一对多,老师只能是单选的,并且如果选择了已设置的老师,需要在下面的学生的穿梭框中,同步显示该老师名下的学生信息,因为穿梭框默认是支持多选的,所以在原有基础上加以改造

效果图

代码

html代码

  1. <!--设置实习生与导师关系-->
  2. <el-dialog
  3. title="XXX实习计划导师设置"
  4. :visible.sync="showModal"
  5. width="60%">
  6. <span>
  7. <div>
  8. <div class="transfertitle">选择要设置的指导老师</div>
  9. <el-transfer
  10. v-model="value1"
  11. :data="teacherdata"
  12. :render-content="renderFunc" @left-check-change="checkTeacher($event)"
  13. @change="teaChange($event)"></el-transfer>
  14. <div class="transfertitle">选择要设置的学生</div>
  15. <el-transfer :render-content="renderFunc" v-model="stuvalue" :data="studata"></el-transfer>
  16. </div>
  17. </span>
  18. <span slot="footer" class="dialog-footer">
  19. <el-button @click="showModal = false">取 消</el-button>
  20. <el-button type="primary" @click="showModal = false">确 定</el-button>
  21. </span>
  22. </el-dialog>

数据格式

  1. teacherdata: [//老师数据
  2. {
  3. key: 0,
  4. label: `老师 A`,
  5. setting:'已设置',
  6. stuset:[1,2],
  7. disabled:false
  8. },
  9. {
  10. key: 1,
  11. setting:'',
  12. label: `老师 B`,
  13. stuset:[],
  14. disabled:false
  15. },
  16. {
  17. key: 2,
  18. setting:'',
  19. label: `老师 C`,
  20. stuset:[],
  21. disabled:false
  22. },
  23. {
  24. key: 3,
  25. setting:'',
  26. label: `老师 D`,
  27. stuset:[],
  28. disabled:false
  29. }
  30. ],
  31. studata: [//学生数据
  32. {
  33. key: 1,
  34. label: `学生 A`,
  35. setting:'已设置',
  36. disabled:false
  37. },
  38. {
  39. key: 2,
  40. label: `学生 B`,
  41. setting:'已设置'
  42. }
  43. ],
  44. stuvalue:[],//选中的学生

 js方法

  1. checkTeacher(e){
  2. //当某个老师被选中时其他老师就无法被点击
  3. let len = this.teacherdata.length;
  4. if(e.length==0){
  5. for(let i = 0;i<len;i++){
  6. this.teacherdata[i].disabled = false;
  7. }
  8. }else{
  9. for(let i = 0;i<len;i++){
  10. this.teacherdata[i].disabled = true;
  11. }
  12. this.teacherdata[e[0]].disabled = false
  13. }
  14. },
  15. teaChange(e) {
  16. let len = this.teacherdata.length;
  17. if(e.length!=0){
  18. for(let i = 0;i<len;i++){
  19. if(e[0]==i){
  20. this.teacherdata[i].disabled = false
  21. console.log(this.teacherdata[i].stuset)
  22. this.stuvalue = this.teacherdata[i].stuset.length==0?[]:this.teacherdata[i].stuset
  23. }else{
  24. this.teacherdata[i].disabled = true
  25. }
  26. }
  27. }else{
  28. for(let i = 0;i<len;i++){
  29. this.teacherdata[i].disabled = false
  30. this.stuvalue = []
  31. }
  32. }
  33. },

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/76814
推荐阅读
相关标签
  

闽ICP备14008679号