1
YM
2024-07-26 e00361c6bcbb1a56f6dcda22b91bdfcb2736e263
src/pages/inherit/index.vue
@@ -3,17 +3,56 @@
    <headNav
      idIndex="2"
      :searchBg="false"
      text="中医世医传承数据库"
      text="家学传承"
      bg="/static/image/topBg1.png"
      bg1="/static/image/line1.png"
    />
    <div class="filterBox font-family">
      <div class="searchBox">
        <input type="text" v-model="keyword" placeholder="请输入关键字" />
        <input
          type="text"
          v-model="keyword"
          @confirm="search"
          placeholder="请输入关键字"
          style="padding-right: 54px; box-sizing: border-box"
        />
        <span
          class="cleanupBtn"
          v-if="keyword"
          @click="keyword = ''"
          style="
            position: absolute;
            top: 50%;
            margin-top: -10px;
            right: 84px;
            color: #fff;
            z-index: 2;
            display: inline-block;
            width: 20px;
            height: 20px;
            text-align: center;
            line-height: 20px;
            background-color: #a5a5a5;
            font-weight: bold;
            border-radius: 50%;
            font-size: 12px;
            cursor: pointer;
          "
          >✖</span
        >
        <button @click="search">搜索</button>
        <span
          class="openSearch"
          @click="
            () => {
              openSearch = !openSearch;
            }
          "
          >高级搜索{{ openSearch ? "∧" : "∨" }}</span
        >
      </div>
      <div class="dynasty">
      <div class="dynasty" v-if="openSearch">
        <div style="font-weight: 700; line-height: 0.25rem">筛选朝代</div>
        <div class="filterList">
          <div
@@ -32,7 +71,7 @@
          </div>
        </div>
      </div>
      <div class="condition">
      <div class="condition" v-if="openSearch">
        <div style="font-weight: 700; line-height: 0.25rem">条件选择</div>
        <div class="filterList">
          <div class="conditionItem" @click="changeCondition(3)">
@@ -65,7 +104,7 @@
          </div>
        </div>
      </div>
      <div style="padding-left: 0.5rem; margin-top: 20px">
      <div style="padding-left: 0.5rem; margin-top: 0.1rem">
        共 {{ totalCount }}个世医
      </div>
    </div>
@@ -92,7 +131,13 @@
        :style="{ top: toolTop, left: toolLeft }"
      >
        <div class="toolItem" @click="gotoDetail(1)">个人信息</div>
        <div class="toolItem" @click="gotoDetail(2)">世医文化</div>
        <div
          class="toolItem"
          style="position: relative; top: -40px"
          @click="gotoDetail(2)"
        >
          世医文化
        </div>
        <div class="toolItem" @click="gotoDetail(3)">世医传承</div>
      </div>
    </div>
@@ -121,7 +166,8 @@
      toolTop: 0,
      toolLeft: 0,
      toolInfo: {},
      totalCount: 0
      totalCount: 0,
      openSearch: false
    };
  },
  onLoad(options) {
@@ -258,29 +304,59 @@
              friction: 0.1,
              repulsion: 500,
              edgeLength: 6
            },
            selectedMode: "single",
            select: {
              itemStyle: {
                color: "#e8f3ff",
                borderColor: "#284e74",
                borderWidth: "3"
              }
            }
          }
        ]
      };
      let selectData = [];
      //进行渲染
      myChart.setOption(option);
      myChart.getZr().on("click", (params) => {
        if (!params.target) {
      // myChart.getZr().on("click", (params) => {
      //   console.log(params);
      //   console.log(selectData);
      //   if (!params.target) {
      //     this.showTool = false;
      //   }
      // });
      myChart.on("click", (params) => {
        if (selectData.length > 0) {
          let x = params.event.target.transform[4];
          let y = params.event.target.transform[5];
          if (params.componentType === "series") {
            this.showTool = true;
            this.toolTop = y - 70 + "px";
            this.toolLeft = x - 163 + "px";
            this.toolInfo = {
              id: params.data.identifier,
              name: encodeURIComponent(params.data.name)
            };
          } else {
            this.showTool = false;
          }
        }
      });
      myChart.on("selectchanged", (params) => {
        if (params.fromAction == "select") {
          selectData = params.selected[0].dataIndex;
        } else {
          selectData = [];
          this.showTool = false;
        }
      });
      myChart.on("click", (params) => {
        if (params.componentType === "series") {
          this.showTool = true;
          this.toolTop = params.event.offsetY + "px";
          this.toolLeft = params.event.offsetX + "px";
          this.toolInfo = {
            id: params.data.identifier,
            name: encodeURIComponent(params.data.name)
          };
        } else {
          this.showTool = false;
        }
      myChart.on("graphroam", (params) => {
        this.showTool = false;
        myChart.dispatchAction({
          type: "unselect",
          dataIndex: selectData
        });
      });
    },
    gotoDetail(type) {
@@ -354,15 +430,13 @@
};
</script>
<style scoped>
.Lists {
  li {
    width: 0.96rem;
    height: 0.3rem;
    border: 1px solid #da7a2b;
    line-height: 0.3rem;
    text-align: center;
    font-size: 0.14rem;
  }
.Lists li {
  width: 0.96rem;
  height: 0.3rem;
  border: 1px solid #da7a2b;
  line-height: 0.3rem;
  text-align: center;
  font-size: 0.14rem;
}
.MiddeBack {
  width: 0.6rem;
@@ -391,6 +465,7 @@
  font-size: 0.12rem;
  cursor: pointer;
  background-color: #fff;
  display: inline-block;
}
.toolItem:hover {
  background-color: #efefef;
@@ -411,6 +486,7 @@
  align-items: center;
  margin: 0 auto;
  margin-top: 0.2rem;
  position: relative;
}
.searchBox > input {
@@ -429,16 +505,24 @@
  border-radius: 50px;
  margin-right: 10rpx;
}
.searchBox .openSearch {
  position: absolute;
  right: -100px;
  font-size: 14px;
  cursor: pointer;
}
.dynasty {
  display: flex;
  margin-top: 0.2rem;
  width: 100%;
  padding: 0.1rem 0.5rem;
  padding: 0 0.5rem;
}
.condition {
  display: flex;
  width: 100%;
  padding: 0.1rem 0.5rem;
  padding: 0 0.5rem;
}
.filterList {
  flex: 1;
@@ -451,7 +535,6 @@
  box-shadow: 1px 1px 5px #888888;
  align-items: center;
  justify-content: center;
  width: 1.4rem;
  height: 0.3rem;
  margin-left: 0.2rem;
  border-radius: 0.13rem;
@@ -459,13 +542,14 @@
  margin-top: 0.02rem;
  margin-bottom: 0.1rem;
  cursor: pointer;
  padding: 0 0.1rem;
}
.conditionItem {
  display: flex;
  box-shadow: 1px 1px 5px #888888;
  align-items: center;
  justify-content: center;
  width: 1.6rem;
  padding: 0 0.1rem;
  height: 0.3rem;
  float: left;
  margin-left: 0.2rem;
@@ -486,7 +570,7 @@
}
.filterText {
  margin-left: 10px;
  font-size: 0.16rem;
  font-size: 0.14rem;
}
.fontColor {
  color: #827e44 !important;