提交 00f4a246 authored 作者: 朱政's avatar 朱政

feat:智库概览页调查项目及智库详情页调查项目功能及样式开发,调查项目详情页功能及样式开发

上级 7a10f6fc
流水线 #264 已通过 于阶段
in 1 分 34 秒
...@@ -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) {
......
...@@ -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,
......
...@@ -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,
......
...@@ -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="handleToReportDetail" /> @report-click="handleToProjectDetail" />
</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;
} }
......
...@@ -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>
......
...@@ -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.imageUrl" alt="" /> <img :src="item.projectCoverImgUrl" 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",
......
...@@ -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>
......
...@@ -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;
......
...@@ -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="handleToReportDetail" @page-change="handleSurveyCurrentChange" /> @report-click="handleToSurveyProjectView" @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 getThinkTankReport(params); const res = await getThinkTankProjects();
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论