classTree.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. .right-line {
  42. border-right: 1px solid #e3e5ea;
  43. padding-right: 10px;
  44. }
  45. .act{
  46. color:#3874f6;
  47. font-weight: bold;
  48. }
  49. .classIndex{
  50. margin-bottom: 0px
  51. !important;
  52. }
  53. .classItem{
  54. margin: 10px 40px;
  55. padding-right: 10px;
  56. border-right: 1px solid #e3e5ea;
  57. font-size:14px !important;
  58. cursor: pointer;
  59. }
  60. .classItem:nth-of-type(1) {
  61. margin-left: 0;
  62. }
  63. .flex-start{
  64. display: flex;
  65. flex-wrap: nowrap;
  66. align-items: flex-start;
  67. position: relative;
  68. }
  69. </style>