| | |
| | | <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> |
| | | <view |
| | | style="width: 70%" |
| | | class="flex flex-center flex-column" |
| | | <el-button class="MiddeBack flex flex-center" @click="goBack" |
| | | >返回</el-button |
| | | > |
| | | <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" |
| | | > |
| | | <li style=" |
| | | <ul class="flex" style="line-height: 1.2; margin: 0.15rem 0"> |
| | | <li |
| | | style=" |
| | | background-color: #fff; |
| | | padding: 0 0.08rem; |
| | | border: 0.01rem solid #000; |
| | |
| | | font-size: 0.12rem; |
| | | text-align: center; |
| | | margin-right: 0.15rem; |
| | | "> |
| | | " |
| | | @click="openFileClick(1)" |
| | | > |
| | | RDF |
| | | </li> |
| | | <li style=" |
| | | <li |
| | | style=" |
| | | background-color: #fff; |
| | | padding: 0 0.08rem; |
| | | border: 0.01rem solid #000; |
| | |
| | | font-size: 0.12rem; |
| | | text-align: center; |
| | | margin-right: 0.15rem; |
| | | "> |
| | | cursor: pointer; |
| | | " |
| | | @click="openFileClick(2)" |
| | | > |
| | | NT |
| | | </li> |
| | | <li style=" |
| | | <li |
| | | style=" |
| | | background-color: #fff; |
| | | padding: 0 0.08rem; |
| | | border: 0.01rem solid #000; |
| | |
| | | font-size: 0.12rem; |
| | | text-align: center; |
| | | margin-right: 0.15rem; |
| | | "> |
| | | cursor: pointer; |
| | | " |
| | | @click="openFileClick(3)" |
| | | > |
| | | XML |
| | | </li> |
| | | <li style=" |
| | | <li |
| | | style=" |
| | | background-color: #fff; |
| | | padding: 0 0.08rem; |
| | | border: 0.01rem solid #000; |
| | |
| | | font-size: 0.12rem; |
| | | text-align: center; |
| | | margin-right: 0.15rem; |
| | | "> |
| | | cursor: pointer; |
| | | " |
| | | @click="openFileClick(4)" |
| | | > |
| | | JSON |
| | | </li> |
| | | </ul> |
| | |
| | | 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 |
| | |
| | | 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> |
| | |
| | | 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=" |
| | |
| | | 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" |
| | |
| | | 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" |
| | |
| | | </div> |
| | | </div> |
| | | <!-- 右侧 --> |
| | | <div |
| | | :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=" |
| | |
| | | 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="代表著作" |
| | | data-id="1" |
| | | name="representative" |
| | | > |
| | | <el-tabs ref="tabs" v-model="activeName" @tab-click="handleClick"> |
| | | <el-tab-pane label="代表著作" 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 " |
| | | > |
| | | <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 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" |
| | |
| | | > |
| | | <span>现代研究</span> |
| | | </div> |
| | | <ul |
| | | class="font-family" |
| | | style="font-size: 0.13rem; line-height: 2" |
| | | > |
| | | <ul class="font-family" style="font-size: 0.13rem; line-height: 2"> |
| | | <li |
| | | v-for="(item, index) in personResearchList" |
| | | :key="index" |
| | |
| | | ></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> |
| | | <view class="flex"> |
| | | <view></view> |
| | | <view style="font-weight: 700; color: #2c2c2c">——{{ item.pageNo }}</view> |
| | | <view style="font-weight: 700; color: #2c2c2c" |
| | | >——{{ item.bookName }}</view |
| | | > |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | getSpaceTime, |
| | | } from "@/api/index.js"; |
| | | import { getImg } from "@/static/tool.js"; |
| | | import L from "leaflet"; |
| | | import "leaflet.chinatmsproviders"; |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | }, |
| | | methods: { |
| | | copyText() { |
| | | console.log(navigator.clipboard); |
| | | const textToCopy = this.biogData[0].content + ";来源:中医医学人物数据库"; |
| | | const textarea = document.createElement("textarea"); |
| | | textarea.value = textToCopy; |
| | |
| | | : fieldItem.content1; |
| | | } |
| | | } |
| | | console.log(obj); |
| | | this.detailInfo = obj; |
| | | // 关系图谱 |
| | | this.getMappingData(this.detailInfo.NAME); |
| | |
| | | }).then((res) => { |
| | | 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; |
| | | if (obj.school) { |
| | | getIntroduction(Number(obj.school)).then((sres) => { |
| | | console.log(sres, "sres"); |
| | | handleData(obj, sres); |
| | | this.handleData(obj, sres); |
| | | }); |
| | | } else { |
| | | handleData(obj); |
| | | this.handleData(obj); |
| | | } |
| | | }); |
| | | |
| | |
| | | this.biogData = res.list.map((item) => { |
| | | return { |
| | | content: item.content1, |
| | | pageNo: "《" + item.pageNo + "》 " + "P " + item.pageNo, // 这里只有bookid无法匹配到书名 |
| | | bookName: "《" + item.bookName + "》 " + "P " + item.pageNo, // 这里只有bookid无法匹配到书名 |
| | | }; |
| | | }); |
| | | }); |
| | |
| | | getRelationship() { |
| | | getPersonRelationAtSchool({ |
| | | personId: this.detailId, |
| | | // relationSearchTypeEO: "SOCIAL" |
| | | relationSearchTypeEO: "KINSHIP" |
| | | }).then((res) => { |
| | | console.log(res, "getPersonRelationAtSchool"); |
| | | // 这里接口有问题 |
| | | }); |
| | | }, |
| | |
| | | getSpaceTime({ |
| | | personId: this.detailId, |
| | | }).then((res) => { |
| | | console.log(res, "getSpaceTime"); |
| | | const data = res.list.map((item) => { |
| | | return { |
| | | name: item.activityName, |
| | |
| | | }; |
| | | }); |
| | | // 时空地图 |
| | | 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) { |
| | |
| | | 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; |
| | |
| | | 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: "", |
| | |
| | | .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> |