1
YM
2024-06-05 f3e5b489e30a921c03ef8b97e1cd845b65ea5d9d
src/pages/character/detail.vue
@@ -1,26 +1,17 @@
<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;
@@ -28,10 +19,13 @@
              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;
@@ -39,10 +33,14 @@
              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;
@@ -50,10 +48,14 @@
              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;
@@ -61,26 +63,32 @@
              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 : "-" }}
        </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
@@ -88,16 +96,15 @@
              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
            v-if="biogData.length > 1"
            style="font-size: 0.12rem; color: #244a7b; cursor: pointer"
            @click="ProfileClick"
          >阅读更多></view>
            >阅读更多></view
          >
        </view>
      </view>
      <view style="width: 5%"></view>
@@ -110,10 +117,7 @@
        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="
@@ -122,11 +126,14 @@
                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"
@@ -135,10 +142,7 @@
                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"
@@ -155,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"
@@ -163,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
@@ -203,18 +220,9 @@
        </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="
@@ -232,60 +240,36 @@
            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"
@@ -334,11 +318,9 @@
            >
              <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
                style="cursor: pointer"
                v-for="(item, index) in personResearchList"
                :key="index"
                @click="toLink(item)"
@@ -346,7 +328,7 @@
                {{ "[" + Number(index + 1) + "]" + item.achievementName }}
              </li>
              <div
                v-if="personResearchList.length == 0"
                v-if="!personResearchList || personResearchList.length == 0"
                style="color: #666; text-align: center; font-size: 16px"
              >
                暂无数据
@@ -358,19 +340,24 @@
    </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"
      ></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"
@@ -393,7 +380,9 @@
          </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>
@@ -412,6 +401,7 @@
import {
  getFuzzySearch,
  getPersonInfo,
  getRelationTypeTreeList,
  getWebBasic,
  getIntroduction,
  getSource,
@@ -419,13 +409,15 @@
  getPersonBiog,
  getPersonWritings,
  getPersonRelationAtSchool,
  getSpaceTime,
  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: {
    Table1,
    Table1
  },
  data() {
    return {
@@ -446,60 +438,60 @@
      tableColumns1: [
        {
          prop: "a",
          label: "正书名",
          label: "正书名"
        },
        {
          prop: "e",
          label: "作者",
          label: "作者"
        },
        {
          prop: "b",
          label: "著作年",
          label: "著作年"
        },
        {
          prop: "c",
          label: "著作方式",
          label: "著作方式"
        },
        {
          prop: "d",
          label: "总目分类",
        },
          label: "总目分类"
        }
      ],
      tableColumns2: [
        {
          prop: "a",
          label: "关系人",
          label: "关系人"
        },
        {
          prop: "b",
          label: "关系类型",
          label: "关系类型"
        },
        {
          prop: "c",
          label: "考据",
          label: "考据"
        },
        {
          prop: "d",
          label: "出处",
        },
          label: "出处"
        }
      ],
      tableColumns3: [
        {
          prop: "a",
          label: "活动时间区间",
          label: "活动时间区间"
        },
        {
          prop: "b",
          label: "活动名称",
          label: "活动名称"
        },
        {
          prop: "c",
          label: "活动地点",
          label: "活动地点"
        },
        {
          prop: "d",
          label: "活动描述",
        },
          label: "活动描述"
        }
      ],
      tableData1: [],
      tableData2: [],
@@ -509,6 +501,7 @@
      nodes: [],
      relationships: [],
      personResearchList: [],
      markerList: []
    };
  },
  onLoad(options) {
@@ -543,8 +536,7 @@
  },
  methods: {
    copyText() {
      console.log(navigator.clipboard);
      const textToCopy = this.biogData[0].content + ";来源:中医医学人物数据库";
      const textToCopy = this.biogData[0].content + " 来源:中医医学人物知识库";
      const textarea = document.createElement("textarea");
      textarea.value = textToCopy;
      document.body.appendChild(textarea);
@@ -553,17 +545,23 @@
      document.body.removeChild(textarea);
      this.$message({
        message: "复制成功!",
        type: "success",
        type: "success"
      });
    },
    toLink(item) {
      window.open(item.url);
      console.log(item);
      if (item.url) {
        window.open(item.url);
      }
      if (item.filePath) {
        window.open(getFile(item.filePath));
      }
    },
    getData() {
      // 基本信息
      getPersonInfo({
        id: this.detailId,
        type: "PERSON_BASIC",
        type: "PERSON_BASIC"
      }).then((res) => {
        const obj = {};
        if (
@@ -586,53 +584,39 @@
      //现代研究
      getPersonInfo({
        id: this.detailId,
        type: "PERSON_RESEARCH",
        type: "PERSON_RESEARCH"
      }).then((res) => {
        this.personResearchList = res.object.personResearchList;
      });
      getPersonInfo({
        id: this.detailId,
        type: "PERSON_RELATIONS",
      }).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,
            };
          });
        }
      });
      getWebBasic({
        personId: this.detailId,
        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);
        }
      });
      // 活动年谱
      getPersonInfo({
        id: this.detailId,
        type: "PERSON_SPACE_TIME",
        type: "PERSON_SPACE_TIME"
      }).then((res) => {
        this.tableData5 = res.object.personSpaceTimeList.map((item) => {
          return {
            a: item.time,
            b: item.activityName,
            c: item.activityAddrOld,
            d: item.desc, // 这里缺少活动描述字段
          };
        });
        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) {
@@ -641,39 +625,39 @@
          list: [
            {
              name: "别名",
              value: obj.alias || "-",
              value: obj.alias || "-"
            },
            {
              name: "字",
              value: obj.zi || "-",
              value: obj.zi || "-"
            },
            {
              name: "号",
              value: obj.hao || "-",
              value: obj.hao || "-"
            },
            {
              name: "所处时期",
              value: obj.dynastyDesc || "-",
              value: obj.dynastyDesc || "-"
            },
            {
              name: "民族",
              value: obj.ethnic || "-",
            },
          ],
              value: obj.ethnic || "-"
            }
          ]
        },
        {
          list: [
            {
              name: "籍贯",
              value: obj.native || "-",
              value: obj.native || "-"
            },
            {
              name: "性别",
              value: obj.gender || "-",
              value: obj.gender || "-"
            },
            {
              name: "职官",
              value: obj.official || "-",
              value: obj.official || "-"
            },
            {
              name: "流派",
@@ -683,45 +667,45 @@
                sres.object.school_NAME &&
                sres.object.school_NAME.length
                  ? sres.object.school_NAME[0].content
                  : "-",
                  : "-"
            },
            {
              name: "学术特点",
              value: obj.features || "-",
            },
          ],
        },
              value: obj.features || "-"
            }
          ]
        }
      ];
    },
    getSourceData() {
      getSource({
        personId: this.detailId,
        personId: this.detailId
      }).then((res) => {
        this.sourceDataList = res.list;
      });
    },
    getImages() {
      getPersonImages({
        personId: this.detailId,
        personId: this.detailId
      }).then((res) => {
        this.imageList = res.list.map((item) => getImg(item.filePath));
      });
    },
    getBiog() {
      getPersonBiog({
        personId: this.detailId,
        personId: this.detailId
      }).then((res) => {
        this.biogData = res.list.map((item) => {
          return {
            content: item.content1,
            pageNo: "《" + item.pageNo + "》 " + "P " + item.pageNo, // 这里只有bookid无法匹配到书名
            bookName: "《" + item.bookName + "》 " + "P " + item.pageNo // 这里只有bookid无法匹配到书名
          };
        });
      });
    },
    getWritings() {
      getPersonWritings({
        personId: this.detailId,
        personId: this.detailId
      }).then((res) => {
        this.tableData1 = res.list.map((item) => {
          return {
@@ -729,23 +713,82 @@
            b: item.dynasty,
            c: item.writeWay,
            d: item.classify,
            e: this.detailInfo.NAME,
            e: this.detailInfo.NAME
          };
        });
      });
    },
    getRelationship() {
      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) => {
        this.tableData4
        console.log(res,"PERSON_RELATIONS");
      });
      // 社会关系
      getPersonRelationAtSchool({
        personId: this.detailId,
        // relationSearchTypeEO: "SOCIAL"
        relationSearchTypeEO: "SOCIAL"
      }).then((res) => {
        console.log(res, "getPersonRelationAtSchool");
        // 这里接口有问题
        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) {
      getFuzzySearch({
        keyword: name,
        keyword: name
      }).then((res) => {
        this.nodes = [];
        this.relationships = [];
@@ -758,22 +801,22 @@
              (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,
                id: item.identifier1
              });
            }
            if (exists2 !== true) {
            if (item.name2 && exists2 !== true) {
              this.nodes.push({
                name: item.name2,
                id: item.identifier2,
                id: item.identifier2
              });
            }
            let obj = {
              source: item.name1,
              target: item.name2,
              relation: item.relationName || "", // 如果存在 relationName 字段则使用,否则为空字符串
              relation: item.relationName || "" // 如果存在 relationName 字段则使用,否则为空字符串
            };
            this.relationships.push(obj);
          });
@@ -783,31 +826,56 @@
    },
    getMapInfo() {
      getSpaceTime({
        personId: this.detailId,
        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) {
        uni.navigateTo({
          url: "/pages/character/index?keyword=" + this.detailInfo.NAME,
          url: "/pages/character/index?keyword=" + this.detailInfo.NAME
        });
      } else if (index == 2) {
        uni.navigateTo({
          url: "/pages/characterMap/characterMap?id=" + this.detailId,
          url: "/pages/characterMap/characterMap?id=" + this.detailId
        });
      }
    },
@@ -823,8 +891,34 @@
    scrollToTop() {
      window.scrollTo({
        top: 0,
        behavior: "smooth", // 使用平滑滚动
        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;
@@ -906,8 +1000,8 @@
                position: "middle", // 设置标签文本在线的中间位置上居中显示
                // bottom: -(FontSize+10),
                z: 10, // 设置标签的z轴高度,使其比连接线更高
                distance: -(Distance + 1), // 将标签放置在连接线上
              },
                distance: -(Distance + 1) // 将标签放置在连接线上
              }
            });
          }
        }
@@ -922,8 +1016,8 @@
          itemStyle: {
            color: "#eae0eb", // 可以根据索引设置不同的颜色
            borderWidth: BorderWidth,
            borderColor: "#996f9f",
          },
            borderColor: "#996f9f"
          }
        };
      });
      var option;
@@ -933,14 +1027,14 @@
          top: FontSize + 10,
          subtextStyle: {
            fontSize: FontSize, // 设置副标题文字大小为 14px
            color: "#2C2C2C",
          },
            color: "#2C2C2C"
          }
        },
        backgroundColor: {
          type: "image",
          image: "/static/image/characterRelationBg.png",
          size: "100% 100%", // 背景图片的尺寸,可以是百分比或者像素
          position: "center center", // 背景图片的位置,可以是 top, bottom, middle 或者百分比
          position: "center center" // 背景图片的位置,可以是 top, bottom, middle 或者百分比
        },
        tooltip: {},
        animationDurationUpdate: 1500,
@@ -954,7 +1048,7 @@
            label: {
              show: true,
              color: "black", // 设置节点文字颜色为黑色
              fontSize: FontSize, // 设置文字大小
              fontSize: FontSize // 设置文字大小
            },
            edgeSymbol: ["circle"],
            edgeSymbolSize: [4, 10],
@@ -963,16 +1057,16 @@
            lineStyle: {
              opacity: 0.9,
              width: 2,
              curveness: 0.3,
              curveness: 0.3
            },
            emphasis: {
              focus: "adjacency",
              lineStyle: {
                width: 10,
              },
            },
          },
        ],
                width: 10
              }
            }
          }
        ]
      };
      // 将生成的连接线添加到echarts图表的option中
      option.series[0].links = links;
@@ -991,37 +1085,15 @@
      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: "",
          subtext: "",
          sublink: "",
          left: "center",
          left: "center"
        },
        tooltip: {
          trigger: "item",
          trigger: "item"
        },
        bmap: {
          center: data[0].value,
@@ -1033,123 +1105,123 @@
                featureType: "water",
                elementType: "all",
                stylers: {
                  color: "#86a1ac",
                },
                  color: "#86a1ac"
                }
              },
              {
                featureType: "land",
                elementType: "all",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "railway",
                elementType: "all",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "highway",
                elementType: "all",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "highway",
                elementType: "labels",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "arterial",
                elementType: "geometry",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "arterial",
                elementType: "geometry.fill",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "poi",
                elementType: "all",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "green",
                elementType: "all",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "subway",
                elementType: "all",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "manmade",
                elementType: "all",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "local",
                elementType: "all",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "local",
                elementType: "labels",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "arterial",
                elementType: "labels",
                stylers: {
                  visibility: "off",
                },
                  visibility: "off"
                }
              },
              {
                featureType: "boundary",
                elementType: "all",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "building",
                elementType: "all",
                stylers: {
                  color: "#f1d99d",
                },
                  color: "#f1d99d"
                }
              },
              {
                featureType: "label",
                elementType: "labels.text.fill",
                stylers: {
                  color: "#000",
                },
              },
            ],
          },
                  color: "#000"
                }
              }
            ]
          }
        },
        series: [
          {
@@ -1159,18 +1231,18 @@
            data: data,
            symbolSize: 0,
            encode: {
              value: 2,
              value: 2
            },
            label: {
              formatter: "{b}",
              position: "right",
              show: false,
              show: false
            },
            emphasis: {
              label: {
                show: true,
              },
            },
                show: true
              }
            }
          },
          {
            name: "",
@@ -1179,32 +1251,32 @@
            data: data,
            symbolSize: 20,
            encode: {
              value: 2,
              value: 2
            },
            showEffectOn: "render",
            rippleEffect: {
              brushType: "stroke",
              brushType: "stroke"
            },
            label: {
              formatter: "{b}",
              position: "right",
              show: false,
              show: false
            },
            itemStyle: {
              color: "#ec7b43",
              shadowBlur: 10,
              shadowColor: "#333",
              shadowColor: "#333"
            },
            emphasis: {
              scale: false,
              scale: false
            },
            zlevel: 1,
          },
        ],
            zlevel: 1
          }
        ]
      };
      option && myChart.setOption(option);
    },
  },
    }
  }
};
</script>
@@ -1251,10 +1323,6 @@
::v-deep .el-dialog__body {
  padding: 0;
}
::v-deep .el-dialog__wrapper {
  z-index: 999999999999999 !important;
}
.ProfileNav {
@@ -1413,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>