| | |
| | | </template> |
| | | <script> |
| | | import * as d3 from 'd3'; |
| | | import { useRoute,useRouter } from 'vue-router' |
| | | |
| | | export default { |
| | | props: { |
| | |
| | | methods: { |
| | | drawMap() { |
| | | let that = this |
| | | //alert(that.$router) |
| | | // 源数据 |
| | | let data = {} |
| | | // 判断data是否为空对象 |
| | |
| | | // 左右内边距 |
| | | let mapPaddingLR = 10 |
| | | // 上下内边距 |
| | | let mapPaddingTB = 0 |
| | | let mapPaddingTB =10 |
| | | let mapWidth = this.nodeWidth * TreeDeep + mapPaddingLR * 2; |
| | | let mapHeight = (this.nodeHeight - 4) * leafNum + mapPaddingTB * 2; |
| | | // 定义画布—— 外边距 10px |
| | |
| | | return Bézier_curve_generator({source: start, target: end}); |
| | | }) |
| | | .attr("fill", "none") |
| | | .attr("stroke", "#c3c3c3") |
| | | .attr("stroke", "#EBA4AA") |
| | | // 虚线 |
| | | // .attr("stroke-dasharray", "8") |
| | | .attr("stroke-width", 1); |
| | |
| | | .attr("r", 4) |
| | | .attr("fill", function (d) { |
| | | if (d.data.childrenTemp) { |
| | | return 'red' |
| | | return '#EBA4AA' |
| | | } else { |
| | | return 'white' |
| | | } |
| | | }) |
| | | .attr("stroke", "red") |
| | | .attr("stroke", "#EBA4AA") |
| | | .attr("stroke-width", 1); |
| | | //绘制标注(节点前的矩形) |
| | | groups.append("rect") |
| | |
| | | } |
| | | ) |
| | | .attr("height", 22) |
| | | .attr("fill", "grey") |
| | | .attr("fill", "#FFFFFF") |
| | | // 添加圆角 |
| | | .attr("rx", 4) |
| | | //绘制链接方式 |
| | |
| | | .attr("x", 12) |
| | | .attr("y", -5) |
| | | .attr("dy", 10) |
| | | .attr("fill", 'white') |
| | | .attr("font-size", 12) |
| | | .attr("fill", '#F6739F') |
| | | .attr("font-size", 14) |
| | | .text(function (d) { |
| | | return d.data.link; |
| | | }) |
| | | .on("click",function (event, node) { |
| | | let data = node.data |
| | | that.$router.push("/familymodel/jiagenwang/personInfo/" + data.id); |
| | | |
| | | }) |
| | | .attr("cursor", |
| | | function (d) { |
| | | if (d.data.disabled) { |
| | | return 'not-allowed' |
| | | } else { |
| | | return 'pointer' |
| | | } |
| | | }) |
| | | //绘制文字 |
| | | groups.append("text") |
| | | .on("click", function (event, node) { |
| | |
| | | return |
| | | } |
| | | // 有外链的节点,打开新窗口后恢复到思维导图页面 |
| | | if (data.url) { |
| | | window.open(data.url) |
| | | that.$emit('activeChange', 'map') |
| | | return |
| | | if (data.id) { |
| | | // window.open(data.url) |
| | | |
| | | that.$router.push("/familymodel/jiagenwang/personInfo/" + data.id); |
| | | //that.$emit('activeChange', 'map') |
| | | // return |
| | | } |
| | | // 标准节点—— 传出 prop |
| | | if (data.dicType) { |
| | |
| | | function (d) { |
| | | if (d.data.prop === that.active) { |
| | | return '#409EFF' |
| | | }else{ |
| | | return '#8296C5' |
| | | } |
| | | } |
| | | ) |