From 5affb08b5ac61563b5237c6ed5beedffda073e66 Mon Sep 17 00:00:00 2001
From: YM <479443481@qq.com>
Date: 星期五, 19 七月 2024 18:55:08 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/TCM_CharacterLibrary

---
 src/pages/academicSchools/index.vue |  516 ++++++++++++++++++++++++---------------------------------
 1 files changed, 217 insertions(+), 299 deletions(-)

diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue
index 3fdc4ac..0aab590 100644
--- a/src/pages/academicSchools/index.vue
+++ b/src/pages/academicSchools/index.vue
@@ -4,30 +4,40 @@
   >
     <headNav :idIndex="'6'" text="瀛︽湳娴佹淳" />
     <!-- 楂樼骇鎼滅储 -->
-    <view style="margin-top: 0.1rem">
+    <view style="margin-left: 0.6rem; margin-top: 0.1rem; display: flex">
       <advancedSearch
         @onSearch="onSearch"
-        @onSubmit="onSubmit"
-        :from="From"
         placehold="璇疯緭鍏ュ叧閿瓧"
+        :isAvancedTrue="false"
         :keyword="searchKey"
-        :advancedSearchBack="advancedSearchBack"
       />
+      <view
+        @click="isAvancedClick"
+        style="
+          color: #244a7b;
+          cursor: pointer;
+          font-size: 0.12rem;
+          margin-left: 0.35rem;
+          line-height: 0.58rem;
+        "
+        >楂樼骇鎼滅储 {{ isAdvancedSearch ? "鈭�" : "鈭�" }}</view
+      >
+      <!-- 鐑棬鎼滅储 -->
+      <view class="flex flex-center hotSearch" style="margin-left: 2rem">
+        鐑棬鎼滅储锛�
+        <ul class="flex" style="margin-right: 10rpx">
+          <li
+            @click="onSearch({ text: item }, index)"
+            :class="{ cursor: true, active: hotAciveIndex === index }"
+            v-for="(item, index) in hotKeyList"
+            :key="item"
+          >
+            {{ item }}
+          </li>
+        </ul>
+      </view>
     </view>
-    <!-- 鐑棬鎼滅储 -->
-    <view class="flex flex-center hotSearch">
-      鐑棬鎼滅储锛�
-      <ul class="flex" style="margin-right: 10rpx">
-        <li
-          @click="onSearch({ text: item }, index)"
-          :class="{ cursor: true, active: hotAciveIndex === index }"
-          v-for="(item, index) in hotKeyList"
-          :key="item"
-        >
-          {{ item }}
-        </li>
-      </ul>
-    </view>
+
     <!-- 鍏崇郴琛ㄥ湴鍥� -->
     <div
       id="relation"
@@ -46,6 +56,20 @@
         "
       >
         鏆傛棤鐩稿叧鏁版嵁
+      </div>
+      <div
+        v-if="loading"
+        v-loading="loading"
+        style="
+          position: absolute;
+          top: 30%;
+          left: 0;
+          right: 0;
+          text-align: center;
+          font-size: 0.2rem;
+          color: #666;
+        "
+      >
       </div>
     </div>
     <div id="customDialog" class="customDialog">
@@ -69,7 +93,7 @@
 import {
   getPersonData,
   getHotSearch,
-  getPDataStatistics,
+  getPDataStatistics
 } from "@/api/index.js";
 import * as echarts from "echarts";
 export default {
@@ -82,172 +106,6 @@
       nodes: [],
       // echarts涓よ�呯殑鍏崇郴
       relationships: [],
-      // 楂樼骇鎼滅储
-      From: {
-        from: [
-          {
-            type: "input",
-            label: "濮撳悕",
-            name: "name",
-            value: "",
-          },
-          {
-            type: "input",
-            label: "鍒悕",
-            name: "alias",
-            value: "",
-          },
-          {
-            type: "input",
-            label: "绫嶈疮",
-            name: "location",
-            value: "",
-          },
-          {
-            type: "select",
-            label: "鑱屼笟",
-            name: "sdId",
-            value: "",
-            options: [
-              {
-                label: "鏈寚鏄�",
-                value: "UNKNOWN",
-              },
-            ],
-          },
-          {
-            type: "input",
-            label: "瀹樿亴",
-            name: "office",
-            value: "",
-          },
-          {
-            type: "select",
-            label: "鎬у埆",
-            value: "",
-            name: "genderTypeEO",
-            options: [
-              {
-                label: "鏈寚鏄�",
-                value: "UNKNOWN",
-              },
-              {
-                label: "鐢�",
-                value: "MALE",
-              },
-              {
-                label: "濂�",
-                value: "WOMAN",
-              },
-            ],
-          },
-          {
-            type: "input",
-            label: "鏃舵湡",
-            name: "period",
-            value: "",
-          },
-          {
-            type: "input",
-            label: "鏈烘瀯",
-            name: "inst",
-            value: "",
-          },
-          {
-            type: "number",
-            label: "椤电爜",
-            name: "page",
-            value: "",
-          },
-          {
-            type: "number",
-            label: "椤靛ぇ灏�",
-            name: "pageSize",
-            value: "",
-          },
-        ],
-      },
-      // 涓嬮潰鐨勬湞浠�1
-      dynastyColor: 1,
-      // 鏈濅唬
-      dynasty: [
-        {
-          name: "澶忔湞",
-          coord: "2070BC",
-          id: 1,
-        },
-        {
-          name: "鍟嗘湞",
-          id: 2,
-          coord: "1600BC",
-        },
-        {
-          name: "瑗垮懆",
-          id: 3,
-          coord: "1600BC",
-        },
-        {
-          name: "鏄ョ鎴樺浗",
-          id: 4,
-          coord: "770BC",
-        },
-        {
-          name: "绉︽湞",
-          id: 5,
-          coord: "221BC",
-        },
-        {
-          name: "姹夋湞",
-          id: 6,
-          coord: "202BC",
-        },
-        {
-          name: "涓夊浗涓ゆ檵鍗楀寳鏈�",
-          id: 7,
-          coord: "184",
-        },
-        {
-          name: "闅嬫湞",
-          id: 8,
-          coord: "581",
-        },
-        {
-          name: "鍞愭湞",
-          id: 9,
-          coord: "618",
-        },
-        {
-          name: "浜斾唬鍗佸浗",
-          id: 10,
-          coord: "907",
-        },
-        {
-          name: "杈藉閲�",
-          id: 11,
-          coord: "907",
-        },
-        {
-          name: "瀹嬫湞",
-          id: 12,
-          coord: "960",
-        },
-        {
-          name: "鍏冩湞",
-          id: 13,
-          coord: "1271",
-        },
-
-        {
-          name: "鏄庢湞",
-          id: 14,
-          coord: "1368",
-        },
-        {
-          name: "娓呮湞",
-          id: 15,
-          coord: "1636",
-        },
-      ],
       // 鐑棬鎼滅储
       hotKeyList: [],
       searchKey: "",
@@ -261,8 +119,9 @@
       // 褰撳墠浜虹墿淇℃伅
       ownInfo: null,
       detailData: {
-        name: "",
+        name: ""
       },
+      isAdvancedSearch: false
     };
   },
   mounted() {
@@ -271,7 +130,6 @@
     this.hotSearch();
     // 鐩戝惉绐楀彛澶у皬鍙樺寲
     window.addEventListener("resize", this.relation);
-    this.innt();
   },
   onLoad(options) {
     this.searchKey = options.keyword;
@@ -284,32 +142,100 @@
         const personInfo = this.infoOfPersons.find(
           (item) => item.id == ele.personId
         );
-        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,
-          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) {
-          order++;
-          this.getPersonInfo(ele[str], str, newArr, order, type, personInfo);
+        if (personInfo?.id) {
+          const obj = {
+            personId: ele.personId,
+            parentId: parent.id,
+            id2: personInfo.id,
+            relationTypeName: ele.relationTypeName,
+            parentName: parent?.NAME[0]?.content1 ?? parent.parentName,
+            name2: personInfo?.NAME[0]?.content1,
+            category: type,
+            symbolSize: order,
+          };
+          if (order > 80) {
+            order = 80;
+          }
+          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["kinList"] && ele["kinList"]?.length) {
+            order += 15;
+            this.getPersonInfo(
+              ele["kinList"],
+              "kinList",
+              newArr,
+              order,
+              0,
+              personInfo
+            );
+          }
+          if (ele["teacherStudentList"] && ele["teacherStudentList"]?.length) {
+            order += 15;
+            this.getPersonInfo(
+              ele["teacherStudentList"],
+              "teacherStudentList",
+              newArr,
+              order,
+              1,
+              personInfo
+            );
+          }
+          if (ele["literatureList"] && ele["literatureList"]?.length) {
+            const data = this.changeLiterature(
+              ele["literatureList"],
+              "literatureList"
+            );
+            order += 15;
+            this.getPersonInfo(
+              data,
+              "literatureList",
+              newArr,
+              order,
+              2,
+              personInfo
+            );
+          }
+
+          if (ele["socialList"] && ele["socialList"]?.length) {
+            const data = this.changeLiterature(ele["socialList"], "socialList");
+            order += 15;
+            this.getPersonInfo(
+              data,
+              "socialList",
+              newArr,
+              order,
+              3,
+              personInfo
+            );
+          }
+          if (ele["placeList"] && ele["placeList"]?.length) {
+            const data = this.changeLiterature(ele["placeList"], "placeList");
+            order += 15;
+            this.getPersonInfo(data, "placeList", newArr, order, 4, personInfo);
+          }
+          if (ele["schoolList"] && ele["schoolList"]?.length) {
+            const data = this.changeLiterature(ele["schoolList"], "schoolList");
+            order += 15;
+            this.getPersonInfo(
+              data,
+              "schoolList",
+              newArr,
+              order,
+              5,
+              personInfo
+            );
+          }
         }
       }
     },
@@ -327,7 +253,7 @@
               const data = item[str]?.map((e) => {
                 return {
                   ...e,
-                  personId: item.personId,
+                  personId: item.personId
                 };
               });
               if (data?.length) {
@@ -373,7 +299,7 @@
         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) {
@@ -423,6 +349,7 @@
                 this.ownInfo
               );
               literature = [...newArr];
+              // console.log(literature, "literature");
             }
             if (obj.socialList?.length) {
               let newArr = [];
@@ -444,7 +371,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,22 +381,31 @@
                 "schoolList",
                 newArr,
                 1,
-                3,
+                5,
                 this.ownInfo
               );
               school = [...newArr];
-              // console.log(school, "schoolList");
             }
           }
+          console.log(kinData);
+          console.log(kinData.map(item=>item.name2).join("銆�"));
+          debugger
           const personData = [
             ...kinData,
             ...teacher,
             ...literature,
             ...social,
             ...place,
-            ...school,
+            ...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) =>
@@ -484,20 +419,20 @@
               this.nodes.push({
                 name: item.parentName,
                 id: item.parentId,
-                ...item,
+                ...item
               });
             }
             if (item.name2 && exists2 !== true) {
               this.nodes.push({
                 name: item.name2,
                 id: item.id2,
-                ...item,
+                ...item
               });
             }
             let obj = {
               source: item.parentName,
               target: item.name2,
-              relation: item.relationTypeName || "", // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓�
+              relation: item.relationTypeName || "" // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓�
             };
             this.relationships.push(obj);
           });
@@ -565,8 +500,8 @@
                 borderRadius: 30,
                 position: "middle", // 璁剧疆鏍囩鏂囨湰鍦ㄧ嚎鐨勪腑闂翠綅缃笂灞呬腑鏄剧ず
                 // z: -1, // 璁剧疆鏍囩鐨剒杞撮珮搴︼紝浣垮叾姣旇繛鎺ョ嚎鏇撮珮
-                distance: -10, // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
-              },
+                distance: -10 // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
+              }
             });
           }
         }
@@ -575,65 +510,59 @@
       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: {},
+        // backgroundColor: {
+        //   type: "image",
+        //   image: "/static/image/characterRelationBg.png",
+        //   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,
             layout: "force",
+            symbolSize: 15,
             data: nodeData,
             links: links,
             categories: this.categories,
             roam: true,
             label: {
+              show: true,
               position: "right",
-              formatter: "{b}",
+              formatter: "{b}"
+            },
+            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鍥捐〃鐨刼ption涓�
-      // option.series[0].links = links;
       // 璁剧疆鐐瑰嚮浜嬩欢鐩戝惉
       myChart.off("click");
       myChart.on("click", (params) => {
@@ -674,7 +603,7 @@
             i += 1;
             return e["content" + i];
           }).join("銆�") ?? "",
-        biography: data?.BIOGRAPHY ?? "",
+        biography: data?.BIOGRAPHY ?? ""
       };
       this.detailData = obj;
     },
@@ -692,33 +621,18 @@
       }
       this.getData(val.text);
     },
-    // 楂樼骇鎼滅储
-    onSubmit(val) {
-      getAdvanceSearch({
-        ...val,
-        page: 1,
-        pageSize: 100,
-      }).then((res) => {
-        console.log(res, "res");
-      });
-    },
-    advancedSearchBack() {
-      uni.navigateTo({
-        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鐨勬暟鎹�
@@ -744,36 +658,30 @@
         });
       });
     },
-
-    // 楂樼骇鎼滅储閲岄潰鑱屼笟鐨勪笅鎷夎彍鍗�
-    innt() {
-      getPDataStatistics().then((res) => {
-        const professionIndex = this.From.from.findIndex(
-          (field) => field.label === "鑱屼笟"
-        );
-        // 濡傛灉鎵惧埌浜嗚亴涓氬瓧娈�
-        if (professionIndex !== -1) {
-          // 灏� profession.list 杞崲涓� options 鏍煎紡
-          const options = res.object.occupationStatistic.details.map(
-            (item) => ({
-              label: item.tagName,
-              value: item.tagId.toString(), // 灏� id 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 value 绫诲瀷涓�鑷�
-            })
-          );
-          // 鏇存柊鑱屼笟瀛楁鐨� options 灞炴��
-          this.$set(this.From.from[professionIndex], "options", options);
-        }
-      });
+    isAvancedClick() {
+      this.isAdvancedSearch = !this.isAdvancedSearch;
+      // this.$nextTick(() => {
+      //   var box1Height = document.querySelector(".fbox").offsetHeight;
+      //   // let box2Height= document.querySelector('.fbox1').style.height = box1Height + 'px';
+      //   let box2Height = document.querySelector(".fbox1").offsetHeight;
+      //   if (box1Height <= box2Height) {
+      //     document.querySelector(".fbox1").style.height = box1Height + "px";
+      //   }
+      // });
     },
-  },
+  }
 };
 </script>
 
 <style>
-#relatio {
+#relation {
   width: 100%;
   height: 100%;
   position: relative;
+  background-image: url('../../static/image/characterRelationBg.png');
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  background-position: center;
 }
 
 .customDialog {
@@ -854,5 +762,15 @@
 .hotSearch {
   font-size: 0.12rem;
   color: #2c2c2c;
+
+  li {
+    color: #244a7b;
+    margin: 0 0.1rem;
+    color: #244a7b;
+    &.active {
+      color: #027edc;
+      font-weight: bold;
+    }
+  }
 }
 </style>

--
Gitblit v1.9.1