Item.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <!-- 分析项 -->
  3. <div class="custom-analyse-tabs-item">
  4. <el-collapse v-model="activeItem2">
  5. <el-collapse-item v-for="menu in treeList" :name="menu.id">
  6. <template slot="title">
  7. <div class="custom-title">
  8. <span class="label">{{ menu.name }}</span>
  9. <span class="do" v-if="$permission('/workspace/folder/analyticSystem/chartAnalysis/groupModify') && $r(projectId,[1,2])">
  10. <i class="el-icon-edit" @click.stop="handleEdit(menu)"></i>
  11. <i class="el-icon-delete" @click.stop="handleDelete(menu)"></i>
  12. </span>
  13. </div>
  14. </template>
  15. <div v-for="item in menu.children" @click="handleSelect(item.uid)" class="tree-item" :class="{ 'is-active2' : item.uid === form.uid }">
  16. <div class="custom-title">
  17. <span class="label">{{ item.name }}</span>
  18. <span class="do" v-if="$permission('/workspace/folder/analyticSystem/chartAnalysis/groupItemDelete') && $r(projectId,[1,2])">
  19. <i class="el-icon-delete" @click.stop="handleDelete(item)"></i>
  20. </span>
  21. </div>
  22. </div>
  23. </el-collapse-item>
  24. </el-collapse>
  25. </div>
  26. </template>
  27. <script>
  28. import mixins from "./mixins";
  29. export default {
  30. mixins: [mixins],
  31. data() {
  32. return {
  33. activeItem2: this.activeItem,
  34. }
  35. },
  36. mounted() {
  37. },
  38. methods: {
  39. handleEdit(value) {
  40. this.$emit('edit', value)
  41. },
  42. handleDelete(value) {
  43. this.$emit('delete', value)
  44. },
  45. handleSelect(key) {
  46. this.$emit('select', key)
  47. }
  48. }
  49. }
  50. </script>
  51. <style lang="scss">
  52. .custom-analyse-tabs-item {
  53. .el-collapse-item__header {
  54. padding: 0 15px !important;
  55. font-weight: bold;
  56. border-bottom: 1px solid #EBEEF5 !important;
  57. }
  58. .el-collapse {
  59. border-top: 0 !important;
  60. }
  61. .tree-item {
  62. padding: 0 25px;
  63. height: 45px;
  64. cursor: pointer;
  65. }
  66. .el-collapse-item__content {
  67. padding-bottom: 0 !important;
  68. }
  69. .is-active2 {
  70. background: #ecf5ff !important;
  71. color: #409EFF!important;
  72. }
  73. .custom-title {
  74. display: flex;
  75. flex: 1;
  76. align-items: center;
  77. justify-content: space-between;
  78. font-size: 14px;
  79. padding-right: 10px;
  80. height:100%;
  81. .label {
  82. display: flex;
  83. align-items: center;
  84. height: 100%;
  85. }
  86. .do {
  87. display: none;
  88. i {
  89. margin-left: 10px;
  90. margin-top: -5px;
  91. color: #999;
  92. font-size: 13px;
  93. }
  94. &:hover {
  95. color: #333;
  96. }
  97. }
  98. &:hover {
  99. .do {
  100. display: inline-block;
  101. }
  102. }
  103. }
  104. }
  105. </style>