提交 3f5b529e authored 作者: yanpeng's avatar yanpeng

问题修改

上级 b8c93c36
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<img src="./image1.png" alt="" /> <img src="./image1.png" alt="" />
</div> </div>
<div class="header-title"> <div class="header-title">
<slot name='title'>{{ "社交媒体" }}</slot> <slot name="title">{{ "社交媒体" }}</slot>
</div> </div>
<div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div> <div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div>
</div> </div>
...@@ -14,10 +14,12 @@ ...@@ -14,10 +14,12 @@
<div class="avatar-container"> <div class="avatar-container">
<img :src="item[props.imageUrl] || avatarUser" :alt="item[props.name]" class="avatar" /> <img :src="item[props.imageUrl] || avatarUser" :alt="item[props.name]" class="avatar" />
<div class="avatar-containerOne" v-if="isRepublicanParty"><img src="./image2.png" alt="" <div class="avatar-containerOne" v-if="isRepublicanParty">
class="avatar-imageOne" /></div> <img src="./image2.png" alt="" class="avatar-imageOne" />
<div class="avatar-containerTwo" v-if="isUnitedStatesSenate"><img src="./image3.png" alt="" </div>
class="avatar-imageTwo" /></div> <div class="avatar-containerTwo" v-if="isUnitedStatesSenate">
<img src="./image3.png" alt="" class="avatar-imageTwo" />
</div>
</div> </div>
<div class="bubble-container"> <div class="bubble-container">
<div class="bubble"> <div class="bubble">
...@@ -49,11 +51,10 @@ ...@@ -49,11 +51,10 @@
</div> --> </div> -->
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { computed } from 'vue'; import { computed } from "vue";
import avatarUser from "@/assets/images/avatar_user.png"; import avatarUser from "@/assets/images/avatar_user.png";
const emit = defineEmits(["click", "info-click"]); const emit = defineEmits(["click", "info-click"]);
...@@ -88,34 +89,32 @@ const props = defineProps({ ...@@ -88,34 +89,32 @@ const props = defineProps({
}, },
content: { content: {
type: String, type: String,
default: default: "content"
"content"
} }
}); });
const formattedTime = computed((index) => { const formattedTime = computed(index => {
const date = new Date(index); const date = new Date(index);
if (isNaN(date.getTime())) { if (isNaN(date.getTime())) {
return index; // 如果不是有效日期,返回原值 return index; // 如果不是有效日期,返回原值
} }
const year = date.getFullYear(); const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()); const day = String(date.getDate());
const hours = String(date.getHours()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, "0");
const seconds = String(date.getSeconds()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, "0");
// return `${year}年${month}月${day}日 ${hours}:${minutes}:${seconds}`; // return `${year}年${month}月${day}日 ${hours}:${minutes}:${seconds}`;
return `${month}${day}${hours}:${minutes}`; return `${month}${day}${hours}:${minutes}`;
}); });
const handleClickPerson = item => {
const handleClickPerson = (item) => {
emit("person-click", item); emit("person-click", item);
}; };
const handleInfoClick = (item) => { const handleInfoClick = item => {
emit("info-click", item); emit("info-click", item);
}; };
const handleToMoreNews = (item) => { const handleToMoreNews = item => {
emit("more-click", item); emit("more-click", item);
}; };
</script> </script>
...@@ -163,13 +162,13 @@ const handleToMoreNews = (item) => { ...@@ -163,13 +162,13 @@ const handleToMoreNews = (item) => {
} }
.more { .more {
width: 45px; width: 50px;
height: 24px; height: 24px;
position: absolute; position: absolute;
top: 12px; top: 12px;
right: 27px; right: 27px;
color: rgb(5, 95, 194); color: rgb(5, 95, 194);
font-family: 'Source Han Sans CN'; font-family: "Source Han Sans CN";
font-size: 16px; font-size: 16px;
font-weight: 400; font-weight: 400;
line-height: 24px; line-height: 24px;
...@@ -208,16 +207,13 @@ const handleToMoreNews = (item) => { ...@@ -208,16 +207,13 @@ const handleToMoreNews = (item) => {
} }
.avatar-containerOne { .avatar-containerOne {
left: 2px; left: 2px;
top: 29px; top: 29px;
.avatar-imageOne { .avatar-imageOne {
width: 20px; width: 20px;
height: 20px; height: 20px;
} }
} }
.avatar-containerTwo { .avatar-containerTwo {
...@@ -225,14 +221,11 @@ const handleToMoreNews = (item) => { ...@@ -225,14 +221,11 @@ const handleToMoreNews = (item) => {
top: 29px; top: 29px;
.avatar-imageTwo { .avatar-imageTwo {
width: 20px; width: 20px;
height: 20px; height: 20px;
} }
} }
.avatar { .avatar {
width: 42px; width: 42px;
height: 42px; height: 42px;
...@@ -259,7 +252,6 @@ const handleToMoreNews = (item) => { ...@@ -259,7 +252,6 @@ const handleToMoreNews = (item) => {
align-items: center; align-items: center;
margin-bottom: 5px; margin-bottom: 5px;
.name { .name {
color: rgb(59, 65, 75); color: rgb(59, 65, 75);
font-family: "Source Han Sans CN"; font-family: "Source Han Sans CN";
...@@ -289,7 +281,6 @@ const handleToMoreNews = (item) => { ...@@ -289,7 +281,6 @@ const handleToMoreNews = (item) => {
line-height: 24px; line-height: 24px;
letter-spacing: 0px; letter-spacing: 0px;
text-align: justify; text-align: justify;
} }
.triangle { .triangle {
...@@ -307,7 +298,7 @@ const handleToMoreNews = (item) => { ...@@ -307,7 +298,7 @@ const handleToMoreNews = (item) => {
/* 内层:原有颜色的三角形,覆盖在外层上面,模拟描边效果 */ /* 内层:原有颜色的三角形,覆盖在外层上面,模拟描边效果 */
.triangle::after { .triangle::after {
content: ''; content: "";
position: absolute; position: absolute;
top: -8px; top: -8px;
/* 向上偏移1px,对齐中心 */ /* 向上偏移1px,对齐中心 */
...@@ -319,31 +310,12 @@ const handleToMoreNews = (item) => { ...@@ -319,31 +310,12 @@ const handleToMoreNews = (item) => {
border-bottom: 8px solid transparent; border-bottom: 8px solid transparent;
border-right: 8px solid rgba(246, 250, 255, 1); border-right: 8px solid rgba(246, 250, 255, 1);
} }
} }
} }
} }
} }
} }
/* 响应式设计 */ /* 响应式设计 */
@media (max-width: 768px) { @media (max-width: 768px) {
.message-bubble { .message-bubble {
......
<template> <template>
<div class="box3"> <div class="box3">
<div class="box3-header"> <div class="box3-header">
<div class="box3-header-left"> <div class="box3-header-left">
<div class="box3-header-icon"> <div class="box3-header-icon">
<img src="./image1.png" alt="" /> <img src="./image1.png" alt="" />
</div> </div>
<div class="box3-header-title">{{ "新闻资讯" }}</div> <div class="box3-header-title">{{ "新闻资讯" }}</div>
<div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div> <div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div>
</div> </div>
</div> </div>
<div class="box3-main"> <div class="box3-main">
<div class="box3-item" v-for="(news, index) in newsList" :key="index" @click="handleToNewsAnalysis(news)"> <div class="box3-item" v-for="(news, index) in newsList" :key="index" @click="handleToNewsAnalysis(news)">
<div class="left"> <div class="left">
<img :src="news[props.img] ? news[props.img] : DefaultIconNews" alt="" /> <img :src="news[props.img] ? news[props.img] : DefaultIconNews" alt="" />
</div> </div>
<div class="right"> <div class="right">
<div class="right-top"> <div class="right-top">
<div class="title"><span class="text-inner">{{ news[props.title] }}</span></div> <div class="title">
<div class="time">{{ news[props.from] }}</div> <span class="text-inner">{{ news[props.title] }}</span>
</div> </div>
<div class="right-footer">{{ news[props.content] }}</div> <div class="time">{{ news[props.from] }}</div>
</div> </div>
</div> <div class="right-footer">{{ news[props.content] }}</div>
</div> </div>
</div> </div>
</div>
</div>
</template> </template>
<script setup> <script setup>
import DefaultIconNews from "@/assets/icons/default-icon-news.png"; import DefaultIconNews from "@/assets/icons/default-icon-news.png";
const props = defineProps({ const props = defineProps({
// 新闻列表数据
// 新闻列表数据 newsList: {
newsList: { type: Array,
type: Array, default: () => []
default: () => [] },
},
img: {
img: { type: String,
type: String, default: "img"
default: 'img' },
}, title: {
title: { type: String,
type: String, default: "title"
default: "title" },
}, from: {
from: { type: String,
type: String, default: "from"
default: "from" },
}, content: {
content: { type: String,
type: String, default: "content"
default: "content" }
},
}); });
const emit = defineEmits(['item-click', 'more-click']); const emit = defineEmits(["item-click", "more-click"]);
const handleToMoreNews = () => { const handleToMoreNews = () => {
emit('more-click') emit("more-click");
}; };
const handleToNewsAnalysis = (item, index) => { const handleToNewsAnalysis = (item, index) => {
emit('item-click', item, index) emit("item-click", item, index);
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.box3 { .box3 {
width: 792px !important; width: 792px !important;
height: 450px !important; height: 450px !important;
border-radius: 10px !important; border-radius: 10px !important;
box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1) !important; box-shadow: 0px 0px 20px 0px rgba(25, 69, 130, 0.1) !important;
background: rgba(255, 255, 255, 1) !important; background: rgba(255, 255, 255, 1) !important;
display: flex !important; display: flex !important;
flex-direction: column; flex-direction: column;
gap: 0 !important; gap: 0 !important;
overflow: hidden; overflow: hidden;
.box3-header {
.box3-header { height: 48px !important;
height: 48px !important; border-bottom: 1px solid rgba(234, 236, 238, 1) !important;
border-bottom: 1px solid rgba(234, 236, 238, 1) !important; margin: 0 !important;
margin: 0 !important; display: flex !important;
display: flex !important; justify-content: space-between !important;
justify-content: space-between !important; position: relative !important;
position: relative !important; width: 100%;
width: 100%; box-sizing: border-box;
box-sizing: border-box;
.box3-header-left {
.box3-header-left { display: flex !important;
display: flex !important;
.box3-header-icon {
.box3-header-icon { margin-left: 19px !important;
margin-left: 19px !important; margin-top: 14px !important;
margin-top: 14px !important; width: 24px !important;
width: 24px !important; height: 24px !important;
height: 24px !important;
img {
img { width: 100% !important;
width: 100% !important; height: 100% !important;
height: 100% !important; }
} }
}
.box3-header-title {
.box3-header-title { margin-top: 11px !important;
margin-top: 11px !important; margin-left: 17px !important;
margin-left: 17px !important; height: 26px !important;
height: 26px !important; color: var(--color-main-active) !important;
color: var(--color-main-active) !important; font-family: "Source Han Sans CN" !important;
font-family: 'Source Han Sans CN' !important; font-size: 20px !important;
font-size: 20px !important; font-weight: 700 !important;
font-weight: 700 !important; line-height: 26px !important;
line-height: 26px !important; }
} }
}
.more {
.more { width: 50px;
width: 45px; height: 24px;
height: 24px; position: absolute;
position: absolute; top: 12px;
top: 12px; right: 27px;
right: 27px; color: rgba(20, 89, 187, 1);
color: rgba(20, 89, 187, 1); font-family: "Source Han Sans CN";
font-family: 'Source Han Sans CN'; font-size: 16px;
font-size: 16px; font-weight: 400;
font-weight: 400; line-height: 24px;
line-height: 24px; cursor: pointer;
cursor: pointer; }
} }
}
.box3-main {
.box3-main { height: 401px;
height: 401px; overflow-y: auto;
overflow-y: auto; overflow-x: hidden;
overflow-x: hidden; padding: 6px 0;
padding: 6px 0;
.box3-item {
.box3-item { display: flex;
display: flex; height: 78px;
height: 78px; width: 749px;
width: 749px; margin-left: 21px;
margin-left: 21px; border-bottom: 1px solid rgba(240, 242, 244, 1);
border-bottom: 1px solid rgba(240, 242, 244, 1); cursor: pointer;
cursor: pointer;
&:hover {
&:hover { .right-top .title {
.right-top .title { color: rgb(5, 95, 194) !important;
color: rgb(5, 95, 194) !important; font-weight: 700;
font-weight: 700; }
}
.right-top .text-inner {
.right-top .text-inner { border-bottom-color: rgb(5, 95, 194) !important;
border-bottom-color: rgb(5, 95, 194) !important; }
}
}
} .left {
width: 72px;
.left { height: 48px;
width: 72px; margin-top: 15px;
height: 48px;
margin-top: 15px; img {
width: 100%;
img { height: 100%;
width: 100%; }
height: 100%; }
}
} .right {
width: 657px;
.right { margin-left: 20px;
width: 657px;
margin-left: 20px; .right-top {
width: 657px;
.right-top { display: flex;
width: 657px; justify-content: space-between;
display: flex;
justify-content: space-between; .title {
margin-top: 14px;
.title { width: 500px;
margin-top: 14px; height: 24px;
width: 500px; color: rgba(59, 65, 75, 1);
height: 24px; font-family: "Source Han Sans CN";
color: rgba(59, 65, 75, 1); font-size: 16px;
font-family: 'Source Han Sans CN'; font-weight: 700;
font-size: 16px; line-height: 24px;
font-weight: 700; overflow: hidden;
line-height: 24px; text-overflow: ellipsis;
overflow: hidden; white-space: nowrap;
text-overflow: ellipsis;
white-space: nowrap; .text-inner {
border-bottom: 1px solid transparent;
.text-inner { }
border-bottom: 1px solid transparent; }
} .time {
} width: 157px;
text-align: right;
.time { height: 22px;
width: 157px; margin-top: 14px;
text-align: right; color: rgba(95, 101, 108, 1);
height: 22px; font-family: "Source Han Sans CN";
margin-top: 14px; font-size: 14px;
color: rgba(95, 101, 108, 1); font-weight: 400;
font-family: 'Source Han Sans CN'; line-height: 22px;
font-size: 14px; overflow: hidden;
font-weight: 400; text-overflow: ellipsis;
line-height: 22px; white-space: nowrap;
overflow: hidden; }
text-overflow: ellipsis; }
white-space: nowrap;
} .right-footer {
} width: 657px;
height: 24px;
.right-footer { color: rgba(59, 65, 75, 1);
width: 657px; font-family: "Source Han Sans CN";
height: 24px; font-size: 16px;
color: rgba(59, 65, 75, 1); font-weight: 400;
font-family: 'Source Han Sans CN'; line-height: 24px;
font-size: 16px; overflow: hidden;
font-weight: 400; text-overflow: ellipsis;
line-height: 24px; white-space: nowrap;
overflow: hidden; }
text-overflow: ellipsis; }
white-space: nowrap; }
} }
}
}
}
} }
</style> </style>
\ No newline at end of file
...@@ -246,6 +246,7 @@ ...@@ -246,6 +246,7 @@
/> />
<div class="chart-header">{{ "关键词云" }}</div> <div class="chart-header">{{ "关键词云" }}</div>
<div class="box3Chart" id="box3Chart"></div> <div class="box3Chart" id="box3Chart"></div>
<!-- <Echarts :option="usChinaSanctionTrendOptions" height="100%"></Echarts> -->
</div> </div>
</div> </div>
</div> </div>
...@@ -259,6 +260,7 @@ import { onMounted, ref, computed, inject, watch, onUnmounted } from "vue"; ...@@ -259,6 +260,7 @@ import { onMounted, ref, computed, inject, watch, onUnmounted } from "vue";
import router from "@/router"; import router from "@/router";
import setChart from "@/utils/setChart"; import setChart from "@/utils/setChart";
import getWordCloudChart from "./uitls/worldCloudChart"; import getWordCloudChart from "./uitls/worldCloudChart";
import "echarts-wordcloud";
import { import {
getElementCount, getElementCount,
getNewDynamics, getNewDynamics,
...@@ -268,6 +270,7 @@ import { ...@@ -268,6 +270,7 @@ import {
getKeyWordDown, getKeyWordDown,
getOrderInfo getOrderInfo
} from "@/api/zmOverview/allElement"; } from "@/api/zmOverview/allElement";
import Echarts from "@/components/Chart/index.vue";
const activeDate = inject("activeDate"); const activeDate = inject("activeDate");
...@@ -409,6 +412,7 @@ const handleGetBox2ChartData = async () => { ...@@ -409,6 +412,7 @@ const handleGetBox2ChartData = async () => {
try { try {
const res = await getKeyWordUp(params); const res = await getKeyWordUp(params);
console.log("关键词云-上", res); console.log("关键词云-上", res);
console.log("关键词云-上 参数", params);
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
box2ChartData.value = res.data.map(item => { box2ChartData.value = res.data.map(item => {
return { return {
...@@ -422,6 +426,8 @@ const handleGetBox2ChartData = async () => { ...@@ -422,6 +426,8 @@ const handleGetBox2ChartData = async () => {
const handleBox2Chart = async () => { const handleBox2Chart = async () => {
await handleGetBox2ChartData(); await handleGetBox2ChartData();
let box2Chart = getWordCloudChart(box2ChartData.value); let box2Chart = getWordCloudChart(box2ChartData.value);
console.log("关键词云-上 options =>", box2Chart);
console.log("关键词云-上 box2ChartData =>", box2ChartData.value);
setChart(box2Chart, "box2Chart"); setChart(box2Chart, "box2Chart");
}; };
...@@ -504,6 +510,7 @@ const handleGetBox3ChartData = async () => { ...@@ -504,6 +510,7 @@ const handleGetBox3ChartData = async () => {
const handleBox3Chart = async () => { const handleBox3Chart = async () => {
await handleGetBox3ChartData(); await handleGetBox3ChartData();
let box3Chart = getWordCloudChart(box3ChartData.value); let box3Chart = getWordCloudChart(box3ChartData.value);
console.log("关键词云-下", box3Chart);
setChart(box3Chart, "box3Chart"); setChart(box3Chart, "box3Chart");
}; };
......
const getWordCloudChart = data => {
const option = {
grid: {
left: 0,
top: 0,
right: 0,
bottom: 0
},
series: [
{
type: "wordCloud",
width: "80%",
height: "80%",
shape: "circle", //
// 其他形状你可以使用形状路径
// 或者自定义路径
// shape: 'circle' // 圆形(默认)
// shape: 'rect' // 矩形
// shape: 'roundRect' // 圆角矩形
// shape: 'triangle' // 三角形
// shape: 'diamond' // 菱形
// shape: 'pentagon' // 五边形
// shape: 'star' // 星形
// shape: 'cardioid' // 心形
gridSize: 15, // 网格大小,影响词间距。
sizeRange: [10, 30], // 定义词云中文字大小的范围
rotationRange: [0, 0],
rotationStep: 15,
drawOutOfBound: false, // 是否超出画布
// 字体
textStyle: {
fontweight: "bold",
// normal: {
// color: function () {
// return 'rgb(' + [
// Math.round(Math.random() * 160),
// Math.round(Math.random() * 160),
// Math.round(Math.random() * 160)
// ].join(',') + ')';
// }
// },
color: function () {
let colors = [
"rgba(189, 33, 33, 1)",
"rgba(232, 151, 21, 1)",
"rgba(220, 190, 68, 1)",
"rgba(96, 58, 186, 1)",
"rgba(32, 121, 69, 1)",
"rgba(22, 119, 255, 1)"
];
return colors[parseInt(Math.random() * colors.length)];
},
emphasis: {
shadowBlur: 5,
shadowColor: "#333",
fontweight: "bold"
}
},
// 设置词云数据
data: data
}
]
};
return option;
};
const getWordCloudChart = (data) => { export default getWordCloudChart;
const option = {
grid: {
left: 0,
top: 0,
right: 0,
bottom: 0,
},
series: [
{
type: "wordCloud",
width: '80%',
height: '80%',
shape: "rect", //
// 其他形状你可以使用形状路径
// 或者自定义路径
// shape: 'circle' // 圆形(默认)
// shape: 'rect' // 矩形
// shape: 'roundRect' // 圆角矩形
// shape: 'triangle' // 三角形
// shape: 'diamond' // 菱形
// shape: 'pentagon' // 五边形
// shape: 'star' // 星形
// shape: 'cardioid' // 心形
gridSize: 15, // 网格大小,影响词间距。
sizeRange: [10, 30], // 定义词云中文字大小的范围
rotationRange: [0, 0],
rotationStep: 15,
drawOutOfBound: false, // 是否超出画布
// 字体
textStyle: {
// normal: {
// color: function () {
// return 'rgb(' + [
// Math.round(Math.random() * 160),
// Math.round(Math.random() * 160),
// Math.round(Math.random() * 160)
// ].join(',') + ')';
// }
// },
color: function () {
let colors = [
"rgba(189, 33, 33, 1)",
"rgba(232, 151, 21, 1)",
"rgba(220, 190, 68, 1)",
"rgba(96, 58, 186, 1)",
"rgba(32, 121, 69, 1)",
"rgba(22, 119, 255, 1)",
];
return colors[parseInt(Math.random() * colors.length)];
},
emphasis: {
shadowBlur: 5,
shadowColor: "#333",
},
},
// 设置词云数据
data: data,
},
],
}
return option
}
export default getWordCloudChart
\ No newline at end of file
...@@ -112,13 +112,11 @@ ...@@ -112,13 +112,11 @@
<div class="box1-top-content"> <div class="box1-top-content">
<div class="box1-top-content-item"> <div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 发布机构:</span> <span class="box1-top-content-item-title">· 发布机构:</span>
<span class="box1-top-content-item-content">{{ item.postOrgName <span class="box1-top-content-item-content">{{ item.postOrgName }}</span>
}}</span>
</div> </div>
<div class="box1-top-content-item"> <div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 生效日期:</span> <span class="box1-top-content-item-title">· 生效日期:</span>
<span class="box1-top-content-item-content">{{ item.postDate <span class="box1-top-content-item-content">{{ item.postDate }}</span>
}}</span>
</div> </div>
<div class="box1-top-content-item"> <div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 涉及领域:</span> <span class="box1-top-content-item-title">· 涉及领域:</span>
...@@ -356,10 +354,9 @@ ...@@ -356,10 +354,9 @@
<el-table-column label="重点领域" width="180"> <el-table-column label="重点领域" width="180">
<template #default="scope"> <template #default="scope">
<div style="display: flex; align-items: center; gap: 5px"> <div style="display: flex; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag" <el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
:type="getTagType(tag)">{{ tag
tag }}</el-tag>
}}</el-tag>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -373,23 +370,22 @@ ...@@ -373,23 +370,22 @@
<el-row :gutter="20" style="width: 1600px; margin: 0 auto; height: 505px; margin-top: 16px"> <el-row :gutter="20" style="width: 1600px; margin: 0 auto; height: 505px; margin-top: 16px">
<el-col :span="8"> <el-col :span="8">
<custom-container title="制裁领域分布" :titleIcon="radarIcon" height="480px"> <custom-container title="实体领域分布" :titleIcon="radarIcon" height="480px">
<template #header-right> <template #header-right>
<el-checkbox v-model="domainChecked" label="50%规则" size="large" /> <el-checkbox v-model="domainChecked" label="50%规则" size="large" />
</template> </template>
<template #default> <template #default>
<EChart :option="radarOption" autoresize :style="{ height: '450px' }" /> <EChart :option="radarOption" autoresize :style="{ height: '460px' }" />
</template> </template>
</custom-container> </custom-container>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<custom-container title="制裁清单数量增长趋势" :titleIcon="qushiIcon" height="480px"> <custom-container title="实体清单数量增长趋势" :titleIcon="qushiIcon" height="480px">
<template #header-right> <template #header-right>
<div style="display: flex; align-items: center; gap: 16px"> <div style="display: flex; align-items: center; gap: 16px">
<el-checkbox v-model="trendChecked" label="50%规则" size="large" /> <el-checkbox v-model="trendChecked" label="50%规则" size="large" />
<el-select v-model="selectedEntityId" placeholder="请选择清单类型" style="width: 160px"> <el-select v-model="selectedEntityId" placeholder="请选择清单类型" style="width: 160px">
<el-option v-for="item in infoList" :key="item.id" :label="item.nameZh" <el-option v-for="item in infoList" :key="item.id" :label="item.nameZh" :value="item.id" />
:value="item.id" />
</el-select> </el-select>
</div> </div>
</template> </template>
...@@ -419,8 +415,7 @@ ...@@ -419,8 +415,7 @@
<template #default> <template #default>
<div class="box4"> <div class="box4">
<div style="height: 90%; overflow-y: auto; padding-top: 10px"> <div style="height: 90%; overflow-y: auto; padding-top: 10px">
<div class="box4-item" v-for="(item, idx) in sanctionProcessList" <div class="box4-item" v-for="(item, idx) in sanctionProcessList" :key="item.title">
:key="item.title">
<div class="box4-item-left"> <div class="box4-item-left">
<el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" /> <el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" />
<div <div
...@@ -502,8 +497,7 @@ ...@@ -502,8 +497,7 @@
)?.[0] )?.[0]
}} }}
</div> </div>
<CommonPrompt :content="scope.row.name" <CommonPrompt :content="scope.row.name" style="flex: 1; overflow: hidden" />
style="flex: 1; overflow: hidden" />
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -511,10 +505,9 @@ ...@@ -511,10 +505,9 @@
<el-table-column prop="domains" label="涉及领域" min-width="150"> <el-table-column prop="domains" label="涉及领域" min-width="150">
<template #default="scope"> <template #default="scope">
<div class="domain-tags"> <div class="domain-tags">
<el-tag v-for="tag in scope.row.domains" :key="tag" <el-tag v-for="tag in scope.row.domains" :key="tag" :type="getTagType(tag)">{{
:type="getTagType(tag)">{{ tag
tag }}</el-tag>
}}</el-tag>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -600,10 +593,9 @@ ...@@ -600,10 +593,9 @@
<div class="left-main"> <div class="left-main">
<el-checkbox-group v-model="checkedTech"> <el-checkbox-group v-model="checkedTech">
<div class="checkbox-grid"> <div class="checkbox-grid">
<el-checkbox v-for="item in techOptions" :key="item.value" <el-checkbox v-for="item in techOptions" :key="item.value" :label="item.value">{{
:label="item.value">{{ item.label
item.label }}</el-checkbox>
}}</el-checkbox>
</div> </div>
</el-checkbox-group> </el-checkbox-group>
</div> </div>
...@@ -634,12 +626,10 @@ ...@@ -634,12 +626,10 @@
</div> </div>
<img :src="item.orgLogoUrl || comTitle" alt="" /> <img :src="item.orgLogoUrl || comTitle" alt="" />
<div class="main"> <div class="main">
<div class="main-title" @click="handleTitleClick(item)">{{ item.title }} <div class="main-title" @click="handleTitleClick(item)">{{ item.title }}</div>
</div>
<div class="main-desc">{{ item.desc }}</div> <div class="main-desc">{{ item.desc }}</div>
<div class="tag-box"> <div class="tag-box">
<div v-for="tag in item.tags" :key="tag" class="tag-item">{{ tag }} <div v-for="tag in item.tags" :key="tag" class="tag-item">{{ tag }}</div>
</div>
</div> </div>
<div :class="{ 'count-tag': item.countTag }">{{ item.countTag }}</div> <div :class="{ 'count-tag': item.countTag }">{{ item.countTag }}</div>
...@@ -1160,6 +1150,7 @@ const radarOption = ref({ ...@@ -1160,6 +1150,7 @@ const radarOption = ref({
confine: true confine: true
}, },
legend: { legend: {
show: false,
top: "0%", top: "0%",
icon: "circle", icon: "circle",
itemWidth: 12, itemWidth: 12,
...@@ -1175,9 +1166,13 @@ const radarOption = ref({ ...@@ -1175,9 +1166,13 @@ const radarOption = ref({
}, },
data: [] data: []
}, },
grid: {
top: "5%",
bottom: "5%"
},
radar: { radar: {
radius: "55%", radius: "60%",
center: ["50%", "55%"], center: ["50%", "50%"],
// shape: 'circle', // shape: 'circle',
indicator: [], indicator: [],
axisName: { axisName: {
...@@ -3522,6 +3517,7 @@ const handleMediaClick = item => { ...@@ -3522,6 +3517,7 @@ const handleMediaClick = item => {
margin-top: 21px; margin-top: 21px;
height: 450px; height: 450px;
display: flex; display: flex;
gap: 20px;
.center-center-news { .center-center-news {
flex-shrink: 0; flex-shrink: 0;
......
...@@ -113,8 +113,8 @@ export function getPieOption1(data, title) { ...@@ -113,8 +113,8 @@ export function getPieOption1(data, title) {
? params.labelRect.x ? params.labelRect.x
: params.labelRect.x + params.labelRect.width : params.labelRect.x + params.labelRect.width
: data.length < 10 : data.length < 10
? params.labelRect.x + params.labelRect.width ? params.labelRect.x + params.labelRect.width
: params.labelRect.x; : params.labelRect.x;
return { return {
labelLinePoints: points labelLinePoints: points
}; };
...@@ -1001,12 +1001,39 @@ export const getMultipleBarChart_m = object => { ...@@ -1001,12 +1001,39 @@ export const getMultipleBarChart_m = object => {
}, },
xAxis: { xAxis: {
type: "category", type: "category",
data: names data: names,
axisLabel: {
margin: 20
},
axisLabel: {
formatter: "{value} 年",
color: "rgba(95, 101, 108, 1)",
margin: 20
},
axisLine: {
lineStyle: {
color: "rgb(231, 243, 255)",
width: 1
}
},
axisTick: {
show: false
}
}, },
yAxis: { yAxis: {
type: "value", type: "value",
splitNumber: 5, splitNumber: 5,
alignTicks: false alignTicks: false,
name: "个",
nameLocation: "end",
nameGap: 10,
nameTextStyle: {
color: "rgba(95, 101, 108, 1)",
fontSize: 14,
fontWeight: 400,
fontFamily: "Microsoft YaHei",
padding: [0, 0, 0, 0]
}
}, },
series: datas series: datas
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论