Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
fead13ed
提交
fead13ed
authored
4月 13, 2026
作者:
刘宇琪
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 科技人物样式修改
上级
b450f7fd
全部展开
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
30 行增加
和
26 行删除
+30
-26
NewsTopBar.vue
...n/components/historicalProposal/components/NewsTopBar.vue
+6
-2
NewsTracker.vue
.../components/historicalProposal/components/NewsTracker.vue
+0
-0
config.js
src/views/characterPage/components/unified/config.js
+11
-11
index.vue
src/views/characterPage/components/unified/index.vue
+3
-2
index.vue
src/views/characterPage/index.vue
+0
-2
PersonTable.vue
src/views/technologyFigures/component/PersonTable.vue
+10
-9
没有找到文件。
src/views/characterPage/components/thinkTankPerson/components/historicalProposal/components/NewsTopBar.vue
浏览文件 @
fead13ed
...
@@ -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"
>
...
...
src/views/characterPage/components/thinkTankPerson/components/historicalProposal/components/NewsTracker.vue
浏览文件 @
fead13ed
差异被折叠。
点击展开。
src/views/characterPage/components/unified/config.js
浏览文件 @
fead13ed
...
@@ -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
:
"
stat
ic"
,
yearBuildMode
:
"
dynam
ic"
,
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
:
"
stat
ic"
,
yearBuildMode
:
"
dynam
ic"
,
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"
},
...
...
src/views/characterPage/components/unified/index.vue
浏览文件 @
fead13ed
...
@@ -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>
...
...
src/views/characterPage/index.vue
浏览文件 @
fead13ed
<
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"
;
...
...
src/views/technologyFigures/component/PersonTable.vue
浏览文件 @
fead13ed
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论