Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
dcc1e867
提交
dcc1e867
authored
3月 27, 2026
作者:
朱政
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:修复智库部分样式问题
上级
f922b4b8
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
126 行增加
和
111 行删除
+126
-111
index.vue
src/views/thinkTank/MultiThinkTankViewAnalysis/index.vue
+10
-9
index.vue
src/views/thinkTank/ReportDetail/policyTracking/index.vue
+22
-6
index.vue
src/views/thinkTank/ReportDetail/reportAnalysis/index.vue
+51
-51
index.vue
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
+4
-4
index.vue
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
+11
-30
ThinkTankPolicyAdviceOverview.vue
...ws/thinkTank/components/ThinkTankPolicyAdviceOverview.vue
+12
-1
index.vue
src/views/thinkTank/index.vue
+1
-1
index.vue
src/views/thinkTank/reportOriginal/index.vue
+15
-9
没有找到文件。
src/views/thinkTank/MultiThinkTankViewAnalysis/index.vue
浏览文件 @
dcc1e867
...
@@ -228,11 +228,9 @@
...
@@ -228,11 +228,9 @@
<
div
v
-
for
=
"(sv, svIdx) in item.sourceViewDetails"
:
key
=
"`${sv.report_id
}
-${sv.view_id
}
-${svIdx
}
`"
<
div
v
-
for
=
"(sv, svIdx) in item.sourceViewDetails"
:
key
=
"`${sv.report_id
}
-${sv.view_id
}
-${svIdx
}
`"
class
=
"source-view-detail"
>
class
=
"source-view-detail"
>
<
div
class
=
"source-view-detail-title"
>
<
div
class
=
"source-view-detail-title"
>
<
span
<
span
class
=
"source-view-detail-title-text"
class
=
"source-view-detail-title-text"
:
class
=
"{ 'is-clickable-report': hasReportLinkForSourceView(sv)
}
"
:
class
=
"{ 'is-clickable-report': hasReportLinkForSourceView(sv)
}
"
@
click
.
stop
=
"handleOpenReportOriginalFromSource(sv)"
@
click
.
stop
=
"handleOpenReportOriginalFromSource(sv)"
>
{{
getSourceViewDisplayTitle
(
sv
)
}}
<
/span
>
>
{{
getSourceViewDisplayTitle
(
sv
)
}}
<
/span
>
<
span
class
=
"source-view-detail-org"
v
-
if
=
"sv.thinktankName || sv.thinktankLogoUrl"
>
<
span
class
=
"source-view-detail-org"
v
-
if
=
"sv.thinktankName || sv.thinktankLogoUrl"
>
<
img
v
-
if
=
"sv.thinktankLogoUrl"
:
src
=
"sv.thinktankLogoUrl"
alt
=
""
/>
<
img
v
-
if
=
"sv.thinktankLogoUrl"
:
src
=
"sv.thinktankLogoUrl"
alt
=
""
/>
<
span
class
=
"source-view-detail-org-text"
>
{{
sv
.
thinktankName
}}
<
/span
>
<
span
class
=
"source-view-detail-org-text"
>
{{
sv
.
thinktankName
}}
<
/span
>
...
@@ -278,11 +276,10 @@
...
@@ -278,11 +276,10 @@
<
div
v
-
for
=
"(sv, svIdx) in item.sourceViewDetails"
<
div
v
-
for
=
"(sv, svIdx) in item.sourceViewDetails"
:
key
=
"`${sv.report_id
}
-${sv.view_id
}
-${svIdx
}
`"
class
=
"source-view-detail"
>
:
key
=
"`${sv.report_id
}
-${sv.view_id
}
-${svIdx
}
`"
class
=
"source-view-detail"
>
<
div
class
=
"source-view-detail-title"
>
<
div
class
=
"source-view-detail-title"
>
<
span
<
span
class
=
"source-view-detail-title-text"
class
=
"source-view-detail-title-text"
:
class
=
"{ 'is-clickable-report': hasReportLinkForSourceView(sv)
}
"
:
class
=
"{ 'is-clickable-report': hasReportLinkForSourceView(sv)
}
"
@
click
.
stop
=
"handleOpenReportOriginalFromSource(sv)"
@
click
.
stop
=
"handleOpenReportOriginalFromSource(sv)"
>
{{
getSourceViewDisplayTitle
(
sv
)
>
{{
getSourceViewDisplayTitle
(
sv
)
}}
<
/span
>
}}
<
/span
>
<
span
class
=
"source-view-detail-org"
v
-
if
=
"sv.thinktankName || sv.thinktankLogoUrl"
>
<
span
class
=
"source-view-detail-org"
v
-
if
=
"sv.thinktankName || sv.thinktankLogoUrl"
>
<
img
v
-
if
=
"sv.thinktankLogoUrl"
:
src
=
"sv.thinktankLogoUrl"
alt
=
""
/>
<
img
v
-
if
=
"sv.thinktankLogoUrl"
:
src
=
"sv.thinktankLogoUrl"
alt
=
""
/>
<
span
class
=
"source-view-detail-org-text"
>
{{
sv
.
thinktankName
}}
<
/span
>
<
span
class
=
"source-view-detail-org-text"
>
{{
sv
.
thinktankName
}}
<
/span
>
...
@@ -1007,6 +1004,8 @@ onMounted(async () => {
...
@@ -1007,6 +1004,8 @@ onMounted(async () => {
flex
-
direction
:
column
;
flex
-
direction
:
column
;
align
-
items
:
center
;
align
-
items
:
center
;
overflow
-
y
:
auto
;
height
:
100
vh
;
.
header
{
.
header
{
...
@@ -1197,7 +1196,9 @@ onMounted(async () => {
...
@@ -1197,7 +1196,9 @@ onMounted(async () => {
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
1600
px
;
width
:
1600
px
;
height
:
1094
px
;
height
:
950
px
;
margin
-
bottom
:
100
px
;
.
box1
{
.
box1
{
width
:
480
px
;
width
:
480
px
;
...
...
src/views/thinkTank/ReportDetail/policyTracking/index.vue
浏览文件 @
dcc1e867
...
@@ -39,10 +39,10 @@
...
@@ -39,10 +39,10 @@
</div>
</div>
</div>
</div>
<div
class=
"box4-main-footer"
>
<div
class=
"box4-main-footer"
>
<div
class=
"info"
>
共
{{
opinionsTotal
}}
条
核心论点
</div>
<div
class=
"info"
>
共
{{
opinionsTotal
}}
条
政策建议
</div>
<div
class=
"page-box"
>
<div
class=
"page-box"
>
<el-pagination
:page
-size=
"pageSize"
background
layout=
"prev, pager, next"
:total=
"opinionsTotal
"
<el-pagination
:page
r-count=
"4"
:page-size=
"pageSize"
background
layout=
"prev, pager, next
"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
/>
:total=
"opinionsTotal"
@
current-change=
"handleCurrentChange"
:current-page=
"currentPage"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -368,7 +368,7 @@ onMounted(async () => {
...
@@ -368,7 +368,7 @@ onMounted(async () => {
.left
{
.left
{
width
:
506px
;
width
:
506px
;
gap
:
12
px
;
gap
:
8
px
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
...
@@ -406,19 +406,32 @@ onMounted(async () => {
...
@@ -406,19 +406,32 @@ onMounted(async () => {
width
:
506px
;
width
:
506px
;
gap
:
8px
;
gap
:
8px
;
display
:
flex
;
display
:
flex
;
height
:
28px
;
align-items
:
flex-start
;
margin-top
:
4px
;
padding-bottom
:
0
;
box-sizing
:
border-box
;
overflow-x
:
auto
;
overflow-y
:
hidden
;
scrollbar-gutter
:
stable
;
.tag
{
.tag
{
height
:
28px
;
height
:
28px
;
margin-bottom
:
4px
;
border
:
1px
solid
rgb
(
230
,
231
,
232
);
border
:
1px
solid
rgb
(
230
,
231
,
232
);
border-radius
:
4px
;
border-radius
:
4px
;
width
:
auto
!
important
;
flex-shrink
:
0
;
/* 不被压缩 */
padding
:
0px
8px
;
padding
:
0px
8px
;
display
:
flex
;
display
:
flex
;
cursor
:
pointer
;
cursor
:
pointer
;
white-space
:
nowrap
;
/* 强制不换行 */
&
.tag-active
{
&
.tag-active
{
border-color
:
rgb
(
5
,
95
,
194
);
border-color
:
rgb
(
5
,
95
,
194
);
...
@@ -426,6 +439,7 @@ onMounted(async () => {
...
@@ -426,6 +439,7 @@ onMounted(async () => {
.tag-text
{
.tag-text
{
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
}
}
}
}
...
@@ -515,6 +529,8 @@ onMounted(async () => {
...
@@ -515,6 +529,8 @@ onMounted(async () => {
.box4-main-footer
{
.box4-main-footer
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
/* empty */
}
}
}
}
...
...
src/views/thinkTank/ReportDetail/reportAnalysis/index.vue
浏览文件 @
dcc1e867
...
@@ -73,8 +73,13 @@
...
@@ -73,8 +73,13 @@
<
template
v-else
>
<
template
v-else
>
<div
class=
"box5Chart"
>
<div
class=
"box5Chart"
>
<!-- 有数据后再挂载子组件:子组件仅在 onMounted 初始化,异步数据到达后需 v-if + key 强制重新挂载 -->
<!-- 有数据后再挂载子组件:子组件仅在 onMounted 初始化,异步数据到达后需 v-if + key 强制重新挂载 -->
<WordCloudChart
v-if=
"box5Data.length"
:key=
"box5WordCloudKey"
:data=
"box5Data"
width=
"100%"
<WordCloudChart
height=
"100%"
/>
v-if=
"box5Data.length"
:key=
"box5WordCloudKey"
:data=
"box5Data"
width=
"432px"
height=
"272px"
/>
</div>
</div>
<div
class=
"box5-footer"
>
<div
class=
"box5-footer"
>
<TipTab
:text=
"REPORT_ANALYSIS_TIP_BOX5"
/>
<TipTab
:text=
"REPORT_ANALYSIS_TIP_BOX5"
/>
...
@@ -356,54 +361,21 @@ const handleClickReportAuthor = async (author) => {
...
@@ -356,54 +361,21 @@ const handleClickReportAuthor = async (author) => {
const
personId
=
author
?.
id
;
const
personId
=
author
?.
id
;
if
(
!
personId
)
return
;
if
(
!
personId
)
return
;
let
personTypeList
=
[];
try
{
personTypeList
=
JSON
.
parse
(
window
.
sessionStorage
.
getItem
(
"personTypeList"
)
||
"[]"
);
}
catch
(
e
)
{
personTypeList
=
[];
}
const
params
=
{
personId
};
const
params
=
{
personId
};
try
{
const
res
=
await
getPersonSummaryInfo
(
params
);
if
(
res
.
code
!==
200
||
!
res
.
data
)
return
;
const
arr
=
personTypeList
.
filter
((
t
)
=>
{
const
typeIdNum
=
Number
(
t
.
typeId
);
const
personTypeNum
=
Number
(
res
.
data
.
personType
);
return
!
Number
.
isNaN
(
typeIdNum
)
&&
!
Number
.
isNaN
(
personTypeNum
)
&&
typeIdNum
===
personTypeNum
;
});
if
(
!
arr
.
length
)
{
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
const
personTypeName
=
arr
[
0
]?.
typeName
||
""
;
const
res
=
await
getPersonSummaryInfo
(
params
);
let
type
=
0
;
if
(
res
.
code
!==
200
||
!
res
.
data
)
return
;
if
(
personTypeName
===
"科技企业领袖"
)
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
author
?.
name
||
""
);
type
=
1
;
const
route
=
router
.
resolve
({
}
else
if
(
personTypeName
===
"国会议员"
)
{
path
:
"/characterPage"
,
type
=
2
;
query
:
{
}
else
if
(
personTypeName
===
"智库研究人员"
)
{
personId
type
=
3
;
}
else
{
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
}
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
author
?.
name
||
""
);
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
,
personId
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
catch
(
error
)
{
console
.
error
(
"点击报告作者头像跳转失败"
,
error
);
}
};
};
const
riskSignal
=
computed
(()
=>
{
const
riskSignal
=
computed
(()
=>
{
const
info
=
props
.
thinkInfo
||
{};
const
info
=
props
.
thinkInfo
||
{};
...
@@ -921,10 +893,7 @@ onMounted(() => {
...
@@ -921,10 +893,7 @@ onMounted(() => {
.box5-main
{
.box5-main
{
width
:
480px
;
width
:
480px
;
height
:
361px
;
height
:
361px
;
padding-left
:
31px
;
padding
:
24px
24px
65px
24px
;
padding-right
:
32px
;
padding-top
:
26px
;
padding-bottom
:
43px
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
...
@@ -932,8 +901,8 @@ onMounted(() => {
...
@@ -932,8 +901,8 @@ onMounted(() => {
position
:
relative
;
position
:
relative
;
.box5Chart
{
.box5Chart
{
width
:
418px
;
width
:
100%
;
height
:
292px
;
height
:
100%
;
margin
:
0
auto
;
margin
:
0
auto
;
overflow
:
hidden
;
overflow
:
hidden
;
}
}
...
@@ -1023,6 +992,15 @@ onMounted(() => {
...
@@ -1023,6 +992,15 @@ onMounted(() => {
line-height
:
24px
;
line-height
:
24px
;
letter-spacing
:
0
;
letter-spacing
:
0
;
text-align
:
left
;
text-align
:
left
;
/* 👇 下面是 两行文本超出省略 核心代码 */
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
/* 限制显示 2 行 */
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
word-break
:
break-all
;
}
}
.report-footer
{
.report-footer
{
...
@@ -1385,9 +1363,14 @@ onMounted(() => {
...
@@ -1385,9 +1363,14 @@ onMounted(() => {
height
:
80px
;
height
:
80px
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
30px
5px
;
padding
:
30px
5px
;
box-sizing
:
border-box
;
overflow
:
hidden
;
.info
{
.info
{
flex
:
1
1
auto
;
min-width
:
0
;
color
:
rgba
(
132
,
136
,
142
,
1
);
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-size
:
14px
;
...
@@ -1396,6 +1379,23 @@ onMounted(() => {
...
@@ -1396,6 +1379,23 @@ onMounted(() => {
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
}
}
.page-box
{
/* 最大 300px:允许变小,但绝不变大 */
flex
:
0
1
300px
;
width
:
100%
;
max-width
:
300px
;
min-width
:
0
;
display
:
flex
;
justify-content
:
flex-end
;
overflow
:
hidden
;
}
.page-box
:deep
(
.el-pagination
)
{
max-width
:
100%
;
min-width
:
0
;
overflow
:
hidden
;
}
}
}
}
}
...
...
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
浏览文件 @
dcc1e867
...
@@ -237,7 +237,7 @@
...
@@ -237,7 +237,7 @@
<div
class=
"title"
v-html=
"highlightPolicyText(item.titleZh)"
></div>
<div
class=
"title"
v-html=
"highlightPolicyText(item.titleZh)"
></div>
<div
class=
"info"
>
<div
class=
"info"
>
<div
class=
"text"
>
<div
class=
"text"
>
<span
v-html=
"highlightPolicyText(`${item.reportDateDisplay}·${item.
contentZh
}`)"
></span>
<span
v-html=
"highlightPolicyText(`${item.reportDateDisplay}·${item.
reportName
}`)"
></span>
</div>
</div>
<div
class=
"more"
@
click=
"toDetail(item)"
>
<div
class=
"more"
@
click=
"toDetail(item)"
>
...
@@ -346,7 +346,7 @@ const getAreaTagColor = (name, idx = 0) =>
...
@@ -346,7 +346,7 @@ const getAreaTagColor = (name, idx = 0) =>
const
POLICY_TRACKING_TIP_BOX1
=
const
POLICY_TRACKING_TIP_BOX1
=
"智库报告中政策建议的领域分布情况,数据来源:美国兰德公司官网"
;
"智库报告中政策建议的领域分布情况,数据来源:美国兰德公司官网"
;
const
POLICY_TRACKING_TIP_BOX2
=
const
POLICY_TRACKING_TIP_BOX2
=
"智库报告中政策建议
涉及领域
分布情况,数据来源:美国兰德公司官网"
;
"智库报告中政策建议
部门
分布情况,数据来源:美国兰德公司官网"
;
const
POLICY_TRACKING_TIP_BOX3
=
const
POLICY_TRACKING_TIP_BOX3
=
"智库报告热门研究领域变化趋势,数据来源:美国兰德公司官网"
;
"智库报告热门研究领域变化趋势,数据来源:美国兰德公司官网"
;
...
@@ -1221,7 +1221,7 @@ function mapPolicyRowToView(row) {
...
@@ -1221,7 +1221,7 @@ function mapPolicyRowToView(row) {
const
toDetail
=
item
=>
{
const
toDetail
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
contentZh
??
item
.
content
??
""
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
contentZh
??
item
.
content
??
""
);
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
name
:
"Report
Detai
l"
,
name
:
"Report
Origina
l"
,
params
:
{
params
:
{
id
:
item
.
reportId
id
:
item
.
reportId
}
}
...
@@ -2110,7 +2110,7 @@ onMounted(async () => {
...
@@ -2110,7 +2110,7 @@ onMounted(async () => {
line-height
:
22px
;
line-height
:
22px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
width
:
1020px
;
white-space
:
nowrap
;
white-space
:
nowrap
;
/* 强制不换行,保持一行 */
/* 强制不换行,保持一行 */
overflow
:
hidden
;
overflow
:
hidden
;
...
...
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
浏览文件 @
dcc1e867
...
@@ -726,36 +726,15 @@ const handleClickPerson = async item => {
...
@@ -726,36 +726,15 @@ const handleClickPerson = async item => {
return
!
Number
.
isNaN
(
typeIdNum
)
&&
!
Number
.
isNaN
(
personTypeNum
)
&&
typeIdNum
===
personTypeNum
;
return
!
Number
.
isNaN
(
typeIdNum
)
&&
!
Number
.
isNaN
(
personTypeNum
)
&&
typeIdNum
===
personTypeNum
;
});
});
console
.
log
(
"arr"
,
arr
);
console
.
log
(
"arr"
,
arr
);
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
if
(
arr
&&
arr
.
length
>
0
)
{
personId
:
item
.
personId
personTypeName
=
arr
[
0
].
typeName
;
console
.
log
(
"personTypeName"
,
personTypeName
);
if
(
personTypeName
===
"科技企业领袖"
)
{
type
=
1
;
}
else
if
(
personTypeName
===
"国会议员"
)
{
type
=
2
;
}
else
if
(
personTypeName
===
"智库研究人员"
)
{
type
=
3
;
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
}
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
name
);
});
const
route
=
router
.
resolve
({
window
.
open
(
route
.
href
,
"_blank"
);
path
:
"/characterPage"
,
query
:
{
type
:
type
,
// type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId
:
item
.
personId
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
}
else
{
}
else
{
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
return
;
...
@@ -779,9 +758,10 @@ onMounted(() => {
...
@@ -779,9 +758,10 @@ onMounted(() => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.wrap
{
.wrap
{
width
:
100%
;
width
:
100%
;
height
:
100
%
;
height
:
100
vh
;
display
:
flex
;
display
:
flex
;
gap
:
16px
;
gap
:
16px
;
overflow-y
:
auto
;
.left
{
.left
{
margin-top
:
16px
;
margin-top
:
16px
;
...
@@ -910,7 +890,7 @@ onMounted(() => {
...
@@ -910,7 +890,7 @@ onMounted(() => {
.right
{
.right
{
width
:
1104px
;
width
:
1104px
;
/* 三栏:390 + 390 + 900,间距 16×2 */
/* 三栏:390 + 390 + 900,间距 16×2 */
height
:
17
1
2px
;
height
:
17
3
2px
;
margin-top
:
16px
;
margin-top
:
16px
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
...
@@ -1461,6 +1441,7 @@ onMounted(() => {
...
@@ -1461,6 +1441,7 @@ onMounted(() => {
.box.box-core-researchers
{
.box.box-core-researchers
{
width
:
1104px
;
width
:
1104px
;
height
:
900px
;
height
:
900px
;
margin-bottom
:
90px
;
flex-shrink
:
0
;
flex-shrink
:
0
;
}
}
...
...
src/views/thinkTank/components/ThinkTankPolicyAdviceOverview.vue
浏览文件 @
dcc1e867
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
<div
class=
"card-item-title"
>
{{
item
.
name
}}
</div>
<div
class=
"card-item-title"
>
{{
item
.
name
}}
</div>
<div
class=
"card-item-time"
>
<div
class=
"card-item-time"
>
<span
class=
"info-text"
>
{{
item
.
times
}}
·
{{
item
.
thinkTankName
}}
·
{{
item
.
reportName
}}
</span>
<span
class=
"info-text"
>
{{
item
.
times
}}
·
{{
item
.
thinkTankName
}}
·
{{
item
.
reportName
}}
</span>
<div
class=
"card-open-image"
>
<div
class=
"card-open-image"
@
click
.
stop=
"handleOpenReportOriginal(item)"
>
<img
src=
"@/views/thinkTank/ThinkTankDetail/thinkDynamics/images/image open.png"
alt=
""
/>
<img
src=
"@/views/thinkTank/ThinkTankDetail/thinkDynamics/images/image open.png"
alt=
""
/>
</div>
</div>
</div>
</div>
...
@@ -115,6 +115,17 @@ const emit = defineEmits(["filter-change", "page-change", "item-click"]);
...
@@ -115,6 +115,17 @@ const emit = defineEmits(["filter-change", "page-change", "item-click"]);
const
router
=
useRouter
();
const
router
=
useRouter
();
/** 打开报告原文:新标签页打开 /thinkTank/reportOriginal/:id(优先 reportId) */
const
handleOpenReportOriginal
=
(
item
)
=>
{
const
reportId
=
item
?.
reportId
||
item
?.
report_id
||
item
?.
id
if
(
!
reportId
)
return
const
route
=
router
.
resolve
({
name
:
"ReportOriginal"
,
params
:
{
id
:
String
(
reportId
)
}
})
window
.
open
(
route
.
href
,
"_blank"
)
}
/** 政策建议关联法案:新标签页打开法案介绍页,billId 随接口 id 变化 */
/** 政策建议关联法案:新标签页打开法案介绍页,billId 随接口 id 变化 */
const
handleBillMoreClick
=
(
bill
)
=>
{
const
handleBillMoreClick
=
(
bill
)
=>
{
const
billId
=
bill
?.
id
;
const
billId
=
bill
?.
id
;
...
...
src/views/thinkTank/index.vue
浏览文件 @
dcc1e867
...
@@ -200,7 +200,7 @@
...
@@ -200,7 +200,7 @@
<div
id=
"box5Chart"
class=
"box5-chart-canvas"
></div>
<div
id=
"box5Chart"
class=
"box5-chart-canvas"
></div>
</div>
</div>
<div
class=
"source"
>
<div
class=
"source"
>
<TipTab
:text=
"'智库报告数量变化趋势,数据来源
:
美国各智库官网'"
/>
<TipTab
:text=
"'智库报告数量变化趋势,数据来源
:
美国各智库官网'"
/>
</div>
</div>
<div
class=
"chart-box"
>
<div
class=
"chart-box"
>
<div
class=
"btn-box"
v-if=
"!isShowAiContentBox5"
@
mouseenter=
"handleSwitchAiContentShowBox5(true)"
>
<div
class=
"btn-box"
v-if=
"!isShowAiContentBox5"
@
mouseenter=
"handleSwitchAiContentShowBox5(true)"
>
...
...
src/views/thinkTank/reportOriginal/index.vue
浏览文件 @
dcc1e867
...
@@ -65,12 +65,8 @@
...
@@ -65,12 +65,8 @@
<pdf
ref=
"leftPdfRef"
:pdfUrl=
"reportUrlEnWithPage"
class=
"pdf-pane-inner"
/>
<pdf
ref=
"leftPdfRef"
:pdfUrl=
"reportUrlEnWithPage"
class=
"pdf-pane-inner"
/>
</div>
</div>
<div
class=
"pdf-pane-wrap"
:class=
"
{ 'is-full': !valueSwitch }" v-if="reportUrlWithPage">
<div
class=
"pdf-pane-wrap"
:class=
"
{ 'is-full': !valueSwitch }" v-if="reportUrlWithPage">
<pdf
<pdf
:key=
"`right-pdf-$
{valueSwitch ? 'split' : 'full'}`" ref="rightPdfRef" :pdfUrl="reportUrlWithPage"
:key=
"`right-pdf-$
{valueSwitch ? 'split' : 'full'}`"
class="pdf-pane-inner" />
ref="rightPdfRef"
:pdfUrl="reportUrlWithPage"
class="pdf-pane-inner"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -287,7 +283,8 @@ onMounted(async () => {
...
@@ -287,7 +283,8 @@ onMounted(async () => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.wrap
{
.wrap
{
overflow-y
:
auto
;
height
:
100vh
;
.header
{
.header
{
...
@@ -340,6 +337,14 @@ onMounted(async () => {
...
@@ -340,6 +337,14 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
/* 👇 下面是 两行文本超出省略 核心代码 */
display
:
-
webkit-box
;
-webkit-line-clamp
:
1
;
/* 限制显示 2 行 */
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
word-break
:
break-all
;
}
}
.tag-box
{
.tag-box
{
...
@@ -469,8 +474,9 @@ onMounted(async () => {
...
@@ -469,8 +474,9 @@ onMounted(async () => {
margin
:
0
auto
;
margin
:
0
auto
;
background
:
rgb
(
255
,
255
,
255
);
background
:
rgb
(
255
,
255
,
255
);
width
:
1600px
;
width
:
1600px
;
height
:
928px
;
height
:
948px
;
overflow
:
hidden
;
margin-bottom
:
86px
;
border
:
1px
,
solid
,
rgb
(
234
,
236
,
238
);
border
:
1px
,
solid
,
rgb
(
234
,
236
,
238
);
box-shadow
:
0
0
20px
0
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0
0
20px
0
rgba
(
25
,
69
,
130
,
0
.1
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论