1
YM
2024-07-23 6a7fe3910a91355467295b4f81f71405fb1b1e75
1
2个文件已修改
198 ■■■■ 已修改文件
src/api/index.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/academicSchools/index.vue 184 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/index.js
@@ -397,3 +397,17 @@
  });
};
export const getPersonTag = () => {
  return req1({
    url: "/personTag/list",
    method: "post",
  });
};
export const getSocialDistinction = () => {
  return req1({
    url: "/socialDistinction/list",
    method: "post",
  });
};
src/pages/academicSchools/index.vue
@@ -37,7 +37,7 @@
            @click="onSearch({ text: item }, index)"
            :class="{ cursor: true, active: hotAciveIndex === index }"
            v-for="(item, index) in hotKeyList"
            :key="item"
            :key="item.name"
          >
            {{ item.name }}
          </li>
@@ -45,7 +45,12 @@
      </view>
      <view v-if="isAdvancedSearch" class="searchDialog">
        <h3 style="margin-bottom: 0.2rem">高级搜索</h3>
        <el-form  label-width="100px" :model="formData" size="mini">
        <el-form
          label-width="100px"
          :model="formData"
          ref="searchForm"
          size="mini"
        >
          <el-row>
            <el-col :span="8">
              <el-form-item label="姓名/别名:">
@@ -54,14 +59,16 @@
            </el-col>
            <el-col :span="8">
              <el-form-item label="活动地:">
                <el-select
                  style="width: 100%"
                  v-model="formData.actively"
                  placeholder="请选择活动地"
                <div class="selectActivelyBox" @click="selectActively">
                  <p v-if="formData.actively.length == 0">请选择活动地</p>
                  <el-tag
                    v-for="item in formData.actively"
                    :key="item.id"
                    size="small"
                    closable
                    >{{ item.name }}</el-tag
                >
                  <!-- <el-option label="区域一" value="shanghai"></el-option> -->
                  <!-- <el-option label="区域二" value="beijing"></el-option> -->
                </el-select>
                </div>
              </el-form-item>
            </el-col>
            <el-col :span="8">
@@ -74,45 +81,62 @@
            <el-col :span="8">
              <el-form-item label="人物标签:">
                <el-select
                  multiple
                  style="width: 100%"
                  v-model="formData.personTags"
                  placeholder="请选择人物标签"
                >
                  <!-- <el-option label="区域一" value="shanghai"></el-option> -->
                  <!-- <el-option label="区域二" value="beijing"></el-option> -->
                  <el-option
                    v-for="item in personTag"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="社会身份:">
                <el-select
                  multiple
                  style="width: 100%"
                  v-model="formData.socialIdentity"
                  placeholder="请选择社会身份"
                >
                  <!-- <el-option label="区域一" value="shanghai"></el-option> -->
                  <!-- <el-option label="区域二" value="beijing"></el-option> -->
                  <el-option
                    v-for="item in socialDistinction"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="时期:">
                <el-select
                  multiple
                  style="width: 100%"
                  v-model="formData.period"
                  placeholder="请选择时期"
                >
                  <!-- <el-option label="区域一" value="shanghai"></el-option> -->
                  <!-- <el-option label="区域二" value="beijing"></el-option> -->
                  <el-option
                    v-for="item in dynastyData"
                    :key="item.dynastyId"
                    :label="item.name"
                    :value="item.dynastyId"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <div style="text-align: right">
          <el-button type="primary" size="mini">搜索</el-button>
          <el-button size="mini">重置</el-button>
            <el-button type="primary" size="mini" @click="searchFun"
              >搜索</el-button
            >
            <el-button size="mini" @click="resetForm">重置</el-button>
        </div>
        </el-form>
      </view>
      <div v-if="showPerson" class="personDialog">
        <i
@@ -193,6 +217,14 @@
      </div>
      <div class="btn" @click="spaceTimeArr(detailData.id)">查看更多>>></div>
    </div>
    <el-drawer
      title="地址列表"
      :visible.sync="drawer"
      direction="rtl"
      :before-close="handleClose"
    >
      <span>我来啦!</span>
    </el-drawer>
  </view>
</template>
@@ -202,6 +234,9 @@
  getHotSearch,
  getPDataStatistics,
  academicSearch,
  getPersonTag,
  getSocialDistinction,
  getDynastyAll
} from "@/api/index.js";
import * as echarts from "echarts";
import MyForm from "@/components/form/form.vue";
@@ -228,12 +263,12 @@
      // 当前人物信息
      ownInfo: null,
      detailData: {
        name: "",
        name: ""
      },
      isAdvancedSearch: false,
      formData: {
        name: "",
        actively: "",
        actively: [],
        works: "",
        personTags: "",
        socialIdentity: "",
@@ -244,14 +279,19 @@
      personPageInfo: {
        totalCount: 0,
        page: 1,
        limit: 10,
        limit: 10
      },
      personTag: [],
      socialDistinction: [],
      dynastyData: [],
      drawer:false,
    };
  },
  mounted() {
    this.getData();
    // this.echartsArr();
    this.hotSearch();
    // 获取人物标签、社会身份
    this.getOptionInfo();
    // 监听窗口大小变化
    window.addEventListener("resize", this.relation);
  },
@@ -259,6 +299,36 @@
    this.searchKey = options.keyword;
  },
  methods: {
    getOptionInfo() {
      getDynastyAll().then((res) => {
        this.dynastyData = res.list;
      });
      getPersonTag().then((res) => {
        this.personTag = res.list;
      });
      getSocialDistinction().then((res) => {
        this.socialDistinction = res.list;
      });
    },
    resetForm(formName) {
      this.formData = {
        name: "",
        actively: [],
        works: "",
        personTags: "",
        socialIdentity: "",
        period: ""
      };
    },
    searchFun() {
      console.log(this.formData);
    },
    selectActively() {
      this.drawer = true;
    },
    handleClose(done) {
      done();
    },
    // 获取人物关系
    getPersonInfo(arr, str, newArr, order, type, parent) {
      for (let i = 0; i < arr.length; i++) {
@@ -274,7 +344,7 @@
            parentName: parent?.NAME[0]?.content1 ?? parent.parentName,
            name: personInfo?.NAME[0]?.content1,
            category: type,
            symbolSize: 15,
            symbolSize: 15
          };
          if (order > 80) {
            order = 80;
@@ -376,7 +446,7 @@
              const data = item[str]?.map((e) => {
                return {
                  ...e,
                  personId: item.personId,
                  personId: item.personId
                };
              });
              if (ele[str] && data?.length) {
@@ -519,19 +589,19 @@
            ...literature,
            ...social,
            ...place,
            ...school,
            ...school
          ];
          personData.forEach((item) => {
            this.nodes.push({
              name: item.name,
              id: item.personId,
              ...item,
              ...item
            });
            let obj = {
              source: item.parentName,
              target: item.name,
              relation: item.relationTypeName || "", // 如果存在 relationName 字段则使用,否则为空字符串
              relation: item.relationTypeName || "" // 如果存在 relationName 字段则使用,否则为空字符串
            };
            this.relationships.push(obj);
          });
@@ -561,7 +631,7 @@
        }
        return {
          ...item,
          symbolSize: size > 80 ? 80 : size,
          symbolSize: size > 80 ? 80 : size
        };
      });
@@ -616,8 +686,8 @@
                borderRadius: 30,
                position: "middle", // 设置标签文本在线的中间位置上居中显示
                // z: -1, // 设置标签的z轴高度,使其比连接线更高
                distance: -10, // 将标签放置在连接线上
              },
                distance: -10 // 将标签放置在连接线上
              }
            });
          }
        }
@@ -640,8 +710,8 @@
            orient: "vertical",
            data: this.categories.map(function (a) {
              return a.name;
            }),
          },
            })
          }
        ],
        series: [
          {
@@ -656,28 +726,28 @@
            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
            }
          }
        ]
      };
      // 设置点击事件监听
      myChart.off("click");
@@ -719,7 +789,7 @@
            i += 1;
            return e["content" + i];
          }).join("、") ?? "",
        biography: data?.BIOGRAPHY ?? "",
        biography: data?.BIOGRAPHY ?? ""
      };
      this.detailData = obj;
    },
@@ -748,7 +818,7 @@
      academicSearch({
        keyword: key,
        page: this.personPageInfo.page,
        pageSize: this.personPageInfo.limit,
        pageSize: this.personPageInfo.limit
      }).then((res) => {
        this.personList = res.list.map((item) => {
          return {
@@ -769,7 +839,7 @@
            division:
              item.medicalBranchList && item.medicalBranchList.length
                ? item.medicalBranchList[0].content1
                : "-",
                : "-"
          };
        });
        this.showPerson = true;
@@ -779,7 +849,7 @@
    spaceTimeArr(id) {
      // 关系图的数据
      uni.navigateTo({
        url: "/pages/character/detail?id=" + id,
        url: "/pages/character/detail?id=" + id
      });
    },
    // 获取朝代echarts的数据
@@ -803,7 +873,7 @@
        this.hotKeyList = indexList.map((item) => {
          return {
            id: item,
            name: res.object[item],
            name: res.object[item]
          };
        });
      });
@@ -818,8 +888,8 @@
      //     document.querySelector(".fbox1").style.height = box1Height + "px";
      //   }
      // });
    },
  },
    }
  }
};
</script>
@@ -956,4 +1026,22 @@
    cursor: pointer;
  }
}
.selectActivelyBox {
  cursor: pointer;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  padding: 0 0.12rem;
  font-size: 12px;
  color: #c0c4cc;
}
.el-drawer__wrapper{
  top: 0.86rem;
}
::v-deep .el-drawer__open .el-drawer.rtl{
  width: 50% !important;
}
</style>