提交 fead13ed authored 作者: 刘宇琪's avatar 刘宇琪

fix: 科技人物样式修改

上级 b450f7fd
...@@ -20,11 +20,15 @@ ...@@ -20,11 +20,15 @@
<button <button
:class="['news-tab', { active: activeTab === 'local' }]" :class="['news-tab', { active: activeTab === 'local' }]"
@click="$emit('update:activeTab', 'local')" @click="$emit('update:activeTab', 'local')"
> 报告</button> > 智库报告</button>
<button <button
:class="['news-tab', { active: activeTab === 'capital' }]" :class="['news-tab', { active: activeTab === 'capital' }]"
@click="$emit('update:activeTab', 'capital')" @click="$emit('update:activeTab', 'capital')"
> 项目</button> > 调查项目</button>
<button
:class="['news-tab', { active: activeTab === 'hearing' }]"
@click="$emit('update:activeTab', 'hearing')"
> 听证会</button>
</div> </div>
<div class="news-sort" ref="sortDropdownRef"> <div class="news-sort" ref="sortDropdownRef">
......
...@@ -12,12 +12,12 @@ export const CHARACTER_CONFIG = { ...@@ -12,12 +12,12 @@ export const CHARACTER_CONFIG = {
useImageProxy: false, useImageProxy: false,
headerTagType: "areaTag", headerTagType: "areaTag",
wordCloudTitle: "科技观点", wordCloudTitle: "科技观点",
yearDefault: "全部时间", yearDefault: "全部",
yearBuildMode: "dynamic", yearBuildMode: "dynamic",
yearStaticOptions: [], yearStaticOptions: [],
showFundSource: false, showFundSource: false,
resumeMode: "inline", resumeMode: "inline",
resumeTitle: "职业履历", resumeTitle: "生涯履历",
resumeHeight: "1336px", resumeHeight: "1336px",
companySectionTitle: "实体信息", companySectionTitle: "实体信息",
basicInfoFields: [ basicInfoFields: [
...@@ -51,13 +51,13 @@ export const CHARACTER_CONFIG = { ...@@ -51,13 +51,13 @@ export const CHARACTER_CONFIG = {
headerTagType: "inline", headerTagType: "inline",
wordCloudTitle: "科技观点", wordCloudTitle: "科技观点",
yearDefault: "全部", yearDefault: "全部",
yearBuildMode: "static", yearBuildMode: "dynamic",
yearStaticOptions: ["全部", "2025", "2024", "2023", "2022", "2021", "2020"], yearStaticOptions: [],
showFundSource: true, showFundSource: true,
resumeMode: "inline", resumeMode: "inline",
resumeTitle: "职业履历", resumeTitle: "生涯履历",
resumeHeight: "1556px", resumeHeight: "1556px",
companySectionTitle: "社交媒体", companySectionTitle: "实体信息",
basicInfoFields: [ basicInfoFields: [
{ label: "出生日期:", key: "birthday", type: "text" }, { label: "出生日期:", key: "birthday", type: "text" },
{ label: "现任职位:", key: "positionTitle", type: "text" }, { label: "现任职位:", key: "positionTitle", type: "text" },
...@@ -89,13 +89,13 @@ export const CHARACTER_CONFIG = { ...@@ -89,13 +89,13 @@ export const CHARACTER_CONFIG = {
headerTagType: "areaTag", headerTagType: "areaTag",
wordCloudTitle: "核心观点", wordCloudTitle: "核心观点",
yearDefault: "全部", yearDefault: "全部",
yearBuildMode: "static", yearBuildMode: "dynamic",
yearStaticOptions: ["全部", "2026", "2025", "2024", "2023", "2022", "2021"], yearStaticOptions: [],
showFundSource: false, showFundSource: false,
resumeMode: "card", resumeMode: "inline",
resumeTitle: "政治履历", resumeTitle: "生涯履历",
resumeHeight: null, resumeHeight: null,
companySectionTitle: "社交媒体", companySectionTitle: "实体信息",
basicInfoFields: [ basicInfoFields: [
{ label: "出生日期:", key: "birthday", type: "text" }, { label: "出生日期:", key: "birthday", type: "text" },
{ label: "现任职位:", key: "positionTitle", type: "text" }, { label: "现任职位:", key: "positionTitle", type: "text" },
......
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
<div class="right"> <div class="right">
<!-- 基本信息 --> <!-- 基本信息 -->
<AnalysisBox title="基本信息" width="520px" :height="boxHeight" :show-all-btn="false" class="right-top" v-if="characterBasicInfo"> <AnalysisBox title="基本信息" width="520px" :show-all-btn="false" class="right-top auto-height-box" v-if="characterBasicInfo">
<div class="main-content"> <div class="main-content">
<div class="baseInfo"> <div class="baseInfo">
<div v-for="field in config.basicInfoFields" :key="field.key" class="baseInfo-item"> <div v-for="field in config.basicInfoFields" :key="field.key" class="baseInfo-item">
...@@ -183,7 +183,7 @@ ...@@ -183,7 +183,7 @@
</div> </div>
<div class="company"> <div class="company">
<div class="company-title">{{ config.companySectionTitle }}</div> <div class="company-title">{{ config.companySectionTitle }}</div>
<div class="company-content"> <div class="company-content" v-if="characterBasicInfo.organizationList && characterBasicInfo.organizationList.length > 0">
<div v-for="item in characterBasicInfo.organizationList" :key="item" <div v-for="item in characterBasicInfo.organizationList" :key="item"
class="company-item"> class="company-item">
<img :src="item.imageUrl ? item.imageUrl : DefaultIcon2" alt="" /> <img :src="item.imageUrl ? item.imageUrl : DefaultIcon2" alt="" />
...@@ -193,6 +193,7 @@ ...@@ -193,6 +193,7 @@
</div> </div>
</div> </div>
</div> </div>
<el-empty v-else description="暂无数据" :image-size="60" />
</div> </div>
</div> </div>
</AnalysisBox> </AnalysisBox>
......
<template> <template>
<div class="character-page"> <div class="character-page">
<img src="./assets/images/background.png" alt="" class="bg" /> <img src="./assets/images/background.png" alt="" class="bg" />
<ModuleHeader />
<!-- 主要内容 --> <!-- 主要内容 -->
<div class="main"> <div class="main">
<unified-character :type="type" :person-id="personId" /> <unified-character :type="type" :person-id="personId" />
...@@ -13,7 +12,6 @@ ...@@ -13,7 +12,6 @@
import { ref, onMounted } from 'vue'; import { ref, onMounted } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import UnifiedCharacter from './components/unified/index.vue'; import UnifiedCharacter from './components/unified/index.vue';
import ModuleHeader from '@/components/base/moduleHeader/index.vue';
import { getCharacterGlobalInfo } from "@/api/characterPage/characterPage.js"; import { getCharacterGlobalInfo } from "@/api/characterPage/characterPage.js";
......
...@@ -11,16 +11,19 @@ ...@@ -11,16 +11,19 @@
<div class="table-body"> <div class="table-body">
<div class="table-row" v-for="(item, index) in personList" :key="index"> <div class="table-row" v-for="(item, index) in personList" :key="index">
<!-- 人物信息列 --> <!-- 人物信息列 -->
<div class="row-col col-person"> <div class="row-col col-person" @click="handleClickToCharacter(item.personId)">
<div style="margin: 7px 12px 7px 24px;"> <div style="margin: 7px 12px 7px 24px;">
<img :src="item.avatar" class="avatar" alt="avatar" /> <img :src="item.avatar" class="avatar" alt="avatar" />
<div class="person-tags"> <div class="person-tags">
<div class="person-tag-bg" v-for="(tag, tIdx) in item.tags" :key="tIdx"> <div class="person-tag-bg" v-if="item.party === 'Republican' || item.party === '共和党'">
<img :src="getTagIconUrl(tag)" class="tag-icon" alt="tag" /> <img :src="getTagIconUrl('1')" class="tag-icon" alt="tag" />
</div> </div>
<div class="person-tag-bg" v-if="item.party && item.party !== 'Republican' && item.party !== '共和党'">
<img :src="getTagIconUrl('2')" class="tag-icon" alt="tag" />
</div> </div>
</div> </div>
<div class="person-info" @click="handleClickToCharacter(item.personId)"> </div>
<div class="person-info">
<div class="person-name">{{ item.name }}</div> <div class="person-name">{{ item.name }}</div>
<div class="person-position">{{ item.position }}</div> <div class="person-position">{{ item.position }}</div>
</div> </div>
...@@ -67,11 +70,8 @@ watch(() => [props.persontypeid,props.yearSelect], (val) => { ...@@ -67,11 +70,8 @@ watch(() => [props.persontypeid,props.yearSelect], (val) => {
}) })
const getTagIconUrl = (tag) => { const getTagIconUrl = (tag) => {
// 用 import.meta.glob 预加载所有图标,支持动态匹配
const icons = import.meta.glob('../assets/images/header-icon*.png', { eager: true, as: 'url' }); const icons = import.meta.glob('../assets/images/header-icon*.png', { eager: true, as: 'url' });
// 拼接对应路径,匹配预加载的图标
const iconPath = `../assets/images/header-icon${tag}.png`; const iconPath = `../assets/images/header-icon${tag}.png`;
// 兜底:如果没有对应tag的图片,返回默认图或空
return icons[iconPath] || ''; return icons[iconPath] || '';
}; };
// 获取主要人物涉华观点统计 // 获取主要人物涉华观点统计
...@@ -90,7 +90,7 @@ const handlegetMainCharactersViewFn = async () => { ...@@ -90,7 +90,7 @@ const handlegetMainCharactersViewFn = async () => {
avatar: item.personImage, avatar: item.personImage,
name: item.personName, name: item.personName,
position: item.positionTitle, position: item.positionTitle,
tags: ["1", "2"], party: item.party || '',
chinaRelatedCount: item.remarksCount, chinaRelatedCount: item.remarksCount,
mediaQuoteCount: item.remarksCount, mediaQuoteCount: item.remarksCount,
personId:item.personId personId:item.personId
...@@ -197,6 +197,7 @@ const getProgress = count => (count / getMaxCount()) * 100; ...@@ -197,6 +197,7 @@ const getProgress = count => (count / getMaxCount()) * 100;
/* 人物列样式 */ /* 人物列样式 */
.col-person { .col-person {
align-items: flex-start; align-items: flex-start;
cursor: pointer;
} }
.avatar { .avatar {
...@@ -244,9 +245,9 @@ const getProgress = count => (count / getMaxCount()) * 100; ...@@ -244,9 +245,9 @@ const getProgress = count => (count / getMaxCount()) * 100;
.person-tags { .person-tags {
display: flex; display: flex;
justify-content: space-between;
margin-top: -20px; margin-top: -20px;
width: 42px; width: 42px;
text-align: center; text-align: center;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论