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

update

......@@ -8,18 +8,16 @@
<div class="carousel-item" v-for="item in showCarouselList">
<div class="item-top">
<div class="top-img">
<img :src="ele" :class="{img1: index !== 0}" alt v-for="(ele, index) in item.imageList" />
<img :src="ele" :class="{ img1: index !== 0 }" alt v-for="(ele, index) in item.imageList" />
</div>
<div class="top-num">{{ item.count }}</div>
</div>
<div class="item-title">{{ item.name }}</div>
<div class="type">
<div
class="type-item"
:class="getClassName(ele.industryName)"
v-for="ele in item.industryList"
>{{ ele.industryName }}</div>
<div class="type-item" :class="getClassName(ele.industryName)" v-for="ele in item.industryList">
{{ ele.industryName }}
</div>
</div>
</div>
</div>
......@@ -34,8 +32,8 @@
<div class="left-title">排华联盟分布情况</div>
</div>
<div class="title-right">
<div class="right-num" :class="{click: currentAntiType === 'num'}">排华联盟数量</div>
<div class="right-num" :class="{click: currentAntiType === 'active'}">排华联盟动态</div>
<div class="right-num" :class="{ click: currentAntiType === 'num' }">排华联盟数量</div>
<div class="right-num" :class="{ click: currentAntiType === 'active' }">排华联盟动态</div>
</div>
</div>
......@@ -86,11 +84,7 @@
</el-tooltip>
<div class="item-bottom">
<div class="bottom-left">
<div
class="left-item"
:class="getClassName(ele.industryName)"
v-for="ele in item.industryList"
>
<div class="left-item" :class="getClassName(ele.industryName)" v-for="ele in item.industryList">
<span>{{ ele.industryName }}</span>
</div>
</div>
......@@ -111,7 +105,7 @@
<div class="img-list">
<img
:src="ele.image"
:class="{img1: index !== 0}"
:class="{ img1: index !== 0 }"
alt
v-for="(ele, index) in item.countryList"
/>
......@@ -157,160 +151,160 @@
<script setup>
import { onMounted, ref, computed } from "vue";
import * as echarts from "echarts";
import { getAllUnionList, getDynamic, getPrediction, getUnionCount, getIndustry, getCountryRelation } from '@/api/allUnion.js'
import { getAllUnionList, getDynamic, getPrediction, getUnionCount, getIndustry, getCountryRelation } from "@/api/allUnion.js";
const carouselList = ref([
{
name: '芯片四方联盟1',
name: "芯片四方联盟1",
num: 21,
area: ['人工智能'],
area: ["人工智能"],
imgList: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
},
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
}
]
},
{
name: '芯片四方联盟2',
name: "芯片四方联盟2",
num: 21,
area: ['人工智能'],
area: ["人工智能"],
imgList: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
},
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
}
]
},
{
name: '芯片四方联盟3',
name: "芯片四方联盟3",
num: 21,
area: ['人工智能'],
area: ["人工智能"],
imgList: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
},
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
}
]
},
{
name: '芯片四方联盟4',
name: "芯片四方联盟4",
num: 21,
area: ['人工智能'],
area: ["人工智能"],
imgList: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
},
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
}
]
},
{
name: '芯片四方联盟5',
name: "芯片四方联盟5",
num: 21,
area: ['人工智能', '集成电路'],
area: ["人工智能", "集成电路"],
imgList: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
},
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
}
]
},
{
name: '芯片四方联盟6',
name: "芯片四方联盟6",
num: 21,
area: ['人工智能'],
area: ["人工智能"],
imgList: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png'
},
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png"
}
]
},
])
}
]);
const startIndex = ref(0);
......@@ -330,118 +324,118 @@ const handleSwitch = flag => {
}
};
const getAreaList = (areaList) => {
const getAreaList = areaList => {
if (areaList && areaList.length > 2) {
const array = areaList.splice(0, 2)
console.log('---areaList', array)
return array
const array = areaList.splice(0, 2);
console.log("---areaList", array);
return array;
} else {
return areaList
return areaList;
}
}
};
const getImageList = (imageList) => {
const getImageList = imageList => {
if (imageList && imageList.length > 5) {
const array = imageList.splice(0, 5)
return array
const array = imageList.splice(0, 5);
return array;
} else {
return imageList
return imageList;
}
}
};
//打压遏制手段分布
const showCarouselList = computed(() => {
return carouselList.value.slice(startIndex.value, startIndex.value + 5);
});
const getClassName = (type) => {
let className = ''
const getClassName = type => {
let className = "";
switch (type) {
case '人工智能':
className = 'ai'
break
case '新材料':
className = 'material'
break
case '量子科技':
className = 'technology'
break
case '生物科技':
className = 'organism'
break
case '航空航天':
className = 'aerospace'
break
case '能源':
className = 'energy'
break
case '集成电路':
className = 'integrated'
break
case '':
className = 'none-class'
break
case "人工智能":
className = "ai";
break;
case "新材料":
className = "material";
break;
case "量子科技":
className = "technology";
break;
case "生物科技":
className = "organism";
break;
case "航空航天":
className = "aerospace";
break;
case "能源":
className = "energy";
break;
case "集成电路":
className = "integrated";
break;
case "":
className = "none-class";
break;
default:
className = 'other'
className = "other";
}
return className
}
return className;
};
const currentAntiType = ref('num')
const currentAntiType = ref("num");
const antiChinaNum = ref([
{
name: '美国1111111111111111',
name: "美国1111111111111111",
value: 24,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '欧盟',
name: "欧盟",
value: 18,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: 'Japan',
name: "Japan",
value: 13,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '韩国',
name: "韩国",
value: 13,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '英国',
name: "英国",
value: 9,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '加拿大',
name: "加拿大",
value: 6,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '澳大利亚',
name: "澳大利亚",
value: 5,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '菲律宾',
name: "菲律宾",
value: 3,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '新西兰',
name: "新西兰",
value: 3,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
},
{
name: '印度',
name: "印度",
value: 2,
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/us.png"
}
])
]);
// echarts地图的颜色区间
const startColor = [130, 175, 224]; // rgb(130, 175, 224)
......@@ -449,7 +443,7 @@ const endColor = [5, 95, 194]; // rgb(5, 95, 194)
// 计算颜色插值函数
const getColorByValue = (value, maxValue) => {
if (maxValue === 0) return `rgb(${startColor.join(',')})`;
if (maxValue === 0) return `rgb(${startColor.join(",")})`;
const ratio = value / maxValue;
const r = Math.round(startColor[0] + (endColor[0] - startColor[0]) * ratio);
......@@ -457,10 +451,10 @@ const getColorByValue = (value, maxValue) => {
const b = Math.round(startColor[2] + (endColor[2] - startColor[2]) * ratio);
return `rgb(${r}, ${g}, ${b})`;
}
};
const chartDom = ref()
const myChart = ref()
const chartDom = ref();
const myChart = ref();
function createChart() {
// 找到最大值用于颜色计算
const maxValue = Math.max(...antiChinaNum.value.map(item => item.value));
......@@ -471,7 +465,7 @@ function createChart() {
itemStyle: {
color: getColorByValue(item.value, maxValue)
}
}))
}));
const option = {
// geo: {
......@@ -487,18 +481,17 @@ function createChart() {
// }
// },
tooltip: {
trigger: 'item',
trigger: "item",
formatter: function (params) {
if (params.data) {
// 从数据中查找对应的中文名称
const item = antiChinaNum.value.find((item) => item.name === params.name)
console.log(item)
const item = antiChinaNum.value.find(item => item.name === params.name);
console.log(item);
if (item) {
return `${item.zhName}: ${params.data.value || 0}`;
} else {
return `${params.name}: ${params.data.value || 0}`;
}
}
return params.name;
}
......@@ -506,41 +499,38 @@ function createChart() {
visualMap: {
min: 0,
max: maxValue,
left: 'left',
top: 'bottom',
text: ['高', '低'],
left: "left",
top: "bottom",
text: ["高", "低"],
calculable: true,
inRange: {
color: [
`rgb(${startColor.join(',')})`,
`rgb(${endColor.join(',')})`
]
color: [`rgb(${startColor.join(",")})`, `rgb(${endColor.join(",")})`]
},
textStyle: {
color: '#fff'
color: "#fff"
}
},
series: [
{
name: '数据值',
type: 'map',
name: "数据值",
type: "map",
roam: true, // 允许缩放和平移
zoom: 1.2, // 初始缩放级别
map: 'world',
map: "world",
emphasis: {
label: {
show: true,
color: '#fff'
color: "#fff"
},
itemStyle: {
areaColor: null,
borderWidth: 1,
borderColor: '#fff'
borderColor: "#fff"
}
},
itemStyle: {
areaColor: 'rgba(231, 243, 255, 1)', // 所有区域的默认底色
borderColor: 'rgb(130, 175, 224)' // 边界线颜色
areaColor: "rgba(231, 243, 255, 1)", // 所有区域的默认底色
borderColor: "rgb(130, 175, 224)" // 边界线颜色
},
data: processedData
}
......@@ -549,100 +539,101 @@ function createChart() {
myChart.value.setOption(option);
}
function fetchGeoJSON() {
chartDom.value = document.getElementById('echartsMap')
chartDom.value = document.getElementById("echartsMap");
if (!chartDom.value) return;
if (myChart.value) myChart.value.dispose();
myChart.value = echarts.init(chartDom.value)
myChart.value = echarts.init(chartDom.value);
myChart.value.showLoading();
fetch('/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/world.json').then((res) => res.json()).then((result) => {
echarts.registerMap('world', result);
fetch("/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/world.json")
.then(res => res.json())
.then(result => {
echarts.registerMap("world", result);
createChart();
myChart.value.hideLoading();
})
});
}
const newsList = ref([
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
title: '芯片四方联盟: 发布新版管制清单',
content: '2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...',
area: ['新材料', '集成电路'],
time: '2025年12月18日'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
title: "芯片四方联盟: 发布新版管制清单",
content: "2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...",
area: ["新材料", "集成电路"],
time: "2025年12月18日"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
title: '芯片四方联盟: 发布新版管制清单',
content: '2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...',
area: ['新材料', '集成电路'],
time: '2025年12月18日'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
title: "芯片四方联盟: 发布新版管制清单",
content: "2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...",
area: ["新材料", "集成电路"],
time: "2025年12月18日"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
title: '芯片四方联盟: 发布新版管制清单',
content: '2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...',
area: ['新材料', '集成电路'],
time: '2025年12月18日'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
title: "芯片四方联盟: 发布新版管制清单",
content: "2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...",
area: ["新材料", "集成电路"],
time: "2025年12月18日"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
title: '芯片四方联盟: 发布新版管制清单',
content: '2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...',
area: ['新材料', '集成电路'],
time: '2025年12月18日'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
title: "芯片四方联盟: 发布新版管制清单",
content: "2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...",
area: ["新材料", "集成电路"],
time: "2025年12月18日"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
title: '芯片四方联盟: 发布新版管制清单',
content: '2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...',
area: ['新材料', '集成电路'],
time: '2025年12月18日'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
title: "芯片四方联盟: 发布新版管制清单",
content: "2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...",
area: ["新材料", "集成电路"],
time: "2025年12月18日"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
title: '芯片四方联盟: 发布新版管制清单',
content: '2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...',
area: ['新材料', '集成电路'],
time: '2025年12月18日'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
title: "芯片四方联盟: 发布新版管制清单",
content: "2026财年国防授权法案(NDAA)已于2025年12月18日由美国总统特朗普...",
area: ["新材料", "集成电路"],
time: "2025年12月18日"
}
])
]);
const warningList = ref([
{
countries: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
}
],
area: [
{
type: '人工智能',
content: '推出“数字基础设施增长计划框架”(DiGi Framework)',
time: '2024年11月21日'
type: "人工智能",
content: "推出“数字基础设施增长计划框架”(DiGi Framework)",
time: "2024年11月21日"
},
{
type: '人工智能',
content: '推出“数字基础设施增长计划框架”(DiGi Framework)',
time: '2024年11月21日'
type: "人工智能",
content: "推出“数字基础设施增长计划框架”(DiGi Framework)",
time: "2024年11月21日"
},
{
type: '人工智能',
content: '推出“数字基础设施增长计划框架”(DiGi Framework)',
time: '2024年11月21日'
type: "人工智能",
content: "推出“数字基础设施增长计划框架”(DiGi Framework)",
time: "2024年11月21日"
}
],
num: 3
......@@ -650,51 +641,50 @@ const warningList = ref([
{
countries: [
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
},
{
img: '/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png',
name: '美国'
img: "/src/views/ZMOverView/components/fourSuppress/components/allUnion/assets/usa.png",
name: "美国"
}
],
area: [
{
type: '人工智能',
content: '推出“数字基础设施增长计划框架”(DiGi Framework)',
time: '2024年11月21日'
type: "人工智能",
content: "推出“数字基础设施增长计划框架”(DiGi Framework)",
time: "2024年11月21日"
}
],
num: 1
}
])
]);
const getContent = (countries) => {
const getContent = countries => {
if (countries) {
let result = '' // 美国 / 日本 / 韩国 / 印度
let result = ""; // 美国 / 日本 / 韩国 / 印度
if (countries.length > 1) {
for (let i = 0; i < countries.length; i++) {
result += countries[i].name
result += countries[i].name;
if (i !== countries.length - 1) {
result += ' / '
result += " / ";
}
}
} else if (countries.length === 1) {
result += countries[0].name
result += countries[0].name;
}
return result
return result;
}
}
};
const leftChartRef = ref(null);
let leftChart;
......@@ -706,23 +696,23 @@ const initLeftDonut = async () => {
if (!leftChartRef.value) return;
if (leftChart) leftChart.dispose();
leftChart = echarts.init(leftChartRef.value);
let data = []
let data = [];
try {
const res = await getIndustry();
if (res && res.code === 200) {
for (let i = 0; i < res.data.length; i++) {
let item = {
name: '',
name: "",
value: 0
}
};
item.name = res.data[i].industry
item.value = res.data[i].amount
item.name = res.data[i].industry;
item.value = res.data[i].amount;
item.itemStyle = {
color: getColor(colors, item.name)
}
data.push(item)
};
data.push(item);
}
}
} catch (error) {
......@@ -742,7 +732,8 @@ const initLeftDonut = async () => {
const option = {
tooltip: { trigger: "item", formatter: ({ name, value, percent }) => `${name}<br/>${value}${percent}%` },
series: [{
series: [
{
type: "pie",
radius: [96, 120],
center: ["50%", "50%"],
......@@ -751,15 +742,33 @@ const initLeftDonut = async () => {
label: {
show: true,
position: "outside",
alignTo: 'edge',
alignTo: "edge",
formatter: ({ name, value, percent }) => `{name|${name}} {value|${value}项} {percent|${percent}%}`,
minMargin: 5,
edgeDistance: 10,
lineHeight: 15,
rich: {
name: { fontSize: 16, fontFamily: "Microsoft YaHei", fontWeight: 700, lineHeight: 24, color: "rgb(59, 65, 75)" },
value: { fontSize: 14, fontFamily: "Microsoft YaHei", fontWeight: 400, lineHeight: 22, color: "rgb(95, 101, 108)" },
percent: { fontSize: 14, fontFamily: "Microsoft YaHei", fontWeight: 400, lineHeight: 22, color: "rgb(95, 101, 108)" }
name: {
fontSize: 16,
fontFamily: "Microsoft YaHei",
fontWeight: 700,
lineHeight: 24,
color: "rgb(59, 65, 75)"
},
value: {
fontSize: 14,
fontFamily: "Microsoft YaHei",
fontWeight: 400,
lineHeight: 22,
color: "rgb(95, 101, 108)"
},
percent: {
fontSize: 14,
fontFamily: "Microsoft YaHei",
fontWeight: 400,
lineHeight: 22,
color: "rgb(95, 101, 108)"
}
}
},
labelLine: {
......@@ -784,7 +793,8 @@ const initLeftDonut = async () => {
...d,
labelLine: { lineStyle: { color: getColor(colors, d.name), width: 1 } }
}))
}]
}
]
};
leftChart.setOption(option);
};
......@@ -793,8 +803,8 @@ const initRightDonut = async () => {
if (!rightChartRef.value) return;
if (rightChart) rightChart.dispose();
rightChart = echarts.init(rightChartRef.value);
let data = []
let links = []
let data = [];
let links = [];
try {
const res = await getCountryRelation();
......@@ -804,23 +814,23 @@ const initRightDonut = async () => {
name: res.data[i].country,
x: Math.random() * 10,
y: Math.random() * 10
}
};
let item1 = {
name: res.data[i].relationCountry,
x: Math.random() * 10,
y: Math.random() * 10
}
};
// 先判断data中是否包含上述数据
let index = data.findIndex((ele) => ele.name === item.name)
let index1 = data.findIndex((ele) => ele.name === item1.name)
let index = data.findIndex(ele => ele.name === item.name);
let index1 = data.findIndex(ele => ele.name === item1.name);
// 不存在则向data中添加
if (index === -1) {
data.push(item)
data.push(item);
}
if (index1 === -1) {
data.push(item1)
data.push(item1);
}
let link = {
......@@ -834,9 +844,9 @@ const initRightDonut = async () => {
width: res.data[i].amount,
curveness: 0.2
}
}
};
links.push(link)
links.push(link);
}
}
} catch (error) {
......@@ -912,24 +922,24 @@ const initRightDonut = async () => {
},
tooltip: {},
animationDurationUpdate: 1500,
animationEasingUpdate: 'quinticInOut',
animationEasingUpdate: "quinticInOut",
dataZoom: [
{
type: 'slider',
type: "slider",
start: 10,
end: 10
}
],
series: [
{
type: 'graph',
layout: 'none',
type: "graph",
layout: "none",
symbolSize: 50,
roam: true,
label: {
show: true
},
edgeSymbol: ['circle', ''],
edgeSymbol: ["circle", ""],
edgeSymbolSize: [4, 10],
edgeLabel: {
fontSize: 20
......@@ -949,46 +959,46 @@ const initRightDonut = async () => {
};
const getColor = (colors, name) => {
const index = colors.findIndex((i) => i.name === name)
const index = colors.findIndex(i => i.name === name);
if (index !== -1) {
return colors[index].value
return colors[index].value;
} else {
return "rgba(105, 177, 255, 1)"
return "rgba(105, 177, 255, 1)";
}
}
};
const colors = [
{
name: '集成电路',
value: "rgba(105, 177, 255, 1)",
name: "集成电路",
value: "rgba(105, 177, 255, 1)"
},
{
name: '新一代通信网络',
value: "rgba(135, 232, 222, 1)",
name: "新一代通信网络",
value: "rgba(135, 232, 222, 1)"
},
{
name: '人工智能',
value: "rgba(255, 192, 105, 1)",
name: "人工智能",
value: "rgba(255, 192, 105, 1)"
},
{
name: '能源',
value: "rgba(89, 126, 247, 1)",
name: "能源",
value: "rgba(89, 126, 247, 1)"
},
{
name: '先进制造',
value: "rgba(214, 228, 255, 1)",
name: "先进制造",
value: "rgba(214, 228, 255, 1)"
},
{
name: '生物科技',
value: "rgba(255, 120, 117, 1)",
name: "生物科技",
value: "rgba(255, 120, 117, 1)"
},
{
name: '航空航天',
value: "rgba(179, 127, 235, 1)",
name: "航空航天",
value: "rgba(179, 127, 235, 1)"
},
{
name: '新材料',
value: "rgba(255, 163, 158, 1)",
name: "新材料",
value: "rgba(255, 163, 158, 1)"
}
];
......@@ -997,84 +1007,83 @@ const getUnionList = async () => {
try {
const res = await getAllUnionList();
if (res && res.code === 200) {
console.log('----getUnionList', res.data)
carouselList.value = res.data
console.log("----getUnionList", res.data);
carouselList.value = res.data;
}
} catch (error) {
console.error("获取联盟列表接口失败:", error);
}
}
};
// 获取联盟动态
const getDynamicList = async () => {
try {
const res = await getDynamic();
if (res && res.code === 200) {
console.log('----getDynamicList', res.data)
newsList.value = res.data
console.log("----getDynamicList", res.data);
newsList.value = res.data;
}
} catch (error) {
console.error("获取联盟动态接口失败:", error);
}
}
};
// 获取联盟预警
const getPredictionList = async () => {
try {
const res = await getPrediction();
if (res && res.code === 200) {
console.log('----getPredictionList', res.data)
warningList.value = res.data
console.log("----getPredictionList", res.data);
warningList.value = res.data;
}
} catch (error) {
console.error("获取联盟动态接口失败:", error);
}
}
};
// 获取排华联盟数量
const getUnionCountList = async () => {
try {
const res = await getUnionCount();
if (res && res.code === 200) {
console.log('----getUnionCountList', res.data)
console.log("----getUnionCountList", res.data);
// 处理一下数据
antiChinaNum.value = res.data.map(item => {
item.value = item.count
item.zhName = item.name
item.name = item.ename
return item
})
item.value = item.count;
item.zhName = item.name;
item.name = item.ename;
return item;
});
}
} catch (error) {
console.error("获取联盟动态接口失败:", error);
}
}
};
const getTime = (time) => {
const getTime = time => {
if (time) {
const array = time.split('-')
return `${array[0]}${array[1]}${array[2]}日`
const array = time.split("-");
return `${array[0]}${array[1]}${array[2]}日`;
}
}
};
const getName = (item) => {
const getName = item => {
if (item) {
return item[0].industryName
return item[0].industryName;
} else {
return ''
return "";
}
}
};
onMounted(async () => {
await getUnionList()
await getDynamicList()
await getPredictionList()
await getUnionCountList()
await getUnionList();
await getDynamicList();
await getPredictionList();
await getUnionCountList();
fetchGeoJSON();
initLeftDonut()
initRightDonut()
})
initLeftDonut();
initRightDonut();
});
</script>
<style lang="scss" scoped>
......@@ -1215,8 +1224,7 @@ onMounted(async () => {
overflow-x: auto;
overflow-y: hidden;
width: calc(100% - 22px);
height: 24px;
height: 25px;
.type-item {
display: inline-block;
border-radius: 4px;
......@@ -1234,11 +1242,13 @@ onMounted(async () => {
width: 24px;
height: 48px;
margin-right: 8px;
cursor: pointer;
}
.right-btn {
width: 24px;
height: 48px;
margin-left: 8px;
cursor: pointer;
}
}
......
......@@ -24,8 +24,8 @@
</div>
</div>
<div class="title">
<span class="title-one">当前规则限制数据已关联至{{ overviewInfo.Relation[0].TYPE }}</span>
<span class="title-two">{{ overviewInfo.Relation[0].RELATIONNAME }} &nbsp;{{ overviewInfo.Relation[0].RELATIONDATE }}</span>
<span class="title-one">当前规则限制数据已关联至{{ getRelation?.TYPE }}</span>
<span class="title-two">{{ getRelation?.RELATIONNAME }} &nbsp;{{ getRelation?.RELATIONDATE }}</span>
<img src="./assets/right.png" alt />
</div>
<div class="main">
......@@ -169,7 +169,7 @@
</template>
<script setup>
import { ref, onMounted } from "vue";
import { ref, onMounted, computed } from "vue";
import ningbo from "./assets/ningbo.png";
import deguo from "./assets/deguo.png";
import cycle from "./assets/cycle.png";
......@@ -309,6 +309,10 @@ const getTime = (time) => {
return `${array[0]}${array[1]}${array[2]}日`
}
}
const getRelation = computed(() => {
return overviewInfo?.Relation ? overviewInfo?.Relation[0] : {}
})
onMounted(() => {
getUrlParams()
getSanctionOverviewInfo()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论