From 7a7608d68227404c2cee81589a0f53bd0d9a4c78 Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期一, 20 五月 2024 18:43:04 +0800 Subject: [PATCH] 调整时空地图 --- src/pages/character/detail.vue | 333 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 216 insertions(+), 117 deletions(-) diff --git a/src/pages/character/detail.vue b/src/pages/character/detail.vue index 97bea81..c3f47f7 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> @@ -355,6 +384,8 @@ getSpaceTime, } from "@/api/index.js"; import { getImg } from "@/static/tool.js"; +import L from "leaflet"; +import "leaflet.chinatmsproviders"; export default { components: { @@ -476,9 +507,14 @@ }, 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", @@ -516,89 +552,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"); + this.handleData(obj, sres); + }); + } else { + this.handleData(obj); + } }); + // 娲诲姩骞磋氨 getPersonInfo({ id: this.detailId, @@ -613,6 +597,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({ @@ -635,7 +677,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鏃犳硶鍖归厤鍒颁功鍚� }; }); }); @@ -714,12 +756,34 @@ }; }); // 鏃剁┖鍦板浘 - loadBMap("1NJdwrI1CfT6lrykVhDkmWgsO6O2bjQK").then(() => { - this.spaceTime(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) { @@ -746,6 +810,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; @@ -912,28 +1002,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: "", @@ -1154,10 +1222,10 @@ .BoxLeft ::v-deep.el-card__body { padding: 0.1rem 0.11rem !important; } -.BoxLeft{ +.BoxLeft { width: 30%; } -.BoxRight{ +.BoxRight { width: 70%; } @@ -1334,4 +1402,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