From f961a7e1d262afcc37b0743fcd9cec0f9fc1cbc2 Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期五, 26 七月 2024 11:37:06 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/TCM_CharacterLibrary

---
 src/pages/inherit/list.vue |  927 +++++++++++++++++++++++----------------------------------
 1 files changed, 368 insertions(+), 559 deletions(-)

diff --git a/src/pages/inherit/list.vue b/src/pages/inherit/list.vue
index 3093d4b..eb25d41 100644
--- a/src/pages/inherit/list.vue
+++ b/src/pages/inherit/list.vue
@@ -1,9 +1,9 @@
 <template>
-  <view class="">
+  <view>
     <headNav
-      :idIndex="idIndex"
+      idIndex="2"
       :searchBg="false"
-      text="涓尰涓栧尰浼犳壙鏁版嵁搴�"
+      text="瀹跺浼犳壙"
       bg="/static/image/topBg1.png"
       bg1="/static/image/line1.png"
     />
@@ -17,7 +17,7 @@
           >杩斿洖</el-button
         >
         <h3 style="margin-left: 0.22rem; font-size: 0.28erm; font-weight: 500">
-          閭电櫥鐎�
+          {{ mainName }}
         </h3>
       </view>
       <ul class="flex tabBox">
@@ -34,7 +34,7 @@
           涓栧尰鏂囧寲
         </li>
       </ul>
-      <view class="" style="width: 1rem"></view>
+      <view style="width: 1rem"></view>
     </view>
     <view v-if="showType == 1" class="legendBox">
       <view class="socialMappingBox" @click="showSocialMapping">
@@ -52,574 +52,366 @@
         <view class="icon" style="background: #244a7b"></view>
         <view>绀句細鍏崇郴</view>
       </view>
+      <view class="viewChangeBtn">
+        <p>{{ viewType == 1 ? "妯増瑙嗗浘" : "绔栫増瑙嗗浘" }}</p>
+        <view class="imgBox">
+          <img
+            v-if="viewType == 1"
+            src="@/static/image/inherit/1-a.png"
+            alt=""
+          />
+          <img
+            v-else
+            src="@/static/image/inherit/1.png"
+            @click="viewChange(1)"
+          />
+        </view>
+        <view class="imgBox">
+          <img
+            v-if="viewType == 2"
+            src="@/static/image/inherit/2-a.png"
+            alt=""
+          />
+          <img
+            v-else
+            src="@/static/image/inherit/2.png"
+            @click="viewChange(2)"
+          />
+        </view>
+      </view>
     </view>
     <!-- echarts鍥� -->
     <div v-if="showType == 1" class="barChart" id="barChart"></div>
     <view v-if="showType == 2" class="cultureBox">
-      <view class="cultureItem">
+      <view class="cultureItem" v-if="culture1">
         <view class="imgBox">
-          <img src="@/static/image/inherit/icon1.png" alt="" />
+          <img src="@/static/image/inherit/icon1.svg" alt="" />
         </view>
-        <p>
-          钑欏睍涓佷笐鍚岄噷鏃ュ博棰濆簭鍏堣�冩湀姹犵縼钁椼�婂洓褰吀鏄庛�嬪叓鍗凤紝鐨嗙簿鎸囧ゥ瀹わ紝鑼傜妧鏈兘鐤�狅紝鐝嶅洜鎾补鎯宠彍锛屽兊鎾版鍞愶紝浠ヤ究鏅虹潧锛屾湇鎸囧崡銆備笘涔嬮浄鐥呴洦瀹讹紝鍜镐互鏈嶇剦棣栧姟锛屼笉鐭ユ淳涔冨洓鑳戒箣鏈紝璋撲箣宸ц�呴洦銆備笂澹鑸嶅叾鍏紝闈炲洓涓嶅彲銆�
-        </p>
-        <h4>鈥斺�斻�婂鍏湇鑰冦�婸 3</h4>
+        <p>{{ culture1.content }}</p>
+        <h4 v-if="culture1.source">
+          鈥斺�斻�妠{ culture1.source }}銆婸 {{ culture1.pageNo }}
+        </h4>
       </view>
-      <view class="cultureItem">
+      <view class="cultureItem" v-if="culture2">
         <view class="imgBox">
-          <img src="@/static/image/inherit/icon2.png" alt="" />
+          <img src="@/static/image/inherit/icon2.svg" alt="" />
         </view>
-        <p>鐎曟箹涓栧剴锛屽吋浠ラ啱槌达紝涓�闁�鐖跺瓙鍏勫紵瀵屾湁钁楄堪锛屾鐗硅涓�鏂戣�炽��</p>
-        <h4>鈥斺�斻�婂鍏湇鑰冦�婸 3</h4>
+        <p>{{ culture2.content }}</p>
+        <h4 v-if="culture2.source">
+          鈥斺�斻�妠{ culture2.source }}銆婸 {{ culture2.pageNo }}
+        </h4>
       </view>
-      <view class="cultureItem">
+      <view class="cultureItem" v-if="culture3">
         <view class="imgBox">
-          <img src="@/static/image/inherit/icon3.png" alt="" />
+          <img src="@/static/image/inherit/icon3.svg" alt="" />
         </view>
-        <p>
-          鐥呭潑鍒荤�曟箹銆婃湰鑽夈�嬩箣鍥犱粛瑷涜锛岀埌閲嶇埐閸ユ澘銆傜稉濮嬫柤鐧告湭鍏湀锛岃縿涔欓厜浜旀湀锛岄柋浜屾锛岀硿宸ユ暩钀紝涔冨厠钁充簨銆傚叾鏍$悊瑷涜锛岀洠鐫e墳鍔傦紝鍛藉厭瀛愬腑鐝嶃�佸+鐟溿�佸+鐝╁垎浠讳箣锛涘晢姒锋柟鍔戯紝鍗�鍒ュ搧褰欙紝閱+鐜嬪悰閺″爞涔嬪姏鐖插锛涘弮浠ラ嵕鍚涘彈鐧斤紱鑰岀稉绱�鍏朵簨锛屽绲備笉鎳堣�咃紝鍓囪寖鍚涢潨瀛樹篃銆傛澶栧鐢板悰鎾扮暟銆佹浌鍚涙櫞宄�佺唺鍚涗徊灞便�佺縼鍚涢惖姊呫�侀花鍚涘辜闆层�佸嫉鍚涜搏涔嬨�佺▼鍚涢仈涓夈�侀櫝鍚涙尟閬犮�佽ū鍚涘姛鐢�佹湵鍚涜椈鑷c�佹垨鍙冩牎璁愶紝鎴栧徃缍滄牳锛屾垨鑱峰湒绻紝璎瑰倷鏇镐箣
-        </p>
-        <h4>鈥斺�斻�婂鍏湇鑰冦�婸 3</h4>
+        <p>{{ culture3.content }}</p>
+        <h4 v-if="culture3.source">
+          鈥斺�斻�妠{ culture3.source }}銆婸 {{ culture3.pageNo }}
+        </h4>
       </view>
+      <div
+        v-if="!culture1 && !culture2 && !culture3"
+        style="color: #666; text-align: center; font-size: 16px"
+      >
+        涓栧尰鏂囧寲鏃犳暟鎹�
+      </div>
     </view>
   </view>
 </template>
 <script>
 import * as echarts from "echarts";
+import G6 from "@antv/g6";
+
+import {
+  inheritMedicalCultureList,
+  inheritMedicalRelationList,
+} from "@/api/index.js";
+
 export default {
   data() {
     return {
       // 鏍囬椤堕儴鏍忛渶瑕佺殑涓滆タ
       idIndex: 0,
+      mainName: "",
       activeIndex: 1,
-      dataList: [
-        {
-          name: "钖涢洩",
-          x: 300,
-          y: 300,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭电櫥鐎�",
-          x: 400,
-          y: 300,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭甸瞾鐬�",
-          x: 500,
-          y: 300,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭垫槬娉�",
-          x: 600,
-          y: 300,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "寰愰敠",
-          x: 650,
-          y: 400,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭典笝鎵�",
-          x: 700,
-          y: 300,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鍐鑺�",
-          x: 720,
-          y: 400,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鏉庨缚绔�",
-          x: 740,
-          y: 500,
-          itemStyle: {
-            color: "#E1E1E1",
-            borderColor: "#888888",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭垫櫙灏�",
-          x: 800,
-          y: 200,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭垫櫙搴�",
-          x: 800,
-          y: 400,
-          itemStyle: {
-            color: "#F8E2D7",
-            borderColor: "#F3AA78",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "椴嶆槆",
-          x: 750,
-          y: 100,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鏂囬緳",
-          x: 850,
-          y: 100,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鍌呭簡璐�",
-          x: 950,
-          y: 50,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鎴愬厑",
-          x: 950,
-          y: 100,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鑳$帀鍧�",
-          x: 950,
-          y: 150,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "瑁曠",
-          x: 950,
-          y: 200,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "闄嗕箖鏄�",
-          x: 950,
-          y: 250,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鍒樹紶绁�",
-          x: 950,
-          y: 300,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "閭佃瘹",
-          x: 950,
-          y: 350,
-          itemStyle: {
-            color: "#DCE7EB",
-            borderColor: "#5F81A4",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鏇惧浗钘�",
-          x: 1050,
-          y: 200,
-          itemStyle: {
-            color: "#E1E1E1",
-            borderColor: "#888888",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鏇惧浗钘�01",
-          x: 1050,
-          y: 50,
-          itemStyle: {
-            color: "#E1E1E1",
-            borderColor: "#888888",
-            borderWidth: "3"
-          }
-        },
-        {
-          name: "鏇惧浗钘�02",
-          x: 1050,
-          y: 350,
-          itemStyle: {
-            color: "#E1E1E1",
-            borderColor: "#888888",
-            borderWidth: "3"
-          }
-        }
-      ],
-      links: [
-        {
-          source: "钖涢洩",
-          target: "閭电櫥鐎�",
-          relationName: "甯堝緬",
-          hasArrow: "true"
-        },
-        {
-          source: "閭电櫥鐎�",
-          target: "閭甸瞾鐬�",
-          relationName: "鐖跺瓙"
-        },
-        {
-          source: "閭甸瞾鐬�",
-          target: "閭垫槬娉�",
-          relationName: "鐖跺瓙"
-        },
-        {
-          source: "閭垫槬娉�",
-          target: "閭典笝鎵�",
-          relationName: "鍙斾緞"
-        },
-        //鏇茬嚎
-        {
-          source: "閭垫槬娉�",
-          target: "寰愰敠",
-          relationName: "鏈嬪弸",
-          //杩欓噷璁剧疆涓轰笉甯︾澶�
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭典笝鎵�",
-          target: "閭垫櫙灏�",
-          relationName: "鐖跺瓙"
-        },
-        {
-          source: "閭典笝鎵�",
-          target: "閭垫櫙搴�",
-          relationName: "鐖跺瓙"
-        },
-        //鏇茬嚎
-        {
-          source: "閭典笝鎵�",
-          target: "鍐鑺�",
-          relationName: "鏈嬪弸",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        //鏇茬嚎
-        {
-          source: "閭典笝鎵�",
-          target: "椴嶆槆",
-          relationName: "甯堝緬",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: 0.2
-          }
-        },
-        //鏇茬嚎
-        {
-          source: "鍐鑺�",
-          target: "鏉庨缚绔�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "閭垫櫙搴�",
-          relationName: "鍏勫紵"
-        },
-        {
-          source: "閭垫櫙搴�",
-          target: "閭垫櫙灏�",
-          relationName: "鍏勫紵"
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "椴嶆槆",
-          relationName: "濮讳翰",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "鏂囬緳",
-          relationName: "鏈嬪弸",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: 0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "鍌呭簡璐�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.1
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "鎴愬厑",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "鑳$帀鍧�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "瑁曠",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "闄嗕箖鏄�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "鍒樹紶绁�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "閭垫櫙灏�",
-          target: "閭佃瘹",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1",
-            curveness: -0.2
-          }
-        },
-        {
-          source: "鎴愬厑",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "鑳$帀鍧�",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "瑁曠",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "闄嗕箖鏄�",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "鍒樹紶绁�",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "鎴愬厑",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "鎴愬厑",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "鎴愬厑",
-          target: "鏇惧浗钘�",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "鍌呭簡璐�",
-          target: "鏇惧浗钘�01",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        },
-        {
-          source: "閭佃瘹",
-          target: "鏇惧浗钘�02",
-          relationName: "鍚屽儦",
-          symbol: ["none", "none"],
-          lineStyle: {
-            color: "#6584B1"
-          }
-        }
-      ],
+      dataList: [],
+      links: [],
       socialMapping: true,
-      showType: "1"
+      showType: "1",
+      culture1: null,
+      culture2: null,
+      culture3: null,
+      viewType: 1,
     };
   },
   onLoad(options) {
     this.idIndex = options.id;
-    console.log("optionsoptionsoptions", options.id);
+    this.mainName = decodeURIComponent(options.name);
+    this.type = options.type;
   },
   mounted() {
-    // 鍒濆鍖� echarts
-    this.initBarChart(this.dataList, this.links);
+    if (this.type) {
+      this.changeType(this.type);
+    }
+    this.getData(this.socialMapping);
   },
   methods: {
+    getData(socialFlag) {
+      inheritMedicalRelationList({
+        identifier: this.idIndex,
+        socialFlag: socialFlag,
+      }).then((res) => {
+        this.dataList = res.object;
+        // 澶勭悊鑺傜偣棰滆壊
+        // this.links = [];
+        // for (let i = 0; i < data.edgeList.length; i++) {
+        //   const linkItem = data.edgeList[i];
+        //   const index = data.nodeList.findIndex(
+        //     (item) =>
+        //       item.identifier ==
+        //       (linkItem.endId == this.idIndex
+        //         ? linkItem.startId
+        //         : linkItem.endId)
+        //   );
+        //   if (linkItem.relationType == "浜插睘鍏崇郴") {
+        //     data.nodeList[index].linkType = 1;
+        //     data.nodeList[index].color = "#F8E2D7";
+        //     data.nodeList[index].borderColor = "#F3AA78";
+        //   }
+        //   if (linkItem.relationType == "绀句細鍏崇郴") {
+        //     data.nodeList[index].linkType = 2;
+        //     data.nodeList[index].color = "#ecf4fe";
+        //     data.nodeList[index].borderColor = "#597aa5";
+        //   }
+        //   this.links.push({
+        //     source: data.nodeList.find(
+        //       (item) => item.identifier == linkItem.startId
+        //     ).name,
+        //     target: data.nodeList.find(
+        //       (item) => item.identifier == linkItem.endId
+        //     ).name,
+        //     relationType: linkItem.relationType,
+        //     label: {
+        //       show: true,
+        //       formatter: function (params) {
+        //         // 浣跨敤鍑芥暟鍔ㄦ�佺敓鎴愭爣绛惧唴瀹�
+        //         // return relationships.find(rel => rel.source === nodes[params.data
+        //         // 		.source] && rel.target === nodes[params.data.target])
+        //         // 	.relation;
+        //         return linkItem.relation;
+        //       }, // 璁剧疆鍏崇郴鏍囩鍐呭涓�"Child-Parent"
+        //       color: "#2C2C2C",
+        //       fontSize: 16,
+        //       backgroundColor: "rgba(255, 255, 255, 1)",
+        //       padding: [3, 8],
+        //       borderRadius: 30,
+        //       position: "middle", // 璁剧疆鏍囩鏂囨湰鍦ㄧ嚎鐨勪腑闂翠綅缃笂灞呬腑鏄剧ず
+        //       // z: -1, // 璁剧疆鏍囩鐨剒杞撮珮搴︼紝浣垮叾姣旇繛鎺ョ嚎鏇撮珮
+        //       distance: -10 // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
+        //     }
+        //   });
+        // }
+        // this.dataList = data.nodeList.map((item) => {
+        //   return {
+        //     ...item,
+        //     itemStyle: {
+        //       color: item.identifier == this.idIndex ? "#F8E2D7" : item.color,
+        //       borderColor:
+        //         item.identifier == this.idIndex ? "#F3AA78" : item.borderColor,
+        //       borderWidth: "3"
+        //     }
+        //   };
+        // });
+        setTimeout(() => {
+          // this.initBarChart();
+          document.getElementById("barChart").innerHTML = "";
+          this.initG6Chart();
+        }, 150);
+      });
+
+      // 涓栧尰鏂囧寲
+      inheritMedicalCultureList({
+        identifier: this.idIndex,
+      }).then((res) => {
+        this.culture1 = res.list.find((item) => item.typeName == "瀹堕");
+        this.culture2 = res.list.find((item) => item.typeName == "鍖诲痉");
+        this.culture3 = res.list.find((item) => item.typeName == "瀹惰");
+      });
+    },
+    viewChange(data) {
+      this.viewType = data;
+      document.getElementById("barChart").innerHTML = "";
+      this.initG6Chart();
+    },
     showSocialMapping() {
       this.socialMapping = !this.socialMapping;
-      let newDataList = [];
-      let newLinks = [];
-      if (this.socialMapping) {
-        newDataList = [...this.dataList];
-        newLinks = [...this.links];
+      if (!this.socialMapping) {
+        this.socialRelationsData(this.dataList.children);
+        console.log(this.dataList, "dataList");
+        document.getElementById("barChart").innerHTML = "";
+        // this.initG6Chart();
+        this.getData(this.socialMapping);
       } else {
-        newDataList = this.dataList.filter(
-          (item) => item.itemStyle.borderColor == "#F3AA78"
-        );
-        newLinks = [...this.links];
+        this.getData(this.socialMapping);
       }
-      this.initBarChart(newDataList, newLinks);
+      // this.initBarChart(newDataList, newLinks);
+    },
+    socialRelationsData(data) {
+      if (data && data.length) {
+        for (let i = 0; i < data.length; i++) {
+          const item = data[i];
+          if (item?.relationInfo?.relationType == "绀句細鍏崇郴") {
+            data.splice(i, 1);
+          }
+          if (item.children.length > 0) {
+            this.socialRelationsData(item.children);
+          }
+        }
+      }
     },
     changeType(type) {
       this.showType = type;
       if (type == 1) {
         setTimeout(() => {
           this.socialMapping = true;
-          this.initBarChart(this.dataList, this.links);
+          // this.initBarChart(this.dataList, this.links);
+          document.getElementById("barChart").innerHTML = "";
+          this.initG6Chart();
         }, 50);
       }
     },
-    initBarChart(dataList, links) {
+
+    getChartData(dataList) {
+      if (dataList && dataList.length) {
+        const G6Data = dataList.map((f) => {
+          return {
+            id: f.value + "-" + f.name,
+            name: f.name,
+            personId: f.personId,
+            relationInfo: f?.relationInfo?.relation
+              ? f.relationInfo.relation
+              : "",
+            relationType:
+              f?.relationInfo?.relationType == "绀句細鍏崇郴" ? true : false,
+            children:
+              f.children.length > 0 ? this.getChartData(f.children) : [],
+          };
+        });
+        return G6Data;
+      }
+    },
+    initG6Chart() {
+      console.log(this.dataList, "dataList");
+      console.log(this.links, "links");
+      console.log(this.getChartData(this.dataList.children), "123123");
+      var barChart = document.getElementById("barChart");
+      const data = {
+        isRoot: true,
+        id: this.dataList.name,
+        name: this.dataList.name,
+        style: {
+          fill: "red",
+        },
+        children:
+          this.dataList?.children.length > 0
+            ? this.getChartData(this.dataList.children)
+            : [],
+      };
+      const width = barChart.scrollWidth;
+      const height = barChart.scrollHeight || 500;
+      this.graph = new G6.TreeGraph({
+        container: "barChart",
+        width,
+        height,
+        linkCenter: true,
+        modes: {
+          default: ["drag-canvas", "zoom-canvas"],
+        },
+        defaultNode: {
+          size: 30,
+          type: "tree-node",
+        },
+        defaultEdge: {
+          type: this.viewType == 1 ? "cubic-horizontal" : "cubic-vertical",
+          style: {
+            endArrow: {
+              path: G6.Arrow.vee(10, 10, 18), // 浣跨敤鍐呯疆绠ご璺緞鍑芥暟锛屽弬鏁颁负绠ご鐨� 瀹藉害銆侀暱搴︺�佸亸绉婚噺锛堥粯璁や负 0锛屼笌 d 瀵瑰簲锛�
+              d: 15,
+            },
+          },
+        },
+        layout: {
+          type: "compactBox",
+          direction: this.viewType == 1 ? "LR" : "TB",
+          getId: function getId(d) {
+            return d.id;
+          },
+          getHeight: function getHeight() {
+            return 16;
+          },
+          getWidth: function getWidth() {
+            return 16;
+          },
+          getVGap: () => {
+            console.log(this.viewType);
+            return this.viewType == 1 ? 20 : 110;
+          },
+          getHGap: () => {
+            return this.viewType == 1 ? 100 : 50;
+          },
+        },
+      });
+      this.graph.node(function (node) {
+        return {
+          size: 38,
+          anchorPoints: [
+            [0, 0.5],
+            [1, 0.5],
+          ],
+          style: {
+            fill: node.relationType ? "#EDF4FF" : "#FCEFE3",
+            stroke: node.relationType ? "#5E7AA7" : "#D3791E",
+          },
+          label: node.name,
+          labelCfg: {
+            position: "center",
+            offset: 5,
+            style: {
+              fill: "#000",
+              fontSize: 12,
+            },
+          },
+        };
+      });
+      let that = this
+      const edgeType =
+        this.viewType == 1 ? "cubic-horizontal" : "cubic-vertical";
+      this.graph.edge(function (node) {
+        return {
+          type: edgeType,
+          color: "#A3B1BF",
+          label:  that.textStyle(node.target._cfg?.model.relationInfo)
+        };
+      });
+      this.graph.on("node:click", (e) => {
+        const nodeItem = e.item._cfg.model; // 鑾峰彇琚偣鍑荤殑鑺傜偣鍏冪礌瀵硅薄
+        console.log("鍗曞嚮", nodeItem);
+        if (nodeItem?.personId) {
+          uni.navigateTo({
+            url: "/pages/character/detail?id=" + nodeItem?.personId,
+          });
+        } else {
+          uni.navigateTo({
+            url: "/pages/character/detail?id=" + this.idIndex,
+          });
+        }
+      });
+      this.graph.data(data);
+      this.graph.render();
+      this.graph.fitView();
+    },
+    initBarChart() {
       // WMBg
       //閫氳繃 $ref 杩涜鎸傝浇
       var barChart = document.getElementById("barChart");
@@ -648,66 +440,57 @@
       }
 
       let option = {
-        title: {
-          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: {},
         animationEasingUpdate: "quinticInOut",
         series: [
           {
-            type: "graph",
-            layout: "none",
+            type: "tree",
             symbolSize: SymbolSize + 20,
             //鏄惁鍏佽鐢ㄦ埛鎷栧姩鍥剧墖
-            roam: false,
+            roam: true,
             label: {
               show: true,
               color: "black", // 璁剧疆鑺傜偣鏂囧瓧棰滆壊涓洪粦鑹�
-              fontSize: FontSize // 璁剧疆鏂囧瓧澶у皬
+              fontSize: FontSize, // 璁剧疆鏂囧瓧澶у皬
             },
             edgeSymbol: ["circle", "arrow"],
             edgeSymbolSize: [4, 10],
-
-            edgeLabel: {
-              show: true,
-              fontSize: FontSize, //鏇存敼涓よ�呭叧绯荤殑瀛椾綋
-              position: "middle",
-              //杩欓噷璁剧疆鍏崇郴鏂囧瓧鏄惁鍜岀嚎娈甸噸鍙�
-              //   padding: [0, 0], // 璋冩暣鍐呰竟璺濅互纭繚鏍囩涓庣嚎娈电揣瀵嗚创鍚�
-              // verticalAlign: 'middle', // 璁剧疆鏂囨湰鐨勫瀭鐩村榻愭柟寮忎负灞呬腑
-              formatter: function (params) {
-                // params.data 鏄竟鐨勬暟鎹璞★紝浣犲彲浠ュ湪杩欓噷瀹氫箟鍏崇郴鍚�
-                // 渚嬪锛屼綘鍙互鏍规嵁 source 鍜� target 鐨勫悕绉版潵瀹氫箟鍏崇郴鍚�
-                return params.data.relationName || "鐖跺瓙"; // 濡傛灉瀹氫箟浜� relationName 鍒欐樉绀哄畠锛屽惁鍒欐樉绀衡�滅埗瀛愨��
-              }
-            },
-            //鍚勪釜鑺傜偣
-            data: dataList, //鍏崇郴杩炴帴
-            links: links,
+            data: [this.dataList],
             lineStyle: {
-              color: "#000000",
               opacity: 0.9,
               width: 2,
-              curveness: 0
-            }
-          }
-        ]
+              curveness: 0.3,
+            },
+            force: {
+              initLayout: null,
+              // gravity: 0
+              repulsion: 600,
+              edgeLength: 400,
+            },
+            expandAndCollapse: false,
+          },
+        ],
       };
       //杩涜娓叉煋
       myChart.setOption(option);
     },
+
+    textStyle(str) {
+      return str.replace(/(.{4})/g, "$1\n");
+    },
+
     // 杩斿洖鎸夐挳
     goBack() {
       this.$router.go(-1);
-    }
-  }
+    },
+  },
 };
 </script>
 <style scoped>
@@ -733,6 +516,9 @@
   height: 0.24rem;
   font-size: 0.12rem;
   padding: 0;
+  border: 1px solid #9e9e9e;
+  border-radius: 0;
+  color: #000;
 }
 .barChart {
   width: 100vw;
@@ -767,6 +553,29 @@
   margin-right: 0.06rem;
 }
 
+.viewChangeBtn {
+  position: absolute;
+  right: 1.2rem;
+  top: 0.17rem;
+  display: flex;
+}
+
+.viewChangeBtn p {
+  line-height: 0.36rem;
+  margin-right: 0.2rem;
+}
+
+.viewChangeBtn .imgBox {
+  width: 0.36rem;
+  height: 0.36rem;
+}
+
+.viewChangeBtn img {
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+}
+
 .legend {
   display: flex;
   align-items: center;

--
Gitblit v1.9.1