From f5ffd93860c6ddfc82930c0c71a11e7dba6abf6d Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期一, 20 五月 2024 18:11:34 +0800
Subject: [PATCH] 人物时空地图

---
 src/pages/character/detail.vue |  247 +++++++++++++++++++++++++++++++------------------
 1 files changed, 157 insertions(+), 90 deletions(-)

diff --git a/src/pages/character/detail.vue b/src/pages/character/detail.vue
index 4226957..7664ed8 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>
@@ -71,6 +78,7 @@
             font-weight: normal;
             line-height: 0.2rem;
             letter-spacing: 0.03rem;
+            cursor: pointer;
           "
         >
           {{ biogData.length ? biogData[0].content : "-" }}
@@ -96,7 +104,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"
@@ -183,6 +191,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 +237,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 +271,22 @@
             >
               <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 class="flex">
+                <el-image
+                  v-for="item in imageList"
+                  :key="item"
+                  style="width: 2.05rem; height: 2.4rem"
+                  :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">
@@ -285,6 +308,12 @@
               >
                 {{ "[" + Number(index + 1) + "]" + item.achievementName }}
               </li>
+              <div
+                v-if="personResearchList.length == 0"
+                style="color: #666; text-align: center; font-size: 16px"
+              >
+                鏆傛棤鏁版嵁
+              </div>
             </ul>
           </el-card>
         </div>
@@ -325,7 +354,7 @@
           <view class="flex">
             <view></view>
             <view style="font-weight: 700; color: #2c2c2c"
-              >鈥斺�攞{ item.pageNo }}</view
+              >鈥斺�攞{ item.bookName }}</view
             >
           </view>
         </view>
@@ -476,8 +505,14 @@
   },
   methods: {
     copyText() {
-      const txt = this.biogData[0].content+";鏉ユ簮锛氫腑鍖诲尰瀛︿汉鐗╂暟鎹簱"
-      navigator.clipboard.writeText(txt).then();
+      console.log(navigator.clipboard);
+      const textToCopy = this.biogData[0].content + ";鏉ユ簮锛氫腑鍖诲尰瀛︿汉鐗╂暟鎹簱";
+      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",
@@ -515,89 +550,37 @@
         id: this.detailId,
         type: "PERSON_RESEARCH",
       }).then((res) => {
-        console.log(res, "123123123");
         this.personResearchList = res.object.personResearchList;
       });
-      getPersonInfo({
-        id: this.detailId,
-        type: "PERSON_RELATIONS",
+      getPersonRelationAtSchool({
+        personId: this.detailId,
       }).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,
-            };
-          });
-        }
+        // 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) => {
+            console.log(sres, "sres");
+            handleData(obj, sres);
+          });
+        } else {
+          handleData(obj);
+        }
       });
+
       // 娲诲姩骞磋氨
       getPersonInfo({
         id: this.detailId,
@@ -612,6 +595,64 @@
           };
         });
       });
+    },
+    handleData(obj, 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 || "-",
+            },
+          ],
+        },
+      ];
     },
     getSourceData() {
       getSource({
@@ -634,7 +675,7 @@
         this.biogData = res.list.map((item) => {
           return {
             content: item.content1,
-            pageNo: "銆�" + item.pageNo + "銆� " + "P " + item.pageNo, // 杩欓噷鍙湁bookid鏃犳硶鍖归厤鍒颁功鍚�
+            bookName: "銆�" + item.bookName + "銆� " + "P " + item.pageNo, // 杩欓噷鍙湁bookid鏃犳硶鍖归厤鍒颁功鍚�
           };
         });
       });
@@ -745,6 +786,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;
@@ -1153,10 +1220,10 @@
 .BoxLeft ::v-deep.el-card__body {
   padding: 0.1rem 0.11rem !important;
 }
-.BoxLeft{
+.BoxLeft {
   width: 30%;
 }
-.BoxRight{
+.BoxRight {
   width: 70%;
 }
 

--
Gitblit v1.9.1