From 67835991537910fd76839b90c38b0b223325a650 Mon Sep 17 00:00:00 2001
From: YM <479443481@qq.com>
Date: 星期三, 24 七月 2024 18:34:34 +0800
Subject: [PATCH] 1

---
 src/pages/academicSchools/index.vue |  426 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 377 insertions(+), 49 deletions(-)

diff --git a/src/pages/academicSchools/index.vue b/src/pages/academicSchools/index.vue
index ad31b50..d8603ac 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,69 @@
             </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 +243,7 @@
           text-align: center;
           font-size: 0.2rem;
           color: #666;
+          z-index: 99;
         "
       >
         鏆傛棤鐩稿叧鏁版嵁
@@ -200,6 +259,7 @@
           text-align: center;
           font-size: 0.2rem;
           color: #666;
+          z-index: 99;
         "
       ></div>
     </div>
@@ -223,22 +283,94 @@
         <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>
+        <p>浠h〃浜虹墿锛歿{ detailData.character }}</p>
+        <p>閲嶈鍖诲锛歿{ detailData.skilledDoctor }}</p>
+        <p>浠h〃鎬ц憲浣滐細{{ detailData.works }}</p>
+        <p>瀛︽淳鎬濇兂锛� {{ detailData.thought }}</p>
       </div>
       <div class="btn" @click="spaceTimeArr(detailData.id)">鏌ョ湅鏇村>>></div>
     </div>
-    
     <el-drawer
       title="鍦板潃鍒楄〃"
       :visible.sync="drawer"
       direction="rtl"
       :before-close="handleClose"
+      class="customDrawer"
     >
-      <span>鎴戞潵鍟�!</span>
+      <div class="drawerContent">
+        <div class="drawerTips">閬镐腑鐨勫湴鍧�锛�</div>
+        <div class="drawerTable">
+          <div class="tableTabs">
+            <div class="inputItem">
+              <el-input
+                placeholder="璜嬭几鍏ュ湴鍚嶆悳绱�"
+                v-model="tableKey"
+                class="input-with-select"
+                @keyup.enter="searchAddress"
+              >
+                <el-button
+                  @click="searchAddress"
+                  type="primary"
+                  slot="append"
+                  icon="el-icon-search"
+                ></el-button>
+              </el-input>
+            </div>
+            <div class="selectItem">
+              <el-select v-model="dynastyId" placeholder="璜嬮伕鎿囨檪鏈�">
+                <el-option
+                  v-for="item in dynastyData"
+                  :key="item.dynastyId + '0'"
+                  :label="item.name"
+                  :value="item.dynastyId"
+                ></el-option>
+              </el-select>
+            </div>
+          </div>
+          <el-table
+            ref="multipleTable"
+            :data="gridData"
+            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="骞翠唬鍗�闁�">
+              <template slot-scope="scope">{{
+                scope.row.start + "-" + scope.row.end
+              }}</template>
+            </el-table-column>
+            <el-table-column
+              prop="dynastyName"
+              label="鏅傛湡"
+              width="250"
+              show-overflow-tooltip
+            >
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="drawerPage">
+          <el-pagination
+            class="paging flex"
+            background
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[10, 20, 60, 100]"
+            :page-size="pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+          >
+          </el-pagination>
+        </div>
+        <div class="drawerBtn">
+          <el-button @click="setCurrent">鍏ㄩ伕鐣跺墠闋�</el-button>
+          <el-button @click="setCurrent('cancle')">鍙栨秷鍏ㄩ伕</el-button>
+          <el-button @click="drawer = false" type="primary">纰哄畾</el-button>
+        </div>
+      </div>
     </el-drawer>
   </view>
 </template>
@@ -247,16 +379,18 @@
 import {
   getPersonData,
   getHotSearch,
-  getPDataStatistics,
   academicSearch,
   getPersonTag,
   getSocialDistinction,
-  getDynastyAll
+  getDynastyAll,
+  getPlaceInfo
 } from "@/api/index.js";
 import * as echarts from "echarts";
 export default {
   data() {
     return {
+      // 楂樼礆鎼滅储琛ㄦ牸
+      tableData: [],
       loading: true,
       hotAciveIndex: "",
       currentId: 21682,
@@ -312,7 +446,17 @@
       personTag: [],
       socialDistinction: [],
       dynastyData: [],
+      // 鎶藉眽
+      gridData: [],
+      page: 1,
+      currentPage: 1,
+      pageSize: 10,
+      total: 0,
       drawer: false,
+      dynastyId: "",
+      tableKey: "",
+      multipleTableSelection: [],
+      // echarts
       infoOfPersons: [],
       infoOfSchools: [],
       nodeDatas: [],
@@ -324,6 +468,8 @@
     this.hotSearch();
     // 鑾峰彇浜虹墿鏍囩銆佺ぞ浼氳韩浠�
     this.getOptionInfo();
+    // 鐛插彇鍦板潃鍒楄〃
+    this.getAddressList();
     // 鐩戝惉绐楀彛澶у皬鍙樺寲
     window.addEventListener("resize", this.relation);
   },
@@ -331,6 +477,89 @@
     this.searchKey = options.keyword;
   },
   methods: {
+    // 鎼滅储鍦板潃
+    searchAddress() {
+      this.gridData = [];
+      this.getAddressList();
+    },
+    //  鍒嗛〉
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.getAddressList();
+    },
+    handleCurrentChange(val) {
+      this.page = val;
+      this.getAddressList();
+    },
+    // 琛ㄦ牸閫夋嫨
+    handleSelectionChange(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) {
+      if (str == "cancle") {
+        this.$refs.multipleTable.clearSelection();
+        return false;
+      }
+      if (this.gridData.length) {
+        this.$refs.multipleTable.clearSelection();
+        this.gridData.forEach((row) => {
+          this.$refs.multipleTable.toggleRowSelection(row);
+        });
+        const data = this.gridData.map((item) => {
+          return {
+            ...item,
+            name: item.currentName,
+            id: item.dynastyId
+          };
+        });
+        this.formData.actively = data;
+        this.multipleTableSelection = this.formData.actively;
+      }
+    },
+    // 鐛插彇鍦板潃鍒楄〃
+    getAddressList() {
+      const data = {
+        page: this.page,
+        pageSize: this.pageSize
+      };
+      if (this.dynastyId != "") {
+        data["dynastyId"] = this.dynastyId;
+      }
+      if (this.tableKey != "") {
+        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?.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 = [];
+        }
+      });
+    },
+
     getOptionInfo() {
       getDynastyAll().then((res) => {
         this.dynastyData = res.list;
@@ -342,6 +571,7 @@
         this.socialDistinction = res.list;
       });
     },
+
     resetForm(formName) {
       this.formData = {
         name: "",
@@ -352,15 +582,19 @@
         period: ""
       };
     },
+
     searchFun() {
       console.log(this.formData);
     },
+
     selectActively() {
       this.drawer = true;
     },
+
     handleClose(done) {
       done();
     },
+
     // 鑾峰彇浜虹墿鍏崇郴
     getPersonInfo(arr, str, newArr, order, type, parent) {
       for (let i = 0; i < arr.length; i++) {
@@ -514,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 = [];
@@ -647,6 +884,7 @@
         // }
       });
     },
+
     // 閫掑綊澶勭悊鎵�鏈夊眰绾ф暟鎹�
     handleData(data, parent) {
       for (let i = 0; i < data.length; i++) {
@@ -960,6 +1198,7 @@
       });
       myChart.setOption(option);
     },
+
     creatDom(params) {
       const id = params.data.id.split("_")[0];
       const type = params.data.id.split("_")[1];
@@ -970,9 +1209,7 @@
         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 data = this.infoOfPersons?.find((i) => i.id == id);
         const obj = {
           id: id,
           name:
@@ -1006,36 +1243,29 @@
         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 data = this.infoOfSchools?.find((i) => i.schoolId == id);
+        console.log(data);
+        debugger
         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 ?? ""
+          name: data.name[0],
+          character: data.important_PEOPLE
+            ? data.important_PEOPLE.map((item) => item.content2).join("銆�")
+            : "",
+          skilledDoctor: data.important_PHYSICIAN
+            ? data.important_PHYSICIAN.map((item) => item.content2).join("銆�")
+            : "",
+          works: data.important_WORK
+            ? data.important_WORK.map((item) => item.content).join("銆�")
+            : "",
+          thought: data.school_THOUGHT
+            ? data.school_THOUGHT.map((item) => item.content).join("銆�")
+            : ""
         };
         this.detailData = obj;
       }
     },
+
     closeDom() {
       const div = document.getElementById("customDialog");
       div.style.display = "none";
@@ -1137,6 +1367,104 @@
 </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 {
+  margin-bottom: 20px;
+  color: #666;
+}
+
+.drawerTable {
+  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 {
+  width: 80%;
+}
+
+.drawerPage {
+  display: flex;
+  justify-content: flex-end;
+  padding: 20px 0;
+  box-sizing: border-box;
+}
+
+.drawerBtn {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.drawerContent {
+  width: 100%;
+  height: 100%;
+  padding: 0 20px;
+  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