提交 7710c463 authored 作者: yanpeng's avatar yanpeng

Merge branch 'master' into yp-dev

......@@ -84,7 +84,6 @@
<div class="btn-icon">
<img src="@/assets/icons/arrow-right-icon.png" alt="" />
</div>
</div>
<div class="btn" @click="handleToPosi('position2')">
<div class="btn-text">{{ "资讯要闻" }}</div>
......@@ -210,11 +209,7 @@
</div>
</div>
<div class="box2-main">
<div
class="box2-main-item"
v-for="(item, index) in warningList"
:key="index"
>
<div class="box2-main-item" v-for="(item, index) in warningList" :key="index">
<div
class="item-left"
:class="{
......@@ -253,14 +248,21 @@
</div>
</div>
<div class="box3-main">
<div class="box3-item" v-for="(news, index) in newsList" :key="index" @click="handleClickToNewsDetail()">
<div
class="box3-item"
v-for="(news, index) in newsList"
:key="index"
@click="handleClickToNewsDetail()"
>
<div class="left">
<img :src="news.newsImage || News1" alt="" />
</div>
<div class="right">
<div class="right-top">
<div class="title">{{ news.newsTitle }}</div>
<div class="time">{{ news.newsDate ? news.newsDate.slice(5) : '' }} - {{ news.newsOrg }}</div>
<div class="time">
{{ news.newsDate ? news.newsDate.slice(5) : "" }} - {{ news.newsOrg }}
</div>
</div>
<div class="right-footer">{{ news.newsContent }}</div>
</div>
......@@ -308,14 +310,26 @@
</div>
</div>
<div class="box5-select">
<el-select v-model="box5Select" placeholder="选择领域" @change="handleBox5Change" style="width: 150px">
<el-select
v-model="box5Select"
placeholder="选择领域"
@change="handleBox5Change"
style="width: 150px"
>
<el-option label="全部领域" value="全部领域" />
<el-option v-for="item in categoryList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</div>
<div class="box5-main" :style="{ display: !box5HasData ? 'flex' : 'block', justifyContent: 'center', alignItems: 'center' }">
<div
class="box5-main"
:style="{
display: !box5HasData ? 'flex' : 'block',
justifyContent: 'center',
alignItems: 'center'
}"
>
<el-empty v-if="!box5HasData" description="暂无数据" :image-size="100" />
<div v-else id="box5Chart" style="width: 100%; height: 100%;"></div>
<div v-else id="box5Chart" style="width: 100%; height: 100%"></div>
</div>
</div>
<div class="box6">
......@@ -360,9 +374,16 @@
/>
</el-select>
</div>
<div class="box7-main" :style="{ display: !box7HasData ? 'flex' : 'block', justifyContent: 'center', alignItems: 'center' }">
<div
class="box7-main"
:style="{
display: !box7HasData ? 'flex' : 'block',
justifyContent: 'center',
alignItems: 'center'
}"
>
<el-empty v-if="!box7HasData" description="暂无数据" :image-size="100" />
<div v-else id="box7Chart" style="width: 100%; height: 100%;"></div>
<div v-else id="box7Chart" style="width: 100%; height: 100%"></div>
</div>
</div>
<div class="box8">
......@@ -390,7 +411,14 @@
/>
</el-select>
</div>
<div class="box8-main" :style="{ display: box8Data.length === 0 ? 'flex' : 'block', justifyContent: 'center', alignItems: 'center' }">
<div
class="box8-main"
:style="{
display: box8Data.length === 0 ? 'flex' : 'block',
justifyContent: 'center',
alignItems: 'center'
}"
>
<el-empty v-if="box8Data.length === 0" description="暂无数据" :image-size="100" />
<div
v-else
......@@ -406,7 +434,7 @@
</div>
<div class="left-icon2">
<img :src="item.yuan" alt="" />
</div>
</div>
</div>
<div class="box8-main-item-center">
<div class="box8-main-item-center-top">{{ item.name }}</div>
......@@ -443,9 +471,16 @@
/>
</el-select>
</div>
<div class="box9-main" :style="{ display: !box9HasData ? 'flex' : 'block', justifyContent: 'center', alignItems: 'center' }">
<div
class="box9-main"
:style="{
display: !box9HasData ? 'flex' : 'block',
justifyContent: 'center',
alignItems: 'center'
}"
>
<el-empty v-if="!box9HasData" description="暂无数据" :image-size="100" />
<div v-else id="box9Chart" style="width: 100%; height: 100%;"></div>
<div v-else id="box9Chart" style="width: 100%; height: 100%"></div>
</div>
</div>
</div>
......@@ -465,7 +500,6 @@
{{ cate.name }}
</div>
</div>
</div>
<div class="home-main-footer-main">
<div class="left">
......@@ -476,9 +510,7 @@
</div>
<div class="select-main">
<el-checkbox-group class="checkbox-group" v-model="activeAreaList" @change="handleAreaChange">
<el-checkbox class="filter-checkbox" label="全部领域">
全部领域
</el-checkbox>
<el-checkbox class="filter-checkbox" label="全部领域"> 全部领域 </el-checkbox>
<el-checkbox
v-for="(area, index) in cateKuList"
:key="area.id"
......@@ -549,7 +581,12 @@
<div class="right">
<div class="right-header">
<div class="right-header-box">
<el-select v-model="footerSelect1" placeholder="选择委员会" style="width: 240px" @change="handleFooterSelect1Change">
<el-select
v-model="footerSelect1"
placeholder="选择委员会"
style="width: 240px"
@change="handleFooterSelect1Change"
>
<el-option
v-for="item in postOrgList"
:key="item.departmentId"
......@@ -559,7 +596,12 @@
</el-select>
</div>
<div class="right-header-box">
<el-select v-model="footerSelect2" placeholder="选择提出议员" style="width: 240px" @change="handleFooterSelect2Change">
<el-select
v-model="footerSelect2"
placeholder="选择提出议员"
style="width: 240px"
@change="handleFooterSelect2Change"
>
<el-option
v-for="item in postMemberList"
:key="item.memberId"
......@@ -568,8 +610,13 @@
/>
</el-select>
</div>
<div class="right-header-box" style="margin-left: auto;">
<el-select v-model="releaseTime" placeholder="选择排序方式" style="width: 120px" @change="handlePxChange">
<div class="right-header-box" style="margin-left: auto">
<el-select
v-model="releaseTime"
placeholder="选择排序方式"
style="width: 120px"
@change="handlePxChange"
>
<el-option
v-for="item in releaseTimeList"
:key="item.value"
......@@ -580,7 +627,12 @@
</div>
</div>
<div class="right-main" v-loading="loading">
<div class="right-main-box" v-for="(item, index) in bills" :key="index" @click="handleClickToDetail()">
<div
class="right-main-box"
v-for="(item, index) in bills"
:key="index"
@click="handleClickToDetail()"
>
<div class="header">
<div class="title">{{ item.name }}</div>
<div class="en-title">{{ item.eName }}</div>
......@@ -707,13 +759,13 @@ import { iteratee } from "lodash";
const searchBillText = ref("");
const formatMessageTime = (timeStr) => {
if (!timeStr) return '';
const formatMessageTime = timeStr => {
if (!timeStr) return "";
// 假设格式为 2025-11-02T12:09:45
if (timeStr.includes('T')) {
const [date, time] = timeStr.split('T');
const [year, month, day] = date.split('-');
const [hour, minute] = time.split(':');
if (timeStr.includes("T")) {
const [date, time] = timeStr.split("T");
const [year, month, day] = date.split("-");
const [hour, minute] = time.split(":");
return `${year}-${month}-${day} ${hour}:${minute}`;
}
return timeStr;
......@@ -984,7 +1036,7 @@ const box8YearList = ref([
}
]);
// 排序方式
const releaseTime = ref(true);
const releaseTime = ref(true);
const releaseTimeList = ref([
{
......@@ -1001,7 +1053,6 @@ const categoryList = ref([]);
// 资源库使用的领域分类列表
const cateKuList = ref([]);
// 获取领域分类
const handleGetHylyList = async () => {
try {
......@@ -1078,10 +1129,7 @@ const handleGetPostOrgList = async () => {
console.log("提出部门列表", res);
if (res.code === 200) {
const list = res.data.filter(item => item.departmentId);
postOrgList.value = [
{ departmentName: "全部委员会", departmentId: "全部委员会" },
...list
];
postOrgList.value = [{ departmentName: "全部委员会", departmentId: "全部委员会" }, ...list];
}
} catch (error) {}
};
......@@ -1094,10 +1142,7 @@ const handleGetPostMemberList = async () => {
console.log("提出议员列表", res);
if (res.code === 200) {
const list = res.data.filter(item => item.memberId);
postMemberList.value = [
{ memberName: "全部提出议员", memberId: "全部提出议员" },
...list
];
postMemberList.value = [{ memberName: "全部提出议员", memberId: "全部提出议员" }, ...list];
}
} catch (error) {}
};
......@@ -1124,25 +1169,25 @@ const handleGetBills = async () => {
};
if (!activeYyList.value.includes("全部议院")) {
params.congressIds = activeYyList.value.join(',');
params.congressIds = activeYyList.value.join(",");
}
if (footerSelect1.value !== "全部委员会") {
params.departmentId = footerSelect1.value;
}
if (!activeDpList.value.includes("全部党派")) {
params.partyIds = activeDpList.value.join(',');
params.partyIds = activeDpList.value.join(",");
}
if (footerSelect2.value !== "全部提出议员") {
params.personId = footerSelect2.value;
}
if (!activeAreaList.value.includes("全部领域")) {
params.researchIds = activeAreaList.value.join(',');
params.researchIds = activeAreaList.value.join(",");
}
if (releaseTime.value !== true) {
params.sortFun = releaseTime.value;
}
if (!activePubTime.value.includes("全部时间")) {
params.years = activePubTime.value.join(',');
params.years = activePubTime.value.join(",");
}
try {
......@@ -1165,13 +1210,13 @@ const handleGetBills = async () => {
bills.value = [];
total.value = 0;
}
}else {
} else {
bills.value = [];
total.value = 0;
}
loading.value = false;
} catch (error) {
if (error.name !== 'AbortError') {
if (error.name !== "AbortError") {
console.error(error);
loading.value = false;
}
......@@ -1179,19 +1224,19 @@ const handleGetBills = async () => {
};
// 处理选择委员会变化
const handleFooterSelect1Change = (val) => {
const handleFooterSelect1Change = val => {
console.log("选择委员会变化", val);
// 等会再做处理
handleGetBills();
};
// 处理选择议员变化
const handleFooterSelect2Change = (val) => {
const handleFooterSelect2Change = val => {
console.log("选择议员变化", val);
// 等会再做处理
handleGetBills();
};
// 处理选择排序方式变化
const handlePxChange = (val) => {
const handlePxChange = val => {
console.log("选择排序方式变化", val);
// 等会再做处理
handleGetBills();
......@@ -1303,10 +1348,12 @@ const handleBox5 = async () => {
await nextTick();
const proposed = box5Data.value.data[0].value;
const passed = box5Data.value.data[1].value;
const rate = box5Data.value.percent || proposed.map((p, i) => {
const pass = passed[i] || 0;
return p ? ((pass / p) * 100).toFixed(2) : 0;
});
const rate =
box5Data.value.percent ||
proposed.map((p, i) => {
const pass = passed[i] || 0;
return p ? ((pass / p) * 100).toFixed(2) : 0;
});
let box5Chart = getMultiLineChart(box5Data.value.title, proposed, passed, rate);
setChart(box5Chart, "box5Chart");
}
......@@ -1326,7 +1373,7 @@ const handleBox7Data = async () => {
box7HasData.value = true;
// 必须等待DOM更新,因为v-if切换可能导致元素刚被创建
await nextTick();
const apiData = res.data;
const houseItems = apiData.filter(i => i.congressName === "House");
......@@ -1522,7 +1569,7 @@ const handleClickTab = tab => {
};
const activeAreaList = ref(["全部领域"]);
const handleAreaChange = (val) => {
const handleAreaChange = val => {
if (val.includes("全部领域") && val.length > 1) {
if (val[val.length - 1] === "全部领域") {
activeAreaList.value = ["全部领域"];
......@@ -1544,7 +1591,7 @@ const dpList = ref([
]);
const activeDpList = ref(["全部党派"]);
// 处理选择党派变化
const handleDpChange = (val) => {
const handleDpChange = val => {
if (val.includes("全部党派") && val.length > 1) {
if (val[val.length - 1] === "全部党派") {
activeDpList.value = ["全部党派"];
......@@ -1565,7 +1612,7 @@ const yyList = ref([
]);
const activeYyList = ref(["全部议院"]);
// 处理选择议院变化
const handleYyChange = (val) => {
const handleYyChange = val => {
if (val.includes("全部议院") && val.length > 1) {
if (val[val.length - 1] === "全部议院") {
activeYyList.value = ["全部议院"];
......@@ -1585,12 +1632,12 @@ const pubTime = ref([
{ id: "2024", name: "2024年" },
{ id: "2023", name: "2023年" },
{ id: "2022", name: "2022年" },
{ id: "2021", name: "2021年" },
{ id: "2021", name: "2021年" }
// { id: "更早时间", name: "更早时间" }
]);
const activePubTime = ref(["全部时间"]);
// 处理选择时间变化
const handlePubTimeChange = (val) => {
const handlePubTimeChange = val => {
if (val.includes("全部时间") && val.length > 1) {
if (val[val.length - 1] === "全部时间") {
activePubTime.value = ["全部时间"];
......@@ -1651,7 +1698,7 @@ onMounted(async () => {
handleGetPostMemberList();
// 获取资源库
handleGetBills();
// handleGetBillsByType();
handleBox5(); //涉华法案统计
......@@ -1782,6 +1829,8 @@ onUnmounted(() => {});
.home-box {
width: 100%;
height: 100%;
background: url("./assets/images/background.png");
background-size: 100% 100%;
overflow-y: auto;
.home-header {
height: 64px;
......@@ -1809,8 +1858,6 @@ onUnmounted(() => {});
width: 1600px;
margin: 0 auto;
margin-top: 48px;
background: url("./assets/images/background.png");
background-size: 100% 100%;
.home-main-header {
display: flex;
flex-direction: column;
......
......@@ -106,7 +106,7 @@
<div class="home-main-header-item-box">
<div class="item" v-for="(item, index) in govInsList" :key="index" @click="handleToInstitution(item)">
<div class="item-left">
<img :src="item.img?item.img: DefaultIcon2" alt="" />
<img :src="item.img ? item.img : DefaultIcon2" alt="" />
</div>
<div class="item-right">{{ item.name }}</div>
</div>
......@@ -335,17 +335,15 @@
<DivideHeader id="position4" class="divide4" :titleText="'资源库'"></DivideHeader>
<div class="home-main-footer-header">
<div class="btn-box">
<div
class="btn"
:class="{ btnActive: activeCate === cate.id }"
v-for="(cate, index) in categoryList"
:key="index"
@click="handleClickCate(cate)"
>
{{ cate.name }}
</div>
<div
class="btn"
:class="{ btnActive: activeCate === cate.id }"
v-for="(cate, index) in categoryList"
:key="index"
@click="handleClickCate(cate)"
>
{{ cate.name }}
</div>
</div>
<div class="select-box">
<div class="paixu-btn" @click="handleSwithSort">
......@@ -375,6 +373,7 @@
:key="time.id"
v-model="activePubTime"
:label="time.id"
style="width: 100px"
class="filter-checkbox"
>
{{ time.name }}
......@@ -414,13 +413,13 @@
class="main-item"
v-for="(item, index) in curDecreeList"
:key="index"
@click="handleClickToDetail"
@click="handleClickDecree(item)"
>
<div class="main-item-left">
<div class="left-left">{{ item.time }}</div>
<div class="left-right">
<div class="icon">
<img :src="item.orgImage?item.orgImage:DefaultIcon2" alt="">
<img :src="item.orgImage ? item.orgImage : DefaultIcon2" alt="" />
</div>
<div class="line" v-if="index !== 9 && index !== totalDecreesNum - 1"></div>
</div>
......@@ -497,8 +496,8 @@ import getCalendarHeatChart from "./utils/cleandarHeat";
import setChart from "@/utils/setChart";
import DefaultIcon1 from '@/assets/icons/default-icon1.png'
import DefaultIcon2 from '@/assets/icons/default-icon2.png'
import DefaultIcon1 from "@/assets/icons/default-icon1.png";
import DefaultIcon2 from "@/assets/icons/default-icon2.png";
import p1 from "./assets/images/iconp1.png";
import p2 from "./assets/images/iconp2.png";
......@@ -534,10 +533,8 @@ import Message3 from "./assets/images/message-icon3.png";
// 跳转行政机构主页
const handleToInstitution = item => {
if (item.name === "美国商务部") {
const curRoute = router.resolve("/institution");
window.open(curRoute.href, "_blank");
}
const curRoute = router.resolve("/institution");
window.open(curRoute.href, "_blank");
};
// 返回首页
......@@ -689,6 +686,17 @@ const handleClickToDetail = () => {
window.open(route.href, "_blank");
};
// 点击政令库政令
const handleClickDecree = decree => {
const route = router.resolve({
path: "/decreeLayout",
query: {
id: decree.id
}
});
window.open(route.href, "_blank");
};
// 风险信号
const warningList = ref([
{
......@@ -780,7 +788,6 @@ const messageList = ref([
// time: "14:49 · 发布于X",
// content: `如果这个疯狂的支出法案获得通过,‘美国党’将在第二天成立。`
// }
]);
const handleGetMessage = async () => {
const params = {
......@@ -854,7 +861,6 @@ const chart2Data = ref([
// name: "人工智能",
// value: 46
// },
]);
// const colorList = ["#69B1FF", "#FFC069", "#87E8DE", "#85A5FF", "#FF7875", "#B37FEB", "#4096FF"];
......@@ -892,7 +898,6 @@ const keyDecreeList = ref([
// time: "2025年2月",
// content: `将中国列为“外国对手”,系统性收紧中美在半导体、人工智能、量子技术等前沿科技领域的双向投资,构建对华科技封锁体系。`
// },
]);
const handleGetKeyDecree = async () => {
......@@ -1857,7 +1862,7 @@ onMounted(async () => {
height: 402px;
overflow-y: auto;
overflow-x: hidden;
padding-top: 6px;
padding: 6px 0;
.box3-item {
display: flex;
height: 77px;
......@@ -1967,7 +1972,7 @@ onMounted(async () => {
height: 402px;
overflow-y: auto;
box-sizing: border-box;
padding-top: 8px;
padding-bottom: 8px;
.box4-main-item {
margin-top: 16px;
display: flex;
......@@ -2601,7 +2606,8 @@ onMounted(async () => {
}
}
.box7-main {
height: 400px;
margin-top: 10px;
height: 380px;
box-sizing: border-box;
overflow-y: auto;
overflow-x: hidden;
......@@ -2731,32 +2737,31 @@ onMounted(async () => {
display: flex;
gap: 8px;
white-space: nowrap;
.btn {
min-width: min-content;
height: 42px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 400;
line-height: 42px;
padding: 0 24px;
border-radius: 21px;
background: rgba(20, 89, 187, 0);
cursor: pointer;
&:hover {
background: rgba(20, 89, 187, 0.1);
}
.btn {
min-width: min-content;
height: 42px;
color: rgba(95, 101, 108, 1);
font-family: Microsoft YaHei;
font-size: 20px;
font-weight: 400;
line-height: 42px;
padding: 0 24px;
border-radius: 21px;
background: rgba(20, 89, 187, 0);
cursor: pointer;
&:hover {
background: rgba(20, 89, 187, 0.1);
}
.btnActive {
font-weight: 700;
background: rgba(20, 89, 187, 1);
}
.btnActive {
font-weight: 700;
background: rgba(20, 89, 187, 1);
color: #fff;
&:hover {
color: #fff;
&:hover {
color: #fff;
background: rgba(20, 89, 187, 1);
}
background: rgba(20, 89, 187, 1);
}
}
}
.select-box {
margin-top: 5px;
......@@ -2919,7 +2924,7 @@ onMounted(async () => {
height: 24px;
border-radius: 12px;
overflow: hidden;
img{
img {
width: 100%;
height: 100%;
}
......
......@@ -1901,10 +1901,14 @@ const handleMediaClick = item => {
}
.home-wrapper {
width: 100%;
height: calc(100vh - 96px);
position: relative;
overflow-y: hidden;
.home-main {
// width: 1400px;
padding: 0 5%;
margin: 0 auto;
width: 100%;
height: 100%;
overflow-y: auto;
background: url("./assets/images/background.png");
background-size: 100% 100%;
.home-main-header {
......
......@@ -1698,10 +1698,14 @@ onMounted(async () => {
}
.home-wrapper {
width: 100%;
height: calc(100vh - 96px);
position: relative;
overflow-y: hidden;
.home-main {
// width: 1400px;
padding: 0 5%;
margin: 0 auto;
width: 100%;
height: 100%;
overflow-y: auto;
background: url("./assets/images/background.png");
background-size: 100% 100%;
.home-main-header {
......
......@@ -351,8 +351,7 @@
:value="item.value"
/>
</el-select>
</div>
</div>
</div>
</div>
<div class="center-footer-layout">
......@@ -405,6 +404,7 @@
</div>
</div>
<div class="home-main-footer-main">
<div class="footer-main-item" v-for="item in universityList" :key="item.name" @click="handleClickToDetail">
<img :src="item.pic" style="height: 32px; width: 32px;" />
<div class="item-text">{{ item.name }}</div>
......@@ -894,7 +894,6 @@ onMounted(async () => {
let chart1 = getPieChart(chart1Data.value, colorList);
setChart(chart1, "chart1");
});
</script>
......
......@@ -1070,10 +1070,14 @@ onMounted(async () => {
box-shadow: none;
}
.home-wrapper {
width: 100%;
height: calc(100vh - 96px);
position: relative;
overflow-y: hidden;
.home-main {
// width: 1400px;
width: 100%;
margin: 0 auto;
height: 100%;
overflow-y: auto;
background: url("./assets/images/background.png");
background-size: 100% 100%;
.home-main-header {
......@@ -1217,7 +1221,7 @@ onMounted(async () => {
right: 19px;
width: 6px;
height: 12px;
img{
img {
width: 100%;
height: 100%;
}
......
......@@ -100,10 +100,13 @@
</div>
<div class="box2-main">
<div class="box2-main-item" v-for="(item, index) in warningList" :key="index">
<div class="item-left" :class="{
itemLeftStatus1: item.status === '一般风险',
itemLeftStatus2: item.status === '重大风险'
}">
<div
class="item-left"
:class="{
itemLeftStatus1: item.status === '一般风险',
itemLeftStatus2: item.status === '重大风险'
}"
>
{{ item.status }}
</div>
<div class="item-right">
......@@ -131,14 +134,18 @@
<img src="./assets/images/TechnologyFigures-icon3.png" alt="" />
</div>
<!-- <div class="box3-header-title">{{ "人物动向" }}</div> -->
<div class="header-title"
style="width: 1560px; display: flex; justify-content: space-between; margin-top: 10px">
<div
class="header-title"
style="width: 1560px; display: flex; justify-content: space-between; margin-top: 10px"
>
<div class="box3-header-title">
{{ "人物动向" }}
</div>
<div style="display: flex; gap: 8px; margin-right: 12px">
<div v-for="value in peoDateList"
:class="peoDate !== value ? 'btn-box-samll' : 'btn-box-select-samll'">
<div
v-for="value in peoDateList"
:class="peoDate !== value ? 'btn-box-samll' : 'btn-box-select-samll'"
>
{{ value }}
</div>
</div>
......@@ -154,14 +161,18 @@
<div class="header-icon">
<img src="./assets/images/header-message.png" alt="" />
</div>
<div class="header-title"
style="width: 1595px; display: flex; justify-content: space-between; margin-top: 10px">
<div
class="header-title"
style="width: 1595px; display: flex; justify-content: space-between; margin-top: 10px"
>
<div>
{{ "重要人物言论及立场" }}
</div>
<div style="display: flex; gap: 8px; margin-right: 12px">
<div v-for="value in fields"
:class="fieldSelect !== value ? 'btn-box-samll' : 'btn-box-select-samll'">
<div
v-for="value in fields"
:class="fieldSelect !== value ? 'btn-box-samll' : 'btn-box-select-samll'"
>
{{ value }}
</div>
</div>
......@@ -178,18 +189,33 @@
<div class="box5-header">
<div class="box5-header-left">
<div class="box5-header-icon">
<img src="./assets/images/TechnologyFigures-icon1.png" alt=""
style="margin: 13px 21px 13px 21px; height: 22px" />
<img
src="./assets/images/TechnologyFigures-icon1.png"
alt=""
style="margin: 13px 21px 13px 21px; height: 22px"
/>
<div class="box5-header-title">{{ "科技人物观点词云" }}</div>
</div>
<div>
<div style="height: 45px; display: flex; align-items: center">
<el-select v-model="wordCloudvalue" style="width: 120px; height: 28px">
<el-option v-for="item in yearList" :key="item.value" :label="item.label" :value="item.value" />
<el-option
v-for="item in yearList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-select v-model="wordCloudfield" style="width: 120px; height: 28px; margin: 10px 24px 10px 5px">
<el-option v-for="item in fieldSelect" :key="item.value" :label="item.label"
:value="item.value" />
<el-select
v-model="wordCloudfield"
style="width: 120px; height: 28px; margin: 10px 24px 10px 5px"
>
<el-option
v-for="item in fieldSelect"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</div>
......@@ -202,17 +228,22 @@
<div class="header-icon">
<img src="./assets/images/box3-header-icon.png" alt="" />
</div>
<div class="header-title"
style="display: flex; width: 740px; justify-content: space-between; align-items: center">
<div
class="header-title"
style="display: flex; width: 740px; justify-content: space-between; align-items: center"
>
<div>
{{ "科技人物观点涉及领域变化趋势" }}
</div>
<el-select v-model="areaSelect" style="width: 120px; height: 28px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</div>
<div class="box6-main" id="box6Chart"></div>
......@@ -238,16 +269,22 @@
</div>
<div style="display: flex; width: 730px; justify-content: space-between; align-items: center">
<div class="box8-header-title">{{ "主要人物涉华观点统计" }}</div>
<div style="gap: 8px;display: flex;">
<div v-for="value in viewOption"
:class="viewSelect !== value ? 'btn-box-samll' : 'btn-box-select-samll'">
<div style="gap: 8px; display: flex">
<div
v-for="value in viewOption"
:class="viewSelect !== value ? 'btn-box-samll' : 'btn-box-select-samll'"
>
{{ value }}
</div>
<el-select v-model="wordCloudvalue" style="width: 120px; height: 28px; margin-top: -5px;">
<el-option v-for="item in yearList" :key="item.value" :label="item.label" :value="item.value" />
<el-select v-model="wordCloudvalue" style="width: 120px; height: 28px; margin-top: -5px">
<el-option
v-for="item in yearList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</div>
</div>
</div>
......@@ -262,8 +299,13 @@
<DivideHeader id="position4" class="divide-header" :titleText="'资源库'"></DivideHeader>
<div class="home-main-footer-header">
<div class="btn-box">
<div class="btn" :class="{ btnActive: activeCate === cate }" v-for="(cate, index) in categoryList"
:key="index" @click="handleClickCate(cate)">
<div
class="btn"
:class="{ btnActive: activeCate === cate }"
v-for="(cate, index) in categoryList"
:key="index"
@click="handleClickCate(cate)"
>
{{ cate }}
</div>
</div>
......@@ -438,13 +480,22 @@ onMounted(() => {
}
.home-wrapper {
width: 100%;
height: calc(100vh - 96px);
position: relative;
overflow-y: hidden;
.home-main {
width: 1920px;
margin: 0 auto;
// width: 1920px;
// margin: 0 auto;
// background: url("./assets/images/background.png");
// background-repeat: no-repeat;
// background-color: #fff;
// background-size: contain;
width: 100%;
height: 100%;
overflow-y: auto;
background: url("./assets/images/background.png");
background-repeat: no-repeat;
background-color: #fff;
background-size: contain;
background-size: 100% 100%;
.home-main-header {
display: flex;
......
......@@ -78,12 +78,17 @@
</div>
<div class="content">{{ item.desc }}</div>
<div class="tag-box">
<div class="tag" :class="{
tag1: val.status === 1,
tag2: val.status === 2,
tag3: val.status === 3,
tag4: val.status === 4
}" v-for="(val, idx) in item.tagList" :key="idx">
<div
class="tag"
:class="{
tag1: val.status === 1,
tag2: val.status === 2,
tag3: val.status === 3,
tag4: val.status === 4
}"
v-for="(val, idx) in item.tagList"
:key="idx"
>
{{ val.name }}
</div>
</div>
......@@ -108,8 +113,12 @@
</div>
</div>
<div style="display: flex">
<img src="./assets/images/right-left-icon1.png" alt=""
style="margin-top: 174px; width: 24px; height: 48px" @click="changeBox1Data('previous')" />
<img
src="./assets/images/right-left-icon1.png"
alt=""
style="margin-top: 174px; width: 24px; height: 48px"
@click="changeBox1Data('previous')"
/>
<div class="box1-main">
<div class="box1-main-left">
<img :src="box1Data[box1DataIndex]?.imageUrl" alt="" />
......@@ -117,7 +126,11 @@
<div class="box1-main-right">
<div class="title">{{ box1Data[box1DataIndex]?.reportName }}</div>
<div class="tag-box">
<div class="tag" v-for="(item, index) in box1Data[box1DataIndex]?.industryVOList" :key="index">
<div
class="tag"
v-for="(item, index) in box1Data[box1DataIndex]?.industryVOList"
:key="index"
>
{{ item }}
</div>
</div>
......@@ -133,8 +146,12 @@
</div>
</div>
</div>
<img src="./assets/images/right-left-icon2.png" alt=""
style="margin-top: 174px; width: 24px; height: 48px" @click="changeBox1Data('next')" />
<img
src="./assets/images/right-left-icon2.png"
alt=""
style="margin-top: 174px; width: 24px; height: 48px"
@click="changeBox1Data('next')"
/>
</div>
</div>
<div class="box2">
......@@ -149,11 +166,14 @@
</div>
<div class="box2-main">
<div class="box2-main-item" v-for="(item, index) in warningList" :key="index">
<div class="item-left" :class="{
itemLeftStatus1: item.status === '一般风险 ' || item.status === '暂无数值',
itemLeftStatus2: item.status === '重大风险',
itemLeftStatus3: item.status === '特别重大'
}">
<div
class="item-left"
:class="{
itemLeftStatus1: item.status === '一般风险 ' || item.status === '暂无数值',
itemLeftStatus2: item.status === '重大风险',
itemLeftStatus3: item.status === '特别重大'
}"
>
{{ item.status || "一般风险" }}
</div>
<div class="item-right">
......@@ -207,14 +227,20 @@
<div class="header-title">{{ "智库人物动态" }}</div>
</div>
<div class="box4-tag-box">
<div class="tag" :class="{
tagActive: box4ActiveTag === tag.name,
tag1: tag.status === 1,
tag2: tag.status === 2,
tag3: tag.status === 3,
tag4: tag.status === 4,
tag5: tag.status === 5
}" v-for="(tag, index) in box4TagList" :key="index" @click="handleClickBox4Tag(tag.name)">
<div
class="tag"
:class="{
tagActive: box4ActiveTag === tag.name,
tag1: tag.status === 1,
tag2: tag.status === 2,
tag3: tag.status === 3,
tag4: tag.status === 4,
tag5: tag.status === 5
}"
v-for="(tag, index) in box4TagList"
:key="index"
@click="handleClickBox4Tag(tag.name)"
>
{{ tag.name }}
</div>
</div>
......@@ -246,8 +272,13 @@
</div>
<div class="box5-select-box">
<el-select v-model="box5selectetedYear" placeholder="选择时间" style="width: 120px">
<el-option v-for="item in box5YearList" :key="item.value" :label="item.label" :value="item.value"
@click="changeBox5Data(item.value)" />
<el-option
v-for="item in box5YearList"
:key="item.value"
:label="item.label"
:value="item.value"
@click="changeBox5Data(item.value)"
/>
</el-select>
</div>
</div>
......@@ -261,8 +292,13 @@
<div class="header-title">{{ "政策建议领域分布" }}</div>
<div class="box6-select-box">
<el-select v-model="box6selectetedYear" placeholder="选择时间" style="width: 120px">
<el-option v-for="item in box6YearList" :key="item.value" :label="item.label" :value="item.value"
@click="handleBox6()" />
<el-option
v-for="item in box6YearList"
:key="item.value"
:label="item.label"
:value="item.value"
@click="handleBox6()"
/>
</el-select>
</div>
</div>
......@@ -291,19 +327,28 @@
</div>
<div class="box8-select-box">
<el-select v-model="box8selectetedYear" placeholder="选择时间" style="width: 120px">
<el-option v-for="item in box8YearList" :key="item.value" :label="item.label" :value="item.value"
@click="changeBox8Data(item.value)" />
<el-option
v-for="item in box8YearList"
:key="item.value"
:label="item.label"
:value="item.value"
@click="changeBox8Data(item.value)"
/>
</el-select>
</div>
</div>
<div class="box8-main">
<div class="box8-item" v-for="(item, index) in box8Data" :key="index">
<div class="item-left"
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }">
<div
class="item-left"
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
{{ index + 1 }}
</div>
<div class="item-center"
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }">
<div
class="item-center"
:class="{ itemBold1: index === 0, itemBold2: index === 1, itemBold3: index === 2 }"
>
{{ item.clause }}
</div>
<div class="item-right">{{ `${item.count}份报告 >` }}</div>
......@@ -317,8 +362,13 @@
<DivideHeader id="position4" class="divide-header" :titleText="'资源库'"></DivideHeader>
<div class="home-main-footer-header">
<div class="btn-box">
<div class="btn" :class="{ btnActive: activeCate === cate }" v-for="(cate, index) in categoryList"
:key="index" @click="handleClickCate(cate)">
<div
class="btn"
:class="{ btnActive: activeCate === cate }"
v-for="(cate, index) in categoryList"
:key="index"
@click="handleClickCate(cate)"
>
{{ cate }}
</div>
</div>
......@@ -332,11 +382,21 @@
</div>
<div class="select-main">
<div class="checkbox-group">
<el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">
<el-checkbox
v-model="checkAll"
:indeterminate="isIndeterminate"
@change="handleCheckAllChange"
>
全部领域
</el-checkbox>
<el-checkbox v-for="research in areaList" :key="research.id" v-model="selectedAreaList"
:label="research.id" @change="handleCheckedAreaChange()" class="filter-checkbox">
<el-checkbox
v-for="research in areaList"
:key="research.id"
v-model="selectedAreaList"
:label="research.id"
@change="handleCheckedAreaChange()"
class="filter-checkbox"
>
{{ research.name }}
</el-checkbox>
</div>
......@@ -350,8 +410,13 @@
</div>
<div class="select-main">
<div class="checkbox-group">
<el-checkbox v-for="time in pubTimeList" :key="time.id" v-model="selectedPubTimeList" :label="time.id"
class="filter-checkbox">
<el-checkbox
v-for="time in pubTimeList"
:key="time.id"
v-model="selectedPubTimeList"
:label="time.id"
class="filter-checkbox"
>
{{ time.name }}
</el-checkbox>
</div>
......@@ -374,13 +439,16 @@
</div>
</div>
<div class="right-footer">
<div class="info">
{{ total }}项调查
</div>
<div class="info">{{ total }}项调查</div>
<div class="page-box">
<el-pagination :page-size="12" background layout="prev, pager, next" :total="total"
@current-change="handleCurrentChange()" :current-page="currentPage" />
<el-pagination
:page-size="12"
background
layout="prev, pager, next"
:total="total"
@current-change="handleCurrentChange()"
:current-page="currentPage"
/>
</div>
</div>
</div>
......@@ -1184,11 +1252,11 @@ const curFooterList = ref([
}
]);
const currentPage = ref(1);
const total = ref(0)
const total = ref(0);
// 处理页码改变事件
const handleCurrentChange = page => {
currentPage.value = page;
handleGetetThinkTankReport()
handleGetetThinkTankReport();
};
//获取智库报告
const handleGetetThinkTankReport = async () => {
......@@ -1197,13 +1265,13 @@ const handleGetetThinkTankReport = async () => {
pageSize: 12,
researchTypeIds: selectedAreaList.value,
years: 2025
}
};
try {
const res = await getThinkTankReport(params);
console.log("智库报告", res);
if (res.code === 200 && res.data) {
curFooterList.value = res.data.content;
total.value = res.data.totalElements
total.value = res.data.totalElements;
}
} catch (error) {
console.error("获取智库报告error", error);
......@@ -1211,7 +1279,7 @@ const handleGetetThinkTankReport = async () => {
};
const handleClick = tank => {
console.log(tank)
console.log(tank);
// router.push({ name: "ThinkTankDetail", params: { id: tank.id } });
const curRoute = router.resolve({ name: "ThinkTankDetail", params: { id: tank.id, name: tank.name } });
window.open(curRoute.href, "_blank");
......@@ -1239,7 +1307,7 @@ onMounted(async () => {
handleBox7();
handleGetHylyList();
handleGetThinkTankHot(getDateYearsAgo(1));
handleGetetThinkTankReport()
handleGetetThinkTankReport();
});
</script>
......@@ -1249,17 +1317,20 @@ onMounted(async () => {
}
.home-wrapper {
width: 100%;
height: calc(100vh - 96px);
position: relative;
overflow-y: hidden;
.home-main {
width: 1920px;
margin: 0 auto;
width: 100%;
height: 100%;
overflow-y: auto;
background: url("./assets/images/background.png");
background-size: 100% 100%;
.home-main-header {
display: flex;
flex-direction: column;
align-items: center;
.home-main-header-top {
box-sizing: border-box;
width: 100%;
......@@ -2937,7 +3008,6 @@ onMounted(async () => {
box-shadow: none !important;
}
.page {
width: 1600px;
height: 40px;
......@@ -2957,7 +3027,6 @@ onMounted(async () => {
letter-spacing: 0px;
text-align: left;
}
}
:deep(.el-pagination) {
......@@ -2977,17 +3046,12 @@ onMounted(async () => {
font-size: 16px;
font-weight: 400;
font-family: "Microsoft YaHei";
}
:deep(.el-pagination.is-background .el-pager li.is-active) {
background-color: #fff;
color: rgba(22, 119, 255, 1);
border-color: rgba(22, 119, 255, 1);
}
:deep(.el-pagination.is-background .el-pager li.is-ellipsis) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论