From 9342d91f064ab3056d0fcfad5ad3f78833e8c536 Mon Sep 17 00:00:00 2001
From: y505174330 <505174330@qq.com>
Date: 星期六, 18 五月 2024 17:20:14 +0800
Subject: [PATCH] 1

---
 src/pages/character/detail.vue |  458 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 326 insertions(+), 132 deletions(-)

diff --git a/src/pages/character/detail.vue b/src/pages/character/detail.vue
index f341f14..857b0fa 100644
--- a/src/pages/character/detail.vue
+++ b/src/pages/character/detail.vue
@@ -1,17 +1,26 @@
 <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
+      <el-button
+        class="MiddeBack flex flex-center"
+        @click="goBack"
+      >杩斿洖</el-button>
+      <view
+        style="width: 70%"
+        class="flex flex-center flex-column"
       >
-      <view style="width: 70%" class="flex flex-center flex-column">
         <view style="font-weight: bold; font-size: 0.2rem">{{
           detailInfo.NAME
         }}</view>
-        <ul class="flex" style="line-height: 1.2; margin: 0.15rem 0">
+        <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,8 +30,54 @@
               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
@@ -33,11 +88,15 @@
             font-weight: normal;
             line-height: 0.2rem;
             letter-spacing: 0.03rem;
+            cursor: pointer;
           "
         >
           {{ biogData.length ? biogData[0].content : "-" }}
         </view>
-        <view class="flex" style="width: 100%; margin: 0.25rem 0 0.15rem 0">
+        <view
+          class="flex"
+          style="width: 100%; margin: 0.25rem 0 0.15rem 0"
+        >
           <view>
             <!-- <el-button style="padding: 10rpx;" size="mini" icon="el-icon-folder-add">鏀惰棌</el-button> -->
             <el-button
@@ -45,28 +104,32 @@
               class="yinyong flex"
               @click="copyText"
             >
-              <img src="@/static/image/yinyong.png" alt="" />寮曠敤</el-button
-            >
+              <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"
-            >闃呰鏇村></view
-          >
+          >闃呰鏇村></view>
         </view>
       </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"
       >
         <div class="grid-content bg-purple-dark flex flex-column">
-          <el-card class="box-card" style="width: 100%; height: 2.06rem">
+          <el-card
+            class="box-card"
+            style="width: 100%; height: 2.06rem"
+          >
             <div
               class="clearfix flex"
               style="
@@ -75,14 +138,11 @@
                 padding-bottom: 0.1rem;
               "
             >
-              <span
-                style="
+              <span style="
                   margin-left: 0.12rem;
                   font-size: 0.14rem;
                   font-weight: 900;
-                "
-                >鍏崇郴鍥捐氨</span
-              >
+                ">鍏崇郴鍥捐氨</span>
               <!-- <el-button icon="el-icon-rank" style="float: right; padding: 3px 0;" type="text"></el-button> -->
               <img
                 src="@/static/image/fangda.png"
@@ -91,7 +151,10 @@
                 alt=""
               />
             </div>
-            <view id="relation" style="height: 1.51rem; width: 100%"></view>
+            <view
+              id="relation"
+              style="height: 1.51rem; width: 100%"
+            ></view>
           </el-card>
           <el-card
             class="box-card"
@@ -145,14 +208,29 @@
               >
                 {{ 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 class="grid-content bg-purple-dark" style="width: 100%">
-          <el-card class="box-card" style="padding: 0">
+      <div
+        :span="18"
+        class="BoxRight"
+      >
+        <div
+          class="grid-content bg-purple-dark"
+          style="width: 100%"
+        >
+          <el-card
+            class="box-card"
+            style="padding: 0"
+          >
             <div
               class="clearfix"
               style="
@@ -170,35 +248,60 @@
             class="box-card"
             style="min-height: 1.91rem; margin: 0.2rem 0"
           >
-            <el-tabs ref="tabs" v-model="activeName" @tab-click="handleClick">
-              <el-tab-pane label="浠h〃钁椾綔" data-id="1" name="representative">
+            <el-tabs
+              ref="tabs"
+              v-model="activeName"
+              @tab-click="handleClick"
+            >
+              <el-tab-pane
+                label="浠h〃钁椾綔"
+                data-id="1"
+                name="representative"
+              >
                 <Table1
                   :data="tableData1"
                   :columns="tableColumns1"
                   :height="400"
                 />
               </el-tab-pane>
-              <el-tab-pane label="浜插睘鍏崇郴" data-id="2" name="family ">
+              <el-tab-pane
+                label="浜插睘鍏崇郴"
+                data-id="2"
+                name="family "
+              >
                 <Table1
                   :data="tableData2"
                   :columns="tableColumns2"
                   :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 label="绀句細鍏崇郴" data-id="4" name="society">
+                />
+              </el-tab-pane>
+              <el-tab-pane
+                label="绀句細鍏崇郴"
+                data-id="4"
+                name="society"
+              >
                 <Table1
                   :data="tableData4"
                   :columns="tableColumns2"
                   :height="400"
                 />
               </el-tab-pane>
-              <el-tab-pane label="娲诲姩骞磋氨" data-id="5" name="activity">
+              <el-tab-pane
+                label="娲诲姩骞磋氨"
+                data-id="5"
+                name="activity"
+              >
                 <Table1
                   :data="tableData5"
                   :columns="tableColumns3"
@@ -218,14 +321,22 @@
             >
               <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 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">
@@ -237,30 +348,30 @@
                 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="font-family"
+              style="font-size: 0.13rem; line-height: 2"
+            >
+              <li
+                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.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">
@@ -272,11 +383,18 @@
       ></el-button>
     </el-col>
     <!-- 涓汉灏忎紶 -->
-    <el-dialog :visible.sync="isProfile" :modal-append-to-body="false">
+    <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;
@@ -291,12 +409,13 @@
           </view>
           <view class="flex">
             <view></view>
-            <view style="font-weight: 700; color: #2c2c2c"
-              >鈥斺�攞{ item.pageNo }}</view
-            >
+            <view style="font-weight: 700; color: #2c2c2c">鈥斺�攞{ item.pageNo }}</view>
           </view>
         </view>
       </view>
+      <div v-else>
+        <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+      </div>
     </el-dialog>
   </view>
 </template>
@@ -344,6 +463,10 @@
         {
           prop: "a",
           label: "姝d功鍚�",
+        },
+        {
+          prop: "e",
+          label: "浣滆��",
         },
         {
           prop: "b",
@@ -401,6 +524,7 @@
       tableData5: [],
       nodes: [],
       relationships: [],
+      personResearchList: [],
     };
   },
   onLoad(options) {
@@ -435,13 +559,21 @@
   },
   methods: {
     copyText() {
-      var textToCopy = document.getElementById("copyBox").innerText;
-      console.log(textToCopy, "textToCopy");
-      navigator.clipboard.writeText(textToCopy).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",
       });
+    },
+    toLink(item) {
+      window.open(item.url);
     },
     getData() {
       // 鍩烘湰淇℃伅
@@ -467,72 +599,43 @@
         // 鍏崇郴鍥捐氨
         this.getMappingData(this.detailInfo.NAME);
       });
-
+      //鐜颁唬鐮旂┒
+      getPersonInfo({
+        id: this.detailId,
+        type: "PERSON_RESEARCH",
+      }).then((res) => {
+        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
+        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,
@@ -547,6 +650,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({
@@ -584,6 +745,7 @@
             b: item.dynasty,
             c: item.writeWay,
             d: item.classify,
+            e: this.detailInfo.NAME,
           };
         });
       });
@@ -643,7 +805,7 @@
         const data = res.list.map((item) => {
           return {
             name: item.activityName,
-            value: [item.xcoord, item.ycoord]
+            value: [item.xcoord, item.ycoord],
           };
         });
         // 鏃剁┖鍦板浘
@@ -661,7 +823,7 @@
         });
       } else if (index == 2) {
         uni.navigateTo({
-          url: "/pages/characterMap/characterMap",
+          url: "/pages/characterMap/characterMap?id=" + this.detailId,
         });
       }
     },
@@ -679,6 +841,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;
@@ -1087,6 +1275,12 @@
 .BoxLeft ::v-deep.el-card__body {
   padding: 0.1rem 0.11rem !important;
 }
+.BoxLeft {
+  width: 30%;
+}
+.BoxRight {
+  width: 70%;
+}
 
 ::v-deep .el-tabs__content {
   line-height: 1;

--
Gitblit v1.9.1