orgTree.vue 3.42 KB
Newer Older
yanzhongrong's avatar
yanzhongrong committed
1 2
<template>
  <div class="el-select-tree">
yanzhongrong's avatar
yanzhongrong committed
3
    <el-row class="tree_header mb10">
yanzhongrong's avatar
yanzhongrong committed
4 5 6 7 8 9 10 11 12
      <el-select v-model="value" placeholder="请选择" size="mini">
        <el-option
          v-for="item in options"
          :key="item.id"
          :label="item.label"
          :value="+item.id"
        >
        </el-option>
      </el-select>
neogcg's avatar
neogcg committed
13 14 15 16 17
      <el-button
        class="ml10"
        type="primary"
        icon="el-icon-s-unfold"
        size="mini"
neogcg's avatar
neogcg committed
18
        v-if="isOpen == true"
yanzhongrong's avatar
yanzhongrong committed
19 20 21 22 23 24 25 26 27 28
        @click="toOpen"
        >收起</el-button
      >
      <el-button
        class="ml10"
        type="primary"
        icon="el-icon-s-unfold"
        size="mini"
        v-else
        @click="toOpen"
neogcg's avatar
neogcg committed
29 30 31 32 33 34 35
        >展开</el-button
      >
      <el-button
        class="ml10"
        type="primary"
        size="mini"
        icon="el-icon-refresh-right"
yanzhongrong's avatar
yanzhongrong committed
36
        @click="getInit"
neogcg's avatar
neogcg committed
37 38
        >刷新</el-button
      >
yanzhongrong's avatar
yanzhongrong committed
39
    </el-row>
yanzhongrong's avatar
yanzhongrong committed
40 41 42
    <el-scrollbar>
      <el-tree
        v-loading="loading"
yanzhongrong's avatar
yanzhongrong committed
43
        v-if="openOrNot"
yanzhongrong's avatar
yanzhongrong committed
44 45 46 47
        ref="vuetree"
        :props="defaultProps"
        :data="data"
        :render-content="renderContent"
yanzhongrong's avatar
yanzhongrong committed
48
        :default-expand-all="isOpen"
yanzhongrong's avatar
yanzhongrong committed
49 50 51 52 53 54 55 56 57
        nodeKey="id"
        class="el-tree"
        current-node-key="id"
        :expand-on-click-node="false"
        @node-click="handleClick"
      >
        <!--  :current-node-key='id' -->
      </el-tree>
    </el-scrollbar>
yanzhongrong's avatar
yanzhongrong committed
58 59 60 61
  </div>
</template>

<script>
neogcg's avatar
neogcg committed
62
import { mapGetters } from "vuex";
neogcg's avatar
neogcg committed
63
import { getTree } from "@/api/baseData";
yanzhongrong's avatar
yanzhongrong committed
64 65 66 67

export default {
  data() {
    return {
yanzhongrong's avatar
yanzhongrong committed
68
      value: 0,
yanzhongrong's avatar
yanzhongrong committed
69 70 71
      options: [
        {
          id: 0,
neogcg's avatar
neogcg committed
72
          label: "手动监控",
yanzhongrong's avatar
yanzhongrong committed
73 74 75
        },
        {
          id: 1,
neogcg's avatar
neogcg committed
76 77 78
          label: "自动监控",
        },
      ],
yanzhongrong's avatar
yanzhongrong committed
79
      data: [],
yanzhongrong's avatar
yanzhongrong committed
80 81
      isOpen: false,
      openOrNot: true,
yanzhongrong's avatar
yanzhongrong committed
82
      defaultProps: {
neogcg's avatar
neogcg committed
83 84
        children: "children",
        label: "label",
yanzhongrong's avatar
yanzhongrong committed
85 86
      },
      loading: false,
neogcg's avatar
neogcg committed
87
    };
yanzhongrong's avatar
yanzhongrong committed
88
  },
neogcg's avatar
neogcg committed
89
  name: "org-tree",
yanzhongrong's avatar
yanzhongrong committed
90
  computed: {
neogcg's avatar
neogcg committed
91
    ...mapGetters("tree", ["treeData"]),
yanzhongrong's avatar
yanzhongrong committed
92
  },
yanzhongrong's avatar
yanzhongrong committed
93
  mounted() {
neogcg's avatar
neogcg committed
94
    this.getInit();
yanzhongrong's avatar
yanzhongrong committed
95
  },
yanzhongrong's avatar
yanzhongrong committed
96
  methods: {
yanzhongrong's avatar
yanzhongrong committed
97
    toOpen() {
neogcg's avatar
neogcg committed
98
      this.isOpen = !this.isOpen;
yanzhongrong's avatar
yanzhongrong committed
99 100 101 102 103
      this.openOrNot = false;
      setTimeout(() => {
        this.openOrNot = true;
      }, 10);
    },
yanzhongrong's avatar
yanzhongrong committed
104
    handleClick(data) {
neogcg's avatar
neogcg committed
105
      this.$emit("selectItem", data);
yanzhongrong's avatar
yanzhongrong committed
106
    },
yanzhongrong's avatar
yanzhongrong committed
107
    getInit() {
neogcg's avatar
neogcg committed
108 109 110 111 112 113 114 115 116
      this.loading = true;
      getTree().then((res) => {
        this.loading = false;
        let list = res || [];
        this.data = list;
        if (this.data[0]) {
          this.$emit("defaultSite", this.data[0].id);
        }
      });
yanzhongrong's avatar
yanzhongrong committed
117
    },
neogcg's avatar
neogcg committed
118
    renderContent(h, { node, data, store }) {
yanzhongrong's avatar
yanzhongrong committed
119 120
      return (
        <div>
neogcg's avatar
neogcg committed
121 122
          <span style="padding-right:10px;">
            <span style={{ marginRight: "5px", fontSize: "16px" }}>
neogcg's avatar
neogcg committed
123
              <svg-icon icon-class={data.iconName} />
neogcg's avatar
neogcg committed
124 125 126 127
            </span>
            <span style={{ marginRight: "5px", fontSize: "16px" }}>
              {node.label}
            </span>
yanzhongrong's avatar
yanzhongrong committed
128 129
          </span>
        </div>
neogcg's avatar
neogcg committed
130
      );
yanzhongrong's avatar
yanzhongrong committed
131
    },
neogcg's avatar
neogcg committed
132 133
  },
};
yanzhongrong's avatar
yanzhongrong committed
134 135 136
</script>

<style lang="scss">
neogcg's avatar
neogcg committed
137
@import "@/styles/variables";
yanzhongrong's avatar
yanzhongrong committed
138 139

.el-select-tree {
yanzhongrong's avatar
yanzhongrong committed
140
  width: 300px;
neogcg's avatar
neogcg committed
141
  height: calc(100vh - 56px);
neogcg's avatar
neogcg committed
142
  background: rgba(255, 255, 255, 1);
yanzhongrong's avatar
yanzhongrong committed
143 144 145 146 147 148 149 150 151
  .tree_header {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 10px;
    height: 44px;
    background: rgba(196, 214, 255, 0.39);
    opacity: 1;
    box-sizing: border-box;
yanzhongrong's avatar
yanzhongrong committed
152
  }
neogcg's avatar
neogcg committed
153

yanzhongrong's avatar
yanzhongrong committed
154 155
  // border: 1px dotted;
  // display: inline-block;
yanzhongrong's avatar
yanzhongrong committed
156
}
neogcg's avatar
neogcg committed
157 158 159
.el-tree-node.is-current > .el-tree-node__content {
  background-color: #deeaff !important;
}
yanzhongrong's avatar
yanzhongrong committed
160
</style>