| | |
| | | <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() { |
| | |
| | | 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> |
| | |
| | | height: 100%; |
| | | } |
| | | |
| | | |
| | | .mind-map-container{ |
| | | z-index: 3; |
| | | } |
| | | .top-image { |
| | | width: 50%; |
| | | /*height: 100%;*/ |