QYF-GitLab1
2024-07-26 1b27559a90417a6f608be0c61e88a6f9e3ea1b40
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="
@@ -135,12 +135,21 @@
            <el-button
              size="mini"
              style="background-color: #244a7b; color: #fff"
              @click="searchFun"
              @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"
@@ -149,13 +158,14 @@
            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="120" label="姓名">
            <el-table-column prop="name" width="150" label="姓名">
              <template slot-scope="scope">
                <a
                  style="cursor: pointer; color: #027edc"
@@ -175,22 +185,22 @@
            <el-table-column
              prop="medicalBranch"
              label="医学分科"
              width="120"
              width="150"
            ></el-table-column>
            <el-table-column prop="workName" label="作品"></el-table-column>
            <el-table-column
              prop="personLabel"
              width="120"
              width="150"
              label="人物标签"
            ></el-table-column>
            <el-table-column
              prop="socialDistinction"
              label="社会身份"
              width="120"
              width="150"
            ></el-table-column>
            <el-table-column
              prop="period"
              width="120"
              width="150"
              label="时期"
            ></el-table-column>
          </el-table>
@@ -198,9 +208,9 @@
            <el-pagination
              class="paging flex"
              background
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="formData.currentPage"
              @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"
@@ -219,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
@@ -248,7 +258,7 @@
      style="margin-top: 0.1rem; flex: 1; width: 100%; position: relative"
    >
      <div
        v-if="!loading && links.length == 0"
        v-if="!loading && nodeDatas.length == 0"
        style="
          position: absolute;
          top: 30%;
@@ -289,7 +299,7 @@
        <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">
@@ -297,13 +307,12 @@
        <span @click="closeDom">关闭</span>
      </div>
      <div class="content">
        <p>姓名:{{ detailData.name }}</p>
        <p>别名:{{ detailData.alias }}</p>
        <p>籍贯:{{ detailData.nativePlace }}</p>
        <p>医学分科: {{ detailData.medicalBranch }}</p>
        <p>小传:{{ detailData.biography }}</p>
        <p>代表人物:{{ detailData.character }}</p>
        <p>重要医家:{{ detailData.skilledDoctor }}</p>
        <p>代表性著作:{{ detailData.works }}</p>
        <p>学派思想: {{ detailData.thought }}</p>
      </div>
      <div class="btn" @click="spaceTimeArr(detailData.id)">查看更多>>></div>
      <div class="btn" @click="spaceTimeArr(detailData.id, 2)">查看更多>>></div>
    </div>
    <el-drawer
      title="地址列表"
@@ -313,12 +322,12 @@
      class="customDrawer"
    >
      <div class="drawerContent">
        <div class="drawerTips">選中的地址:</div>
        <div class="drawerTips">选中的地址:</div>
        <div class="drawerTable">
          <div class="tableTabs">
            <div class="inputItem">
              <el-input
                placeholder="請輸入地名搜索"
                placeholder="请输入地名搜索"
                v-model="tableKey"
                class="input-with-select"
                @keyup.enter="searchAddress"
@@ -332,7 +341,7 @@
              </el-input>
            </div>
            <div class="selectItem">
              <el-select v-model="dynastyId" placeholder="請選擇時期">
              <el-select v-model="dynastyId" placeholder="请选择时期">
                <el-option
                  v-for="item in dynastyData"
                  :key="item.dynastyId + '0'"
@@ -352,14 +361,14 @@
          >
            <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="年代區間">
            <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="時期"
              label="时期"
              width="250"
              show-overflow-tooltip
            >
@@ -372,7 +381,7 @@
            background
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :current-page="page"
            :page-sizes="[10, 20, 60, 100]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
@@ -381,9 +390,9 @@
          </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>
          <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>
@@ -399,7 +408,7 @@
  getSocialDistinction,
  getDynastyAll,
  getAdvancedData,
  getPlaceInfo,
  getPlaceInfo
} from "@/api/index.js";
import * as echarts from "echarts";
export default {
@@ -435,8 +444,8 @@
          name: "活动地",
        },
        {
          name: "学术流派",
        },
          name: "学术流派"
        }
      ],
      // 当前人物信息
      ownInfo: null,
@@ -454,7 +463,7 @@
        page: 1,
        currentPage: 1,
        pageSize: 10,
        total: 0,
        total: 0
      },
      showPerson: false,
      personList: [],
@@ -499,10 +508,11 @@
  methods: {
    // 搜索地址
    searchAddress() {
      this.page = 1;
      this.gridData = [];
      this.getAddressList();
    },
    //  分页
    // 分页
    handleSizeChange(val) {
      this.pageSize = val;
      this.getAddressList();
@@ -510,6 +520,15 @@
    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) {
@@ -597,16 +616,17 @@
        page: 1,
        currentPage: 1,
        pageSize: 10,
        total: 0,
        total: 0
      };
      this.formData.page = 1;
      this.searchFun();
    },
    searchFun() {
      const palceData = this.formData.actively?.map((item) => {
        return {
          ancientName: item.ancientName ?? "",
          dynastyId: item.dynastyId,
          currentName: item.currentName,
          currentName: item.currentName
        };
      });
      let Obj = {
@@ -617,7 +637,7 @@
        socialDistinctionIdList: this.formData.socialIdentity,
        dynastyIdList: this.formData.period,
        page: this.formData.page,
        pageSize: this.formData.pageSize,
        pageSize: this.formData.pageSize
      };
      // // 搜索
      getAdvancedData(Obj).then((res) => {
@@ -627,48 +647,90 @@
              id: item.personId,
              name:
                item?.NAME?.map((e, i) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  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) => {
                  i += 1;
                  return e["content" + i];
                }).join("、") ?? "",
                  let data = [];
                  Object.entries(e).forEach((c) => {
                    if (c[0]?.indexOf("content") > -1) {
                      data.push(c[1]);
                    }
                  });
                  return data;
                }).join() ?? ""
            };
          });
          // 总数量
          this.formData.total = res.npage.totalCount;
          if (res?.npage) {
            // 总数量
            this.formData.total = res.npage.totalCount;
          }
        }
      });
    },
@@ -932,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(
@@ -1162,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 });
        }
@@ -1294,6 +1356,8 @@
        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);
@@ -1328,32 +1392,26 @@
        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.infoOfPersons?.find((i) => i.id == id);
        const data = this.infoOfSchools?.find((i) => i.schoolId == id);
        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 ?? "",
          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;
      }
@@ -1362,11 +1420,12 @@
    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 = "";
@@ -1385,8 +1444,8 @@
    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 {
@@ -1415,11 +1474,18 @@
    },
    // 关系图 点击里面的元素
    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的数据
@@ -1479,6 +1545,14 @@
  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;
@@ -1520,12 +1594,6 @@
  justify-content: flex-end;
  padding: 20px 0;
  box-sizing: border-box;
}
.drawerPage
  >>> .el-pagination.is-background
  .el-pager
  li:not(.disabled).active {
}
.drawerBtn {
@@ -1585,7 +1653,7 @@
  min-height: 240px;
  display: none;
  position: fixed;
  z-index: 99999999;
  z-index: 9999999;
  border-radius: 2px;
  background: #fff;
}