YM
2024-07-26 21e72d18e42e0b5966f5c76ed853ff175f4418ad
src/pages/academicSchools/index.vue
@@ -2,7 +2,7 @@
  <view
    style="width: 100%; height: 100%; display: flex; flex-direction: column"
  >
    <headNav :idIndex="'6'" text="学术流派" />
    <headNav :idIndex="'6'" text="学术图谱" />
    <!-- 高级搜索 -->
    <view
      style="
@@ -62,10 +62,11 @@
                <div class="selectActivelyBox" @click="selectActively">
                  <p v-if="formData.actively.length == 0">请选择活动地</p>
                  <el-tag
                    style="margin-right: 5px"
                    v-for="item in formData.actively"
                    :key="item.id"
                    :key="item.index"
                    size="small"
                    closable
                    type="info"
                    >{{ item.name }}</el-tag
                  >
                </div>
@@ -131,12 +132,93 @@
            </el-col>
          </el-row>
          <div style="text-align: right">
            <el-button type="primary" size="mini" @click="searchFun"
            <el-button
              size="mini"
              style="background-color: #244a7b; color: #fff"
              @click="
                () => {
                  searchKey = '';
                  formData.page = 1;
                  searchFun();
                }
              "
              >搜索</el-button
            >
            <el-button size="mini" @click="resetForm">重置</el-button>
          </div>
        </el-form>
        <div style="font-size: 14px">
          注:当前数据较多,可能会出现卡死的情况,请尽量精确查询或查看某一类数据关系
        </div>
        <div class="fromTable">
          <el-table
            :data="tableData"
            class="lightBo"
            style="width: 100%"
            empty-text="暂无搜索信息"
            size="small"
            :border="true"
            :height="tableData.length > 0 ? '443' : 'auto'"
          >
            <el-table-column
              prop="id"
              label="序号"
              width="70"
            ></el-table-column>
            <el-table-column prop="name" width="150" label="姓名">
              <template slot-scope="scope">
                <a
                  style="cursor: pointer; color: #027edc"
                  @click="
                    () => {
                      currentId = scope.row.id;
                      getData();
                      isAdvancedSearch = false;
                    }
                  "
                  >{{ scope.row.name }}</a
                >
              </template>
            </el-table-column>
            <el-table-column prop="alias" label="别名"></el-table-column>
            <el-table-column prop="place" label="活动地"></el-table-column>
            <el-table-column
              prop="medicalBranch"
              label="医学分科"
              width="150"
            ></el-table-column>
            <el-table-column prop="workName" label="作品"></el-table-column>
            <el-table-column
              prop="personLabel"
              width="150"
              label="人物标签"
            ></el-table-column>
            <el-table-column
              prop="socialDistinction"
              label="社会身份"
              width="150"
            ></el-table-column>
            <el-table-column
              prop="period"
              width="150"
              label="时期"
            ></el-table-column>
          </el-table>
          <div class="drawerPage">
            <el-pagination
              class="paging flex"
              background
              @size-change="handleSizeChangeForm"
              @current-change="handleCurrentChangeForm"
              :current-page="formData.page"
              :page-sizes="[10, 20, 60, 100]"
              :page-size="formData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="formData.total"
            >
            </el-pagination>
          </div>
        </div>
      </view>
      <div v-if="showPerson" class="personDialog">
        <i
@@ -147,7 +229,7 @@
            }
          "
        ></i>
        <el-table :data="personList" style="width: 100%">
        <el-table :data="personList" style="width: 100%" :max-height="600">
          <el-table-column prop="name" label="姓名">
            <template slot-scope="scope">
              <span
@@ -176,7 +258,7 @@
      style="margin-top: 0.1rem; flex: 1; width: 100%; position: relative"
    >
      <div
        v-if="!loading && relationships.length == 0"
        v-if="!loading && nodeDatas.length == 0"
        style="
          position: absolute;
          top: 30%;
@@ -185,6 +267,7 @@
          text-align: center;
          font-size: 0.2rem;
          color: #666;
          z-index: 99;
        "
      >
        暂无相关数据
@@ -200,6 +283,7 @@
          text-align: center;
          font-size: 0.2rem;
          color: #666;
          z-index: 99;
        "
      ></div>
    </div>
@@ -215,15 +299,102 @@
        <p>医学分科: {{ detailData.medicalBranch }}</p>
        <p>小传:{{ detailData.biography }}</p>
      </div>
      <div class="btn" @click="spaceTimeArr(detailData.id)">查看更多>>></div>
      <div class="btn" @click="spaceTimeArr(detailData.id, 1)">查看更多>>></div>
    </div>
    <div id="schoolDialog" class="customDialog">
      <div class="title">
        <span>{{ detailData.name }}</span>
        <span @click="closeDom">关闭</span>
      </div>
      <div class="content">
        <p>代表人物:{{ detailData.character }}</p>
        <p>重要医家:{{ detailData.skilledDoctor }}</p>
        <p>代表性著作:{{ detailData.works }}</p>
        <p>学派思想: {{ detailData.thought }}</p>
      </div>
      <div class="btn" @click="spaceTimeArr(detailData.id, 2)">查看更多>>></div>
    </div>
    <el-drawer
      title="地址列表"
      :visible.sync="drawer"
      direction="rtl"
      :before-close="handleClose"
      class="customDrawer"
    >
      <span>我来啦!</span>
      <div class="drawerContent">
        <div class="drawerTips">選中的地址:</div>
        <div class="drawerTable">
          <div class="tableTabs">
            <div class="inputItem">
              <el-input
                placeholder="請輸入地名搜索"
                v-model="tableKey"
                class="input-with-select"
                @keyup.enter="searchAddress"
              >
                <el-button
                  @click="searchAddress"
                  type="primary"
                  slot="append"
                  icon="el-icon-search"
                ></el-button>
              </el-input>
            </div>
            <div class="selectItem">
              <el-select v-model="dynastyId" placeholder="請選擇時期">
                <el-option
                  v-for="item in dynastyData"
                  :key="item.dynastyId + '0'"
                  :label="item.name"
                  :value="item.dynastyId"
                ></el-option>
              </el-select>
            </div>
          </div>
          <el-table
            ref="multipleTable"
            :data="gridData"
            style="width: 100%"
            height="530"
            @selection-change="handleSelectionChange"
            row-key="index"
          >
            <el-table-column type="selection" width="55"> </el-table-column>
            <el-table-column prop="currentName" label="地名"> </el-table-column>
            <el-table-column width="250" label="年代區間">
              <template slot-scope="scope">{{
                scope.row.start + "-" + scope.row.end
              }}</template>
            </el-table-column>
            <el-table-column
              prop="dynastyName"
              label="時期"
              width="250"
              show-overflow-tooltip
            >
            </el-table-column>
          </el-table>
        </div>
        <div class="drawerPage">
          <el-pagination
            class="paging flex"
            background
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="page"
            :page-sizes="[10, 20, 60, 100]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
          >
          </el-pagination>
        </div>
        <div class="drawerBtn">
          <el-button @click="setCurrent">全選當前頁</el-button>
          <el-button @click="setCurrent('cancle')">取消全選</el-button>
          <el-button @click="drawer = false" type="primary">確定</el-button>
        </div>
      </div>
    </el-drawer>
  </view>
</template>
@@ -232,17 +403,19 @@
import {
  getPersonData,
  getHotSearch,
  getPDataStatistics,
  academicSearch,
  getPersonTag,
  getSocialDistinction,
  getDynastyAll
  getDynastyAll,
  getAdvancedData,
  getPlaceInfo
} from "@/api/index.js";
import * as echarts from "echarts";
import MyForm from "@/components/form/form.vue";
export default {
  data() {
    return {
      // 高級搜索表格
      tableData: [],
      loading: true,
      hotAciveIndex: "",
      currentId: 21682,
@@ -254,11 +427,30 @@
      hotKeyList: [],
      searchKey: "",
      // 分类
      categories: [],
      categories: [
        {
          name: "亲属关系",
        },
        {
          name: "师承关系",
        },
        {
          name: "文献作品",
        },
        {
          name: "社会关系",
        },
        {
          name: "活动地",
        },
        {
          name: "学术流派"
        }
      ],
      // 当前人物信息
      ownInfo: null,
      detailData: {
        name: ""
        name: "",
      },
      isAdvancedSearch: false,
      formData: {
@@ -267,23 +459,37 @@
        works: "",
        personTags: "",
        socialIdentity: "",
        period: ""
        period: "",
        page: 1,
        currentPage: 1,
        pageSize: 10,
        total: 0
      },
      showPerson: false,
      personList: [],
      personPageInfo: {
        totalCount: 0,
        page: 1,
        limit: 10
        limit: 10,
      },
      personTag: [],
      socialDistinction: [],
      dynastyData: [],
      // 抽屉
      gridData: [],
      page: 1,
      currentPage: 1,
      pageSize: 10,
      total: 0,
      drawer: false,
      dynastyId: "",
      tableKey: "",
      multipleTableSelection: [],
      // echarts
      infoOfPersons: [],
      infoOfSchools: [],
      nodeDatas: [],
      links: []
      links: [],
    };
  },
  mounted() {
@@ -291,6 +497,8 @@
    this.hotSearch();
    // 获取人物标签、社会身份
    this.getOptionInfo();
    // 獲取地址列表
    this.getAddressList();
    // 监听窗口大小变化
    window.addEventListener("resize", this.relation);
  },
@@ -298,6 +506,93 @@
    this.searchKey = options.keyword;
  },
  methods: {
    // 搜索地址
    searchAddress() {
      this.page = 1;
      this.gridData = [];
      this.getAddressList();
    },
    // 分页
    handleSizeChange(val) {
      this.pageSize = val;
      this.getAddressList();
    },
    handleCurrentChange(val) {
      this.page = val;
      this.getAddressList();
    },
    handleSizeChangeForm(val) {
      this.formData.pageSize = val;
      this.searchFun();
    },
    handleCurrentChangeForm(val) {
      this.formData.page = val;
      this.searchFun();
    },
    // 表格选择
    handleSelectionChange(val) {
      const data = val.map((item) => {
        return {
          ...item,
          name: item.currentName,
          id: item.dynastyId,
        };
      });
      this.formData.actively = data;
      this.multipleTableSelection = this.formData.actively;
    },
    // 全選
    setCurrent(str) {
      if (str == "cancle") {
        this.$refs.multipleTable.clearSelection();
        return false;
      }
      if (this.gridData.length) {
        this.$refs.multipleTable.clearSelection();
        this.gridData.forEach((row) => {
          this.$refs.multipleTable.toggleRowSelection(row);
        });
        const data = this.gridData.map((item) => {
          return {
            ...item,
            name: item.currentName,
            id: item.dynastyId,
          };
        });
        this.formData.actively = data;
        this.multipleTableSelection = this.formData.actively;
      }
    },
    // 獲取地址列表
    getAddressList() {
      const data = {
        page: this.page,
        pageSize: this.pageSize,
      };
      if (this.dynastyId != "") {
        data["dynastyId"] = this.dynastyId;
      }
      if (this.tableKey != "") {
        data["keyword"] = this.tableKey;
      }
      getPlaceInfo(data).then((res) => {
        if (res?.success && res?.npage) {
          this.total = res.npage.totalCount;
        }
        if (res?.success && res?.list.length) {
          this.gridData = res?.list?.map((item, i) => {
            return {
              ...item,
              index: i,
            };
          });
        } else {
          this.gridData = [];
        }
      });
    },
    getOptionInfo() {
      getDynastyAll().then((res) => {
        this.dynastyData = res.list;
@@ -309,25 +604,145 @@
        this.socialDistinction = res.list;
      });
    },
    resetForm(formName) {
      this.formData = {
        name: "",
        actively: [],
        works: "",
        personTags: "",
        socialIdentity: "",
        period: ""
        personTags: [],
        socialIdentity: [],
        period: [],
        page: 1,
        currentPage: 1,
        pageSize: 10,
        total: 0
      };
      this.formData.page = 1;
      this.searchFun();
    },
    searchFun() {
      console.log(this.formData);
      const palceData = this.formData.actively?.map((item) => {
        return {
          ancientName: item.ancientName ?? "",
          dynastyId: item.dynastyId,
          currentName: item.currentName
        };
      });
      let Obj = {
        keyword: this.formData.name,
        placeList: [...palceData],
        literatureName: this.formData.works,
        personTagIdList: this.formData.personTags,
        socialDistinctionIdList: this.formData.socialIdentity,
        dynastyIdList: this.formData.period,
        page: this.formData.page,
        pageSize: this.formData.pageSize
      };
      // // 搜索
      getAdvancedData(Obj).then((res) => {
        if (res?.success) {
          this.tableData = res.list.map((item) => {
            return {
              id: item.personId,
              name:
                item?.NAME?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              alias:
                item?.ALIAS?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              place:
                item?.NATIVE_PLACE?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              medicalBranch:
                item?.MEDICAL_BRANCH?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              socialDistinction:
                item?.SOCIAL_IDENTITY?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              period:
                item?.PERIOD?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              workName:
                item?.REPRESENTATIVE_WORKS?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? "",
              personLabel:
                item?.PERSON_LABEL?.map((e, i) => {
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? ""
            };
          });
          if (res?.npage) {
            // 总数量
            this.formData.total = res.npage.totalCount;
          }
        }
      });
    },
    selectActively() {
      this.drawer = true;
    },
    handleClose(done) {
      done();
    },
    // 获取人物关系
    getPersonInfo(arr, str, newArr, order, type, parent) {
      for (let i = 0; i < arr.length; i++) {
@@ -343,7 +758,7 @@
            parentName: parent?.NAME[0]?.content1 ?? parent.parentName,
            name: personInfo?.NAME[0]?.content1,
            category: type,
            symbolSize: 15
            symbolSize: 15,
          };
          if (order > 80) {
            order = 80;
@@ -445,7 +860,7 @@
              const data = item[str]?.map((e) => {
                return {
                  ...e,
                  personId: item.personId
                  personId: item.personId,
                };
              });
              if (ele[str] && data?.length) {
@@ -457,6 +872,7 @@
      }
      return arr;
    },
    //数组去重
    deduplicateArray(arr, idKey) {
      // 使用一个辅助对象来跟踪已经见过的ID
@@ -481,16 +897,19 @@
    getData() {
      this.loading = true;
      getPersonData(this.currentId).then((res) => {
        console.log("1111111111111", res);
        this.infoOfPersons = res.object.infoOfPersons;
        this.infoOfSchools = res.object.infoOfSchools;
        this.nodeDatas = [];
        this.links = [];
        this.handleData([res.object.personChain], null);
        console.log("this.nodeDatas", this.nodeDatas);
        console.log("this.links", this.links);
        this.loading = false;
        this.relation();
        if (res && res.object) {
          this.infoOfPersons = res?.object?.infoOfPersons;
          this.infoOfSchools = res?.object?.infoOfSchools;
          this.nodeDatas = [];
          this.links = [];
          this.handleData([res.object.personChain], null);
          this.loading = false;
          this.relation();
        } else {
          this.loading = false;
          this.nodeDatas = [];
          this.links = [];
        }
        // this.nodes = [];
        // this.relationships = [];
        // let kinData = [];
@@ -575,7 +994,7 @@
        //       place = [...newArr];
        //     }
        //     if (obj.schoolList?.length) {
        //       this.categories.push({ name: "学术流派" });
        //       this.categories.push({ name: "学术图谱" });
        //       let newArr = [];
        //       const data = this.changeLiterature(obj.schoolList, "schoolList");
        //       this.getPersonInfo(
@@ -612,9 +1031,9 @@
        //     this.relationships.push(obj);
        //   });
        // }
      });
    },
    // 递归处理所有层级数据
    handleData(data, parent) {
      for (let i = 0; i < data.length; i++) {
@@ -630,8 +1049,8 @@
            id: item.mainId,
            name: mainPerson.NAME[0].content1,
            itemStyle: {
              color: "#244a7b"
            }
              color: "#244a7b",
            },
          });
        } else {
          switch (parent.thisType) {
@@ -646,11 +1065,9 @@
                );
                if (p) {
                  this.nodeDatas.push({
                    category: 0,
                    id: item.mainId,
                    name: p.NAME[0].content1,
                    itemStyle: {
                      color: "#5470c6"
                    }
                  });
                }
              }
@@ -666,8 +1083,8 @@
                  padding: [3, 8],
                  borderRadius: 30,
                  position: "middle", // 设置标签文本在线的中间位置上居中显示
                  distance: -10 // 将标签放置在连接线上
                }
                  distance: -10, // 将标签放置在连接线上
                },
              });
              break;
            case 2:
@@ -677,16 +1094,14 @@
                -1
              ) {
                this.nodeDatas.push({
                  category: 2,
                  id: item.mainId,
                  name: item.literatureName,
                  itemStyle: {
                    color: "#fac858"
                  }
                });
              }
              this.links.push({
                source: item.mainId,
                target: parent.mainId
                target: parent.mainId,
              });
              break;
            case 3:
@@ -696,16 +1111,14 @@
                -1
              ) {
                this.nodeDatas.push({
                  category: 4,
                  id: item.mainId,
                  name: item.ancientName,
                  itemStyle: {
                    color: "#ea7ccc"
                  }
                });
              }
              this.links.push({
                source: item.mainId,
                target: parent.mainId
                target: parent.mainId,
              });
              break;
            case 4:
@@ -717,22 +1130,17 @@
                const s = this.infoOfSchools.find(
                  (sItem) => sItem.schoolId == item.schoolId
                );
                console.log(this.infoOfSchools);
                console.log(item.schoolId);
                console.log(s);
                if (s) {
                  this.nodeDatas.push({
                    category: 5,
                    id: item.mainId,
                    name: s.name[0],
                    itemStyle: {
                      color: "#9a60b4"
                    }
                  });
                }
              }
              this.links.push({
                source: item.mainId,
                target: parent.mainId
                target: parent.mainId,
              });
              break;
            case 5:
@@ -746,11 +1154,9 @@
                );
                if (p) {
                  this.nodeDatas.push({
                    category: 3,
                    id: item.mainId,
                    name: p.NAME[0].content1,
                    itemStyle: {
                      color: "#ee6666"
                    }
                  });
                }
              }
@@ -766,8 +1172,8 @@
                  padding: [3, 8],
                  borderRadius: 30,
                  position: "middle", // 设置标签文本在线的中间位置上居中显示
                  distance: -10 // 将标签放置在连接线上
                }
                  distance: -10, // 将标签放置在连接线上
                },
              });
              break;
            case 6:
@@ -781,11 +1187,9 @@
                );
                if (p) {
                  this.nodeDatas.push({
                    category: 1,
                    id: item.mainId,
                    name: p.NAME[0].content1,
                    itemStyle: {
                      color: "#3dae7b"
                    }
                  });
                }
              }
@@ -801,8 +1205,8 @@
                  padding: [3, 8],
                  borderRadius: 30,
                  position: "middle", // 设置标签文本在线的中间位置上居中显示
                  distance: -10 // 将标签放置在连接线上
                }
                  distance: -10, // 将标签放置在连接线上
                },
              });
              break;
          }
@@ -820,7 +1224,7 @@
        if (item.placeList && item.placeList.length) {
          this.handleData(item.placeList, { ...item, thisType: 3 });
        }
        // 学术流派
        // 学术图谱
        if (item.schoolList && item.schoolList.length) {
          this.handleData(item.schoolList, { ...item, thisType: 4 });
        }
@@ -853,7 +1257,7 @@
        }
        return {
          ...item,
          symbolSize: size > 80 ? 80 : size
          symbolSize: size > 80 ? 80 : size,
        };
      });
@@ -880,13 +1284,6 @@
      }
      var option;
      option = {
        // backgroundColor: {
        //   type: "image",
        //   image: "/static/image/characterRelationBg.png",
        //   size: "100% 100%", // 背景图片的尺寸,可以是百分比或者像素
        //   position: "center center", // 背景图片的位置,可以是 top, bottom, middle 或者百分比
        // },
        // tooltip: {},
        legend: [
          {
            left: 20,
@@ -894,8 +1291,8 @@
            orient: "vertical",
            data: this.categories.map(function (a) {
              return a.name;
            })
          }
            }),
          },
        ],
        series: [
          {
@@ -905,35 +1302,41 @@
            symbolSize: 15,
            data: this.nodeDatas,
            links: this.links,
            categories: [{
            }],
            categories: this.categories,
            roam: true,
            label: {
              show: true,
              position: "right",
              formatter: "{b}"
              formatter: "{b}",
            },
            scaleLimit: {
              min: 0.4,
              max: 2
              max: 2,
            },
            lineStyle: {
              color: "source",
              curveness: 0.2
              curveness: 0.2,
            },
            emphasis: {
              focus: "adjacency",
              lineStyle: {
                width: 5
              }
                width: 5,
              },
            },
            force: {
              repulsion: 600,
              edgeLength: 300
            }
          }
        ]
              edgeLength: 300,
            },
          },
        ],
        color: [
          "#5470c6",
          "#3dae7b",
          "#fac858",
          "#ee6666",
          "#ea7ccc",
          "#9a60b4",
        ],
      };
      // 设置点击事件监听
      myChart.off("click");
@@ -944,48 +1347,85 @@
      });
      myChart.setOption(option);
    },
    creatDom(params) {
      const e = params.event;
      const div = document.getElementById("customDialog");
      div.style.display = "block";
      div.style.left = e.offsetX + 50 + "px";
      div.style.top = e.offsetY - 50 + "px";
      const data = this.infoOfPersons?.find(
        (i) => i.id == params.data.personId
      );
      const obj = {
        id: params.data.id,
        name:
          data?.NAME?.map((e, i) => {
            i += 1;
            return e["content" + i];
          }).join("、") ?? "",
        alias:
          data?.ALIAS?.map((e, i) => {
            i += 1;
            return e["content" + i];
          }).join("、") ?? "",
        nativePlace:
          data?.NATIVE_PLACE?.map((e, i) => {
            i += 1;
            return e["content" + i];
          }).join("、") ?? "",
        medicalBranch:
          data?.MEDICAL_BRANCH?.map((e, i) => {
            i += 1;
            return e["content" + i];
          }).join("、") ?? "",
        biography: data?.BIOGRAPHY ?? ""
      };
      this.detailData = obj;
      const id = params.data.id.split("_")[0];
      const type = params.data.id.split("_")[1];
      if (type == "p") {
        // 人
        const e = params.event;
        const div = document.getElementById("customDialog");
        div.style.display = "block";
        const div2 = document.getElementById("schoolDialog");
        div2.style.display = "none";
        div.style.left = e.offsetX + 50 + "px";
        div.style.top = e.offsetY - 50 + "px";
        const data = this.infoOfPersons?.find((i) => i.id == id);
        const obj = {
          id: id,
          name:
            data?.NAME?.map((e, i) => {
              i += 1;
              return e["content" + i];
            }).join("、") ?? "",
          alias:
            data?.ALIAS?.map((e, i) => {
              i += 1;
              return e["content" + i];
            }).join("、") ?? "",
          nativePlace:
            data?.NATIVE_PLACE?.map((e, i) => {
              i += 1;
              return e["content" + i];
            }).join("、") ?? "",
          medicalBranch:
            data?.MEDICAL_BRANCH?.map((e, i) => {
              i += 1;
              return e["content" + i];
            }).join("、") ?? "",
          biography: data?.BIOGRAPHY ?? "",
        };
        this.detailData = obj;
      }
      if (type == "s") {
        // 学派
        const e = params.event;
        const div = document.getElementById("schoolDialog");
        div.style.display = "block";
        const div2 = document.getElementById("customDialog");
        div2.style.display = "none";
        div.style.left = e.offsetX + 50 + "px";
        div.style.top = e.offsetY - 50 + "px";
        const data = this.infoOfSchools?.find((i) => i.schoolId == id);
        const obj = {
          id: id,
          name: data.name[0],
          character: data.important_people
            ? data.important_people.map((item) => item.personName).join("、")
            : "",
          skilledDoctor: data.important_physician
            ? data.important_physician.map((item) => item.personName).join("、")
            : "",
          works: data.important_work
            ? data.important_work.map((item) => item.literatureTitle).join("、")
            : "",
          thought: data.school_introduction
            ? data.school_introduction.join("、")
            : ""
        };
        this.detailData = obj;
      }
    },
    closeDom() {
      const div = document.getElementById("customDialog");
      div.style.display = "none";
      const div2 = document.getElementById("schoolDialog");
      div2.style.display = "none";
    },
    // 基础搜索
    onSearch(val, index) {
      console.log(val);
      if (index !== undefined) {
        // 热门搜索关键字,直接查询数据
        this.searchKey = "";
@@ -999,12 +1439,13 @@
        this.searchPerson(val.text);
      }
    },
    // 根据关键字检索人物
    searchPerson(key) {
      academicSearch({
        keyword: key,
        page: this.personPageInfo.page,
        pageSize: this.personPageInfo.limit
        page: 1,
        pageSize: 999
      }).then((res) => {
        this.personList = res.list.map((item) => {
          return {
@@ -1025,19 +1466,28 @@
            division:
              item.medicalBranchList && item.medicalBranchList.length
                ? item.medicalBranchList[0].content1
                : "-"
                : "-",
          };
        });
        this.showPerson = true;
      });
    },
    // 关系图 点击里面的元素
    spaceTimeArr(id) {
      // 关系图的数据
      uni.navigateTo({
        url: "/pages/character/detail?id=" + id
      });
    spaceTimeArr(id, type) {
      if (type == 1) {
        // 人物
        uni.navigateTo({
          url: "/pages/character/detail?id=" + id
        });
      } else {
        // 学派
        uni.navigateTo({
          url: "/pages/academicGenres/detail?id=" + id
        });
      }
    },
    // 获取朝代echarts的数据
    echartsArr() {
      getDataStatistics().then((res) => {
@@ -1051,6 +1501,7 @@
        });
      });
    },
    // 热门搜索
    hotSearch() {
      getHotSearch().then((res) => {
@@ -1059,11 +1510,12 @@
        this.hotKeyList = indexList.map((item) => {
          return {
            id: item,
            name: res.object[item]
            name: res.object[item],
          };
        });
      });
    },
    isAvancedClick() {
      this.isAdvancedSearch = !this.isAdvancedSearch;
      // this.$nextTick(() => {
@@ -1074,12 +1526,118 @@
      //     document.querySelector(".fbox1").style.height = box1Height + "px";
      //   }
      // });
    }
  }
    },
  },
};
</script>
<style>
.fromTable {
  width: 100%;
  padding: 40px 0;
  box-sizing: border-box;
}
.fromTable >>> .el-table thead th.el-table__cell {
  background-color: rgb(194 208 217) !important;
  color: #333;
  font-weight: normal;
  font-size: 14px;
}
.fromTable
  .drawerPage
  >>> .el-pagination.is-background
  .el-pager
  li:not(.disabled).active {
  background-color: rgb(36, 74, 123) !important;
}
.customDrawer >>> .el-drawer__header {
  margin-bottom: 20px;
  border-bottom: 1px solid #eee;
  padding: 20px;
  box-sizing: border-box;
}
.headerClassBg {
  background-color: rgb(95, 127, 168);
}
.drawerTips {
  margin-bottom: 20px;
  color: #666;
}
.drawerTable {
  width: 100%;
}
.drawerTable >>> .el-table thead th.el-table__cell {
  background-color: rgb(231, 236, 239) !important;
  color: #333;
  font-weight: normal;
}
.tableTabs {
  width: 100%;
  display: flex;
  margin-bottom: 20px;
}
.inputItem {
  width: 80%;
}
.drawerPage {
  display: flex;
  justify-content: flex-end;
  padding: 20px 0;
  box-sizing: border-box;
}
.drawerBtn {
  display: flex;
  justify-content: flex-end;
}
.drawerContent {
  width: 100%;
  height: 100%;
  padding: 0 20px;
  box-sizing: border-box;
}
/* 分页 */
.paging ::v-deep .btn-prev,
.paging ::v-deep .btn-next {
  border: 0;
  height: 30px;
}
.paging ::v-deep .btn-prev span,
.paging ::v-deep .btn-next span {
  font-size: 0.12rem;
  height: 0.3rem;
  line-height: 0.3rem;
  background-color: #fff;
  color: #9e9e9e;
  text-align: center;
  border: 1px solid #9e9e9e;
  padding: 0 0.1rem;
}
.paging ::v-deep .el-pager li {
  font-size: 0.1rem;
  width: 0.28rem;
  height: 0.3rem;
  line-height: 0.3rem;
  background-color: #fff;
  color: #9e9e9e;
  text-align: center;
  border: 1px solid #9e9e9e;
}
#relation {
  width: 100%;
  height: 100%;
@@ -1095,7 +1653,7 @@
  min-height: 240px;
  display: none;
  position: fixed;
  z-index: 99999999;
  z-index: 9999999;
  border-radius: 2px;
  background: #fff;
}