From bdddcb1dca5c692316edd8231395283e8de9f910 Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期三, 05 六月 2024 18:41:08 +0800 Subject: [PATCH] 1 --- src/pages/character/detail.vue | 593 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 436 insertions(+), 157 deletions(-) diff --git a/src/pages/character/detail.vue b/src/pages/character/detail.vue index 984d3b5..2333598 100644 --- a/src/pages/character/detail.vue +++ b/src/pages/character/detail.vue @@ -11,7 +11,6 @@ }}</view> <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,17 +20,70 @@ 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 + 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 : "-" }} @@ -39,12 +91,16 @@ <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 style="padding: 0.05rem 0.085rem" class="yinyong flex"> + <el-button + style="padding: 0.05rem 0.085rem" + class="yinyong flex" + @click="copyText" + > <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 @@ -53,9 +109,9 @@ </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" @@ -103,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" @@ -111,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 @@ -140,12 +209,18 @@ > {{ 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 :span="18" class="BoxRight"> <div class="grid-content bg-purple-dark" style="width: 100%"> <el-card class="box-card" style="padding: 0"> <div @@ -180,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" @@ -213,14 +289,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"> @@ -232,35 +316,41 @@ 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. + <li + style="cursor: pointer" + 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 || 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"> + <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" @@ -269,9 +359,13 @@ <!-- 涓汉灏忎紶 --> <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; @@ -287,11 +381,14 @@ <view class="flex"> <view></view> <view style="font-weight: 700; color: #2c2c2c" - >鈥斺�攞{ item.pageNo }}</view + >鈥斺�攞{ item.bookName }}</view > </view> </view> </view> + <div v-else> + <el-empty description="鏆傛棤鏁版嵁"></el-empty> + </div> </el-dialog> </view> </template> @@ -304,6 +401,9 @@ import { getFuzzySearch, getPersonInfo, + getRelationTypeTreeList, + getWebBasic, + getIntroduction, getSource, getPersonImages, getPersonBiog, @@ -311,7 +411,9 @@ getPersonRelationAtSchool, getSpaceTime } 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: { @@ -337,6 +439,10 @@ { prop: "a", label: "姝d功鍚�" + }, + { + prop: "e", + label: "浣滆��" }, { prop: "b", @@ -393,7 +499,9 @@ tableData4: [], tableData5: [], nodes: [], - relationships: [] + relationships: [], + personResearchList: [], + markerList: [] }; }, onLoad(options) { @@ -427,6 +535,28 @@ window.addEventListener("resize", this.relation); }, methods: { + copyText() { + 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) { + console.log(item); + if (item.url) { + window.open(item.url); + } + if (item.filePath) { + window.open(getFile(item.filePath)); + } + }, getData() { // 鍩烘湰淇℃伅 getPersonInfo({ @@ -447,78 +577,105 @@ } } console.log(obj); - this.tableArr = [ - { - list: [ - { - name: "鍒悕", - value: obj.WEAK_NAME || "-" - }, - { - name: "瀛�", - value: obj.ALIAS || "-" - }, - { - name: "鍙�", - value: obj.ALIAS || "-" - }, - { - name: "鎵�澶勬椂鏈�", - value: obj.PERIOD || "-" - }, - { - name: "姘戞棌", - value: obj.ETHNIC || "-" - } - ] - }, - { - list: [ - { - name: "绫嶈疮", - value: obj.NATIVE_PLACE || "-" - }, - { - name: "鎬у埆", - value: obj.GENDER - ? obj.GENDER == "UNKNOWN" - ? "鏈煡" - : "-" - : "-" - }, - { - name: "鑱屽畼", - value: obj.MEDICAL_BRANCH || "-" - }, - { - name: "娴佹淳", - value: obj.MEDICAL_BRANCH || "-" - }, - { - name: "瀛︽湳鐗圭偣", - value: obj.MEDICAL_EXPERTISE || "-" - } - ] - } - ]; this.detailInfo = obj; // 鍏崇郴鍥捐氨 this.getMappingData(this.detailInfo.NAME); }); + //鐜颁唬鐮旂┒ + getPersonInfo({ + id: this.detailId, + type: "PERSON_RESEARCH" + }).then((res) => { + this.personResearchList = res.object.personResearchList; + }); + + getWebBasic({ + personId: this.detailId + }).then((res) => { + const obj = res.object; + 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: "-" // 杩欓噷缂哄皯娲诲姩鎻忚堪瀛楁 - }; - }); + 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 || "-" + }, + { + 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({ @@ -541,7 +698,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鏃犳硶鍖归厤鍒颁功鍚� }; }); }); @@ -555,18 +712,78 @@ a: item.name, b: item.dynasty, c: item.writeWay, - d: item.classify + d: item.classify, + e: this.detailInfo.NAME }; }); }); }, getRelationship() { - getPersonRelationAtSchool({ - personId: this.detailId - // relationSearchTypeEO: "SOCIAL" + 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) => { - console.log(res, "getPersonRelationAtSchool"); - // 杩欓噷鎺ュ彛鏈夐棶棰� + this.tableData4 + console.log(res,"PERSON_RELATIONS"); + }); + // 绀句細鍏崇郴 + getPersonRelationAtSchool({ + personId: this.detailId, + relationSearchTypeEO: "SOCIAL" + }).then((res) => { + 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) => { + 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) { @@ -584,13 +801,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 @@ -611,20 +828,45 @@ 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 = res.list.map((item) => { + return { + name: item.activityName, + value: [item.xcoord, item.ycoord] + }; + }); + this.markerList = data; + // 鏃剁┖鍦板浘 + this.initMap(data[0]); + } + + // loadBMap("1NJdwrI1CfT6lrykVhDkmWgsO6O2bjQK").then(() => { + // this.spaceTime(data); + // }); }); }, - + initMap(markerList) { + var map = L.map("spaceTime", { + preferCanvas: true, + attributionControl: false + }).setView([markerList.value[1], markerList.value[0]], 13); + L.tileLayer + .chinaProvider("TianDiTu.Normal.Map", { + 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); + }, // 鏀惧ぇ鍦板浘璺宠浆 fangdaClick(index) { if (index == 1) { @@ -633,7 +875,7 @@ }); } else if (index == 2) { uni.navigateTo({ - url: "/pages/characterMap/characterMap" + url: "/pages/characterMap/characterMap?id=" + this.detailId }); } }, @@ -651,6 +893,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; @@ -817,28 +1085,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: "", @@ -1059,6 +1305,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; @@ -1071,10 +1323,6 @@ ::v-deep .el-dialog__body { padding: 0; -} - -::v-deep .el-dialog__wrapper { - z-index: 999999999999999 !important; } .ProfileNav { @@ -1233,4 +1481,35 @@ .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; + } +} </style> -- Gitblit v1.9.1