From a971d0c13ab9cd5107152f6eba5e1e724a37fa0b Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期五, 07 六月 2024 17:20:31 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/TCM_CharacterLibrary

---
 src/pages/character/detail.vue |  560 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 406 insertions(+), 154 deletions(-)

diff --git a/src/pages/character/detail.vue b/src/pages/character/detail.vue
index 4226957..d3a5697 100644
--- a/src/pages/character/detail.vue
+++ b/src/pages/character/detail.vue
@@ -20,6 +20,7 @@
               text-align: center;
               margin-right: 0.15rem;
             "
+            @click="openFileClick(1)"
           >
             RDF
           </li>
@@ -32,7 +33,9 @@
               font-size: 0.12rem;
               text-align: center;
               margin-right: 0.15rem;
+              cursor: pointer;
             "
+            @click="openFileClick(2)"
           >
             NT
           </li>
@@ -45,7 +48,9 @@
               font-size: 0.12rem;
               text-align: center;
               margin-right: 0.15rem;
+              cursor: pointer;
             "
+            @click="openFileClick(3)"
           >
             XML
           </li>
@@ -58,7 +63,9 @@
               font-size: 0.12rem;
               text-align: center;
               margin-right: 0.15rem;
+              cursor: pointer;
             "
+            @click="openFileClick(4)"
           >
             JSON
           </li>
@@ -66,11 +73,17 @@
         <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 : "-" }}
@@ -86,8 +99,8 @@
               <img src="@/static/image/yinyong.png" alt="" />寮曠敤</el-button
             >
           </view>
-          <!-- v-if="biogData.length > 1" -->
           <view
+            v-if="biogData.length > 1"
             style="font-size: 0.12rem; color: #244a7b; cursor: pointer"
             @click="ProfileClick"
             >闃呰鏇村></view
@@ -96,7 +109,7 @@
       </view>
       <view style="width: 5%"></view>
     </view>
-    <div style="padding: 0 1.2rem 0; padding-top: 0.24rem;display: flex;">
+    <div style="padding: 0 1.2rem 0; padding-top: 0.24rem; display: flex">
       <!-- 宸︿晶 -->
       <div
         :span="5"
@@ -146,6 +159,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"
@@ -154,7 +168,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
@@ -183,6 +209,12 @@
               >
                 {{ index + 1 }}.{{ item }}
               </li>
+              <div
+                v-if="sourceDataList.length == 0"
+                style="color: #666; text-align: center; font-size: 16px"
+              >
+                鏆傛棤鏁版嵁
+              </div>
             </ul>
           </el-card>
         </div>
@@ -223,12 +255,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"
@@ -256,14 +289,27 @@
             >
               <span>鐩稿叧闄勮〃/鍥惧儚</span>
             </div>
-            <view class="flex">
-              <el-image
-                v-for="item in imageList"
-                :key="item"
-                style="width: 2.05rem; height: 2.4rem"
-                :src="item"
-                fit="fill"
-              ></el-image>
+            <view>
+              <div style="overflow: auto">
+                <el-image
+                  v-for="item in imageList"
+                  :key="item"
+                  style="
+                    width: 2.05rem;
+                    height: 2.4rem;
+                    margin-right: 0.2rem;
+                    margin-bottom: 0.1rem;
+                  "
+                  :src="item"
+                  fit="fill"
+                ></el-image>
+              </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">
@@ -277,14 +323,21 @@
             >
               <span>鐜颁唬鐮旂┒</span>
             </div>
-            <ul class="font-family" style="font-size: 0.13rem; line-height: 2">
+            <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>
+              <div
+                v-if="!personResearchList || personResearchList.length == 0"
+                style="color: #666; text-align: center; font-size: 16px"
+              >
+                鏆傛棤鏁版嵁
+              </div>
             </ul>
           </el-card>
         </div>
@@ -292,9 +345,17 @@
     </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"
@@ -325,7 +386,7 @@
           <view class="flex">
             <view></view>
             <view style="font-weight: 700; color: #2c2c2c"
-              >鈥斺�攞{ item.pageNo }}</view
+              >鈥斺�攞{ item.bookName }}</view
             >
           </view>
         </view>
@@ -345,6 +406,7 @@
 import {
   getFuzzySearch,
   getPersonInfo,
+  getRelationTypeTreeList,
   getWebBasic,
   getIntroduction,
   getSource,
@@ -353,8 +415,11 @@
   getPersonWritings,
   getPersonRelationAtSchool,
   getSpaceTime,
+  getDynastyData,
 } from "@/api/index.js";
-import { getImg } from "@/static/tool.js";
+import { getImg, getFile } from "@/static/tool.js";
+import L from "leaflet";
+import "leaflet.chinatmsproviders";
 
 export default {
   components: {
@@ -442,6 +507,7 @@
       nodes: [],
       relationships: [],
       personResearchList: [],
+      markerList: [],
     };
   },
   onLoad(options) {
@@ -476,15 +542,27 @@
   },
   methods: {
     copyText() {
-      const txt = this.biogData[0].content+";鏉ユ簮锛氫腑鍖诲尰瀛︿汉鐗╂暟鎹簱"
-      navigator.clipboard.writeText(txt).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",
       });
     },
     toLink(item) {
-      window.open(item.url);
+      console.log(item);
+      if (item.url) {
+        window.open(item.url);
+      }
+      if (item.filePath) {
+        window.open(getFile(item.filePath));
+      }
     },
     getData() {
       // 鍩烘湰淇℃伅
@@ -515,103 +593,106 @@
         id: this.detailId,
         type: "PERSON_RESEARCH",
       }).then((res) => {
-        console.log(res, "123123123");
         this.personResearchList = res.object.personResearchList;
       });
-      getPersonInfo({
-        id: this.detailId,
-        type: "PERSON_RELATIONS",
-      }).then((res) => {
-        console.log(res, "PERSON_RELATIONS");
-        this.personRelationList = res.object.personRelationList;
-        if (this.personRelationList.length) {
-          this.tableData4 = this.personRelationList.map((f) => {
-            return {
-              a: f.nodeName,
-              b: f.relationTypeName,
-            };
-          });
-        }
-      });
+
       getWebBasic({
         personId: this.detailId,
       }).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 || "-",
-                },
-              ],
-            },
-          ];
-        });
+        if (obj.school) {
+          getIntroduction(Number(obj.school)).then((sres) => {
+            this.handleData(obj, sres);
+          });
+        } else {
+          this.handleData(obj);
+        }
       });
+
       // 娲诲姩骞磋氨
       getPersonInfo({
         id: this.detailId,
         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) {
+      this.tableArr = [
+        {
+          list: [
+            {
+              name: "鍒悕",
+              value: obj.alias || "-",
+            },
+            {
+              name: "瀛�",
+              value: obj.zi || "-",
+            },
+            {
+              name: "鍙�",
+              value: obj.hao || "-",
+            },
+            {
+              name: "鎵�澶勬椂鏈�",
+              value: obj.dynastyDesc || "-",
+              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({
@@ -634,7 +715,11 @@
         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鏃犳硶鍖归厤鍒颁功鍚�
           };
         });
       });
@@ -655,12 +740,96 @@
       });
     },
     getRelationship() {
+      getRelationTypeTreeList().then((res) => {
+        console.log(res, "getRelationTypeTreeList");
+        console.log(res);
+      });
+      // getPersonRelationAtSchool({
+      //   personId: this.detailId,
+      // }).then((res) => {
+      //   this.personRelationList = res.object.personRelationList;
+      //   if (this.personRelationList.length) {
+      //     this.tableData4 = this.personRelationList.map((f) => {
+      //       return {
+      //         a: f.nodeName,
+      //         b: f.relationTypeName,
+      //       };
+      //     });
+      //   }
+      // });
+      getPersonInfo({
+        id: this.detailId,
+        type: "PERSON_RELATIONS",
+      }).then((res) => {
+        this.tableData4;
+        console.log(res, "PERSON_RELATIONS");
+        if (res.object.personRelationMap.kin.length) {
+          this.tableData2 = res.object.personRelationMap.kin.map((f) => {
+            return {
+              a: f.nodeName,
+              b: f.relationTypeName,
+            };
+          });
+        }
+        if (res.object.personRelationMap.teacherStudent.length) {
+          this.tableData3 = res.object.personRelationMap.teacherStudent.map((f) => {
+            return {
+              a: f.nodeName,
+              b: f.relationTypeName,
+            };
+          });
+        }
+        if (res.object.personRelationMap.social.length) {
+          this.tableData4 = res.object.personRelationMap.social.map((f) => {
+            return {
+              a: f.nodeName,
+              b: f.relationTypeName,
+            };
+          });
+        }
+      });
+      // 绀句細鍏崇郴
       getPersonRelationAtSchool({
         personId: this.detailId,
-        // relationSearchTypeEO: "SOCIAL"
+        relationSearchTypeEO: "SOCIAL",
       }).then((res) => {
-        console.log(res, "getPersonRelationAtSchool");
-        // 杩欓噷鎺ュ彛鏈夐棶棰�
+        if (res.list && res.list.length) {
+          this.tableData4 = res.list.map((f) => {
+            return {
+              a: f.name1,
+              b: f.relationName,
+            };
+          });
+        }
+      });
+      // 浜插睘鍏崇郴
+      getPersonRelationAtSchool({
+        personId: this.detailId,
+        relationSearchTypeEO: "KINSHIP",
+      }).then((res) => {
+        console.log(res, "123123");
+        if (res.list && res.list.length) {
+          this.tableData2 = res.list.map((f) => {
+            return {
+              a: f.name1,
+              b: f.relationName,
+            };
+          });
+        }
+      });
+      // 甯堟壙鍏崇郴
+      getPersonRelationAtSchool({
+        personId: this.detailId,
+        relationSearchTypeEO: "INHERITANCE",
+      }).then((res) => {
+        if (res.list && res.list.length) {
+          this.tableData3 = res.list.map((f) => {
+            return {
+              a: f.name1,
+              b: f.relationName,
+            };
+          });
+        }
       });
     },
     getMappingData(name) {
@@ -678,13 +847,13 @@
               (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,
               });
             }
-            if (exists2 !== true) {
+            if (item.name2 && exists2 !== true) {
               this.nodes.push({
                 name: item.name2,
                 id: item.identifier2,
@@ -705,20 +874,68 @@
       getSpaceTime({
         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) {
@@ -745,6 +962,32 @@
         top: 0,
         behavior: "smooth", // 浣跨敤骞虫粦婊氬姩
       });
+    },
+    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}`);
     },
     handleClick(tab) {
       let index = tab.$attrs["data-id"] - 1;
@@ -911,28 +1154,6 @@
       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: "",
@@ -1153,10 +1374,10 @@
 .BoxLeft ::v-deep.el-card__body {
   padding: 0.1rem 0.11rem !important;
 }
-.BoxLeft{
+.BoxLeft {
   width: 30%;
 }
-.BoxRight{
+.BoxRight {
   width: 70%;
 }
 
@@ -1171,10 +1392,6 @@
 
 ::v-deep .el-dialog__body {
   padding: 0;
-}
-
-::v-deep .el-dialog__wrapper {
-  z-index: 999999999999999 !important;
 }
 
 .ProfileNav {
@@ -1333,4 +1550,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