提交 d11781b5 authored 作者: coderBryanFu's avatar coderBryanFu

update

上级 15ee7bad
import request from "@/api/request.js";
// 全要素统计
export function getElementCount() {
export function getElementCount(params) {
return request({
method: 'GET',
url: `/api/element/elementCount`,
url: `/api/element/elementCount/${params.date}`,
})
}
......@@ -23,19 +23,19 @@ export function getNewDynamics() {
export function getElementSuppress(params) {
return request({
method: 'GET',
url: `/api/element/elementSuppress`,
url: `/api/element/elementSuppress/${params.date}`,
params
})
}
// 关键词云-上
/**
* @param {currentPage, pageSize}
* @param {date}
*/
export function getKeyWordUp() {
export function getKeyWordUp(params) {
return request({
method: 'GET',
url: `/api/element/getKeyWordUp`,
url: `/api/element/getKeyWordUp/${params.date}`,
})
}
......@@ -46,7 +46,7 @@ export function getKeyWordUp() {
export function getElementDevelop(params) {
return request({
method: 'GET',
url: `/api/element/elementDevelop`,
url: `/api/element/elementDevelop/${params.date}`,
params
})
}
......@@ -58,8 +58,7 @@ export function getElementDevelop(params) {
export function getKeyWordDown(params) {
return request({
method: 'GET',
url: `/api/element/getKeyWordDown`,
params
url: `/api/element/getKeyWordDown/${params.date}`,
})
}
......
......@@ -133,7 +133,12 @@
<img :src="icon4" alt="" />
<span>美对我领域打压遏制时间线</span>
</div>
<el-select v-model="selectedFieldTimeline" placeholder="全部领域" class="field-select" @change="handleGetDomainContainmentTimeline">
<el-select
v-model="selectedFieldTimeline"
placeholder="全部领域"
class="field-select"
@change="handleGetDomainContainmentTimeline"
>
<el-option v-for="item in fieldOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
......@@ -235,25 +240,24 @@ const selectedFieldTimeline = ref("");
const timelineContainerWidth = 1700;
// 美政府部门打压遏制最新动态
const newsList = ref([]);
const newsList = ref([]);
const getUSGovernmentLatestDynamicData = async () => {
try {
const res = await getUSGovernmentLatestDynamic();
if (res.code === 200 && res.data) {
// 将接口数据转换为 newsList 需要的格式
newsList.value = res.data.map(item => {
const dateObj = new Date(item.time);
const formattedDate = `${dateObj.getFullYear()}${dateObj.getMonth() + 1}${dateObj.getDate()}日`;
return {
id:item.id,
id: item.id,
tags: item.industrylist || [],
date: formattedDate,
type: item.orgName || "未知机构", // 使用 orgName 作为类型信息
title: item.title,
content: item.content || item.title, // 如果 content 为空,使用 title 填充
content: item.content || item.title // 如果 content 为空,使用 title 填充
};
});
}
......@@ -262,7 +266,7 @@ const getUSGovernmentLatestDynamicData = async () => {
}
};
const handleClickTitle = (item) => {
const handleClickTitle = item => {
if (!item || !item.id) return;
// 打开新标签页
const { href } = router.resolve({
......@@ -271,7 +275,7 @@ const handleClickTitle = (item) => {
newsId: item.id
}
});
window.open(href, '_blank');
window.open(href, "_blank");
};
const timelineList = ref([
......@@ -685,22 +689,43 @@ const handleGetAllDomainCount = async () => {
buttonsData.value = res.data.map((item, index) => {
const matchedBg = bgList.find(bg => bg.text === item.countName);
const background = matchedBg ? matchedBg.background : bgList[index % 10].background;
// 映射图标索引
let iconIndex = 0; // 默认
switch(item.countName) {
case '集成电路': iconIndex = 0; break;
case '人工智能': iconIndex = 1; break;
case '新一代通信网络':
case '新一代信息技术': iconIndex = 2; break;
case '量子科技': iconIndex = 3; break;
case '先进制造': iconIndex = 4; break;
case '航空航天': iconIndex = 5; break;
case '生物科技': iconIndex = 6; break;
case '新能源': iconIndex = 7; break;
case '新材料': iconIndex = 8; break;
case '海洋': iconIndex = 9; break;
default: iconIndex = 0;
switch (item.countName) {
case "集成电路":
iconIndex = 0;
break;
case "人工智能":
iconIndex = 1;
break;
case "新一代通信网络":
case "新一代信息技术":
iconIndex = 2;
break;
case "量子科技":
iconIndex = 3;
break;
case "先进制造":
iconIndex = 4;
break;
case "航空航天":
iconIndex = 5;
break;
case "生物科技":
iconIndex = 6;
break;
case "新能源":
iconIndex = 7;
break;
case "新材料":
iconIndex = 8;
break;
case "海洋":
iconIndex = 9;
break;
default:
iconIndex = 0;
}
return {
......@@ -865,10 +890,12 @@ const processDomainTrendData = rawData => {
// 生成数据系列
const dataSeries = domainNames.map(domainName => {
const values = rawData.map(monthData => {
const domainItem = monthData.domainList.find(d => d.domainName === domainName);
return domainItem ? domainItem.domainNum : 0;
}).reverse(); // 数据值也需要跟随标题反转顺序
const values = rawData
.map(monthData => {
const domainItem = monthData.domainList.find(d => d.domainName === domainName);
return domainItem ? domainItem.domainNum : 0;
})
.reverse(); // 数据值也需要跟随标题反转顺序
return {
name: domainName,
......@@ -883,7 +910,6 @@ const processDomainTrendData = rawData => {
};
};
const tagColors = [
{
text: "航空航天",
......@@ -1011,10 +1037,13 @@ const stopAutoPlay = () => {
};
const next = () => {
let arr = [...buttonsData.value];
if (currentIndex.value < buttonsData.value.length - 5) {
currentIndex.value++;
} else {
currentIndex.value = 0;
// currentIndex.value = 0;
buttonsData.value = [...buttonsData.value, ...arr];
currentIndex.value++;
}
};
......
......@@ -212,7 +212,7 @@
</template>
<script setup>
import { onMounted, ref, computed, inject } from "vue";
import { onMounted, ref, computed, inject, watch } from "vue";
import setChart from "@/utils/setChart";
import getWordCloudChart from "./uitls/worldCloudChart";
import {
......@@ -227,11 +227,50 @@ import {
const activeDate = inject("activeDate");
const getCalculatedDate = type => {
const now = new Date();
const endDate = new Date();
const start = new Date();
switch (type) {
case "week": // 近一个月
start.setMonth(now.getMonth() - 1);
break;
case "three_month": // 近三个月
start.setMonth(now.getMonth() - 3);
break;
case "six_month": // 近半年
start.setMonth(now.getMonth() - 6);
break;
case "year": // 近一年
start.setFullYear(now.getFullYear() - 1);
break;
default:
start.setMonth(now.getMonth() - 1); // 默认近一个月
}
const formatDate = date => {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
};
return {
startDate: formatDate(start),
endDate: formatDate(endDate)
};
};
// 全要素统计
const headerList = ref([]);
const handleGetHeaderList = async () => {
const { startDate, endDate } = getCalculatedDate(activeDate.value);
const params = {
date: startDate
};
try {
const res = await getElementCount();
const res = await getElementCount(params);
console.log("全要素统计", res);
if (res.code === 200 && res.data) {
headerList.value = res.data;
......@@ -288,9 +327,11 @@ const handleGetOrderInfo = async id => {
};
const handleGetBox2DataList = async () => {
const { startDate, endDate } = getCalculatedDate(activeDate.value);
const params = {
currentPage: box2CurrentPage.value,
pageSize: box2PageSize.value
pageSize: box2PageSize.value,
date: startDate
};
try {
const res = await getElementSuppress(params);
......@@ -310,8 +351,12 @@ const handleClickBox2Item = index => {
const box2ChartData = ref([]);
const handleGetBox2ChartData = async () => {
const { startDate, endDate } = getCalculatedDate(activeDate.value);
const params = {
date: startDate
};
try {
const res = await getKeyWordUp();
const res = await getKeyWordUp(params);
console.log("关键词云-上", res);
if (res.code === 200 && res.data) {
box2ChartData.value = res.data.map(item => {
......@@ -352,9 +397,12 @@ const handleGetOrderInfo1 = async id => {
};
const handleGetBox3DataList = async () => {
const { startDate, endDate } = getCalculatedDate(activeDate.value);
const params = {
currentPage: box3CurrentPage.value,
pageSize: box3PageSize.value
pageSize: box3PageSize.value,
date: startDate
};
try {
const res = await getElementDevelop(params);
......@@ -375,8 +423,12 @@ const handleClickBox3Item = index => {
const box3ChartData = ref([]);
const handleGetBox3ChartData = async () => {
const { startDate, endDate } = getCalculatedDate(activeDate.value);
const params = {
date: startDate
};
try {
const res = await getKeyWordDown();
const res = await getKeyWordDown(params);
console.log("关键词云-下", res);
if (res.code === 200 && res.data) {
box3ChartData.value = res.data.map(item => {
......@@ -394,6 +446,14 @@ const handleBox3Chart = async () => {
setChart(box3Chart, "box3Chart");
};
watch(activeDate, () => {
handleGetHeaderList(); // 全要素统计
handleGetBox2DataList(); // 美对我要素打压情况
handleGetBox3DataList(); // 美自身要素发展情况
handleBox2Chart(); // 关键词云-上
handleBox3Chart(); // 关键词云-下
});
onMounted(() => {
handleGetHeaderList(); // 全要素统计
handleGetBox1Data(); // 最新动态
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论