YM
2024-05-20 f65eb0dfefd593058abaf51404a7472677c4473e
src/pages/character/detail.vue
@@ -1,15 +1,25 @@
<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
      <el-button
        class="MiddeBack flex flex-center"
        @click="goBack"
      >返回</el-button>
      <view
        style="width: 70%"
        class="flex flex-center flex-column"
      >
      <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">
        <ul
          class="flex"
          style="line-height: 1.2; margin: 0.15rem 0"
        >
          <li
            style="
              background-color: #fff;
@@ -20,6 +30,7 @@
              text-align: center;
              margin-right: 0.15rem;
            "
            @click="openFileClick(1)"
          >
            RDF
          </li>
@@ -32,7 +43,9 @@
              font-size: 0.12rem;
              text-align: center;
              margin-right: 0.15rem;
              cursor: pointer;
            "
            @click="openFileClick(2)"
          >
            NT
          </li>
@@ -45,7 +58,9 @@
              font-size: 0.12rem;
              text-align: center;
              margin-right: 0.15rem;
              cursor: pointer;
            "
            @click="openFileClick(3)"
          >
            XML
          </li>
@@ -58,7 +73,9 @@
              font-size: 0.12rem;
              text-align: center;
              margin-right: 0.15rem;
              cursor: pointer;
            "
            @click="openFileClick(4)"
          >
            JSON
          </li>
@@ -71,11 +88,15 @@
            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
@@ -83,20 +104,21 @@
              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>
    </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"
@@ -104,7 +126,10 @@
        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="
@@ -113,14 +138,11 @@
                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"
@@ -129,7 +151,10 @@
                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"
@@ -183,14 +208,29 @@
              >
                {{ index + 1 }}.{{ item }}
              </li>
              <div
                v-if="sourceDataList.length == 0"
                style="color: #666; text-align: center; font-size: 16px"
              >
                暂无数据
              </div>
            </ul>
          </el-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="
@@ -208,35 +248,60 @@
            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 "
                ><Table1
              <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>
              <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"
@@ -256,14 +321,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">
@@ -277,7 +350,10 @@
            >
              <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"
@@ -285,6 +361,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>
@@ -301,7 +383,10 @@
      ></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"
@@ -324,9 +409,7 @@
          </view>
          <view class="flex">
            <view></view>
            <view style="font-weight: 700; color: #2c2c2c"
              >——{{ item.pageNo }}</view
            >
            <view style="font-weight: 700; color: #2c2c2c">——{{ item.pageNo }}</view>
          </view>
        </view>
      </view>
@@ -476,9 +559,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,7 +604,6 @@
        id: this.detailId,
        type: "PERSON_RESEARCH",
      }).then((res) => {
        console.log(res, "123123123");
        this.personResearchList = res.object.personResearchList;
      });
      getPersonInfo({
@@ -539,66 +626,16 @@
      }).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");
            handleData(obj, sres);
          });
        } else {
          handleData(obj);
        }
      });
      // 活动年谱
      getPersonInfo({
        id: this.detailId,
@@ -613,6 +650,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({
@@ -746,6 +841,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;
@@ -1154,10 +1275,10 @@
.BoxLeft ::v-deep.el-card__body {
  padding: 0.1rem 0.11rem !important;
}
.BoxLeft{
.BoxLeft {
  width: 30%;
}
.BoxRight{
.BoxRight {
  width: 70%;
}