Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
00f4a246
提交
00f4a246
authored
4月 01, 2026
作者:
朱政
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:智库概览页调查项目及智库详情页调查项目功能及样式开发,调查项目详情页功能及样式开发
上级
7a10f6fc
流水线
#264
已通过 于阶段
in 1 分 34 秒
变更
10
流水线
1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
162 行增加
和
105 行删除
+162
-105
overview.js
src/api/thinkTank/overview.js
+53
-1
index.vue
src/views/thinkTank/SurveyProjectView/index.vue
+0
-0
index.vue
...nkTank/ThinkTankDetail/thinkDynamics/SurveyForm/index.vue
+10
-11
index.vue
...k/ThinkTankDetail/thinkDynamics/ThinkTankReport/index.vue
+8
-9
index.vue
src/views/thinkTank/ThinkTankDetail/thinkDynamics/index.vue
+44
-14
HomeMainFooterMain.vue
src/views/thinkTank/components/HomeMainFooterMain.vue
+6
-1
HomeMainFooterSurvey.vue
src/views/thinkTank/components/HomeMainFooterSurvey.vue
+12
-22
ThinkTankCongressHearingOverview.vue
...thinkTank/components/ThinkTankCongressHearingOverview.vue
+6
-25
ThinkTankPolicyAdviceOverview.vue
...ws/thinkTank/components/ThinkTankPolicyAdviceOverview.vue
+7
-2
index.vue
src/views/thinkTank/index.vue
+16
-20
没有找到文件。
src/api/thinkTank/overview.js
浏览文件 @
00f4a246
...
@@ -91,7 +91,7 @@ export function getHylyList() {
...
@@ -91,7 +91,7 @@ export function getHylyList() {
/**
/**
* 智库概览/智库动态-智库报告
、调查项目
* 智库概览/智库动态-智库报告
* GET /api/thinkTankOverview/report
* GET /api/thinkTankOverview/report
* 常用 query:pageNum, pageSize, sortFun, domainIds, startDate, endDate, category(调查项目), thinkTankId(详情页), keyword(动态搜索)
* 常用 query:pageNum, pageSize, sortFun, domainIds, startDate, endDate, category(调查项目), thinkTankId(详情页), keyword(动态搜索)
*/
*/
...
@@ -103,6 +103,42 @@ export function getThinkTankReport(params) {
...
@@ -103,6 +103,42 @@ export function getThinkTankReport(params) {
})
})
}
}
//智库概览调查项目
export
function
getThinkTankProjects
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/think-tank/projects`
,
params
})
}
//智库调查项目详情主页
export
function
getThinkTankProjectsInfo
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/think-tank/projects/
${
params
.
id
}
`
,
})
}
// 智库详情-调查项目(按智库 id)
export
function
getThinkTankProjectsByThinkTankId
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/think-tank/
${
params
.
thinkTankId
}
/projects`
,
params
:
{
pageNum
:
params
.
pageNum
,
pageSize
:
params
.
pageSize
,
}
})
}
//智库调查项目详情作者
export
function
getThinkTankProjectsAuthors
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/think-tank/projects/
${
params
.
id
}
/team`
,
})
}
// 智库概览:政策建议(资源库-政策建议)
// 智库概览:政策建议(资源库-政策建议)
export
function
getThinkTankOverviewPolicy
(
params
)
{
export
function
getThinkTankOverviewPolicy
(
params
)
{
return
request
({
return
request
({
...
@@ -378,6 +414,15 @@ export const getThinkTankReportRelated = (params) => {
...
@@ -378,6 +414,15 @@ export const getThinkTankReportRelated = (params) => {
}
}
);
);
}
}
//调查项目:获取项目报告
export
const
getThinkTankProjectRelated
=
(
params
)
=>
{
return
request
(
{
method
:
'GET'
,
url
:
`/api/think-tank/projects/
${
params
}
/reports`
,
}
);
}
//获取报告原文
//获取报告原文
export
const
getThinkTankReportcontentUrl
=
(
params
)
=>
{
export
const
getThinkTankReportcontentUrl
=
(
params
)
=>
{
...
@@ -440,6 +485,13 @@ export function getThinkTankReportIndustryCloud(params) {
...
@@ -440,6 +485,13 @@ export function getThinkTankReportIndustryCloud(params) {
url
:
`/api/thinkTankReport/keyword/
${
params
.
id
}
`
,
url
:
`/api/thinkTankReport/keyword/
${
params
.
id
}
`
,
})
})
}
}
//获取科技领域词云
export
function
getThinkTankProjectCloud
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/think-tank/projects/
${
params
.
id
}
/word-cloud`
,
})
}
//获取政策建议落实情况
//获取政策建议落实情况
export
function
getThinkTankReportPolicy
(
params
)
{
export
function
getThinkTankReportPolicy
(
params
)
{
...
...
src/views/thinkTank/SurveyProjectView/index.vue
浏览文件 @
00f4a246
差异被折叠。
点击展开。
src/views/thinkTank/ThinkTankDetail/thinkDynamics/SurveyForm/index.vue
浏览文件 @
00f4a246
...
@@ -21,10 +21,7 @@
...
@@ -21,10 +21,7 @@
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedResearchIds"
@
change=
"handleAreaGroupChange"
>
class=
"checkbox-group"
:model-value=
"selectedResearchIds"
@
change=
"handleAreaGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
{{
RESOURCE_FILTER_ALL_AREA
}}
{{
RESOURCE_FILTER_ALL_AREA
}}
</el-checkbox>
</el-checkbox>
...
@@ -40,9 +37,7 @@
...
@@ -40,9 +37,7 @@
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedResearchTimeIds"
class=
"checkbox-group"
:model-value=
"selectedResearchTimeIds"
@
change=
"handleTimeGroupChange"
>
@
change=
"handleTimeGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
{{
RESOURCE_FILTER_ALL_TIME
}}
{{
RESOURCE_FILTER_ALL_TIME
}}
...
@@ -62,13 +57,13 @@
...
@@ -62,13 +57,13 @@
<div
class=
"footer-card"
v-for=
"(item, index) in curFooterList"
:key=
"index"
<div
class=
"footer-card"
v-for=
"(item, index) in curFooterList"
:key=
"index"
@
click=
"handleToReportDetail(item)"
>
@
click=
"handleToReportDetail(item)"
>
<div
class=
"footer-card-top"
>
<div
class=
"footer-card-top"
>
<img
:src=
"item.imageUrl"
alt=
""
/>
<img
:src=
item.projectCoverImgUrl
alt=
""
/>
</div>
</div>
<div
class=
"footer-card-title"
>
<div
class=
"footer-card-title"
>
<span
v-html=
"highlightText(item.
name
)"
></span>
<span
v-html=
"highlightText(item.
projectNameZh
)"
></span>
</div>
</div>
<div
class=
"footer-card-footer"
>
<div
class=
"footer-card-footer"
>
<div
class=
"time"
>
{{
item
.
times
}}
</div>
<div
class=
"time"
>
{{
formatDate
(
item
.
startDate
)
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
</div>
</div>
</div>
</div>
...
@@ -94,7 +89,11 @@ import {
...
@@ -94,7 +89,11 @@ import {
stripAllAreaForRequest
,
stripAllAreaForRequest
,
stripAllTimeForRequest
stripAllTimeForRequest
}
from
"../../../utils/resourceLibraryFilters"
;
}
from
"../../../utils/resourceLibraryFilters"
;
const
formatDate
=
(
str
)
=>
{
if
(
!
str
)
return
''
const
[
y
,
m
,
d
]
=
str
.
split
(
'T'
)[
0
].
split
(
'-'
)
return
`
${
y
}
年
${
+
m
}
月
${
+
d
}
日`
};
const
props
=
defineProps
({
const
props
=
defineProps
({
researchTypeList
:
{
researchTypeList
:
{
type
:
Array
,
type
:
Array
,
...
...
src/views/thinkTank/ThinkTankDetail/thinkDynamics/ThinkTankReport/index.vue
浏览文件 @
00f4a246
...
@@ -21,10 +21,7 @@
...
@@ -21,10 +21,7 @@
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedResearchIds"
@
change=
"handleAreaGroupChange"
>
class=
"checkbox-group"
:model-value=
"selectedResearchIds"
@
change=
"handleAreaGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
{{
RESOURCE_FILTER_ALL_AREA
}}
{{
RESOURCE_FILTER_ALL_AREA
}}
</el-checkbox>
</el-checkbox>
...
@@ -40,9 +37,7 @@
...
@@ -40,9 +37,7 @@
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedResearchTimeIds"
class=
"checkbox-group"
:model-value=
"selectedResearchTimeIds"
@
change=
"handleTimeGroupChange"
>
@
change=
"handleTimeGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
{{
RESOURCE_FILTER_ALL_TIME
}}
{{
RESOURCE_FILTER_ALL_TIME
}}
...
@@ -68,7 +63,7 @@
...
@@ -68,7 +63,7 @@
<span
v-html=
"highlightText(item.name)"
></span>
<span
v-html=
"highlightText(item.name)"
></span>
</div>
</div>
<div
class=
"footer-card-footer"
>
<div
class=
"footer-card-footer"
>
<div
class=
"time"
>
{{
item
.
times
}}
</div>
<div
class=
"time"
>
{{
formatDate
(
item
.
times
)
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
</div>
</div>
</div>
</div>
...
@@ -94,7 +89,11 @@ import {
...
@@ -94,7 +89,11 @@ import {
stripAllAreaForRequest
,
stripAllAreaForRequest
,
stripAllTimeForRequest
stripAllTimeForRequest
}
from
"../../../utils/resourceLibraryFilters"
;
}
from
"../../../utils/resourceLibraryFilters"
;
const
formatDate
=
(
str
)
=>
{
if
(
!
str
)
return
''
const
[
y
,
m
,
d
]
=
str
.
split
(
'T'
)[
0
].
split
(
'-'
)
return
`
${
y
}
年
${
+
m
}
月
${
+
d
}
日`
};
const
props
=
defineProps
({
const
props
=
defineProps
({
researchTypeList
:
{
researchTypeList
:
{
type
:
Array
,
type
:
Array
,
...
...
src/views/thinkTank/ThinkTankDetail/thinkDynamics/index.vue
浏览文件 @
00f4a246
...
@@ -38,7 +38,8 @@
...
@@ -38,7 +38,8 @@
<template
#
prefix
>
<template
#
prefix
>
<img
v-if=
"sort !== true"
src=
"./images/image down.png"
class=
"select-prefix-img"
alt=
""
<img
v-if=
"sort !== true"
src=
"./images/image down.png"
class=
"select-prefix-img"
alt=
""
@
click
.
stop=
"toggleSortAndFetch()"
/>
@
click
.
stop=
"toggleSortAndFetch()"
/>
<img
v-else
src=
"./images/image up.png"
class=
"select-prefix-img"
alt=
""
@
click
.
stop=
"toggleSortAndFetch()"
/>
<img
v-else
src=
"./images/image up.png"
class=
"select-prefix-img"
alt=
""
@
click
.
stop=
"toggleSortAndFetch()"
/>
</
template
>
</
template
>
<el-option
@
click=
"handleGetThinkDynamicsReport()"
:key=
"true"
label=
"正序"
:value=
"true"
/>
<el-option
@
click=
"handleGetThinkDynamicsReport()"
:key=
"true"
label=
"正序"
:value=
"true"
/>
<el-option
@
click=
"handleGetThinkDynamicsReport()"
:key=
"false"
label=
"倒序"
:value=
"false"
/>
<el-option
@
click=
"handleGetThinkDynamicsReport()"
:key=
"false"
label=
"倒序"
:value=
"false"
/>
...
@@ -50,25 +51,26 @@
...
@@ -50,25 +51,26 @@
<div
v-if=
"isThinkTankReport"
>
<div
v-if=
"isThinkTankReport"
>
<ThinkTankReport
:research-type-list=
"researchTypeList"
:research-time-list=
"researchTimeList"
<ThinkTankReport
:research-type-list=
"researchTypeList"
:research-time-list=
"researchTimeList"
:key=
"`智库报告-${tabResetKey}`"
:selected-filters=
"selectedFilters"
:cur-footer-list=
"curFooterList"
:total=
"total"
:key=
"`智库报告-${tabResetKey}`"
:selected-filters=
"selectedFilters"
:cur-footer-list=
"curFooterList"
:total=
"total"
:current-page=
"currentPage"
:search-keyword=
"searchReport"
@
update:selected-filters=
"handleSelectedFiltersUpdate"
:current-page=
"currentPage"
:search-keyword=
"searchReport"
@
update:selected-filters=
"handleSelectedFiltersUpdate"
@
filter-change=
"(payload) => handleGetThinkDynamicsReport(payload)"
@
page-change=
"handleCurrentChange"
@
filter-change=
"(payload) => handleGetThinkDynamicsReport(payload)"
@
page-change=
"handleCurrentChange"
@
report-click=
"handleToReportDetail"
/>
@
report-click=
"handleToReportDetail"
/>
</div>
</div>
<div
v-if=
"isCongressHearing"
>
<div
v-if=
"isCongressHearing"
>
<CongressHearing
:research-type-list=
"researchTypeList"
:research-time-list=
"researchTimeList"
<CongressHearing
:research-type-list=
"researchTypeList"
:research-time-list=
"researchTimeList"
:key=
"`国会听证会-${tabResetKey}`"
:research-hearing-list=
"researchHearingList"
:selected-filters=
"selectedFilters"
:key=
"`国会听证会-${tabResetKey}`"
:research-hearing-list=
"researchHearingList"
:selected-filters=
"selectedFilters"
:selected-year=
"selectedYear"
:cur-footer-list=
"curFooterList"
:total=
"total"
:current-page=
"currentPage"
:selected-year=
"selectedYear"
:total=
"total"
:current-page=
"currentPage"
:search-keyword=
"searchReport"
:search-keyword=
"searchReport"
:hearing-data=
"hearingData"
@
update:selected-filters=
"handleSelectedFiltersUpdate"
:hearing-data=
"hearingData"
@
update:selected-filters=
"handleSelectedFiltersUpdate"
@
filter-change=
"(payload) => handleGetThinkDynamicsReport(payload)"
@
page-change=
"handleCurrentChange"
@
filter-change=
"(payload) => handleGetThinkDynamicsReport(payload)"
@
page-change=
"handleCurrentChange"
@
report-click=
"handleToReportDetail"
/>
@
report-click=
"handleToReportDetail"
/>
</div>
</div>
<div>
<div>
<SurveyForm
v-if=
"isSurveyForm"
:research-type-list=
"researchTypeList"
:research-time-list=
"researchTimeList"
<SurveyForm
v-if=
"isSurveyForm"
:research-type-list=
"researchTypeList"
:research-time-list=
"researchTimeList"
:key=
"`调查项目-${tabResetKey}`"
:selected-filters=
"selectedFilters"
:cur-footer-list=
"curFooterList"
:total=
"total"
:key=
"`调查项目-${tabResetKey}`"
:selected-filters=
"selectedFilters"
:cur-footer-list=
"curFooterProjectList"
:current-page=
"currentPage"
:search-keyword=
"searchReport"
@
update:selected-filters=
"handleSelectedFiltersUpdate"
:total=
"total"
:current-page=
"currentPage"
:search-keyword=
"searchReport"
@
update:selected-filters=
"handleSelectedFiltersUpdate"
@
filter-change=
"(payload) => handleGetThinkDynamicsReport(payload)"
@
page-change=
"handleCurrentChange"
@
filter-change=
"(payload) => handleGetThinkDynamicsReport(payload)"
@
page-change=
"handleCurrentChange"
@
report-click=
"handleTo
Repor
tDetail"
/>
@
report-click=
"handleTo
Projec
tDetail"
/>
</div>
</div>
</div>
</div>
</template>
</template>
...
@@ -92,7 +94,8 @@ import SurveyForm from "./SurveyForm/index.vue"
...
@@ -92,7 +94,8 @@ import SurveyForm from "./SurveyForm/index.vue"
import
{
import
{
getThinkDynamicsReportType
,
getThinkDynamicsReportType
,
getHylyList
,
getHylyList
,
getThinkTankReport
getThinkTankReport
,
getThinkTankProjectsByThinkTankId
}
from
"@/api/thinkTank/overview"
;
}
from
"@/api/thinkTank/overview"
;
import
{
import
{
RESOURCE_FILTER_EARLIER
,
RESOURCE_FILTER_EARLIER
,
...
@@ -119,6 +122,17 @@ const handleToReportDetail = (item) => {
...
@@ -119,6 +122,17 @@ const handleToReportDetail = (item) => {
});
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
}
const
handleToProjectDetail
=
(
item
)
=>
{
window
.
sessionStorage
.
setItem
(
'curTabName'
,
item
.
name
)
const
route
=
router
.
resolve
({
name
:
'SurveyProjectView'
,
params
:
{
id
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
}
const
hearingData
=
ref
([
const
hearingData
=
ref
([
// 军事类(10条)
// 军事类(10条)
...
@@ -403,9 +417,9 @@ const handleSelectedFiltersUpdate = val => {
...
@@ -403,9 +417,9 @@ const handleSelectedFiltersUpdate = val => {
const
author
=
ref
(
''
)
// 作者
const
author
=
ref
(
''
)
// 作者
/** 智库报告
/ 调查项目共用列表:与资源库一致,初始为空,接口非成功时清空
*/
/** 智库报告 */
const
curFooterList
=
ref
([]);
const
curFooterList
=
ref
([]);
const
curFooterProjectList
=
ref
([]);
const
selectedYear
=
ref
(
1
);
const
selectedYear
=
ref
(
1
);
...
@@ -472,7 +486,7 @@ const handleGetThinkDynamicsReport = async (payload) => {
...
@@ -472,7 +486,7 @@ const handleGetThinkDynamicsReport = async (payload) => {
selectedFilters
.
value
=
nextFilters
;
selectedFilters
.
value
=
nextFilters
;
currentPage
.
value
=
1
;
currentPage
.
value
=
1
;
}
}
// 国会听证会走本地数据,与资源库 /thinkTankOverview/report 无关
if
(
!
isThinkTankReport
.
value
&&
!
isSurveyForm
.
value
)
{
if
(
!
isThinkTankReport
.
value
&&
!
isSurveyForm
.
value
)
{
return
;
return
;
}
}
...
@@ -490,6 +504,25 @@ const handleGetThinkDynamicsReport = async (payload) => {
...
@@ -490,6 +504,25 @@ const handleGetThinkDynamicsReport = async (payload) => {
:
arrayToString
(
areas
);
:
arrayToString
(
areas
);
const
keyword
=
(
searchReport
.
value
||
""
).
trim
();
const
keyword
=
(
searchReport
.
value
||
""
).
trim
();
const
thinkTankId
=
router
.
currentRoute
.
_value
.
params
?.
id
;
const
thinkTankId
=
router
.
currentRoute
.
_value
.
params
?.
id
;
if
(
isSurveyForm
.
value
)
{
// 调查项目:用新接口 /think-tank/{thinkTankId}/projects
curFooterList
.
value
=
[];
const
res
=
await
getThinkTankProjectsByThinkTankId
({
thinkTankId
,
pageNum
:
currentPage
.
value
,
pageSize
:
12
});
if
(
res
.
code
===
200
&&
res
.
data
)
{
curFooterProjectList
.
value
=
res
.
data
.
content
||
[];
total
.
value
=
res
.
data
.
totalElements
||
0
;
}
else
{
curFooterProjectList
.
value
=
[];
total
.
value
=
0
;
}
return
;
}
// 智库报告:保持原逻辑
const
params
=
{
const
params
=
{
pageNum
:
currentPage
.
value
,
pageNum
:
currentPage
.
value
,
pageSize
:
12
,
pageSize
:
12
,
...
@@ -498,9 +531,6 @@ const handleGetThinkDynamicsReport = async (payload) => {
...
@@ -498,9 +531,6 @@ const handleGetThinkDynamicsReport = async (payload) => {
startDate
,
startDate
,
endDate
endDate
};
};
if
(
isSurveyForm
.
value
)
{
params
.
category
=
"调查项目"
;
}
if
(
thinkTankId
)
{
if
(
thinkTankId
)
{
params
.
thinkTankId
=
thinkTankId
;
params
.
thinkTankId
=
thinkTankId
;
}
}
...
...
src/views/thinkTank/components/HomeMainFooterMain.vue
浏览文件 @
00f4a246
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
{{
item
.
name
}}
{{
item
.
name
}}
</div>
</div>
<div
class=
"footer-card-footer"
>
<div
class=
"footer-card-footer"
>
<div
class=
"time"
>
{{
item
.
times
}}
</div>
<div
class=
"time"
>
{{
formatDate
(
item
.
times
)
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
</div>
</div>
</div>
</div>
...
@@ -97,6 +97,11 @@ const handleTimeGroupChange = (val) => {
...
@@ -97,6 +97,11 @@ const handleTimeGroupChange = (val) => {
emit
(
"update:selectedPubTimeList"
,
normalizeExclusiveAllOption
(
val
,
RESOURCE_FILTER_ALL_TIME
));
emit
(
"update:selectedPubTimeList"
,
normalizeExclusiveAllOption
(
val
,
RESOURCE_FILTER_ALL_TIME
));
emit
(
"filter-change"
);
emit
(
"filter-change"
);
};
};
const
formatDate
=
(
str
)
=>
{
if
(
!
str
)
return
''
const
[
y
,
m
,
d
]
=
str
.
split
(
'T'
)[
0
].
split
(
'-'
)
return
`
${
y
}
年
${
+
m
}
月
${
+
d
}
日`
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/thinkTank/components/HomeMainFooterSurvey.vue
浏览文件 @
00f4a246
...
@@ -8,18 +8,11 @@
...
@@ -8,18 +8,11 @@
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedAreaList"
@
change=
"handleAreaGroupChange"
>
class=
"checkbox-group"
:model-value=
"selectedAreaList"
@
change=
"handleAreaGroupChange"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
{{
RESOURCE_FILTER_ALL_AREA
}}
{{
RESOURCE_FILTER_ALL_AREA
}}
</el-checkbox>
</el-checkbox>
<el-checkbox
<el-checkbox
v-for=
"research in areaList"
:key=
"research.id"
class=
"filter-checkbox"
:label=
"research.id"
>
v-for=
"research in areaList"
:key=
"research.id"
class=
"filter-checkbox"
:label=
"research.id"
>
{{
research
.
name
}}
{{
research
.
name
}}
</el-checkbox>
</el-checkbox>
</el-checkbox-group>
</el-checkbox-group>
...
@@ -32,18 +25,11 @@
...
@@ -32,18 +25,11 @@
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedPubTimeList"
@
change=
"handleTimeGroupChange"
>
class=
"checkbox-group"
:model-value=
"selectedPubTimeList"
@
change=
"handleTimeGroupChange"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
{{
RESOURCE_FILTER_ALL_TIME
}}
{{
RESOURCE_FILTER_ALL_TIME
}}
</el-checkbox>
</el-checkbox>
<el-checkbox
<el-checkbox
v-for=
"time in pubTimeList"
:key=
"time.id"
class=
"filter-checkbox"
:label=
"time.id"
>
v-for=
"time in pubTimeList"
:key=
"time.id"
class=
"filter-checkbox"
:label=
"time.id"
>
{{
time
.
name
}}
{{
time
.
name
}}
</el-checkbox>
</el-checkbox>
</el-checkbox-group>
</el-checkbox-group>
...
@@ -56,13 +42,13 @@
...
@@ -56,13 +42,13 @@
<div
class=
"footer-card"
v-for=
"(item, index) in curFooterList"
:key=
"index"
<div
class=
"footer-card"
v-for=
"(item, index) in curFooterList"
:key=
"index"
@
click=
"emit('report-click', item)"
>
@
click=
"emit('report-click', item)"
>
<div
class=
"footer-card-top"
>
<div
class=
"footer-card-top"
>
<img
:src=
"item.
image
Url"
alt=
""
/>
<img
:src=
"item.
projectCoverImg
Url"
alt=
""
/>
</div>
</div>
<div
class=
"footer-card-title"
>
<div
class=
"footer-card-title"
>
{{
item
.
name
}}
{{
item
.
projectNameZh
}}
</div>
</div>
<div
class=
"footer-card-footer"
>
<div
class=
"footer-card-footer"
>
<div
class=
"time"
>
{{
item
.
times
}}
</div>
<div
class=
"time"
>
{{
formatDate
(
item
.
startDate
)
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
<div
class=
"from"
>
{{
item
.
thinkTankName
}}
</div>
</div>
</div>
</div>
</div>
...
@@ -94,7 +80,11 @@ defineProps({
...
@@ -94,7 +80,11 @@ defineProps({
total
:
{
type
:
Number
,
default
:
0
},
total
:
{
type
:
Number
,
default
:
0
},
currentPage
:
{
type
:
Number
,
default
:
1
}
currentPage
:
{
type
:
Number
,
default
:
1
}
});
});
const
formatDate
=
(
str
)
=>
{
if
(
!
str
)
return
''
const
[
y
,
m
,
d
]
=
str
.
split
(
'T'
)[
0
].
split
(
'-'
)
return
`
${
y
}
年
${
+
m
}
月
${
+
d
}
日`
};
const
emit
=
defineEmits
([
const
emit
=
defineEmits
([
"update:selectedAreaList"
,
"update:selectedAreaList"
,
"update:selectedPubTimeList"
,
"update:selectedPubTimeList"
,
...
...
src/views/thinkTank/components/ThinkTankCongressHearingOverview.vue
浏览文件 @
00f4a246
...
@@ -7,18 +7,11 @@
...
@@ -7,18 +7,11 @@
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
<div
class=
"title"
>
{{
"科技领域"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedResearchIds"
@
change=
"handleAreaGroupChange"
>
class=
"checkbox-group"
:model-value=
"selectedResearchIds"
@
change=
"handleAreaGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_AREA"
>
{{
RESOURCE_FILTER_ALL_AREA
}}
{{
RESOURCE_FILTER_ALL_AREA
}}
</el-checkbox>
</el-checkbox>
<el-checkbox
<el-checkbox
v-for=
"type in researchTypeList"
:key=
"type.id"
class=
"filter-checkbox"
:label=
"type.id"
>
v-for=
"type in researchTypeList"
:key=
"type.id"
class=
"filter-checkbox"
:label=
"type.id"
>
{{
type
.
name
}}
{{
type
.
name
}}
</el-checkbox>
</el-checkbox>
</el-checkbox-group>
</el-checkbox-group>
...
@@ -31,18 +24,12 @@
...
@@ -31,18 +24,12 @@
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
<div
class=
"title"
>
{{
"发布时间"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedResearchTimeIds"
class=
"checkbox-group"
:model-value=
"selectedResearchTimeIds"
@
change=
"handleTimeGroupChange"
>
@
change=
"handleTimeGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_TIME"
>
{{
RESOURCE_FILTER_ALL_TIME
}}
{{
RESOURCE_FILTER_ALL_TIME
}}
</el-checkbox>
</el-checkbox>
<el-checkbox
<el-checkbox
v-for=
"type in researchTimeList"
:key=
"type.id"
class=
"filter-checkbox"
:label=
"type.id"
>
v-for=
"type in researchTimeList"
:key=
"type.id"
class=
"filter-checkbox"
:label=
"type.id"
>
{{
type
.
name
}}
{{
type
.
name
}}
</el-checkbox>
</el-checkbox>
</el-checkbox-group>
</el-checkbox-group>
...
@@ -55,18 +42,12 @@
...
@@ -55,18 +42,12 @@
<div
class=
"title"
>
{{
"听证会部门"
}}
</div>
<div
class=
"title"
>
{{
"听证会部门"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
<el-checkbox-group
class=
"checkbox-group hearing-grid"
:model-value=
"selectedResearchHearingIds"
class=
"checkbox-group hearing-grid"
:model-value=
"selectedResearchHearingIds"
@
change=
"handleDeptGroupChange"
>
@
change=
"handleDeptGroupChange"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_DEPT"
>
<el-checkbox
class=
"filter-checkbox"
:label=
"RESOURCE_FILTER_ALL_DEPT"
>
{{
RESOURCE_FILTER_ALL_DEPT
}}
{{
RESOURCE_FILTER_ALL_DEPT
}}
</el-checkbox>
</el-checkbox>
<el-checkbox
<el-checkbox
v-for=
"type in researchHearingList"
:key=
"type.id"
class=
"filter-checkbox"
:label=
"type.id"
>
v-for=
"type in researchHearingList"
:key=
"type.id"
class=
"filter-checkbox"
:label=
"type.id"
>
{{
type
.
name
}}
{{
type
.
name
}}
</el-checkbox>
</el-checkbox>
</el-checkbox-group>
</el-checkbox-group>
...
...
src/views/thinkTank/components/ThinkTankPolicyAdviceOverview.vue
浏览文件 @
00f4a246
...
@@ -47,7 +47,8 @@
...
@@ -47,7 +47,8 @@
<div
class=
"card-item-text"
>
<div
class=
"card-item-text"
>
<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"
>
{{
formatDate
(
item
.
times
)
}}
·
{{
item
.
thinkTankName
}}
·
{{
item
.
reportName
}}
</span>
<div
class=
"card-open-image"
@
click
.
stop=
"handleOpenReportOriginal(item)"
>
<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>
...
@@ -125,7 +126,11 @@ const handleOpenReportOriginal = (item) => {
...
@@ -125,7 +126,11 @@ const handleOpenReportOriginal = (item) => {
})
})
window
.
open
(
route
.
href
,
"_blank"
)
window
.
open
(
route
.
href
,
"_blank"
)
}
}
const
formatDate
=
(
str
)
=>
{
if
(
!
str
)
return
''
const
[
y
,
m
,
d
]
=
str
.
split
(
'T'
)[
0
].
split
(
'-'
)
return
`
${
y
}
年
${
+
m
}
月
${
+
d
}
日`
};
/** 政策建议关联法案:新标签页打开法案介绍页,billId 随接口 id 变化 */
/** 政策建议关联法案:新标签页打开法案介绍页,billId 随接口 id 变化 */
const
handleBillMoreClick
=
(
bill
)
=>
{
const
handleBillMoreClick
=
(
bill
)
=>
{
const
billId
=
bill
?.
id
;
const
billId
=
bill
?.
id
;
...
...
src/views/thinkTank/index.vue
浏览文件 @
00f4a246
...
@@ -364,7 +364,7 @@
...
@@ -364,7 +364,7 @@
v-model:selectedAreaList=
"surveySelectedAreaList"
:pub-time-list=
"pubTimeList"
v-model:selectedAreaList=
"surveySelectedAreaList"
:pub-time-list=
"pubTimeList"
v-model:selectedPubTimeList=
"surveySelectedPubTimeList"
@
filter-change=
"handleSurveyFilterChange"
v-model:selectedPubTimeList=
"surveySelectedPubTimeList"
@
filter-change=
"handleSurveyFilterChange"
:cur-footer-list=
"surveyFooterList"
:total=
"surveyTotal"
:current-page=
"surveyCurrentPage"
:cur-footer-list=
"surveyFooterList"
:total=
"surveyTotal"
:current-page=
"surveyCurrentPage"
@
report-click=
"handleTo
ReportDetail
"
@
page-change=
"handleSurveyCurrentChange"
/>
@
report-click=
"handleTo
SurveyProjectView
"
@
page-change=
"handleSurveyCurrentChange"
/>
<ThinkTankCongressHearingOverview
v-else-if=
"activeCate === '国会听证会'"
:key=
"`congress-${resourceTabResetKey}`"
<ThinkTankCongressHearingOverview
v-else-if=
"activeCate === '国会听证会'"
:key=
"`congress-${resourceTabResetKey}`"
:research-type-list=
"areaList"
:research-time-list=
"pubTimeList"
@
report-click=
"handleToReportDetail"
/>
:research-type-list=
"areaList"
:research-time-list=
"pubTimeList"
@
report-click=
"handleToReportDetail"
/>
...
@@ -373,6 +373,7 @@
...
@@ -373,6 +373,7 @@
:research-time-list=
"pubTimeList"
:list=
"policyFooterList"
:total=
"policyTotal"
:research-time-list=
"pubTimeList"
:list=
"policyFooterList"
:total=
"policyTotal"
:current-page=
"policyCurrentPage"
:page-size=
"7"
@
filter-change=
"handlePolicyFilterChange"
:current-page=
"policyCurrentPage"
:page-size=
"7"
@
filter-change=
"handlePolicyFilterChange"
@
page-change=
"handlePolicyCurrentChange"
/>
@
page-change=
"handlePolicyCurrentChange"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -406,7 +407,8 @@ import {
...
@@ -406,7 +407,8 @@ import {
getThinkTankReport
,
getThinkTankReport
,
getThinkTankOverviewPolicy
,
getThinkTankOverviewPolicy
,
getThinkTankReportNews
,
getThinkTankReportNews
,
getThinkTankReportRemarks
getThinkTankReportRemarks
,
getThinkTankProjects
}
from
"@/api/thinkTank/overview"
;
}
from
"@/api/thinkTank/overview"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
getMultiLineChart
from
"./utils/multiLineChart"
;
import
getMultiLineChart
from
"./utils/multiLineChart"
;
...
@@ -1801,24 +1803,9 @@ const handleGetThinkTankSurvey = async () => {
...
@@ -1801,24 +1803,9 @@ const handleGetThinkTankSurvey = async () => {
stripAllTimeForRequest
(
surveySelectedPubTimeList
.
value
),
stripAllTimeForRequest
(
surveySelectedPubTimeList
.
value
),
(
pubTimeList
.
value
||
[]).
map
((
x
)
=>
x
.
id
)
(
pubTimeList
.
value
||
[]).
map
((
x
)
=>
x
.
id
)
);
);
const
params
=
{
pageNum
:
surveyCurrentPage
.
value
,
pageSize
:
12
,
sortFun
:
surveySort
.
value
===
true
,
domainIds
:
(()
=>
{
const
areas
=
stripAllAreaForRequest
(
surveySelectedAreaList
.
value
);
const
allAreaIds
=
(
areaList
.
value
||
[]).
map
((
a
)
=>
a
.
id
);
if
(
isSelectionCoveringAllOptions
(
areas
,
allAreaIds
))
{
return
""
;
}
return
arrayToString
(
areas
);
})(),
startDate
,
endDate
,
category
:
"调查项目"
};
try
{
try
{
const
res
=
await
getThinkTank
Report
(
params
);
const
res
=
await
getThinkTank
Projects
(
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
surveyFooterList
.
value
=
res
.
data
.
content
;
surveyFooterList
.
value
=
res
.
data
.
content
;
surveyTotal
.
value
=
res
.
data
.
totalElements
;
surveyTotal
.
value
=
res
.
data
.
totalElements
;
...
@@ -2071,7 +2058,16 @@ const handleToReportDetail = item => {
...
@@ -2071,7 +2058,16 @@ const handleToReportDetail = item => {
});
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
};
const
handleToSurveyProjectView
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
name
);
const
route
=
router
.
resolve
({
name
:
"SurveyProjectView"
,
params
:
{
id
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
const
handleSearch
=
()
=>
{
const
handleSearch
=
()
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
`搜索-
${
searchThinktankText
.
value
}
`
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
`搜索-
${
searchThinktankText
.
value
}
`
);
const
curRoute
=
router
.
resolve
({
const
curRoute
=
router
.
resolve
({
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论