1
QYF-GitLab1
2024-07-19 dc1c7947711669dffdf3f1ae0519b378261c559f
src/pages/academicSchools/index.vue
@@ -284,11 +284,11 @@
        const personInfo = this.infoOfPersons.find(
          (item) => item.id == ele.personId
        );
        if (personInfo?.id) {
        const obj = {
          personId: ele.personId,
          parentId: parent.id,
          id2: personInfo.id,
          relationTypeId: ele.relationTypeId,
          relationTypeName: ele.relationTypeName,
          parentName: parent?.NAME[0]?.content1 ?? parent.parentName,
          name2: personInfo?.NAME[0]?.content1,
@@ -307,9 +307,73 @@
          obj.relationTypeName = ele.ancientName ?? ele.currentName;
        }
        newArr.push(obj);
        if (ele[str] && ele[str]?.length) {
          if (ele["kinList"] && ele["kinList"]?.length) {
          order++;
          this.getPersonInfo(ele[str], str, newArr, order, type, personInfo);
            this.getPersonInfo(
              ele["kinList"],
              "kinList",
              newArr,
              order,
              0,
              personInfo
            );
          }
          if (ele["teacherStudentList"] && ele["teacherStudentList"]?.length) {
            order++;
            this.getPersonInfo(
              ele["teacherStudentList"],
              "teacherStudentList",
              newArr,
              order,
              1,
              personInfo
            );
          }
          if (ele["literatureList"] && ele["literatureList"]?.length) {
            const data = this.changeLiterature(
              ele["literatureList"],
              "literatureList"
            );
            order++;
            this.getPersonInfo(
              data,
              "literatureList",
              newArr,
              order,
              2,
              personInfo
            );
          }
          if (ele["socialList"] && ele["socialList"]?.length) {
            const data = this.changeLiterature(ele["socialList"], "socialList");
            order++;
            this.getPersonInfo(
              data,
              "socialList",
              newArr,
              order,
              3,
              personInfo
            );
          }
          if (ele["placeList"] && ele["placeList"]?.length) {
            const data = this.changeLiterature(ele["placeList"], "placeList");
            order++;
            this.getPersonInfo(data, "placeList", newArr, order, 4, personInfo);
          }
          if (ele["schoolList"] && ele["schoolList"]?.length) {
            const data = this.changeLiterature(ele["schoolList"], "schoolList");
            order++;
            this.getPersonInfo(
              data,
              "schoolList",
              newArr,
              order,
              5,
              personInfo
            );
          }
        }
      }
    },
@@ -373,7 +437,7 @@
        let place = [];
        let school = [];
        if (res && res.success && res.object) {
          console.log(res.object);
          // console.log(res.object);
          this.infoOfPersons = res.object?.infoOfPersons;
          this.infoOfSchools = res.object?.infoOfSchools;
          if (res.object?.personChain) {
@@ -423,6 +487,7 @@
                this.ownInfo
              );
              literature = [...newArr];
              // console.log(literature, "literature");
            }
            if (obj.socialList?.length) {
              let newArr = [];
@@ -444,7 +509,6 @@
              const data = this.changeLiterature(obj.placeList, "placeList");
              this.getPersonInfo(data, "placeList", newArr, 1, 4, this.ownInfo);
              place = [...newArr];
              // console.log(place, "placeList");
            }
            if (obj.schoolList?.length) {
              this.categories.push({ name: "学术流派" });
@@ -455,11 +519,10 @@
                "schoolList",
                newArr,
                1,
                3,
                5,
                this.ownInfo
              );
              school = [...newArr];
              // console.log(school, "schoolList");
            }
          }
          const personData = [
@@ -470,7 +533,14 @@
            ...place,
            ...school,
          ];
          // console.log(personData)
          // const k = personData.filter((item) => item.category == 0);
          // const t = personData.filter((item) => item.category == 1);
          // const l = personData.filter((item) => item.category == 2);
          // const o = personData.filter((item) => item.category == 3);
          // const p = personData.filter((item) => item.category == 4);
          // const s = personData.filter((item) => item.category == 5);
          // const nodesList = [...k, ...t, ...l, ...o, ...p, ...s];
          // console.log(nodesList);
          personData.forEach((item) => {
            let exists1 = this.nodes.some(
              (node) =>
@@ -575,65 +645,62 @@
      var nodeData = nodes;
      var option;
      option = {
        title: {
          text: "",
          // subtext: '',
          left: "center",
          top: FontSize + 10,
          textStyle: {
            fontSize: FontSize, // 设置标题文字大小为 18px
          },
          subtextStyle: {
            fontSize: FontSize, // 设置副标题文字大小为 14px
            color: "#2C2C2C",
          },
        },
        backgroundColor: {
          type: "image",
          image: "/static/image/characterRelationBg.png",
          // repeat: 'repeat-x', // 是否平铺,可以是 'repeat-x', 'repeat-y', 'no-repeat'
          size: "100% 100%", // 背景图片的尺寸,可以是百分比或者像素
          position: "center center", // 背景图片的位置,可以是 top, bottom, middle 或者百分比
        },
        tooltip: {},
        legend: [
          {
            // selectedMode: 'single',
            left: 20,
            top: 20,
            orient: "vertical",
            data: this.categories.map(function (a) {
              return a.name;
            }),
          },
        ],
        animationDurationUpdate: 1500,
        animationEasingUpdate: "quinticInOut",
        series: [
          {
            type: "graph",
            legendHoverLink: false,
            legendHoverLink: true,
            layout: "force",
            symbolSize: 40,
            data: nodeData,
            links: links,
            categories: this.categories,
            roam: true,
            label: {
              show: true,
              position: "right",
              formatter: "{b}",
            },
            labelLayout: {
              hideOverlap: true,
            },
            scaleLimit: {
              min: 0.4,
              max: 2,
            },
            lineStyle: {
              color: "source",
              curveness: 0.3,
              curveness: 0.2,
            },
            emphasis: {
              focus: "adjacency",
              lineStyle: {
                width: 10,
                width: 5,
              },
            },
            force: {
              repulsion: 600,
              edgeLength: 300,
            },
          },
        ],
      };
      // 将生成的连接线添加到echarts图表的option中
      // option.series[0].links = links;
      // 设置点击事件监听
      myChart.off("click");
      myChart.on("click", (params) => {