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

update

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