From a4a5b8dc84e9f9c2e1890f7d2c9e91f548840084 Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期四, 18 七月 2024 16:58:01 +0800
Subject: [PATCH] 1

---
 src/pages/academicSchools/index.vue |  366 +++++++++++++++++++++++++++++++---------------------
 1 files changed, 219 insertions(+), 147 deletions(-)

diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue
index a37812d..d544c1a 100644
--- a/src/pages/academicSchools/index.vue
+++ b/src/pages/academicSchools/index.vue
@@ -1,5 +1,7 @@
 <template>
-  <view style="width: 100%; height: 100%; display: flex; flex-direction: column;">
+  <view
+    style="width: 100%; height: 100%; display: flex; flex-direction: column"
+  >
     <headNav :idIndex="'6'" text="瀛︽湳娴佹淳" />
     <!-- 楂樼骇鎼滅储 -->
     <view style="margin-top: 0.1rem">
@@ -53,7 +55,7 @@
 import {
   getPersonData,
   getHotSearch,
-  getPDataStatistics
+  getPDataStatistics,
 } from "@/api/index.js";
 import * as echarts from "echarts";
 export default {
@@ -73,19 +75,19 @@
             type: "input",
             label: "濮撳悕",
             name: "name",
-            value: ""
+            value: "",
           },
           {
             type: "input",
             label: "鍒悕",
             name: "alias",
-            value: ""
+            value: "",
           },
           {
             type: "input",
             label: "绫嶈疮",
             name: "location",
-            value: ""
+            value: "",
           },
           {
             type: "select",
@@ -95,15 +97,15 @@
             options: [
               {
                 label: "鏈寚鏄�",
-                value: "UNKNOWN"
-              }
-            ]
+                value: "UNKNOWN",
+              },
+            ],
           },
           {
             type: "input",
             label: "瀹樿亴",
             name: "office",
-            value: ""
+            value: "",
           },
           {
             type: "select",
@@ -113,43 +115,43 @@
             options: [
               {
                 label: "鏈寚鏄�",
-                value: "UNKNOWN"
+                value: "UNKNOWN",
               },
               {
                 label: "鐢�",
-                value: "MALE"
+                value: "MALE",
               },
               {
                 label: "濂�",
-                value: "WOMAN"
-              }
-            ]
+                value: "WOMAN",
+              },
+            ],
           },
           {
             type: "input",
             label: "鏃舵湡",
             name: "period",
-            value: ""
+            value: "",
           },
           {
             type: "input",
             label: "鏈烘瀯",
             name: "inst",
-            value: ""
+            value: "",
           },
           {
             type: "number",
             label: "椤电爜",
             name: "page",
-            value: ""
+            value: "",
           },
           {
             type: "number",
             label: "椤靛ぇ灏�",
             name: "pageSize",
-            value: ""
-          }
-        ]
+            value: "",
+          },
+        ],
       },
       // 涓嬮潰鐨勬湞浠�1
       dynastyColor: 1,
@@ -158,79 +160,79 @@
         {
           name: "澶忔湞",
           coord: "2070BC",
-          id: 1
+          id: 1,
         },
         {
           name: "鍟嗘湞",
           id: 2,
-          coord: "1600BC"
+          coord: "1600BC",
         },
         {
           name: "瑗垮懆",
           id: 3,
-          coord: "1600BC"
+          coord: "1600BC",
         },
         {
           name: "鏄ョ鎴樺浗",
           id: 4,
-          coord: "770BC"
+          coord: "770BC",
         },
         {
           name: "绉︽湞",
           id: 5,
-          coord: "221BC"
+          coord: "221BC",
         },
         {
           name: "姹夋湞",
           id: 6,
-          coord: "202BC"
+          coord: "202BC",
         },
         {
           name: "涓夊浗涓ゆ檵鍗楀寳鏈�",
           id: 7,
-          coord: "184"
+          coord: "184",
         },
         {
           name: "闅嬫湞",
           id: 8,
-          coord: "581"
+          coord: "581",
         },
         {
           name: "鍞愭湞",
           id: 9,
-          coord: "618"
+          coord: "618",
         },
         {
           name: "浜斾唬鍗佸浗",
           id: 10,
-          coord: "907"
+          coord: "907",
         },
         {
           name: "杈藉閲�",
           id: 11,
-          coord: "907"
+          coord: "907",
         },
         {
           name: "瀹嬫湞",
           id: 12,
-          coord: "960"
+          coord: "960",
         },
         {
           name: "鍏冩湞",
           id: 13,
-          coord: "1271"
+          coord: "1271",
         },
 
         {
           name: "鏄庢湞",
           id: 14,
-          coord: "1368"
+          coord: "1368",
         },
         {
           name: "娓呮湞",
           id: 15,
-          coord: "1636"
-        }
+          coord: "1636",
+        },
       ],
       // 鐑棬鎼滅储
       hotKeyList: [],
@@ -240,8 +242,10 @@
       categories: [],
       // 浜虹墿淇℃伅
       infoOfPersons: [],
+      // 瀛︽湳娴佹淳
+      infoOfSchools:[],
       // 褰撳墠浜虹墿淇℃伅
-      ownInfo: null
+      ownInfo: null,
     };
   },
   mounted() {
@@ -256,7 +260,8 @@
     this.searchKey = options.keyword;
   },
   methods: {
-    getPersonInfo(arr, str, newArr, order, type) {
+    // 鑾峰彇浜虹墿鍏崇郴
+    getPersonInfo(arr, str, newArr, order, type, parent) {
       for (let i = 0; i < arr.length; i++) {
         const ele = arr[i];
         const personInfo = this.infoOfPersons.find(
@@ -264,19 +269,56 @@
         );
         const obj = {
           personId: ele.personId,
-          id1: this.ownInfo.id,
+          parentId: parent.id,
           id2: personInfo.id,
           relationTypeId: ele.relationTypeId,
           relationTypeName: ele.relationTypeName,
-          name1: this.ownInfo?.NAME[0]?.content1,
+          parentName: parent?.NAME[0]?.content1 ?? parent.parentName,
           name2: personInfo?.NAME[0]?.content1,
-          category: type
+          category: type,
         };
+        if (str == "literatureList") {
+          obj.relationTypeName = ele.literatureName;
+        }
+        if (str == "schoolList") {
+          const nameData = this.infoOfSchools?.find(i=>i.schoolId == ele.schoolId)
+          obj.relationTypeName = nameData?.name[0];
+        }
+        if (str == "placeList") {
+          obj.relationTypeName = ele.ancientName ?? ele.currentName;
+        }
         newArr.push(obj);
         if (ele[str] && ele[str]?.length) {
-          this.getPersonInfo(ele[str], "kinList", newArr, 2, type);
+          order++;
+          this.getPersonInfo(ele[str], str, newArr, order, type, personInfo);
         }
       }
+    },
+
+    // 澶勭悊鏁版嵁
+    changeLiterature(arr, str) {
+      for (let i = 0; i < arr.length; i++) {
+        const ele = arr[i];
+        if (!ele.personId && ele.personList?.length) {
+          ele.literatureList = [];
+          ele.personId = this.ownInfo.id;
+          if (ele[str] && ele[str]?.length) {
+            for (let j = 0; j < ele.personList.length; j++) {
+              const item = ele.personList[j];
+              const data = item[str]?.map((e) => {
+                return {
+                  ...e,
+                  personId: item.personId,
+                };
+              });
+              if (data?.length) {
+                ele[str].push(...data);
+              }
+            }
+          }
+        }
+      }
+      return arr;
     },
 
     //鏁扮粍鍘婚噸
@@ -298,73 +340,148 @@
 
       return deduplicatedArray;
     },
+
+    // 鏌ヨ璇︽儏
     getData() {
       this.loading = true;
       getPersonData(this.currentId).then((res) => {
         this.nodes = [];
         this.relationships = [];
-        let kin = [];
+        let kinData = [];
         let teacher = [];
+        let literature = [];
+        let social = [];
+        let place = [];
+        let school = [];
         if (res && res.success && res.object) {
           console.log(res.object);
           this.infoOfPersons = res.object?.infoOfPersons;
+          this.infoOfSchools = res.object?.infoOfSchools;
           if (res.object?.personChain) {
             this.ownInfo = this.infoOfPersons.find(
               (item) => item.id == res.object?.personChain.personId
             );
             const obj = res.object?.personChain;
-            console.log(obj.kinList, "kinList");
             if (obj.kinList?.length) {
               let newArr = [];
               this.categories.push({ name: "浜插睘鍏崇郴" });
-              this.getPersonInfo(obj.kinList, "kinList", newArr, 1, 0);
-              console.log(newArr, "list");
-              newArr.forEach((item) => {
-                let exists1 = this.nodes.some(
-                  (node) => node.id === item.id1 && node.name === item.name1
-                );
-                let exists2 = this.nodes.some(
-                  (node) => node.id === item.id1 && node.name === item.name2
-                );
-                // 璇佹槑涓嶅瓨鍦�
-                if (item.name1 && exists1 !== true) {
-                  this.nodes.push({
-                    name: item.name1,
-                    id: item.id1,
-                    ...item
-                  });
-                }
-                if (item.name2 && exists2 !== true) {
-                  this.nodes.push({
-                    name: item.name2,
-                    id: item.id2,
-                    ...item
-                  });
-                }
-                let obj = {
-                  source: item.name1,
-                  target: item.name2,
-                  relation: item.relationTypeName || "" // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓�
-                };
-                this.relationships.push(obj);
-              });
+              this.getPersonInfo(
+                obj.kinList,
+                "kinList",
+                newArr,
+                1,
+                0,
+                this.ownInfo
+              );
+              kinData = [...newArr];
             }
             if (obj.teacherStudentList?.length) {
               this.categories.push({ name: "甯堟壙鍏崇郴" });
+              let newArr = [];
+              this.getPersonInfo(
+                obj.teacherStudentList,
+                "teacherStudentList",
+                newArr,
+                1,
+                1,
+                this.ownInfo
+              );
+              teacher = [...newArr];
             }
             if (obj.literatureList?.length) {
               this.categories.push({ name: "鏂囩尞浣滃搧" });
+              let newArr = [];
+              const data = this.changeLiterature(
+                obj.literatureList,
+                "literatureList"
+              );
+              this.getPersonInfo(
+                data,
+                "literatureList",
+                newArr,
+                1,
+                2,
+                this.ownInfo
+              );
+              literature = [...newArr];
             }
             if (obj.socialList?.length) {
+              let newArr = [];
               this.categories.push({ name: "绀句細鍏崇郴" });
+              const data = this.changeLiterature(obj.socialList, "socialList");
+              this.getPersonInfo(
+                data,
+                "socialList",
+                newArr,
+                1,
+                3,
+                this.ownInfo
+              );
+              social = [...newArr];
             }
             if (obj.placeList?.length) {
               this.categories.push({ name: "娲诲姩鍦�" });
+              let newArr = [];
+              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: "瀛︽湳娴佹淳" });
+              let newArr = [];
+              const data = this.changeLiterature(obj.schoolList, "schoolList");
+              this.getPersonInfo(
+                data,
+                "schoolList",
+                newArr,
+                1,
+                3,
+                this.ownInfo
+              );
+              school = [...newArr];
+              // console.log(school, "schoolList");
             }
           }
+          const personData = [
+            ...kinData,
+            ...teacher,
+            ...literature,
+            ...social,
+            ...place,
+            ...school,
+          ];
+          // console.log(personData)
+          personData.forEach((item) => {
+            let exists1 = this.nodes.some(
+              (node) =>
+                node.id === item.parentId && node.name === item.parentName
+            );
+            let exists2 = this.nodes.some(
+              (node) => node.id === item.parentId && node.name === item.name2
+            );
+            // 璇佹槑涓嶅瓨鍦�
+            if (item.name1 && exists1 !== true) {
+              this.nodes.push({
+                name: item.parentName,
+                id: item.parentId,
+                ...item,
+              });
+            }
+            if (item.name2 && exists2 !== true) {
+              this.nodes.push({
+                name: item.name2,
+                id: item.id2,
+                ...item,
+              });
+            }
+            let obj = {
+              source: item.parentName,
+              target: item.name2,
+              relation: item.relationTypeName || "", // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓�
+            };
+            this.relationships.push(obj);
+          });
         }
         this.loading = false;
         this.relation();
@@ -429,46 +546,35 @@
                 borderRadius: 30,
                 position: "middle", // 璁剧疆鏍囩鏂囨湰鍦ㄧ嚎鐨勪腑闂翠綅缃笂灞呬腑鏄剧ず
                 // z: -1, // 璁剧疆鏍囩鐨剒杞撮珮搴︼紝浣垮叾姣旇繛鎺ョ嚎鏇撮珮
-                distance: -10 // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
-              }
+                distance: -10, // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
+              },
             });
           }
         }
       });
       // 鏍规嵁nodes鍔ㄦ�佺敓鎴愯妭鐐规暟鎹�
-      var nodeData = nodes.map(function (node, index) {
-        return {
-          name: node.name,
-          id: node.id,
-          // itemStyle: {
-          //   color: "#eae0eb", // 鍙互鏍规嵁绱㈠紩璁剧疆涓嶅悓鐨勯鑹�
-          //   borderWidth: BorderWidth,
-          //   borderColor: "#996f9f"
-          // }
-        };
-      });
-
+      var nodeData = nodes;
       var option;
       option = {
         title: {
-          // text: '涔︿腑鏈�甯告彁鍒扮殑100浣嶄汉鐗�',
+          text: "瀛︽湳娴佹淳",
           // subtext: '',
           left: "center",
           top: FontSize + 10,
-          // textStyle: {
-          // 	fontSize: FontSize // 璁剧疆鏍囬鏂囧瓧澶у皬涓� 18px
-          // },
+          textStyle: {
+            fontSize: FontSize, // 璁剧疆鏍囬鏂囧瓧澶у皬涓� 18px
+          },
           subtextStyle: {
             fontSize: FontSize, // 璁剧疆鍓爣棰樻枃瀛楀ぇ灏忎负 14px
-            color: "#2C2C2C"
-          }
+            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 鎴栬�呯櫨鍒嗘瘮
+          position: "center center", // 鑳屾櫙鍥剧墖鐨勪綅缃紝鍙互鏄� top, bottom, middle 鎴栬�呯櫨鍒嗘瘮
         },
         tooltip: {},
         legend: [
@@ -476,70 +582,36 @@
             // selectedMode: 'single',
             data: this.categories.map(function (a) {
               return a.name;
-            })
-          }
+            }),
+          },
         ],
         animationDurationUpdate: 1500,
         animationEasingUpdate: "quinticInOut",
         series: [
-          // {
-          //   type: "graph",
-          //   layout: "force",
-          //   roam: true,
-          //   symbolSize: SymbolSize, // 璋冩暣鑺傜偣澶у皬
-          //   label: {
-          //     show: true,
-          //     color: "black", // 璁剧疆鑺傜偣鏂囧瓧棰滆壊涓洪粦鑹�
-          //     fontSize: FontSize, // 璁剧疆鏂囧瓧澶у皬
-          //   },
-          //   edgeSymbol: ["circle", "arrow"],
-          //   edgeSymbolSize: [4, 10],
-          //   data: nodeData,
-          //   links,
-          //   categories: this.categories,
-          //   lineStyle: {
-          //     opacity: 0.9,
-          //     width: 2,
-          //     curveness: 0.3,
-          //   },
-          //   emphasis: {
-          //     focus: "adjacency",
-          //     lineStyle: {
-          //       width: 10,
-          //     },
-          //   },
-          //   force: {
-          //     // layoutAnimation: false,
-          //     // friction: 1,
-          //     repulsion: 800,
-          //     edgeLength: 400,
-          //   },
-          // },
           {
-            name: "Les Miserables",
             type: "graph",
             legendHoverLink: false,
-            layout: 'force',
+            layout: "force",
             data: nodeData,
             links: links,
             categories: this.categories,
             roam: true,
             label: {
               position: "right",
-              formatter: "{b}"
+              formatter: "{b}",
             },
             lineStyle: {
               color: "source",
-              curveness: 0.3
+              curveness: 0.3,
             },
             emphasis: {
               focus: "adjacency",
               lineStyle: {
-                width: 10
-              }
-            }
-          }
-        ]
+                width: 10,
+              },
+            },
+          },
+        ],
       };
       // 灏嗙敓鎴愮殑杩炴帴绾挎坊鍔犲埌echarts鍥捐〃鐨刼ption涓�
       // option.series[0].links = links;
@@ -569,28 +641,28 @@
       getAdvanceSearch({
         ...val,
         page: 1,
-        pageSize: 100
+        pageSize: 100,
       }).then((res) => {
         console.log(res, "res");
       });
     },
     advancedSearchBack() {
       uni.navigateTo({
-        url: "/pages/knowledgeBase/knowledgeBase"
+        url: "/pages/knowledgeBase/knowledgeBase",
       });
     },
     // 鐐瑰嚮涓嬮潰鐨勬湞浠f寜閽�
     dynastyBottomClick(item) {
       this.dynastyColor = item.id;
       this.onSearch({
-        text: item.name
+        text: item.name,
       });
     },
     // 鍏崇郴鍥� 鐐瑰嚮閲岄潰鐨勫厓绱�
     spaceTimeArr(id) {
       // 鍏崇郴鍥剧殑鏁版嵁
       uni.navigateTo({
-        url: "/pages/character/detail?id=" + id
+        url: "/pages/character/detail?id=" + id,
       });
     },
     // 鑾峰彇鏈濅唬echarts鐨勬暟鎹�
@@ -629,15 +701,15 @@
           const options = res.object.occupationStatistic.details.map(
             (item) => ({
               label: item.tagName,
-              value: item.tagId.toString() // 灏� id 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 value 绫诲瀷涓�鑷�
+              value: item.tagId.toString(), // 灏� id 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 value 绫诲瀷涓�鑷�
             })
           );
           // 鏇存柊鑱屼笟瀛楁鐨� options 灞炴��
           this.$set(this.From.from[professionIndex], "options", options);
         }
       });
-    }
-  }
+    },
+  },
 };
 </script>
 

--
Gitblit v1.9.1