YM
2024-05-17 4cdc35b7911554a955a7f5b29f55dbd91d7fd34e
src/pages/inherit/index.vue
@@ -71,7 +71,7 @@
    </div>
    <div class="contentBox">
      <!-- echarts图 -->
      <div class="barChart" ref="barChart"></div>
      <div class="barChart" ref="barChart" ></div>
      <div
        class="toolBox"
        v-if="showTool"
@@ -88,7 +88,7 @@
import * as echarts from "echarts";
import {
  inheritMedicalSataStatistics,
  inheritMedicalList
  inheritMedicalList,
} from "@/api/index.js";
export default {
  data() {
@@ -96,15 +96,15 @@
      // 标题顶部栏需要的东西
      keyword: "",
      idIndex: 0,
      activeId: "",
      activeId: 28,
      conditionId: "",
      searchType: "KEYWORD",
      searchType: "DYNASTY",
      dynasty: [],
      nodeData: [],
      showTool: false,
      toolTop: 0,
      toolLeft: 0,
      toolInfo: {}
      toolInfo: {},
    };
  },
  onLoad(options) {
@@ -113,21 +113,23 @@
  },
  mounted() {
    this.getStatistics();
    this.getData();
  },
  methods: {
    getStatistics() {
      inheritMedicalSataStatistics().then((res) => {
        this.dynasty = res.object;
        this.getData();
      });
    },
    getData() {
      this.nodeData = [];
      // const defaultDynasty = this.dynasty.find(f.dynasty == "宋");
      // this.activeId = defaultDynasty.dynastyId
      inheritMedicalList({
        keywords: this.keyword,
        dynastyId: this.activeId,
        searchType: this.searchType,
        path: this.conditionId
        path: this.conditionId,
      }).then((res) => {
        console.log(res);
        for (let i = 0; i < res.object.nodeList.length; i++) {
@@ -140,8 +142,8 @@
              itemStyle: {
                color: "#F8E2D7",
                borderColor: "#F3AA78",
                borderWidth: "3"
              }
                borderWidth: "3",
              },
            });
          }
        }
@@ -155,18 +157,18 @@
      //通过 $ref 进行挂载
      let myChart = echarts.init(this.$refs.barChart);
      let FontSize = 12; // 字体大小
      let FontSize = 18; // 字体大小
      let BorderWidth = 2; // 边框大小
      let SymbolSize = 80; // 尺寸距离
      let Distance = 10;
      // 不同尺寸下修改echarts的字体
      if (window.innerWidth > 2560 && window.innerWidth <= 3840) {
        FontSize = 28;
        FontSize = 20;
        BorderWidth = 5;
        SymbolSize = 100;
        Distance = 33;
      } else if (window.innerWidth > 1920 && window.innerWidth <= 2560) {
        FontSize = 28;
        FontSize = 20;
        BorderWidth = 4;
        SymbolSize = 90;
        Distance = 22;
@@ -179,14 +181,14 @@
      let option = {
        title: {
          text: [""]
          text: [""],
        },
        backgroundColor: {
          type: "image",
          image: "/static/image/WMBg.png",
          repeat: "repeat-x", // 是否平铺,可以是 'repeat-x', 'repeat-y', 'no-repeat'
          size: "100% 100%", // 背景图片的尺寸,可以是百分比或者像素
          position: "center center" // 背景图片的位置,可以是 top, bottom, middle 或者百分比
          position: "center center", // 背景图片的位置,可以是 top, bottom, middle 或者百分比
        },
        tooltip: {},
        animationDurationUpdate: 1500,
@@ -195,13 +197,13 @@
          {
            type: "graph",
            layout: "force",
            symbolSize: 120,
            symbolSize: 100,
            //是否允许用户拖动图片
            roam: true,
            label: {
              show: true,
              color: "black", // 设置节点文字颜色为黑色
              fontSize: FontSize // 设置文字大小
              fontSize: FontSize, // 设置文字大小
            },
            edgeSymbol: ["circle", "arrow"],
            edgeSymbolSize: [4, 10],
@@ -216,7 +218,7 @@
                // params.data 是边的数据对象,你可以在这里定义关系名
                // 例如,你可以根据 source 和 target 的名称来定义关系名
                return params.data.relationName; // 如果定义了 relationName 则显示它,否则显示“父子”
              }
              },
            },
            //各个节点
            data: this.nodeData,
@@ -224,20 +226,25 @@
              color: "#000000",
              opacity: 0.9,
              width: 2,
              curveness: 0
              curveness: 0,
            },
            force: {
              // initLayout: 'circular',
              // gravity: 0
              friction: 0.1,
              repulsion: 500,
              edgeLength: 6
            }
          }
        ]
              edgeLength: 6,
            },
          },
        ],
      };
      //进行渲染
      myChart.setOption(option);
      myChart.getZr().on("click", (params) => {
        if (!params.target) {
          this.showTool = false;
        }
      });
      myChart.on("click", (params) => {
        console.log(params.event.offsetX, params.event.offsetY);
        if (params.componentType === "series") {
@@ -246,8 +253,10 @@
          this.toolLeft = params.event.offsetX + "px";
          this.toolInfo = {
            id: params.data.identifier,
            name: encodeURIComponent(params.data.name)
            name: encodeURIComponent(params.data.name),
          };
        } else {
          this.showTool = false;
        }
      });
    },
@@ -255,7 +264,7 @@
      switch (type) {
        case 1:
          uni.navigateTo({
            url: "/pages/character/detail?id=" + this.toolInfo.id
            url: "/pages/character/detail?id=" + this.toolInfo.id,
          });
          break;
        case 2:
@@ -266,7 +275,7 @@
              "&id=" +
              this.toolInfo.id +
              "&name=" +
              this.toolInfo.name
              this.toolInfo.name,
          });
          break;
        case 3:
@@ -277,7 +286,7 @@
              "&id=" +
              this.toolInfo.id +
              "&name=" +
              this.toolInfo.name
              this.toolInfo.name,
          });
          break;
      }
@@ -317,8 +326,8 @@
        this.keyword = "";
      }
      this.getData();
    }
  }
    },
  },
};
</script>
<style scoped>
@@ -419,8 +428,8 @@
  box-shadow: 1px 1px 5px #888888;
  align-items: center;
  justify-content: center;
  width: 1rem;
  height: 0.25rem;
  width: 1.4rem;
  height: 0.3rem;
  margin-left: 0.2rem;
  border-radius: 0.13rem;
  float: left;
@@ -433,8 +442,8 @@
  box-shadow: 1px 1px 5px #888888;
  align-items: center;
  justify-content: center;
  width: 1.3rem;
  height: 0.25rem;
  width: 1.6rem;
  height: 0.3rem;
  float: left;
  margin-left: 0.2rem;
  border-radius: 0.13rem;
@@ -454,7 +463,7 @@
}
.filterText {
  margin-left: 10px;
  font-size: 16px;
  font-size: 0.16rem;
}
.fontColor {
  color: #827e44 !important;