orgTree.vue 2.99 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 18 19 20 21 22 23 24 25 26 27 28 29 30
      <el-button
        class="ml10"
        type="primary"
        icon="el-icon-s-unfold"
        size="mini"
        :loading="flag"
        @click="flag = true"
        >展开</el-button
      >
      <el-button
        class="ml10"
        type="primary"
        size="mini"
        icon="el-icon-refresh-right"
        :loading="flag1"
        @click="flag1 = true"
        >刷新</el-button
      >
yanzhongrong's avatar
yanzhongrong committed
31
    </el-row>
yanzhongrong's avatar
yanzhongrong committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
    <el-scrollbar>
      <el-tree
        v-loading="loading"
        ref="vuetree"
        :props="defaultProps"
        :data="data"
        :render-content="renderContent"
        :default-expand-all="true"
        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
49 50 51 52
  </div>
</template>

<script>
neogcg's avatar
neogcg committed
53
import { mapGetters } from "vuex";
yanzhongrong's avatar
yanzhongrong committed
54
import { getTree } from '@/api/baseData'
yanzhongrong's avatar
yanzhongrong committed
55 56 57 58

export default {
  data() {
    return {
yanzhongrong's avatar
yanzhongrong committed
59 60 61
      value: 0,
      flag: false,
      flag1: false,
yanzhongrong's avatar
yanzhongrong committed
62 63 64
      options: [
        {
          id: 0,
neogcg's avatar
neogcg committed
65
          label: "手动监控",
yanzhongrong's avatar
yanzhongrong committed
66 67 68
        },
        {
          id: 1,
neogcg's avatar
neogcg committed
69 70 71
          label: "自动监控",
        },
      ],
yanzhongrong's avatar
yanzhongrong committed
72
      data: [],
yanzhongrong's avatar
yanzhongrong committed
73
      defaultProps: {
neogcg's avatar
neogcg committed
74 75
        children: "children",
        label: "label",
yanzhongrong's avatar
yanzhongrong committed
76 77
      },
      loading: false,
neogcg's avatar
neogcg committed
78
    };
yanzhongrong's avatar
yanzhongrong committed
79
  },
neogcg's avatar
neogcg committed
80
  name: "org-tree",
yanzhongrong's avatar
yanzhongrong committed
81
  computed: {
neogcg's avatar
neogcg committed
82
    ...mapGetters("tree", ["treeData"]),
yanzhongrong's avatar
yanzhongrong committed
83
  },
yanzhongrong's avatar
yanzhongrong committed
84 85 86
  mounted() {
    this.getInit()
  },
yanzhongrong's avatar
yanzhongrong committed
87 88
  methods: {
    handleClick(data) {
yanzhongrong's avatar
yanzhongrong committed
89
      this.$emit('selectItem', data)
yanzhongrong's avatar
yanzhongrong committed
90
    },
yanzhongrong's avatar
yanzhongrong committed
91
    getInit() {
yanzhongrong's avatar
yanzhongrong committed
92
      this.loading = true
yanzhongrong's avatar
yanzhongrong committed
93
      getTree().then(res => {
yanzhongrong's avatar
yanzhongrong committed
94
        this.loading = false
yanzhongrong's avatar
yanzhongrong committed
95 96 97 98
        let list = res || []
        this.data = list
      })
    },
neogcg's avatar
neogcg committed
99
    renderContent(h, { node, data, store }) {
yanzhongrong's avatar
yanzhongrong committed
100 101
      return (
        <div>
neogcg's avatar
neogcg committed
102 103
          <span style="padding-right:10px;">
            <span style={{ marginRight: "5px", fontSize: "16px" }}>
neogcg's avatar
neogcg committed
104
            <svg-icon icon-class={data.iconName} />
neogcg's avatar
neogcg committed
105 106 107 108
            </span>
            <span style={{ marginRight: "5px", fontSize: "16px" }}>
              {node.label}
            </span>
yanzhongrong's avatar
yanzhongrong committed
109 110
          </span>
        </div>
neogcg's avatar
neogcg committed
111
            
neogcg's avatar
neogcg committed
112
      );
yanzhongrong's avatar
yanzhongrong committed
113
    },
neogcg's avatar
neogcg committed
114 115
  },
};
yanzhongrong's avatar
yanzhongrong committed
116 117 118
</script>

<style lang="scss">
neogcg's avatar
neogcg committed
119
@import "@/styles/variables";
yanzhongrong's avatar
yanzhongrong committed
120 121

.el-select-tree {
yanzhongrong's avatar
yanzhongrong committed
122
  width: 300px;
neogcg's avatar
neogcg committed
123
  height: calc(100vh - 56px);
neogcg's avatar
neogcg committed
124
  background: rgba(255, 255, 255, 1);
yanzhongrong's avatar
yanzhongrong committed
125 126 127 128 129 130 131 132 133
  .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
134
  }
neogcg's avatar
neogcg committed
135

yanzhongrong's avatar
yanzhongrong committed
136 137
  // border: 1px dotted;
  // display: inline-block;
yanzhongrong's avatar
yanzhongrong committed
138
}
neogcg's avatar
neogcg committed
139 140 141
.el-tree-node.is-current > .el-tree-node__content {
  background-color: #deeaff !important;
}
yanzhongrong's avatar
yanzhongrong committed
142
</style>