Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
a517e8f6
提交
a517e8f6
authored
4月 02, 2026
作者:
张伊明
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'zz-dev' 到 'pre'
feat:智库动态国会听证会增加领域标签;修改调查项目及国会听证会部分入参,完善相关功能 查看合并请求
!296
上级
7ab23b7c
c6b5f381
流水线
#293
已通过 于阶段
in 2 分 23 秒
变更
11
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
184 行增加
和
55 行删除
+184
-55
index.js
src/api/aiAnalysis/index.js
+2
-1
overview.js
src/api/thinkTank/overview.js
+14
-1
index.vue
src/views/coopRestriction/components/dataSub/index.vue
+6
-0
index.vue
src/views/thinkTank/CongressHearingView/index.vue
+17
-15
index.vue
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
+2
-0
index.vue
...k/ThinkTankDetail/thinkDynamics/CongressHearing/index.vue
+7
-12
index.vue
src/views/thinkTank/ThinkTankDetail/thinkDynamics/index.vue
+15
-3
HomeMainFooterMain.vue
src/views/thinkTank/components/HomeMainFooterMain.vue
+1
-0
ThinkTankCongressHearingOverview.vue
...thinkTank/components/ThinkTankCongressHearingOverview.vue
+37
-14
ThinkTankPolicyAdviceOverview.vue
...ws/thinkTank/components/ThinkTankPolicyAdviceOverview.vue
+1
-0
index.vue
src/views/thinkTank/index.vue
+82
-9
没有找到文件。
src/api/aiAnalysis/index.js
浏览文件 @
a517e8f6
...
...
@@ -196,7 +196,8 @@ export function getChartAnalysis(data, options = {}) {
},
body: JSON.stringify(data),
signal: abortController.signal,
openWhenHidden: true,
openWhenHidden: false,
retryDelay: 1000,
maxRetries: 2,
onopen: response => {
...
...
src/api/thinkTank/overview.js
浏览文件 @
a517e8f6
...
...
@@ -112,10 +112,11 @@ export function getThinkTankProjects(params) {
})
}
//智库概览页国会听证会
export
function
getThinkTankTestimonies
()
{
export
function
getThinkTankTestimonies
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/think-tank/testimonies`
,
params
})
}
//智库调查项目详情主页
...
...
@@ -142,6 +143,13 @@ export function getThinkTankProjectsByThinkTankId(params) {
params
:
{
pageNum
:
params
.
pageNum
,
pageSize
:
params
.
pageSize
,
sortFun
:
params
.
sortFun
,
sortField
:
params
.
sortField
,
sortOrder
:
params
.
sortOrder
,
domainIds
:
params
.
domainIds
,
startDate
:
params
.
startDate
,
endDate
:
params
.
endDate
,
projectName
:
params
.
projectName
,
}
})
}
...
...
@@ -154,6 +162,11 @@ export function getThinkTankTestimoniesByThinkTankId(params) {
params
:
{
pageNum
:
params
.
pageNum
,
pageSize
:
params
.
pageSize
,
domainIds
:
params
.
domainIds
,
startDate
:
params
.
startDate
,
endDate
:
params
.
endDate
,
title
:
params
.
title
,
}
})
}
...
...
src/views/coopRestriction/components/dataSub/index.vue
浏览文件 @
a517e8f6
...
...
@@ -849,6 +849,9 @@ onBeforeUnmount(() => {
position
:
absolute
;
right
:
0
;
bottom
:
18px
;
width
:
74px
;
height
:
28px
;
z-index
:
2
;
.btn-box
{
width
:
74px
;
...
...
@@ -953,6 +956,9 @@ onBeforeUnmount(() => {
position
:
absolute
;
right
:
0
;
bottom
:
18px
;
width
:
74px
;
height
:
28px
;
z-index
:
2
;
.btn-box
{
width
:
74px
;
...
...
src/views/thinkTank/CongressHearingView/index.vue
浏览文件 @
a517e8f6
...
...
@@ -83,23 +83,23 @@
<div
class=
"text-box"
>
<div
class=
"time"
>
<div
class=
"time-title"
>
发布时间:
</div>
<div
class=
"time-content"
>
{{
publishTim
e
}}
</div>
<div
class=
"time-content"
>
{{
thinkInfo
.
testimonyDat
e
}}
</div>
</div>
<div
class=
"topic"
>
<div
class=
"topic-title"
>
报告主题
:
</div>
<div
class=
"topic-content"
>
{{
reportTopic
}}
</div>
<div
class=
"topic-title"
>
委员会
:
</div>
<div
class=
"topic-content"
>
{{
thinkInfo
.
committeeZh
}}
</div>
</div>
<div
class=
"author"
>
<div
class=
"author-title"
>
报告作者:
</div>
<div
class=
"author-content"
>
<template
v-if=
"Array.isArray(
reportAuthors) && reportAuthor
s.length"
>
<span
v-if=
"
reportAuthor
s.length === 1"
>
{{
reportAuthor
s
[
0
].
name
}}
<template
v-if=
"Array.isArray(
thinkInfo.relatedPersons) && thinkInfo.relatedPerson
s.length"
>
<span
v-if=
"
thinkInfo.relatedPerson
s.length === 1"
>
{{
thinkInfo
.
relatedPerson
s
[
0
].
name
}}
</span>
<!-- 多个作者:显示第一个 + 等 -->
<span
v-else
>
{{
reportAuthors
[
0
].
name
}}
等
{{
reportAuthor
s
.
length
}}
人
{{
thinkInfo
.
relatedPersons
[
0
].
name
}}
等
{{
thinkInfo
.
relatedPerson
s
.
length
}}
人
</span>
</
template
>
...
...
@@ -107,11 +107,11 @@
</div>
</div>
<div
class=
"author-box"
>
<div
class=
"author-item"
v-for=
"(author, idx) in
reportAuthor
s"
:key=
"idx"
v-if=
"Array.isArray(
reportAuthors) && reportAuthor
s.length"
<div
class=
"author-item"
v-for=
"(author, idx) in
thinkInfo.relatedPerson
s"
:key=
"idx"
v-if=
"Array.isArray(
thinkInfo.relatedPersons) && thinkInfo.relatedPerson
s.length"
@
click=
"handleClickReportAuthor(author)"
>
<div
class=
"image"
><img
:src=
"author.avatar
? author.avatar
: DefaultIcon1"
alt=
""
@
error=
"() => { if (author.avatar
) author.avatar
= null; }"
/></div>
<div
class=
"image"
><img
:src=
"author.avatar
Url ? author.avatarUrl
: DefaultIcon1"
alt=
""
@
error=
"() => { if (author.avatar
Url) author.avatarUrl
= null; }"
/></div>
<div
class=
"author-text"
>
<div
class=
"author-name"
>
{{ author.name }}
</div>
...
...
@@ -932,7 +932,7 @@ onMounted(() => {
flex-direction
:
column
;
.time
{
height
:
24
px
;
height
:
30
px
;
display
:
flex
;
gap
:
4px
;
...
...
@@ -942,7 +942,7 @@ onMounted(() => {
font-family
:
"Source Han Sans CN"
;
font-weight
:
700
;
font-size
:
16px
;
line-height
:
24
px
;
line-height
:
30
px
;
letter-spacing
:
1px
;
text-align
:
left
;
color
:
rgb
(
59
,
65
,
75
);
...
...
@@ -958,6 +958,7 @@ onMounted(() => {
letter-spacing
:
0px
;
text-align
:
left
;
color
:
rgb
(
59
,
65
,
75
);
margin-top
:
3px
;
}
}
...
...
@@ -972,7 +973,7 @@ onMounted(() => {
font-family
:
"Source Han Sans CN"
;
font-weight
:
700
;
font-size
:
16px
;
line-height
:
24
px
;
line-height
:
30
px
;
letter-spacing
:
1px
;
text-align
:
left
;
color
:
rgb
(
59
,
65
,
75
);
...
...
@@ -1004,7 +1005,7 @@ onMounted(() => {
font-family
:
"Source Han Sans CN"
;
font-weight
:
700
;
font-size
:
16px
;
line-height
:
24
px
;
line-height
:
30
px
;
letter-spacing
:
1px
;
text-align
:
left
;
color
:
rgb
(
59
,
65
,
75
);
...
...
@@ -1016,6 +1017,7 @@ onMounted(() => {
font-family
:
"Source Han Sans CN"
;
font-weight
:
400
;
font-size
:
16px
;
margin-top
:
3px
;
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
left
;
...
...
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
浏览文件 @
a517e8f6
...
...
@@ -2125,6 +2125,7 @@ onMounted(async () => {
height
:
16px
;
margin-top
:
3px
;
margin-left
:
9px
;
cursor
:
pointer
;
img
{
width
:
100%
;
...
...
@@ -2198,6 +2199,7 @@ onMounted(async () => {
height
:
20px
;
display
:
flex
;
margin-top
:
2px
;
cursor
:
pointer
;
.img
{
width
:
100%
;
...
...
src/views/thinkTank/ThinkTankDetail/thinkDynamics/CongressHearing/index.vue
浏览文件 @
a517e8f6
...
...
@@ -76,7 +76,7 @@
<div
class=
"card-box"
>
<div
class=
"card-content"
>
<div
v-for=
"(item, index) in hearingData"
:key=
"item.id"
>
<div
class=
"card-item"
@
click=
"handleToReportDetail(item)"
>
<div
class=
"card-item"
>
<img
class=
"card-item-img"
:src=
"item.coverImgUrl"
alt=
"report image"
/>
<div
class=
"card-item-text"
>
...
...
@@ -88,7 +88,9 @@
<img
src=
"../images/image open.png"
alt=
"open icon"
class=
"card-open-image"
@
click
.
stop=
"handleToReportDetail(item)"
/>
</div>
<div
class=
"card-item-category"
v-if=
"item.category"
>
{{
item
.
category
}}
</div>
<div
class=
"card-item-category"
>
<AreaTag
v-for=
"(val, idx) in item.category"
:key=
"idx"
:tagName=
"val"
/>
</div>
</div>
</div>
...
...
@@ -558,19 +560,12 @@ const handleToReportDetail = item => {
.card-item-category
{
padding
:
1px
8px
;
box-sizing
:
border-box
;
border
:
1px
solid
rgb
(
231
,
243
,
255
);
border-radius
:
4px
;
display
:
inline-flex
;
background-color
:
rgb
(
247
,
248
,
249
);
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
line-height
:
20px
;
letter-spacing
:
0px
;
gap
:
8px
;
text-align
:
left
;
width
:
fit-content
;
}
...
...
src/views/thinkTank/ThinkTankDetail/thinkDynamics/index.vue
浏览文件 @
a517e8f6
...
...
@@ -373,7 +373,7 @@ const mapTestimonyToHearingItem = (raw, index) => {
item
.
summary
||
item
.
subtitle
||
""
,
category
:
item
.
category
||
item
.
domain
||
item
.
area
||
item
.
field
||
""
category
:
item
.
category
||
item
.
domain
s
||
item
.
area
||
item
.
field
||
""
};
};
...
...
@@ -414,7 +414,12 @@ const handleGetThinkDynamicsReport = async (payload) => {
const
res
=
await
getThinkTankTestimoniesByThinkTankId
({
thinkTankId
,
pageNum
:
Math
.
max
(
0
,
(
currentPage
.
value
||
1
)),
pageSize
:
10
pageSize
:
10
,
domainIds
,
startDate
,
endDate
,
title
:
keyword
||
undefined
});
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
list
=
Array
.
isArray
(
res
.
data
.
content
)
?
res
.
data
.
content
:
Array
.
isArray
(
res
.
data
)
?
res
.
data
:
[];
...
...
@@ -432,7 +437,14 @@ const handleGetThinkDynamicsReport = async (payload) => {
const
res
=
await
getThinkTankProjectsByThinkTankId
({
thinkTankId
,
pageNum
:
currentPage
.
value
,
pageSize
:
12
pageSize
:
12
,
sortFun
:
sort
.
value
===
true
,
sortField
:
"startDate"
,
sortOrder
:
sort
.
value
===
true
?
"asc"
:
"desc"
,
domainIds
,
startDate
,
endDate
,
projectName
:
keyword
||
undefined
});
if
(
res
.
code
===
200
&&
res
.
data
)
{
curFooterProjectList
.
value
=
res
.
data
.
content
||
[];
...
...
src/views/thinkTank/components/HomeMainFooterMain.vue
浏览文件 @
a517e8f6
...
...
@@ -210,6 +210,7 @@ const formatDate = (str) => {
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
cursor
:
pointer
;
.footer-card-top
{
width
:
364px
;
...
...
src/views/thinkTank/components/ThinkTankCongressHearingOverview.vue
浏览文件 @
a517e8f6
...
...
@@ -60,18 +60,21 @@
<div
class=
"card-content"
>
<div
v-for=
"(item, index) in hearingData"
:key=
"item.id ?? index"
>
<div
class=
"card-item"
>
<img
class=
"card-item-img"
:src=
item.coverImgUrl
alt=
"report image"
/>
<img
class=
"card-item-img"
:src=
"item.coverImgUrl"
alt=
"report image"
/>
<div
class=
"card-item-text"
>
<div
class=
"card-item-title"
>
{{
item
.
titleZh
}}
</div>
<div
class=
"card-item-time"
>
{{
item
.
testimonyDate
+
' · '
+
item
.
committeeZh
}}
{{
item
.
testimonyDate
+
' · '
+
item
.
thinkTankName
+
' · '
+
item
.
committeeZh
}}
<img
src=
"../ThinkTankDetail/thinkDynamics/images/image open.png"
alt=
"open icon"
class=
"card-open-image"
@
click=
"emit('report-click', item)"
/>
</div>
<div
class=
"card-item-category"
v-if=
"item.category"
>
<AreaTag
:key=
"`cat-$
{item.id}`" :tagName="item.category" />
<div
class=
"card-item-category"
v-if=
"item.domains"
>
<div
v-for=
"(value, index) in item.domains"
:key=
"`domain-$
{index}`">
<AreaTag
:key=
"`cat-$
{item.id}`" :tagName="value" />
</div>
</div>
</div>
</div>
...
...
@@ -111,17 +114,33 @@ import {
const
props
=
defineProps
({
researchTypeList
:
{
type
:
Array
,
default
:
()
=>
[]
},
researchTimeList
:
{
type
:
Array
,
default
:
()
=>
[]
},
selectedAreaList
:
{
type
:
Array
,
default
:
()
=>
[]
},
selectedPubTimeList
:
{
type
:
Array
,
default
:
()
=>
[]
},
hearingData
:
{
type
:
Array
,
default
:
()
=>
[]
},
total
:
{
type
:
Number
,
default
:
0
}
total
:
{
type
:
Number
,
default
:
0
},
currentPage
:
{
type
:
Number
,
default
:
1
}
});
const
emit
=
defineEmits
([
"report-click"
]);
const
emit
=
defineEmits
([
"update:selectedAreaList"
,
"update:selectedPubTimeList"
,
"filter-change"
,
"page-change"
,
"report-click"
]);
const
pageSize
=
10
;
const
currentPage
=
ref
(
1
);
const
selectedResearchIds
=
ref
([
RESOURCE_FILTER_ALL_AREA
]);
const
selectedResearchTimeIds
=
ref
([
RESOURCE_FILTER_ALL_TIME
]);
const
selectedResearchIds
=
computed
(()
=>
(
Array
.
isArray
(
props
.
selectedAreaList
)
&&
props
.
selectedAreaList
.
length
?
props
.
selectedAreaList
:
[
RESOURCE_FILTER_ALL_AREA
]
));
const
selectedResearchTimeIds
=
computed
(()
=>
(
Array
.
isArray
(
props
.
selectedPubTimeList
)
&&
props
.
selectedPubTimeList
.
length
?
props
.
selectedPubTimeList
:
[
RESOURCE_FILTER_ALL_TIME
]
));
const
selectedResearchHearingIds
=
ref
([
RESOURCE_FILTER_ALL_DEPT
]);
...
...
@@ -131,13 +150,15 @@ const researchHearingList = ref([
]);
const
handleAreaGroupChange
=
(
val
)
=>
{
selectedResearchIds
.
value
=
normalizeExclusiveAllOption
(
val
,
RESOURCE_FILTER_ALL_AREA
);
currentPage
.
value
=
1
;
emit
(
"update:selectedAreaList"
,
normalizeExclusiveAllOption
(
val
,
RESOURCE_FILTER_ALL_AREA
));
emit
(
"page-change"
,
1
);
emit
(
"filter-change"
);
};
const
handleTimeGroupChange
=
(
val
)
=>
{
selectedResearchTimeIds
.
value
=
normalizeExclusiveAllOption
(
val
,
RESOURCE_FILTER_ALL_TIME
);
currentPage
.
value
=
1
;
emit
(
"update:selectedPubTimeList"
,
normalizeExclusiveAllOption
(
val
,
RESOURCE_FILTER_ALL_TIME
));
emit
(
"page-change"
,
1
);
emit
(
"filter-change"
);
};
const
handleDeptGroupChange
=
(
val
)
=>
{
...
...
@@ -150,7 +171,8 @@ const handleDeptGroupChange = (val) => {
const
handlePageChange
=
page
=>
{
currentPage
.
value
=
page
;
emit
(
"page-change"
,
page
);
emit
(
"filter-change"
);
};
</
script
>
...
...
@@ -340,6 +362,7 @@ const handlePageChange = page => {
height
:
24px
;
display
:
flex
;
}
}
}
...
...
src/views/thinkTank/components/ThinkTankPolicyAdviceOverview.vue
浏览文件 @
a517e8f6
...
...
@@ -370,6 +370,7 @@ const handleYearGroupChange = (val) => {
height
:
16px
;
margin-left
:
9px
;
margin-top
:
3px
;
cursor
:
pointer
;
img
{
width
:
100%
;
...
...
src/views/thinkTank/index.vue
浏览文件 @
a517e8f6
...
...
@@ -369,7 +369,9 @@
<ThinkTankCongressHearingOverview
v-else-if=
"activeCate === '国会听证会'"
:key=
"`congress-${resourceTabResetKey}`"
:hearing-data=
"hearingData"
:research-type-list=
"areaList"
:research-time-list=
"pubTimeList"
:total=
"projectTotal"
@
report-click=
"handleToHearingDetail"
/>
v-model:selectedAreaList=
"congressSelectedAreaList"
v-model:selectedPubTimeList=
"congressSelectedPubTimeList"
:total=
"congressTotal"
:current-page=
"congressCurrentPage"
@
filter-change=
"handleCongressFilterChange"
@
page-change=
"handleCongressCurrentChange"
@
report-click=
"handleToHearingDetail"
/>
<ThinkTankPolicyAdviceOverview
v-else
:key=
"`policy-${resourceTabResetKey}`"
:research-type-list=
"areaList"
:research-time-list=
"pubTimeList"
:list=
"policyFooterList"
:total=
"policyTotal"
...
...
@@ -386,7 +388,7 @@
import
RiskSignal
from
"@/components/base/riskSignal/index.vue"
;
import
NewsList
from
"@/components/base/newsList/index.vue"
;
import
MessageBubble
from
"@/components/base/messageBubble/index.vue"
import
{
onMounted
,
ref
,
computed
,
reactive
,
nextTick
}
from
"vue"
;
import
{
on
BeforeUnmount
,
on
Mounted
,
ref
,
computed
,
reactive
,
nextTick
}
from
"vue"
;
import
scrollToTop
from
"@/utils/scrollToTop"
;
import
router
from
"@/router"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
...
...
@@ -507,6 +509,8 @@ const handleGetAllThinkTankList = async () => {
console
.
error
(
"获取智库列表error"
,
error
);
}
};
let
box1CarouselTimer
=
null
;
const
routerTo
=
useRouter
()
// 跳转到全部智库页面
...
...
@@ -1822,6 +1826,22 @@ const surveyTotal = ref(0);
//国会听证会总数
const
projectTotal
=
ref
(
0
);
// ===== 资源库-国会听证会:独立状态(不影响其它 tab)=====
const
congressSelectedAreaList
=
ref
([
RESOURCE_FILTER_ALL_AREA
]);
const
congressSelectedPubTimeList
=
ref
([
RESOURCE_FILTER_ALL_TIME
]);
const
congressCurrentPage
=
ref
(
1
);
const
congressTotal
=
ref
(
0
);
const
handleCongressFilterChange
=
()
=>
{
congressCurrentPage
.
value
=
1
;
handleGetThinkTankHearings
();
};
const
handleCongressCurrentChange
=
(
page
)
=>
{
congressCurrentPage
.
value
=
page
;
handleGetThinkTankHearings
();
};
const
handleSurveyFilterChange
=
()
=>
{
surveyCurrentPage
.
value
=
1
;
handleGetThinkTankSurvey
();
...
...
@@ -1839,7 +1859,23 @@ const handleGetThinkTankSurvey = async () => {
);
try
{
const
res
=
await
getThinkTankProjects
();
const
params
=
{
pageNum
:
surveyCurrentPage
.
value
,
pageSize
:
12
,
sortField
:
"startDate"
,
sortOrder
:
surveySort
.
value
===
true
?
"asc"
:
"desc"
,
domainIds
:
(()
=>
{
const
areas
=
stripAllAreaForRequest
(
surveySelectedAreaList
.
value
);
const
allAreaIds
=
(
areaList
.
value
||
[]).
map
((
a
)
=>
a
.
id
);
if
(
isSelectionCoveringAllOptions
(
areas
,
allAreaIds
))
{
return
""
;
}
return
arrayToString
(
areas
);
})(),
startDate
,
endDate
};
const
res
=
await
getThinkTankProjects
(
params
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
surveyFooterList
.
value
=
res
.
data
.
content
;
surveyTotal
.
value
=
res
.
data
.
totalElements
;
...
...
@@ -1852,16 +1888,33 @@ const handleGetThinkTankSurvey = async () => {
}
};
const
handleGetThinkTankHearings
=
async
()
=>
{
try
{
const
res
=
await
getThinkTankTestimonies
();
const
{
startDate
,
endDate
}
=
getResourceLibraryReportDateRangeFromTimeSelection
(
stripAllTimeForRequest
(
congressSelectedPubTimeList
.
value
),
(
pubTimeList
.
value
||
[]).
map
((
x
)
=>
x
.
id
)
);
const
params
=
{
pageNum
:
congressCurrentPage
.
value
,
pageSize
:
10
,
sortFun
:
congressResourceSort
.
value
===
true
,
domainIds
:
(()
=>
{
const
areas
=
stripAllAreaForRequest
(
congressSelectedAreaList
.
value
);
const
allAreaIds
=
(
areaList
.
value
||
[]).
map
((
a
)
=>
a
.
id
);
if
(
isSelectionCoveringAllOptions
(
areas
,
allAreaIds
))
{
return
""
;
}
return
arrayToString
(
areas
);
})(),
startDate
,
endDate
};
const
res
=
await
getThinkTankTestimonies
(
params
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
hearingData
.
value
=
res
.
data
.
content
;
project
Total
.
value
=
res
.
data
.
totalElements
;
congress
Total
.
value
=
res
.
data
.
totalElements
;
}
else
{
hearingData
.
value
=
[];
project
Total
.
value
=
0
;
congress
Total
.
value
=
0
;
}
}
catch
(
error
)
{
console
.
error
(
"获取调查项目 error"
,
error
);
...
...
@@ -2144,7 +2197,11 @@ onMounted(async () => {
handleGetAllThinkTankList
()
await
getStatCountInfo
();
// 定义一个定时器,每隔2秒轮播一次
setInterval
(()
=>
{
if
(
box1CarouselTimer
)
{
clearInterval
(
box1CarouselTimer
);
box1CarouselTimer
=
null
;
}
box1CarouselTimer
=
setInterval
(()
=>
{
// 索引加1
box1DataIndex
.
value
++
;
// 如果索引大于等于数组长度,重置为0,实现循环轮播
...
...
@@ -2167,6 +2224,13 @@ onMounted(async () => {
handleGetThinkTankReportNews
();
handleGetThinkTankReportRemarks
();
});
onBeforeUnmount
(()
=>
{
if
(
box1CarouselTimer
)
{
clearInterval
(
box1CarouselTimer
);
box1CarouselTimer
=
null
;
}
});
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -3611,6 +3675,9 @@ onMounted(async () => {
position
:
absolute
;
right
:
0
;
bottom
:
18px
;
width
:
74px
;
height
:
28px
;
z-index
:
2
;
.btn-box
{
width
:
74px
;
...
...
@@ -3750,6 +3817,9 @@ onMounted(async () => {
position
:
absolute
;
right
:
0
;
bottom
:
18px
;
width
:
74px
;
height
:
28px
;
z-index
:
2
;
.btn-box
{
width
:
74px
;
...
...
@@ -3926,6 +3996,9 @@ onMounted(async () => {
position
:
absolute
;
right
:
0
;
bottom
:
18px
;
width
:
74px
;
height
:
28px
;
z-index
:
2
;
.btn-box
{
width
:
74px
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论