classTree.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <div>
  3. <div class="flex-start">
  4. <div v-for="item in data" :key="item.index" @click.stop="classClick(item)">
  5. <p class="classItem" v-if="item.index === 1" :class="class_act === item.itemclassnum?'act':''">{{item.itemclassname}}</p>
  6. <p class="classItem" v-else :class="class_act === item.itemclassnum?'act':''">{{item.itemclassname}}</p>
  7. <Tree v-if="item.subdep && class_act === item.itemclassnum" :data="item.subdep"></Tree>
  8. </div>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. export default {
  14. name: "Tree",
  15. props:['data'],
  16. inject:['selectThis'],
  17. data () {
  18. return {
  19. activeClass:{},
  20. class_act:0,
  21. }
  22. },
  23. methods:{
  24. classClick (item) {
  25. console.log(item)
  26. this.activeClass = item
  27. this.class_act = item.itemclassnum
  28. this.selectThis().change(item)
  29. },
  30. }
  31. }
  32. </script>
  33. <style scoped>
  34. .class-item{
  35. margin:0 15px;
  36. color: #333;
  37. cursor: pointer;
  38. transition: .2s all linear;
  39. font-size: 14px;
  40. }
  41. .act{
  42. color:#3874f6;
  43. font-weight: bold;
  44. }
  45. .classIndex{
  46. margin-bottom: 0px
  47. !important;
  48. }
  49. .classItem{
  50. flex: 0 1 auto;
  51. width:80px ;
  52. margin:10px 0px 10px 0;
  53. font-size:14px !important;
  54. cursor: pointer;
  55. }
  56. .flex-start{
  57. display: flex;
  58. flex-wrap: nowrap;
  59. align-items: flex-start;
  60. position: relative;
  61. width: 80px;
  62. }
  63. </style>