From caeb2c4b5fa88f6fe8799b67c790d8ad8b4d98e8 Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期三, 24 七月 2024 16:41:27 +0800
Subject: [PATCH] 1

---
 src/pages/academicSchools/index.vue |  379 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 290 insertions(+), 89 deletions(-)

diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue
index 39e8061..85406aa 100644
--- a/src/pages/academicSchools/index.vue
+++ b/src/pages/academicSchools/index.vue
@@ -62,10 +62,11 @@
                 <div class="selectActivelyBox" @click="selectActively">
                   <p v-if="formData.actively.length == 0">璇烽�夋嫨娲诲姩鍦�</p>
                   <el-tag
+                    style="margin-right: 5px"
                     v-for="item in formData.actively"
-                    :key="item.id"
+                    :key="item.index"
                     size="small"
-                    closable
+                    type="info"
                     >{{ item.name }}</el-tag
                   >
                 </div>
@@ -131,12 +132,68 @@
             </el-col>
           </el-row>
           <div style="text-align: right">
-            <el-button type="primary" size="mini" @click="searchFun"
+            <el-button
+              size="mini"
+              style="background-color: #244a7b; color: #fff"
+              @click="searchFun"
               >鎼滅储</el-button
             >
             <el-button size="mini" @click="resetForm">閲嶇疆</el-button>
           </div>
         </el-form>
+        <div class="fromTable">
+          <el-table
+            :data="tableData"
+            class="lightBo"
+            style="width: 100%"
+            empty-text="鏆傛棤鎼滅储淇℃伅"
+            size="small"
+            :border="true"
+          >
+            <el-table-column
+              prop="id"
+              label="搴忓彿"
+              width="70"
+            ></el-table-column>
+            <el-table-column prop="personName" width="120" label="濮撳悕">
+              <template slot-scope="scope">
+                <a
+                  style="cursor: pointer; color: #027edc"
+                  @click="gotoDetail(scope.row.id)"
+                  >{{ scope.row.personName }}</a
+                >
+              </template>
+            </el-table-column>
+            <el-table-column prop="personAlias" label="鍒悕"></el-table-column>
+            <el-table-column prop="palce" label="娲诲姩鍦�"></el-table-column>
+            <el-table-column
+              prop="birthYear"
+              label="鍖诲鍒嗙"
+              width="120"
+            ></el-table-column>
+            <el-table-column prop="deathYear" label="浣滃搧"></el-table-column>
+            <el-table-column
+              prop="nativePlace"
+              width="120"
+              label="浜虹墿鏍囩"
+            ></el-table-column>
+            <el-table-column
+              prop="socialDistinction"
+              label="绀句細韬唤"
+              width="120"
+            ></el-table-column>
+            <el-table-column
+              prop="official"
+              width="120"
+              label="鏃舵湡"
+            ></el-table-column>
+          </el-table>
+          <div style="text-align: right;padding-top: 20px;">
+            <el-button style="width: 120px;background-color: #244a7b; color: #fff"
+              >纭</el-button
+            >
+          </div>
+        </div>
       </view>
       <div v-if="showPerson" class="personDialog">
         <i
@@ -185,6 +242,7 @@
           text-align: center;
           font-size: 0.2rem;
           color: #666;
+          z-index: 99;
         "
       >
         鏆傛棤鐩稿叧鏁版嵁
@@ -200,10 +258,25 @@
           text-align: center;
           font-size: 0.2rem;
           color: #666;
+          z-index: 99;
         "
       ></div>
     </div>
     <div id="customDialog" class="customDialog">
+      <div class="title">
+        <span>{{ detailData.name }}</span>
+        <span @click="closeDom">鍏抽棴</span>
+      </div>
+      <div class="content">
+        <p>濮撳悕锛歿{ detailData.name }}</p>
+        <p>鍒悕锛歿{ detailData.alias }}</p>
+        <p>绫嶈疮锛歿{ detailData.nativePlace }}</p>
+        <p>鍖诲鍒嗙锛� {{ detailData.medicalBranch }}</p>
+        <p>灏忎紶锛歿{ detailData.biography }}</p>
+      </div>
+      <div class="btn" @click="spaceTimeArr(detailData.id)">鏌ョ湅鏇村>>></div>
+    </div>
+    <div id="schoolDialog" class="customDialog">
       <div class="title">
         <span>{{ detailData.name }}</span>
         <span @click="closeDom">鍏抽棴</span>
@@ -257,14 +330,14 @@
           <el-table
             ref="multipleTable"
             :data="gridData"
-            tooltip-effect="dark"
             style="width: 100%"
             height="530"
             @selection-change="handleSelectionChange"
+            row-key="index"
           >
             <el-table-column type="selection" width="55"> </el-table-column>
             <el-table-column prop="currentName" label="鍦板悕"> </el-table-column>
-            <el-table-column width="250" label="骞翠唬鍗�闁�" show-overflow-tooltip>
+            <el-table-column width="250" label="骞翠唬鍗�闁�">
               <template slot-scope="scope">{{
                 scope.row.start + "-" + scope.row.end
               }}</template>
@@ -280,6 +353,8 @@
         </div>
         <div class="drawerPage">
           <el-pagination
+            class="paging flex"
+            background
             @size-change="handleSizeChange"
             @current-change="handleCurrentChange"
             :current-page="currentPage"
@@ -293,7 +368,7 @@
         <div class="drawerBtn">
           <el-button @click="setCurrent">鍏ㄩ伕鐣跺墠闋�</el-button>
           <el-button @click="setCurrent('cancle')">鍙栨秷鍏ㄩ伕</el-button>
-          <el-button @click="onOkAddress" type="primary">纰哄畾</el-button>
+          <el-button @click="drawer = false" type="primary">纰哄畾</el-button>
         </div>
       </div>
     </el-drawer>
@@ -304,7 +379,6 @@
 import {
   getPersonData,
   getHotSearch,
-  getPDataStatistics,
   academicSearch,
   getPersonTag,
   getSocialDistinction,
@@ -315,6 +389,8 @@
 export default {
   data() {
     return {
+      // 楂樼礆鎼滅储琛ㄦ牸
+      tableData: [],
       loading: true,
       hotAciveIndex: "",
       currentId: 21682,
@@ -326,7 +402,26 @@
       hotKeyList: [],
       searchKey: "",
       // 鍒嗙被
-      categories: [],
+      categories: [
+        {
+          name: "浜插睘鍏崇郴",
+        },
+        {
+          name: "甯堟壙鍏崇郴",
+        },
+        {
+          name: "鏂囩尞浣滃搧",
+        },
+        {
+          name: "绀句細鍏崇郴",
+        },
+        {
+          name: "娲诲姩鍦�",
+        },
+        {
+          name: "瀛︽湳娴佹淳",
+        },
+      ],
       // 褰撳墠浜虹墿淇℃伅
       ownInfo: null,
       detailData: {
@@ -357,10 +452,10 @@
       currentPage: 1,
       pageSize: 10,
       total: 0,
-      multipleSelection: [],
       drawer: false,
       dynastyId: "",
       tableKey: "",
+      multipleTableSelection: [],
       // echarts
       infoOfPersons: [],
       infoOfSchools: [],
@@ -398,7 +493,15 @@
     },
     // 琛ㄦ牸閫夋嫨
     handleSelectionChange(val) {
-      this.multipleSelection = val;
+      const data = val.map((item) => {
+        return {
+          ...item,
+          name: item.currentName,
+          id: item.dynastyId,
+        };
+      });
+      this.formData.actively = data;
+      this.multipleTableSelection = this.formData.actively;
     },
     // 鍏ㄩ伕
     setCurrent(str) {
@@ -407,23 +510,20 @@
         return false;
       }
       if (this.gridData.length) {
+        this.$refs.multipleTable.clearSelection();
         this.gridData.forEach((row) => {
           this.$refs.multipleTable.toggleRowSelection(row);
         });
-        this.multipleSelection = this.gridData;
+        const data = this.gridData.map((item) => {
+          return {
+            ...item,
+            name: item.currentName,
+            id: item.dynastyId,
+          };
+        });
+        this.formData.actively = data;
+        this.multipleTableSelection = this.formData.actively;
       }
-    },
-    // 纰鸿獚鍦板潃
-    onOkAddress() {
-      const data = this.multipleSelection.map((item) => {
-        return {
-          ...item,
-          name: item.currentName,
-          id: item.dynastyId,
-        };
-      });
-      this.formData.actively = data;
-      this.drawer = false;
     },
     // 鐛插彇鍦板潃鍒楄〃
     getAddressList() {
@@ -438,8 +538,22 @@
         data["keyword"] = this.tableKey;
       }
       getPlaceInfo(data).then((res) => {
+        if (res?.success && res?.npage) {
+          this.total = res.npage.totalCount;
+        }
         if (res?.success && res?.list.length) {
-          this.gridData = res?.list;
+          this.gridData = res?.list?.map((item, i) => {
+            return {
+              ...item,
+              index: i,
+            };
+          });
+          setTimeout(() => {
+            this.multipleTableSelection.forEach((row) => {
+              this.$refs.multipleTable.toggleRowSelection(row);
+            });
+            this.formData.actively = this.multipleTableSelection;
+          }, 2000);
         } else {
           this.gridData = [];
         }
@@ -634,16 +748,19 @@
     getData() {
       this.loading = true;
       getPersonData(this.currentId).then((res) => {
-        console.log("1111111111111", res);
-        this.infoOfPersons = res.object.infoOfPersons;
-        this.infoOfSchools = res.object.infoOfSchools;
-        this.nodeDatas = [];
-        this.links = [];
-        this.handleData([res.object.personChain], null);
-        console.log("this.nodeDatas", this.nodeDatas);
-        console.log("this.links", this.links);
-        this.loading = false;
-        this.relation();
+        if (res && res.object) {
+          this.infoOfPersons = res?.object?.infoOfPersons;
+          this.infoOfSchools = res?.object?.infoOfSchools;
+          this.nodeDatas = [];
+          this.links = [];
+          this.handleData([res.object.personChain], null);
+          this.loading = false;
+          this.relation();
+        } else {
+          this.loading = false;
+          this.nodeDatas = [];
+          this.links = [];
+        }
         // this.nodes = [];
         // this.relationships = [];
         // let kinData = [];
@@ -799,11 +916,9 @@
                 );
                 if (p) {
                   this.nodeDatas.push({
+                    category: 0,
                     id: item.mainId,
                     name: p.NAME[0].content1,
-                    itemStyle: {
-                      color: "#5470c6",
-                    },
                   });
                 }
               }
@@ -830,11 +945,9 @@
                 -1
               ) {
                 this.nodeDatas.push({
+                  category: 2,
                   id: item.mainId,
                   name: item.literatureName,
-                  itemStyle: {
-                    color: "#fac858",
-                  },
                 });
               }
               this.links.push({
@@ -849,11 +962,9 @@
                 -1
               ) {
                 this.nodeDatas.push({
+                  category: 4,
                   id: item.mainId,
                   name: item.ancientName,
-                  itemStyle: {
-                    color: "#ea7ccc",
-                  },
                 });
               }
               this.links.push({
@@ -870,16 +981,11 @@
                 const s = this.infoOfSchools.find(
                   (sItem) => sItem.schoolId == item.schoolId
                 );
-                console.log(this.infoOfSchools);
-                console.log(item.schoolId);
-                console.log(s);
                 if (s) {
                   this.nodeDatas.push({
+                    category: 5,
                     id: item.mainId,
                     name: s.name[0],
-                    itemStyle: {
-                      color: "#9a60b4",
-                    },
                   });
                 }
               }
@@ -899,11 +1005,9 @@
                 );
                 if (p) {
                   this.nodeDatas.push({
+                    category: 3,
                     id: item.mainId,
                     name: p.NAME[0].content1,
-                    itemStyle: {
-                      color: "#ee6666",
-                    },
                   });
                 }
               }
@@ -934,11 +1038,9 @@
                 );
                 if (p) {
                   this.nodeDatas.push({
+                    category: 1,
                     id: item.mainId,
                     name: p.NAME[0].content1,
-                    itemStyle: {
-                      color: "#3dae7b",
-                    },
                   });
                 }
               }
@@ -1051,7 +1153,7 @@
             symbolSize: 15,
             data: this.nodeDatas,
             links: this.links,
-            categories: [{}],
+            categories: this.categories,
             roam: true,
             label: {
               show: true,
@@ -1078,6 +1180,14 @@
             },
           },
         ],
+        color: [
+          "#5470c6",
+          "#3dae7b",
+          "#fac858",
+          "#ee6666",
+          "#ea7ccc",
+          "#9a60b4",
+        ],
       };
       // 璁剧疆鐐瑰嚮浜嬩欢鐩戝惉
       myChart.off("click");
@@ -1090,39 +1200,76 @@
     },
 
     creatDom(params) {
-      const e = params.event;
-      const div = document.getElementById("customDialog");
-      div.style.display = "block";
-      div.style.left = e.offsetX + 50 + "px";
-      div.style.top = e.offsetY - 50 + "px";
-      const data = this.infoOfPersons?.find(
-        (i) => i.id == params.data.personId
-      );
-      const obj = {
-        id: params.data.id,
-        name:
-          data?.NAME?.map((e, i) => {
-            i += 1;
-            return e["content" + i];
-          }).join("銆�") ?? "",
-        alias:
-          data?.ALIAS?.map((e, i) => {
-            i += 1;
-            return e["content" + i];
-          }).join("銆�") ?? "",
-        nativePlace:
-          data?.NATIVE_PLACE?.map((e, i) => {
-            i += 1;
-            return e["content" + i];
-          }).join("銆�") ?? "",
-        medicalBranch:
-          data?.MEDICAL_BRANCH?.map((e, i) => {
-            i += 1;
-            return e["content" + i];
-          }).join("銆�") ?? "",
-        biography: data?.BIOGRAPHY ?? "",
-      };
-      this.detailData = obj;
+      const id = params.data.id.split("_")[0];
+      const type = params.data.id.split("_")[1];
+      if (type == "p") {
+        // 浜�
+        const e = params.event;
+        const div = document.getElementById("customDialog");
+        div.style.display = "block";
+        div.style.left = e.offsetX + 50 + "px";
+        div.style.top = e.offsetY - 50 + "px";
+        const data = this.infoOfPersons?.find((i) => i.id == id);
+        const obj = {
+          id: id,
+          name:
+            data?.NAME?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          alias:
+            data?.ALIAS?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          nativePlace:
+            data?.NATIVE_PLACE?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          medicalBranch:
+            data?.MEDICAL_BRANCH?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          biography: data?.BIOGRAPHY ?? "",
+        };
+        this.detailData = obj;
+      }
+      if (type == "s") {
+        // 瀛︽淳
+        const e = params.event;
+        const div = document.getElementById("schoolDialog");
+        div.style.display = "block";
+        div.style.left = e.offsetX + 50 + "px";
+        div.style.top = e.offsetY - 50 + "px";
+        const data = this.infoOfPersons?.find((i) => i.id == id);
+        const obj = {
+          id: params.data.id,
+          name:
+            data?.NAME?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          alias:
+            data?.ALIAS?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          nativePlace:
+            data?.NATIVE_PLACE?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          medicalBranch:
+            data?.MEDICAL_BRANCH?.map((e, i) => {
+              i += 1;
+              return e["content" + i];
+            }).join("銆�") ?? "",
+          biography: data?.BIOGRAPHY ?? "",
+        };
+        this.detailData = obj;
+      }
     },
 
     closeDom() {
@@ -1226,11 +1373,28 @@
 </script>
 
 <style>
+.fromTable {
+  width: 100%;
+  padding: 40px 0;
+  box-sizing: border-box;
+}
+
+.fromTable >>> .el-table thead th.el-table__cell {
+  background-color: rgb(194 208 217) !important;
+  color: #333;
+  font-weight: normal;
+  font-size: 14px;
+}
+
 .customDrawer >>> .el-drawer__header {
   margin-bottom: 20px;
   border-bottom: 1px solid #eee;
   padding: 20px;
   box-sizing: border-box;
+}
+
+.headerClassBg {
+  background-color: rgb(95, 127, 168);
 }
 
 .drawerTips {
@@ -1242,9 +1406,16 @@
   width: 100%;
 }
 
+.drawerTable >>> .el-table thead th.el-table__cell {
+  background-color: rgb(231, 236, 239) !important;
+  color: #333;
+  font-weight: normal;
+}
+
 .tableTabs {
   width: 100%;
   display: flex;
+  margin-bottom: 20px;
 }
 
 .inputItem {
@@ -1270,6 +1441,36 @@
   box-sizing: border-box;
 }
 
+/* 鍒嗛〉 */
+.paging ::v-deep .btn-prev,
+.paging ::v-deep .btn-next {
+  border: 0;
+  height: 30px;
+}
+
+.paging ::v-deep .btn-prev span,
+.paging ::v-deep .btn-next span {
+  font-size: 0.12rem;
+  height: 0.3rem;
+  line-height: 0.3rem;
+  background-color: #fff;
+  color: #9e9e9e;
+  text-align: center;
+  border: 1px solid #9e9e9e;
+  padding: 0 0.1rem;
+}
+
+.paging ::v-deep .el-pager li {
+  font-size: 0.1rem;
+  width: 0.28rem;
+  height: 0.3rem;
+  line-height: 0.3rem;
+  background-color: #fff;
+  color: #9e9e9e;
+  text-align: center;
+  border: 1px solid #9e9e9e;
+}
+
 #relation {
   width: 100%;
   height: 100%;

--
Gitblit v1.9.1