Tcsm
2023-08-22 5d3e0be26b31f7d6d29b3281adcb201ec494a1c6
ruoyi-ui/src/views/mindMap/index.vue
@@ -4,13 +4,23 @@
    <div class="image-container">
      <img class="top-image" src="../../assets/images/zhang.png" alt="Top Image">
      <img class="bottom-image" src="../../assets/images/bkg.png" alt="Bottom Image">
      <el-card class="mind-map-container ">
        <div id="mind-map">
        </div>
      </el-card>
    </div>
  </div>
</template>
<script>
import { getUserProfile } from "@/api/system/user";
import { listRootAll } from "@/api/root/index";
import { listRootAll ,listRoot} from "@/api/root/index";
import * as d3 from 'd3';
export default {
  name: "index",
  data() {
@@ -44,15 +54,59 @@
      getUserProfile().then(response => {
        this.user = response.data;
      });
      listRootAll().then(response =>{
      listRoot(4).then(response =>{
        this.rootList =response.data;
        console.log(this.rootList)
        console.log(this.rootList);
        this.drawMindMap();
      })
    },
    drawMindMap() {
      const mindMapData = this.rootList[0]; // 从rootList中获取数据
      // 清除现有的SVG元素
      d3.select("#mind-map svg").remove();
      // 创建SVG元素,设置宽度和高度
      const svg = d3.select("#mind-map")
        .append("svg")
        .attr("width", "100%")
        .attr("height", "100%");
      // 创建根节点
      const root = d3.hierarchy(mindMapData);
      const treeLayout = d3.tree().size([500, 400]); // 设置树状布局的尺寸
      treeLayout(root);
      // 创建链接线
      svg.selectAll(".link")
        .data(root.descendants().slice(1))
        .enter()
        .append("path")
        .attr("class", "link")
        .attr("d", d => {
          return "M" + d.x + "," + d.y + "C" + (d.x + d.parent.x) / 2 + "," + d.y + " " +
            (d.x + d.parent.x) / 2 + "," + d.parent.y + " " + d.parent.x + "," + d.parent.y;
        });
      // 创建节点
      const nodes = svg.selectAll(".node")
        .data(root.descendants())
        .enter()
        .append("g")
        .attr("class", "node")
        .attr("transform", d => "translate(" + d.x + "," + d.y + ")");
      nodes.append("circle")
        .attr("r", 10);
      nodes.append("text")
        .attr("dx", 12)
        .attr("dy", 5)
        .text(d => d.data.nickName);
    }
  }
}
};
</script>
<style scoped>
@@ -66,7 +120,9 @@
  height: 100%;
}
.mind-map-container{
  z-index: 3;
}
.top-image {
  width: 50%;
  /*height: 100%;*/