From e00361c6bcbb1a56f6dcda22b91bdfcb2736e263 Mon Sep 17 00:00:00 2001
From: YM <479443481@qq.com>
Date: 星期五, 26 七月 2024 15:56:27 +0800
Subject: [PATCH] 1

---
 src/pages/character/detail.vue | 1002 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 638 insertions(+), 364 deletions(-)

diff --git a/src/pages/character/detail.vue b/src/pages/character/detail.vue
index c2a8b37..d4c28cb 100644
--- a/src/pages/character/detail.vue
+++ b/src/pages/character/detail.vue
@@ -1,6 +1,6 @@
 <template>
   <view class="relative">
-    <headNav :idIndex="1 + ''" text="涓尰浜虹墿鏁版嵁搴�" />
+    <headNav :idIndex="1 + ''" text="鍘嗕唬浜虹墿" />
     <view class="Midde flex">
       <el-button class="MiddeBack flex flex-center" @click="goBack"
         >杩斿洖</el-button
@@ -11,7 +11,6 @@
         }}</view>
         <ul class="flex" style="line-height: 1.2; margin: 0.15rem 0">
           <li
-            v-for="item in 4"
             style="
               background-color: #fff;
               padding: 0 0.08rem;
@@ -21,18 +20,70 @@
               text-align: center;
               margin-right: 0.15rem;
             "
+            @click="openFileClick(1)"
           >
-            VSDS
+            RDF
+          </li>
+          <li
+            style="
+              background-color: #fff;
+              padding: 0 0.08rem;
+              border: 0.01rem solid #000;
+              border-radius: 0.1rem;
+              font-size: 0.12rem;
+              text-align: center;
+              margin-right: 0.15rem;
+              cursor: pointer;
+            "
+            @click="openFileClick(2)"
+          >
+            NT
+          </li>
+          <li
+            style="
+              background-color: #fff;
+              padding: 0 0.08rem;
+              border: 0.01rem solid #000;
+              border-radius: 0.1rem;
+              font-size: 0.12rem;
+              text-align: center;
+              margin-right: 0.15rem;
+              cursor: pointer;
+            "
+            @click="openFileClick(3)"
+          >
+            XML
+          </li>
+          <li
+            style="
+              background-color: #fff;
+              padding: 0 0.08rem;
+              border: 0.01rem solid #000;
+              border-radius: 0.1rem;
+              font-size: 0.12rem;
+              text-align: center;
+              margin-right: 0.15rem;
+              cursor: pointer;
+            "
+            @click="openFileClick(4)"
+          >
+            JSON
           </li>
         </ul>
         <view
           id="copyBox"
           class="fz font-family"
+          :title="biogData.length ? biogData[0].content : ''"
           style="
-            font-size: 0.13rem;
+            font-size: 0.14rem;
             font-weight: normal;
-            line-height: 0.2rem;
+            line-height: 2;
             letter-spacing: 0.03rem;
+            cursor: pointer;
+            display: -webkit-box;
+            -webkit-box-orient: vertical;
+            -webkit-line-clamp: 4;
+            overflow: hidden;
           "
         >
           {{ biogData.length ? biogData[0].content : "-" }}
@@ -48,7 +99,6 @@
               <img src="@/static/image/yinyong.png" alt="" />寮曠敤</el-button
             >
           </view>
-          <!-- v-if="biogData.length > 1" -->
           <view
             style="font-size: 0.12rem; color: #244a7b; cursor: pointer"
             @click="ProfileClick"
@@ -58,9 +108,9 @@
       </view>
       <view style="width: 5%"></view>
     </view>
-    <el-row style="padding: 0 1.2rem 0; padding-top: 0.24rem">
+    <div style="padding: 0 1.2rem 0; padding-top: 0.24rem; display: flex">
       <!-- 宸︿晶 -->
-      <el-col
+      <div
         :span="5"
         class="BoxLeft"
         style="padding-right: 0.2rem; width: 2.8rem"
@@ -108,6 +158,7 @@
               <span>鏃剁┖鍦板浘</span>
               <!-- <el-button icon="el-icon-rank" style="float: right; padding: 3px 0" type="text"></el-button> -->
               <img
+                v-if="markerList && markerList.length > 0"
                 src="@/static/image/fangda.png"
                 @click="fangdaClick(2)"
                 style="width: 0.18rem; height: 0.18rem; cursor: pointer"
@@ -116,7 +167,19 @@
             <view
               id="spaceTime"
               style="height: 1.51rem; width: 100%; position: relative"
-            ></view>
+            >
+              <p
+                v-if="markerList && markerList.length == 0"
+                style="
+                  margin-top: 0.5rem;
+                  color: #666;
+                  text-align: center;
+                  font-size: 12px;
+                "
+              >
+                鏆傛棤鏁版嵁
+              </p>
+            </view>
           </el-card>
           <el-card style="width: 100%; height: 2.06rem">
             <div
@@ -145,12 +208,18 @@
               >
                 {{ index + 1 }}.{{ item }}
               </li>
+              <div
+                v-if="sourceDataList.length == 0"
+                style="color: #666; text-align: center; font-size: 16px"
+              >
+                鏆傛棤鏁版嵁
+              </div>
             </ul>
           </el-card>
         </div>
-      </el-col>
+      </div>
       <!-- 鍙充晶 -->
-      <el-col :span="18" class="BoxRight">
+      <div :span="18" class="BoxRight">
         <div class="grid-content bg-purple-dark" style="width: 100%">
           <el-card class="box-card" style="padding: 0">
             <div
@@ -170,7 +239,7 @@
             class="box-card"
             style="min-height: 1.91rem; margin: 0.2rem 0"
           >
-            <el-tabs ref="tabs" v-model="activeName" @tab-click="handleClick">
+            <el-tabs ref="tabs" v-model="activeName">
               <el-tab-pane label="浠h〃钁椾綔" data-id="1" name="representative">
                 <Table1
                   :data="tableData1"
@@ -185,12 +254,13 @@
                   :height="400"
                 />
               </el-tab-pane>
-              <el-tab-pane label="甯堟壙鍏崇郴" data-id="3" name="mentoring "
-                ><Table1
+              <el-tab-pane label="甯堟壙鍏崇郴" data-id="3" name="mentoring ">
+                <Table1
                   :data="tableData3"
                   :columns="tableColumns2"
                   :height="400"
-              /></el-tab-pane>
+                />
+              </el-tab-pane>
               <el-tab-pane label="绀句細鍏崇郴" data-id="4" name="society">
                 <Table1
                   :data="tableData4"
@@ -218,14 +288,30 @@
             >
               <span>鐩稿叧闄勮〃/鍥惧儚</span>
             </div>
-            <view class="flex">
-              <el-image
-                v-for="item in imageList"
-                :key="item"
-                style="width: 2.05rem; height: 1.4rem"
-                :src="item"
-                fit="fill"
-              ></el-image>
+            <view>
+              <div style="overflow: auto; display: flex">
+                <div v-for="item in imageList" :key="item" :title="item.name">
+                  <el-image
+                    :title="item.name"
+                    :alt="item.name"
+                    style="
+                      width: 2.05rem;
+                      height: 2.4rem;
+                      margin-right: 0.2rem;
+                      margin-bottom: 0.1rem;
+                    "
+                    :src="item.src"
+                    :preview-src-list="imageList.map((item) => item.src)"
+                    fit="contain"
+                  ></el-image>
+                </div>
+              </div>
+              <div
+                v-if="imageList.length == 0"
+                style="color: #666; text-align: center; font-size: 16px"
+              >
+                鏆傛棤鏁版嵁
+              </div>
             </view>
           </el-card>
           <el-card class="box-card">
@@ -237,35 +323,41 @@
                 padding-bottom: 0.1rem;
               "
             >
-              <span>鐩稿叧闄勮〃/鍥惧儚</span>
+              <span>鐜颁唬鐮旂┒</span>
             </div>
-            <ul class="font-family" style="font-size: 0.13rem; line-height: 2">
-              <li>
-                [1|鍒樼倻,璋㈣搲,寮犵,绛�.鍚戜汉鏂囩爺绌剁殑鍥藉鏁版嵁鍩虹璁炬柦寤鸿[J|.涓浗鍥句功棣嗗鎶�,2016,42(5):29-39.
+            <ul class="fileul" style="font-size: 0.13rem; line-height: 2">
+              <li
+                style="cursor: pointer"
+                v-for="(item, index) in personResearchList"
+                :key="index"
+                @click="toLink(item)"
+              >
+                {{ "[" + Number(index + 1) + "]" + item.achievementName }}
               </li>
-              <li>
-                [2|鍛ㄦ櫒.鍥介檯鏁板瓧浜烘枃鐮旂┒鐗瑰緛涓庣煡璇嗙粨鏋剕J鍥句功棣嗚鍧�2017.37(4):1-8.
-              </li>
-              <li>
-                [3]鍌呭痉鍗�,浜庣繝鑹�,鏉庢槬鍗�,鍏充簬鍒涘缓鈥�20
-                涓栫邯涓浗浜虹墿浼犺璧勬枡鍏ㄦ枃鏁版嵁搴撴不鐨勬瀯鎯砙宸�,涓浗鑰呭紩,2009,714):24-26.
-              </li>
-              <li>
-                [4|浜庣繝鑹�,鍌呭痉鍗�,鏉庢槬鍗�,鍏充簬鈥�20涓栫邯涓浗浜虹墿浼犺璧勬枡鍏ㄦ枃鏁版嵁搴撴不鐨勮繘灞曚笌鍥版儜[J1.涓浗甯稿紩,2012.10111:20-22
-              </li>
-              <li>
-                [5]璐炬銆傘�婃箹鍗楄繎浠d汉鐗╂暟鎹巼銆嬭祫婧愭敹褰曡寖鍥寸爺绌秥J娌冲崡鍥句功棣嗗鍒�,2015,35(7):126.127.140.
-              </li>
+              <div
+                v-if="!personResearchList || personResearchList.length == 0"
+                style="color: #666; text-align: center; font-size: 16px"
+              >
+                鏆傛棤鏁版嵁
+              </div>
             </ul>
           </el-card>
         </div>
-      </el-col>
-    </el-row>
+      </div>
+    </div>
 
     <!-- 杩斿洖椤堕儴 -->
-    <el-col style="position: absolute; bottom: 1rem; left: 1.2rem">
+    <el-col
+      style="
+        position: absolute;
+        bottom: 1rem;
+        left: 1.2rem;
+        width: 0.6rem;
+        height: 0.6rem;
+      "
+    >
       <el-button
-        style="width: 0.5rem; height: 0.5rem; font-size: 0.3rem"
+        style="font-size: 0.3rem"
         icon="el-icon-top"
         circle
         @click="scrollToTop"
@@ -274,9 +366,13 @@
     <!-- 涓汉灏忎紶 -->
     <el-dialog :visible.sync="isProfile" :modal-append-to-body="false">
       <view class="ProfileNav flex flex-center"> 涓汉灏忎紶 </view>
-      <view style="padding: 0.44rem 0.3rem; min-height: 7.32rem">
+      <view
+        style="padding: 0.44rem 0.3rem; min-height: 7.32rem"
+        v-if="biogData.length > 0"
+      >
         <view
-          v-for="item in biogData"
+          v-for="(item, index) in biogData"
+          :key="index"
           style="
             margin-bottom: 0.2rem;
             background-color: #f0f0f0;
@@ -292,11 +388,14 @@
           <view class="flex">
             <view></view>
             <view style="font-weight: 700; color: #2c2c2c"
-              >鈥斺�攞{ item.pageNo }}</view
+              >鈥斺�攞{ item.bookName }}</view
             >
           </view>
         </view>
       </view>
+      <div v-else>
+        <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+      </div>
     </el-dialog>
   </view>
 </template>
@@ -309,7 +408,9 @@
 import {
   getFuzzySearch,
   getPersonInfo,
+  getRelationTypeTreeList,
   getWebBasic,
+  getDynastyAll,
   getIntroduction,
   getSource,
   getPersonImages,
@@ -317,12 +418,15 @@
   getPersonWritings,
   getPersonRelationAtSchool,
   getSpaceTime,
+  getDynastyData
 } from "@/api/index.js";
 import { getImg } from "@/static/tool.js";
+import L from "leaflet";
+import "leaflet.chinatmsproviders";
 
 export default {
   components: {
-    Table1,
+    Table1
   },
   data() {
     return {
@@ -343,56 +447,62 @@
       tableColumns1: [
         {
           prop: "a",
-          label: "姝d功鍚�",
+          label: "姝d功鍚�"
+        },
+        {
+          prop: "e",
+          label: "浣滆��"
         },
         {
           prop: "b",
-          label: "钁椾綔骞�",
+          label: "钁椾綔骞�"
         },
         {
           prop: "c",
-          label: "钁椾綔鏂瑰紡",
+          label: "钁椾綔鏂瑰紡"
         },
         {
           prop: "d",
-          label: "鎬荤洰鍒嗙被",
-        },
+          label: "鎬荤洰鍒嗙被"
+        }
       ],
       tableColumns2: [
         {
           prop: "a",
-          label: "鍏崇郴浜�",
+          label: "鍏崇郴浜�"
         },
         {
           prop: "b",
-          label: "鍏崇郴绫诲瀷",
+          label: "鍏崇郴绫诲瀷"
         },
         {
           prop: "c",
-          label: "鑰冩嵁",
+          label: "鑰冩嵁"
         },
         {
           prop: "d",
-          label: "鍑哄",
-        },
+          width: 300,
+          showOverflowTooltip: true,
+          label: "鍑哄"
+        }
       ],
       tableColumns3: [
         {
           prop: "a",
-          label: "娲诲姩鏃堕棿鍖洪棿",
+          label: "娲诲姩鏃堕棿鍖洪棿"
         },
         {
           prop: "b",
-          label: "娲诲姩鍚嶇О",
+          label: "娲诲姩鍚嶇О"
         },
         {
           prop: "c",
-          label: "娲诲姩鍦扮偣",
+          label: "娲诲姩鍦扮偣"
         },
         {
           prop: "d",
-          label: "娲诲姩鎻忚堪",
-        },
+          label: "娲诲姩鎻忚堪"
+        }
       ],
       tableData1: [],
       tableData2: [],
@@ -401,6 +511,8 @@
       tableData5: [],
       nodes: [],
       relationships: [],
+      personResearchList: [],
+      markerList: []
     };
   },
   onLoad(options) {
@@ -422,32 +534,45 @@
     // 鑾峰彇鏃剁┖鍦板浘
     this.getMapInfo();
 
-    this.$nextTick(() => {
-      // 鑾峰彇绗竴涓�夐」鍗$殑 DOM 鍏冪礌
-      const firstTab = this.$refs.tabs.$el.querySelector(
-        ".el-tabs__active-bar"
-      );
-      firstTab.style.transform = "translateX(" + "-.2rem" + ")";
-    });
+    // this.$nextTick(() => {
+    //   // 鑾峰彇绗竴涓�夐」鍗$殑 DOM 鍏冪礌
+    //   const firstTab = this.$refs.tabs.$el.querySelector(
+    //     ".el-tabs__active-bar"
+    //   );
+    //   firstTab.style.transform = "translateX(" + "-.2rem" + ")";
+    // });
 
     // 鐩戝惉绐楀彛澶у皬鍙樺寲
     window.addEventListener("resize", this.relation);
   },
   methods: {
     copyText() {
-      var textToCopy = document.getElementById("copyBox").innerText;
-      console.log(textToCopy, "textToCopy");
-      navigator.clipboard.writeText(textToCopy).then();
+      const textToCopy =
+        this.biogData[0].content + "\n鏉ユ簮锛氫腑鍖诲尰瀛︿汉鐗╃煡璇嗗簱";
+      const textarea = document.createElement("textarea");
+      textarea.value = textToCopy;
+      document.body.appendChild(textarea);
+      textarea.select();
+      document.execCommand("copy");
+      document.body.removeChild(textarea);
       this.$message({
         message: "澶嶅埗鎴愬姛锛�",
-        type: "success",
+        type: "success"
       });
+    },
+    toLink(item) {
+      if (item.url) {
+        window.open(item.url);
+      }
+      if (item.filePath) {
+        window.open(getImg(item.filePath));
+      }
     },
     getData() {
       // 鍩烘湰淇℃伅
       getPersonInfo({
         id: this.detailId,
-        type: "PERSON_BASIC",
+        type: "PERSON_BASIC"
       }).then((res) => {
         const obj = {};
         if (
@@ -462,121 +587,178 @@
               : fieldItem.content1;
           }
         }
-        console.log(obj);
         this.detailInfo = obj;
+        getDynastyAll().then((dynastyData) => {
+          getWebBasic({
+            personId: this.detailId
+          }).then((res) => {
+            const obj = res.object;
+            if (obj.school) {
+              getIntroduction(Number(obj.school)).then((sres) => {
+                this.handleData(obj, sres, dynastyData.list);
+              });
+            } else {
+              this.handleData(obj, null, dynastyData.list);
+            }
+          });
+        });
         // 鍏崇郴鍥捐氨
-        this.getMappingData(this.detailInfo.NAME);
+        this.getMappingData();
       });
 
-      getWebBasic({
-        personId: this.detailId
+      //鐜颁唬鐮旂┒
+      getPersonInfo({
+        id: this.detailId,
+        type: "PERSON_RESEARCH"
       }).then((res) => {
-        console.log(res, "resres");
-        const obj = res.object;
-        getIntroduction(Number(obj.school)).then((sres) => {
-          console.log(sres, "sres");
-          this.tableArr = [
-            {
-              list: [
-                {
-                  name: "鍒悕",
-                  value: obj.alias || "-"
-                },
-                {
-                  name: "瀛�",
-                  value: obj.zi || "-"
-                },
-                {
-                  name: "鍙�",
-                  value: obj.hao || "-"
-                },
-                {
-                  name: "鎵�澶勬椂鏈�",
-                  value: obj.dynastyDesc || "-"
-                },
-                {
-                  name: "姘戞棌",
-                  value: obj.ethnic || "-"
-                }
-              ]
-            },
-            {
-              list: [
-                {
-                  name: "绫嶈疮",
-                  value: obj.native || "-"
-                },
-                {
-                  name: "鎬у埆",
-                  value: obj.gender || "-"
-                },
-                {
-                  name: "鑱屽畼",
-                  value: obj.official || "-"
-                },
-                {
-                  name: "娴佹淳",
-                  value:
-                    sres &&
-                    sres.object &&
-                    sres.object.school_NAME &&
-                    sres.object.school_NAME.length
-                      ? sres.object.school_NAME[0].content
-                      : "-"
-                },
-                {
-                  name: "瀛︽湳鐗圭偣",
-                  value: obj.features || "-"
-                }
-              ]
-            }
-          ];
-        });
+        this.personResearchList = res.object.personResearchList;
       });
+
       // 娲诲姩骞磋氨
       getPersonInfo({
         id: this.detailId,
-        type: "PERSON_SPACE_TIME",
+        type: "PERSON_SPACE_TIME"
       }).then((res) => {
-        this.tableData5 = res.object.personSpaceTimeList.map((item) => {
-          return {
-            a: item.time,
-            b: item.activityName,
-            c: item.activityAddrOld,
-            d: item.desc, // 杩欓噷缂哄皯娲诲姩鎻忚堪瀛楁
-          };
-        });
+        if (res.object.personSpaceTimeList) {
+          this.tableData5 = res.object.personSpaceTimeList.map((item) => {
+            return {
+              a: item.time,
+              b: item.activityName,
+              c: item.activityAddrOld,
+              d: item.desc
+            };
+          });
+        }
       });
+    },
+    handleData(obj, sres, dynastyData) {
+      this.tableArr = [
+        {
+          list: [
+            {
+              name: "濮撳悕",
+              value: obj.name || "-"
+            },
+            {
+              name: "瀛�",
+              value: obj.zi || "-"
+            },
+            {
+              name: "鍙�",
+              value: obj.hao || "-"
+            },
+            {
+              name: "鎵�澶勬椂鏈�",
+              value:
+                dynastyData.find((item) => item.dynastyId == obj.dynastyId)
+                  .name || "-",
+              valueClick: () => {
+                uni.navigateTo({
+                  url:
+                    "/pages/knowledgeBase/knowledgeBase?dynasty=" +
+                    obj.dynastyId
+                });
+              }
+            },
+            {
+              name: "姘戞棌",
+              value: obj.ethnic || "-"
+            }
+          ]
+        },
+        {
+          list: [
+            {
+              name: "绫嶈疮",
+              value: obj.native || "-"
+            },
+            {
+              name: "鎬у埆",
+              value: obj.gender || "-"
+            },
+            {
+              name: "鑱屽畼",
+              value: obj.official || "-",
+              valueClick: () => {
+                uni.navigateTo({
+                  url:
+                    "/pages/knowledgeBase/knowledgeBase?isAdvancedSearch=1&official=" +
+                    obj.official
+                });
+              }
+            },
+            {
+              name: "娴佹淳",
+              value:
+                sres &&
+                sres.object &&
+                sres.object.school_NAME &&
+                sres.object.school_NAME.length
+                  ? sres.object.school_NAME[0].content
+                  : "-"
+            },
+            {
+              name: "瀛︽湳鐗圭偣",
+              value: obj.features || "-"
+            }
+          ]
+        }
+      ];
     },
     getSourceData() {
       getSource({
-        personId: this.detailId,
+        personId: this.detailId
       }).then((res) => {
         this.sourceDataList = res.list;
       });
     },
     getImages() {
       getPersonImages({
-        personId: this.detailId,
+        personId: this.detailId
       }).then((res) => {
-        this.imageList = res.list.map((item) => getImg(item.filePath));
+        this.imageList = res.list.map((item) => {
+          return {
+            src: getImg(item.filePath),
+            name: item.desc
+          };
+        });
       });
     },
     getBiog() {
       getPersonBiog({
-        personId: this.detailId,
+        personId: this.detailId
       }).then((res) => {
         this.biogData = res.list.map((item) => {
           return {
             content: item.content1,
-            pageNo: "銆�" + item.pageNo + "銆� " + "P " + item.pageNo, // 杩欓噷鍙湁bookid鏃犳硶鍖归厤鍒颁功鍚�
+            bookName:
+              "銆�" +
+              item.bookName +
+              "銆� " +
+              (item.pageNo ? "P " + item.pageNo : "") // 杩欓噷鍙湁bookid鏃犳硶鍖归厤鍒颁功鍚�
+          };
+        });
+      });
+    },
+    getBiog() {
+      getPersonBiog({
+        personId: this.detailId
+      }).then((res) => {
+        this.biogData = res.list.map((item) => {
+          return {
+            content: item.content1,
+            bookName:
+              "銆�" +
+              item.bookName +
+              "銆� " +
+              (item.pageNo ? "P " + item.pageNo : "") // 杩欓噷鍙湁bookid鏃犳硶鍖归厤鍒颁功鍚�
           };
         });
       });
     },
     getWritings() {
       getPersonWritings({
-        personId: this.detailId,
+        personId: this.detailId
       }).then((res) => {
         this.tableData1 = res.list.map((item) => {
           return {
@@ -584,22 +766,78 @@
             b: item.dynasty,
             c: item.writeWay,
             d: item.classify,
+            e: this.detailInfo.NAME
           };
         });
       });
     },
     getRelationship() {
-      getPersonRelationAtSchool({
-        personId: this.detailId,
-        // relationSearchTypeEO: "SOCIAL"
+      getPersonInfo({
+        id: this.detailId,
+        type: "PERSON_RELATIONS"
       }).then((res) => {
-        console.log(res, "getPersonRelationAtSchool");
-        // 杩欓噷鎺ュ彛鏈夐棶棰�
+        this.tableData4;
+        if (res.object.personRelationMap.kin.length) {
+          this.tableData2 = res.object.personRelationMap.kin.map((f) => {
+            return {
+              a: f.nodeName,
+              b: f.relationTypeName,
+              c: f.textualResearch,
+              d:
+                res.object.bookList &&
+                res.object.bookList.find((citem) => citem.id == f.bookId)
+                  ? "銆�" +
+                    res.object.bookList.find((citem) => citem.id == f.bookId)
+                      .name +
+                    "銆� P" +
+                    f.pageNo
+                  : ""
+            };
+          });
+        }
+        if (res.object.personRelationMap.teacherStudent.length) {
+          this.tableData3 = res.object.personRelationMap.teacherStudent.map(
+            (f) => {
+              return {
+                a: f.nodeName,
+                b: f.relationTypeName,
+                c: f.textualResearch,
+                d:
+                  res.object.bookList &&
+                  res.object.bookList.find((citem) => citem.id == f.bookId)
+                    ? "銆�" +
+                      res.object.bookList.find((citem) => citem.id == f.bookId)
+                        .name +
+                      "銆� P" +
+                      f.pageNo
+                    : ""
+              };
+            }
+          );
+        }
+        if (res.object.personRelationMap.social.length) {
+          this.tableData4 = res.object.personRelationMap.social.map((f) => {
+            return {
+              a: f.nodeName,
+              b: f.relationTypeName,
+              c: f.textualResearch,
+              d:
+                res.object.bookList &&
+                res.object.bookList.find((citem) => citem.id == f.bookId)
+                  ? "銆�" +
+                    res.object.bookList.find((citem) => citem.id == f.bookId)
+                      .name +
+                    "銆� P" +
+                    f.pageNo
+                  : ""
+            };
+          });
+        }
       });
     },
-    getMappingData(name) {
+    getMappingData() {
       getFuzzySearch({
-        keyword: name,
+        personId: this.detailId
       }).then((res) => {
         this.nodes = [];
         this.relationships = [];
@@ -612,22 +850,22 @@
               (node) => node.id === item.identifier2 && node.name === item.name2
             );
             // 璇佹槑涓嶅瓨鍦�
-            if (exists1 !== true) {
+            if (item.name1 && exists1 !== true) {
               this.nodes.push({
                 name: item.name1,
-                id: item.identifier1,
+                id: item.identifier1
               });
             }
-            if (exists2 !== true) {
+            if (item.name2 && exists2 !== true) {
               this.nodes.push({
                 name: item.name2,
-                id: item.identifier2,
+                id: item.identifier2
               });
             }
             let obj = {
               source: item.name1,
               target: item.name2,
-              relation: item.relationName || "", // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓�
+              relation: item.relationName || "" // 濡傛灉瀛樺湪 relationName 瀛楁鍒欎娇鐢紝鍚﹀垯涓虹┖瀛楃涓�
             };
             this.relationships.push(obj);
           });
@@ -637,31 +875,79 @@
     },
     getMapInfo() {
       getSpaceTime({
-        personId: this.detailId,
+        personId: this.detailId
       }).then((res) => {
-        console.log(res, "getSpaceTime");
-        const data = res.list.map((item) => {
-          return {
-            name: item.activityName,
-            value: [item.xcoord, item.ycoord]
-          };
-        });
-        // 鏃剁┖鍦板浘
-        loadBMap("1NJdwrI1CfT6lrykVhDkmWgsO6O2bjQK").then(() => {
-          this.spaceTime(data);
-        });
+        if (res.list && res.list.length) {
+          const data = [];
+          for (let i = 0; i < res.list.length; i++) {
+            const item = res.list[i];
+            if (item.xcoord && item.ycoord) {
+              const obj = {
+                name: item.activityName,
+                value: [item.xcoord, item.ycoord]
+              };
+              data.push(obj);
+            }
+          }
+          this.markerList = data;
+          // 鏃剁┖鍦板浘
+          // 杩欓噷鍙彇浜嗙涓�鏉★紝闇�瑕佸叏閮ㄦ暟鎹�
+          if (data && data.length) {
+            this.initMap(data);
+          }
+        }
+
+        // loadBMap("1NJdwrI1CfT6lrykVhDkmWgsO6O2bjQK").then(() => {
+        //   this.spaceTime(data);
+        // });
       });
     },
-
+    initMap(markerList) {
+      var map = L.map("spaceTime", {
+        preferCanvas: true,
+        attributionControl: false
+      }).setView([markerList[0].value[1], markerList[0].value[0]], 13);
+      L.tileLayer
+        .chinaProvider("TianDiTu.Normal.Map", {
+          key: "76bc34ead7e30e663a4eded8aeaf5860",
+          maxZoom: 18,
+          minZoom: 3
+        })
+        .addTo(map);
+      L.tileLayer
+        .chinaProvider("TianDiTu.Normal.Annotion", {
+          key: "76bc34ead7e30e663a4eded8aeaf5860",
+          maxZoom: 18,
+          minZoom: 3
+        })
+        .addTo(map);
+      let icon = L.divIcon({
+        html: "<div class='map-circle-name ripple'></div>",
+        iconSize: [80, 80],
+        className: "map-circle"
+      });
+      this.map = map;
+      const temp_mark = L.marker([markerList.value[1], markerList.value[0]], {
+        icon: icon
+      }).addTo(map);
+      if (markerList.length) {
+        for (let i = 0; i < markerList.length; i++) {
+          const item = markerList[i];
+          const temp_mark = L.marker([item.value[1], item.value[0]], {
+            icon: icon
+          }).addTo(map);
+        }
+      }
+    },
     // 鏀惧ぇ鍦板浘璺宠浆
     fangdaClick(index) {
       if (index == 1) {
         uni.navigateTo({
-          url: "/pages/character/index?keyword=" + this.detailInfo.NAME,
+          url: "/pages/character/index?keyword=" + this.detailInfo.NAME
         });
       } else if (index == 2) {
         uni.navigateTo({
-          url: "/pages/characterMap/characterMap?id=" + this.detailId,
+          url: "/pages/characterMap/characterMap?id=" + this.detailId
         });
       }
     },
@@ -677,32 +963,34 @@
     scrollToTop() {
       window.scrollTo({
         top: 0,
-        behavior: "smooth", // 浣跨敤骞虫粦婊氬姩
+        behavior: "smooth" // 浣跨敤骞虫粦婊氬姩
       });
     },
-    handleClick(tab) {
-      let index = tab.$attrs["data-id"] - 1;
-      this.$nextTick(() => {
-        let firstTab = this.$refs.tabs.$el.querySelector(
-          ".el-tabs__active-bar"
-        );
-        if (index == 0) {
-          firstTab.style.transform = "translateX(-" + 0.2 + "rem)";
-        } else if (index == 1) {
-          firstTab.style.transform = "translateX(" + 0.85 * index + "rem)";
-        } else if (index == 2) {
-          firstTab.style.transform = "translateX(" + 0.93 * index + "rem)";
-        } else if (index == 3) {
-          firstTab.style.transform = "translateX(" + 0.95 * index + "rem)";
-        } else if (index == 4) {
-          firstTab.style.transform = "translateX(" + 0.97 * index + "rem)";
-        } else {
-          let firstTab = this.$refs.tabs.$el.querySelector(
-            ".el-tabs__active-bar"
-          );
-          firstTab.style.transform = "translateX(" + "-.2" + "rem)";
-        }
-      });
+    openFileClick(index) {
+      let obj = {
+        id: this.detailId,
+        type: "Person"
+      };
+      switch (index) {
+        case 1:
+          obj.outputType = "RDF";
+          break;
+        case 2:
+          obj.outputType = "NT";
+          break;
+        case 3:
+          obj.outputType = "XML";
+          break;
+        case 4:
+          obj.outputType = "JSON";
+          break;
+      }
+      let queryString = Object.keys(obj)
+        .map(
+          (key) => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`
+        )
+        .join("&");
+      window.open(`#/pages/fileDetail/index?${queryString}`);
     },
     // 鍏崇郴鍥捐氨
     relation() {
@@ -714,25 +1002,8 @@
 
       let FontSize = 12; // 瀛椾綋澶у皬
       let BorderWidth = 2; // 杈规澶у皬
-      let SymbolSize = 80; // 灏哄璺濈
+      let SymbolSize = 50; // 灏哄璺濈
       let Distance = 10;
-      // 涓嶅悓灏哄涓嬩慨鏀筫charts鐨勫瓧浣�
-      if (window.innerWidth > 2560 && window.innerWidth <= 3840) {
-        FontSize = 28;
-        BorderWidth = 5;
-        SymbolSize = 100;
-        Distance = 33;
-      } else if (window.innerWidth > 1920 && window.innerWidth <= 2560) {
-        FontSize = 28;
-        BorderWidth = 4;
-        SymbolSize = 90;
-        Distance = 22;
-      } else if (window.innerWidth >= 1366 && window.innerWidth <= 1920) {
-        FontSize = 18;
-        BorderWidth = 4;
-        SymbolSize = 70;
-        Distance = 22;
-      }
       // 鏍规嵁鍏崇郴鏁版嵁鐢熸垚杩炴帴绾�
       var links = [];
       relationships.forEach((relationship, i) => {
@@ -760,8 +1031,8 @@
                 position: "middle", // 璁剧疆鏍囩鏂囨湰鍦ㄧ嚎鐨勪腑闂翠綅缃笂灞呬腑鏄剧ず
                 // bottom: -(FontSize+10),
                 z: 10, // 璁剧疆鏍囩鐨剒杞撮珮搴︼紝浣垮叾姣旇繛鎺ョ嚎鏇撮珮
-                distance: -(Distance + 1), // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
-              },
+                distance: -(Distance + 1) // 灏嗘爣绛炬斁缃湪杩炴帴绾夸笂
+              }
             });
           }
         }
@@ -776,8 +1047,8 @@
           itemStyle: {
             color: "#eae0eb", // 鍙互鏍规嵁绱㈠紩璁剧疆涓嶅悓鐨勯鑹�
             borderWidth: BorderWidth,
-            borderColor: "#996f9f",
-          },
+            borderColor: "#996f9f"
+          }
         };
       });
       var option;
@@ -787,14 +1058,14 @@
           top: FontSize + 10,
           subtextStyle: {
             fontSize: FontSize, // 璁剧疆鍓爣棰樻枃瀛楀ぇ灏忎负 14px
-            color: "#2C2C2C",
-          },
+            color: "#2C2C2C"
+          }
         },
         backgroundColor: {
           type: "image",
           image: "/static/image/characterRelationBg.png",
           size: "100% 100%", // 鑳屾櫙鍥剧墖鐨勫昂瀵革紝鍙互鏄櫨鍒嗘瘮鎴栬�呭儚绱�
-          position: "center center", // 鑳屾櫙鍥剧墖鐨勪綅缃紝鍙互鏄� top, bottom, middle 鎴栬�呯櫨鍒嗘瘮
+          position: "center center" // 鑳屾櫙鍥剧墖鐨勪綅缃紝鍙互鏄� top, bottom, middle 鎴栬�呯櫨鍒嗘瘮
         },
         tooltip: {},
         animationDurationUpdate: 1500,
@@ -808,7 +1079,7 @@
             label: {
               show: true,
               color: "black", // 璁剧疆鑺傜偣鏂囧瓧棰滆壊涓洪粦鑹�
-              fontSize: FontSize, // 璁剧疆鏂囧瓧澶у皬
+              fontSize: FontSize // 璁剧疆鏂囧瓧澶у皬
             },
             edgeSymbol: ["circle"],
             edgeSymbolSize: [4, 10],
@@ -817,16 +1088,16 @@
             lineStyle: {
               opacity: 0.9,
               width: 2,
-              curveness: 0.3,
+              curveness: 0.3
             },
             emphasis: {
               focus: "adjacency",
               lineStyle: {
-                width: 10,
-              },
-            },
-          },
-        ],
+                width: 10
+              }
+            }
+          }
+        ]
       };
       // 灏嗙敓鎴愮殑杩炴帴绾挎坊鍔犲埌echarts鍥捐〃鐨刼ption涓�
       option.series[0].links = links;
@@ -845,37 +1116,15 @@
       var myChart = echarts.init(chartDom);
       var option;
 
-      // const data = [
-      //   {
-      //     name: "娴烽棬",
-      //     value: [121.15, 31.89]
-      //   },
-      //   {
-      //     name: "閯傚皵澶氭柉",
-      //     value: [109.781327, 39.608266]
-      //   },
-      //   {
-      //     name: "鎷涜繙",
-      //     value: [120.38, 37.35]
-      //   },
-      //   {
-      //     name: "鑸熷北",
-      //     value: [122.207216, 29.985295]
-      //   },
-      //   {
-      //     name: "榻愰綈鍝堝皵",
-      //     value: [123.97, 47.33]
-      //   }
-      // ];
       option = {
         title: {
           text: "",
           subtext: "",
           sublink: "",
-          left: "center",
+          left: "center"
         },
         tooltip: {
-          trigger: "item",
+          trigger: "item"
         },
         bmap: {
           center: data[0].value,
@@ -887,123 +1136,123 @@
                 featureType: "water",
                 elementType: "all",
                 stylers: {
-                  color: "#86a1ac",
-                },
+                  color: "#86a1ac"
+                }
               },
               {
                 featureType: "land",
                 elementType: "all",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "railway",
                 elementType: "all",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "highway",
                 elementType: "all",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "highway",
                 elementType: "labels",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "arterial",
                 elementType: "geometry",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "arterial",
                 elementType: "geometry.fill",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "poi",
                 elementType: "all",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "green",
                 elementType: "all",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "subway",
                 elementType: "all",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "manmade",
                 elementType: "all",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "local",
                 elementType: "all",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "local",
                 elementType: "labels",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "arterial",
                 elementType: "labels",
                 stylers: {
-                  visibility: "off",
-                },
+                  visibility: "off"
+                }
               },
               {
                 featureType: "boundary",
                 elementType: "all",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "building",
                 elementType: "all",
                 stylers: {
-                  color: "#f1d99d",
-                },
+                  color: "#f1d99d"
+                }
               },
               {
                 featureType: "label",
                 elementType: "labels.text.fill",
                 stylers: {
-                  color: "#000",
-                },
-              },
-            ],
-          },
+                  color: "#000"
+                }
+              }
+            ]
+          }
         },
         series: [
           {
@@ -1013,18 +1262,18 @@
             data: data,
             symbolSize: 0,
             encode: {
-              value: 2,
+              value: 2
             },
             label: {
               formatter: "{b}",
               position: "right",
-              show: false,
+              show: false
             },
             emphasis: {
               label: {
-                show: true,
-              },
-            },
+                show: true
+              }
+            }
           },
           {
             name: "",
@@ -1033,47 +1282,45 @@
             data: data,
             symbolSize: 20,
             encode: {
-              value: 2,
+              value: 2
             },
             showEffectOn: "render",
             rippleEffect: {
-              brushType: "stroke",
+              brushType: "stroke"
             },
             label: {
               formatter: "{b}",
               position: "right",
-              show: false,
+              show: false
             },
             itemStyle: {
               color: "#ec7b43",
               shadowBlur: 10,
-              shadowColor: "#333",
+              shadowColor: "#333"
             },
             emphasis: {
-              scale: false,
+              scale: false
             },
-            zlevel: 1,
-          },
-        ],
+            zlevel: 1
+          }
+        ]
       };
       option && myChart.setOption(option);
-    },
-  },
+    }
+  }
 };
 </script>
 
 <style>
 /* Table1琛ㄦ牸閲岄潰鐨勬暟鎹� */
-::v-deep .is-leaf {
-  .cell {
+::v-deep .is-leaf .cell {
     font-size: 0.14rem !important;
     height: 0.4rem !important;
     line-height: 0.4rem !important;
   }
 }
 
-::v-deep .el-table__body {
-  .cell {
+::v-deep .el-table__body .cell {
     font-size: 0.14rem !important;
     height: 0.4rem !important;
     line-height: 0.4rem !important;
@@ -1087,10 +1334,14 @@
 .BoxLeft ::v-deep.el-card__body {
   padding: 0.1rem 0.11rem !important;
 }
-
-::v-deep .el-tabs__content {
-  line-height: 1;
+.BoxLeft {
+  width: 30%;
 }
+.BoxRight {
+  width: 70%;
+}
+
+
 
 /* 涓汉灏忎紶 ------------------*/
 ::v-deep .el-dialog__header {
@@ -1099,10 +1350,6 @@
 
 ::v-deep .el-dialog__body {
   padding: 0;
-}
-
-::v-deep .el-dialog__wrapper {
-  z-index: 999999999999999 !important;
 }
 
 .ProfileNav {
@@ -1116,12 +1363,6 @@
 }
 
 /* ------------------- */
-
-img {
-  width: 100%;
-  height: 100%;
-}
-
 * {
   box-sizing: border-box;
 }
@@ -1131,16 +1372,16 @@
   padding: 15rpx 25rpx;
   color: #fff !important;
 
-  img {
-    width: 30rpx;
-    height: 30rpx;
-    vertical-align: middle;
-  }
+}
+.NavTop img {
+  width: 30rpx;
+  height: 30rpx;
+  vertical-align: middle;
+}
 
-  .NavTopr {
-    img {
-      margin-right: 10rpx;
-    }
+.NavTop .NavTopr {
+  img {
+    margin-right: 10rpx;
   }
 }
 
@@ -1148,9 +1389,9 @@
   width: 100%;
   height: 30rpx;
 
-  img {
-    vertical-align: top;
-  }
+}
+.mImage img {
+  vertical-align: top;
 }
 
 .Midde {
@@ -1161,28 +1402,28 @@
   align-items: flex-start;
   padding: 0.18rem 0.24rem;
 
-  view {
-    color: #000;
-  }
+}
+.Midde view {
+  color: #000;
+}
 
-  .MiddeBack {
-    width: 0.6rem;
-    height: 0.24rem;
-    font-size: 0.12rem;
-    padding: 0;
-    border: 1px solid #9e9e9e;
-  }
+.Midde .MiddeBack {
+  width: 0.6rem;
+  height: 0.24rem;
+  font-size: 0.12rem;
+  padding: 0;
+  border: 1px solid #9e9e9e;
 }
 
 .yinyong {
   font-size: 0.12rem;
 
-  img {
-    width: 0.12rem;
-    height: 0.1rem;
-    vertical-align: top;
-    margin-right: 0.03rem;
-  }
+}
+.yinyong img {
+  width: 0.12rem;
+  height: 0.1rem;
+  vertical-align: top;
+  margin-right: 0.03rem;
 }
 
 .el-dialog__wrapper {
@@ -1227,10 +1468,12 @@
 }
 
 ::v-deep .el-tabs__item {
-  width: 1rem;
+  width: 1.4rem;
   font-size: 0.14rem;
   line-height: 0.4rem;
   height: 0.4rem;
+  padding: 0 20px !important;
+  text-align: center;
 }
 
 ::v-deep .el-tabs__header {
@@ -1238,12 +1481,8 @@
 }
 
 ::v-deep .el-tabs__active-bar {
-  /* 璁剧疆婊氬姩鏉″搴� */
-  width: 1rem !important;
   height: 0.03rem !important;
   background-color: #597aa5;
-  transform: translateX(-20px);
-  /* margin-top: .09rem; */
 }
 
 ::v-deep .el-tabs__active-bar {
@@ -1261,4 +1500,39 @@
 .BoxRight .box-card {
   margin-bottom: 0.2rem !important;
 }
+::v-deep .map-circle-name {
+  width: 20px;
+  height: 20px;
+  border-radius: 50%;
+  background-color: rgb(222, 142, 102);
+}
+::v-deep .ripple {
+  border-radius: 50%;
+  position: relative;
+  overflow: hidden;
+}
+
+::v-deep .ripple::before {
+  content: "";
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  width: 150%; /* Ensure it covers the entire parent */
+  height: 150%;
+  background: rgba(255, 255, 255, 0.5);
+  border-radius: 50%;
+  transform: translate(-50%, -50%) scale(1);
+  animation: ripple-animation 1s infinite linear;
+}
+
+@keyframes ripple-animation {
+  to {
+    transform: translate(-50%, -50%) scale(0);
+    opacity: 0;
+  }
+}
+
+.fileul li:hover {
+  color: #597aa5;
+}
 </style>

--
Gitblit v1.9.1