提交 158c484d authored 作者: coderBryanFu's avatar coderBryanFu

feat:update

......@@ -51,7 +51,8 @@ export function getEntitiesDataInfo() {
method: "GET",
// url: '/api/entitiesDataInfo/latestInfoSelect',
// url: "/api/entitiesDataInfo/getLatestInfo",
url: "/api/sanctionList/export/getLatestInfo"
// url: "/api/sanctionList/export/getLatestInfo"
url: "/api/sanctionList/export/getLatestEntityListInfo"
})
);
}
......@@ -121,7 +122,7 @@ export function getSanctionsInfoCount() {
* sanReason: string
* }[]>}
*/
export function getSanctionProcess(typeName = "实体清单", pageNum = 1, pageSize = 10,isCn = false) {
export function getSanctionProcess(typeName = "实体清单", pageNum = 1, pageSize = 10, isCn = false) {
return request200(
request({
method: "POST",
......@@ -835,7 +836,6 @@ export function getScientificImpactEntityList(startTime) {
);
}
/**
* 概览页--获取出口管制制裁措施
* @param {Object} data
......@@ -854,6 +854,4 @@ export function getExportControlList(data) {
);
}
//
\ No newline at end of file
//
......@@ -6,7 +6,7 @@
<img src="./message-icon.svg" alt="" />
</div>
<div class="header-title">
<slot name='title'>{{ "社交媒体" }}</slot>
<slot name="title">{{ "社交媒体" }}</slot>
</div>
<div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div>
</div>
......@@ -15,10 +15,12 @@
<div class="avatar-container">
<img :src="item[props.imageUrl] || avatarUser" :alt="item[props.name]" class="avatar" />
<div class="avatar-containerOne" v-if="isRepublicanParty"><img src="./image2.png" alt=""
class="avatar-imageOne" /></div>
<div class="avatar-containerTwo" v-if="isUnitedStatesSenate"><img src="./image3.png" alt=""
class="avatar-imageTwo" /></div>
<div class="avatar-containerOne" v-if="isRepublicanParty">
<img src="./image2.png" alt="" class="avatar-imageOne" />
</div>
<div class="avatar-containerTwo" v-if="isUnitedStatesSenate">
<img src="./image3.png" alt="" class="avatar-imageTwo" />
</div>
</div>
<div class="bubble-container">
<div class="bubble">
......@@ -50,11 +52,10 @@
</div> -->
</div>
</div>
</template>
<script setup>
import { computed } from 'vue';
import { computed } from "vue";
import avatarUser from "@/assets/images/avatar_user.png";
const emit = defineEmits(["click", "info-click"]);
......@@ -89,34 +90,32 @@ const props = defineProps({
},
content: {
type: String,
default:
"content"
default: "content"
}
});
const formattedTime = computed((index) => {
const formattedTime = computed(index => {
const date = new Date(index);
if (isNaN(date.getTime())) {
return index; // 如果不是有效日期,返回原值
}
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 hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
const seconds = String(date.getSeconds()).padStart(2, "0");
// return `${year}年${month}月${day}日 ${hours}:${minutes}:${seconds}`;
return `${month}${day}${hours}:${minutes}`;
});
const handleClickPerson = (item) => {
const handleClickPerson = item => {
emit("person-click", item);
};
const handleInfoClick = (item) => {
const handleInfoClick = item => {
emit("info-click", item);
};
const handleToMoreNews = (item) => {
const handleToMoreNews = item => {
emit("more-click", item);
};
</script>
......@@ -164,13 +163,13 @@ const handleToMoreNews = (item) => {
}
.more {
width: 45px;
width: 50px;
height: 24px;
position: absolute;
top: 12px;
right: 27px;
color: rgb(5, 95, 194);
font-family: 'Source Han Sans CN';
font-family: "Source Han Sans CN";
font-size: 16px;
font-weight: 400;
line-height: 24px;
......@@ -209,16 +208,13 @@ const handleToMoreNews = (item) => {
}
.avatar-containerOne {
left: 2px;
top: 29px;
.avatar-imageOne {
width: 20px;
height: 20px;
}
}
.avatar-containerTwo {
......@@ -226,14 +222,11 @@ const handleToMoreNews = (item) => {
top: 29px;
.avatar-imageTwo {
width: 20px;
height: 20px;
}
}
.avatar {
width: 42px;
height: 42px;
......@@ -260,7 +253,6 @@ const handleToMoreNews = (item) => {
align-items: center;
margin-bottom: 5px;
.name {
color: rgb(59, 65, 75);
font-family: "Source Han Sans CN";
......@@ -290,7 +282,6 @@ const handleToMoreNews = (item) => {
line-height: 24px;
letter-spacing: 0px;
text-align: justify;
}
.triangle {
......@@ -308,7 +299,7 @@ const handleToMoreNews = (item) => {
/* 内层:原有颜色的三角形,覆盖在外层上面,模拟描边效果 */
.triangle::after {
content: '';
content: "";
position: absolute;
top: -8px;
/* 向上偏移1px,对齐中心 */
......@@ -320,31 +311,12 @@ const handleToMoreNews = (item) => {
border-bottom: 8px solid transparent;
border-right: 8px solid rgba(246, 250, 255, 1);
}
}
}
}
}
}
/* 响应式设计 */
@media (max-width: 768px) {
.message-bubble {
......
......@@ -4,7 +4,8 @@
<div class="content-wrapper">
<div class="btn-wrapper" @mouseenter="stopAutoPlay" @mouseleave="startAutoPlay(true)">
<div class="cards-mask">
<div class="btn-box" :style="{ transform: `translateX(-${currentIndex * (cardWidth + cardGap)}px)` }">
<!-- <div class="btn-box" :style="{ transform: `translateX(-${currentIndex * (cardWidth + cardGap)}px)` }"> -->
<div class="btn-box">
<div class="btn-item-outer" v-for="(item, indexx) in buttonsData" :key="indexx">
<div
v-for="(value, index) in item"
......
......@@ -246,6 +246,7 @@
/>
<div class="chart-header">{{ "关键词云" }}</div>
<div class="box3Chart" id="box3Chart"></div>
<!-- <Echarts :option="usChinaSanctionTrendOptions" height="100%"></Echarts> -->
</div>
</div>
</div>
......@@ -259,6 +260,7 @@ import { onMounted, ref, computed, inject, watch, onUnmounted } from "vue";
import router from "@/router";
import setChart from "@/utils/setChart";
import getWordCloudChart from "./uitls/worldCloudChart";
import "echarts-wordcloud";
import {
getElementCount,
getNewDynamics,
......@@ -268,6 +270,7 @@ import {
getKeyWordDown,
getOrderInfo
} from "@/api/zmOverview/allElement";
import Echarts from "@/components/Chart/index.vue";
const activeDate = inject("activeDate");
......@@ -409,6 +412,7 @@ const handleGetBox2ChartData = async () => {
try {
const res = await getKeyWordUp(params);
console.log("关键词云-上", res);
console.log("关键词云-上 参数", params);
if (res.code === 200 && res.data) {
box2ChartData.value = res.data.map(item => {
return {
......@@ -422,6 +426,8 @@ const handleGetBox2ChartData = async () => {
const handleBox2Chart = async () => {
await handleGetBox2ChartData();
let box2Chart = getWordCloudChart(box2ChartData.value);
console.log("关键词云-上 options =>", box2Chart);
console.log("关键词云-上 box2ChartData =>", box2ChartData.value);
setChart(box2Chart, "box2Chart");
};
......@@ -504,6 +510,7 @@ const handleGetBox3ChartData = async () => {
const handleBox3Chart = async () => {
await handleGetBox3ChartData();
let box3Chart = getWordCloudChart(box3ChartData.value);
console.log("关键词云-下", 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) => {
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
export default getWordCloudChart;
......@@ -969,6 +969,14 @@ const initRightDonut = async () => {
color: `rgba(${Math.floor(Math.random() * 256)}, ${Math.floor(Math.random() * 256)}, ${Math.floor(
Math.random() * 256
)}, 1)`
},
label: {
show: true,
position: "outside",
fontWeight: "bold",
fontSize: 14,
color: "#333",
distance: 10
}
};
let item1 = {
......@@ -976,7 +984,15 @@ const initRightDonut = async () => {
value: res.data[i].amount,
x: Math.random() * 10,
y: Math.random() * 10,
symbolSize: res.data[i].amount * 9
symbolSize: res.data[i].amount * 9,
label: {
show: true,
position: "outside",
fontWeight: "bold",
fontSize: 14,
color: "#333",
distance: 10
}
};
// 先判断data中是否包含上述数据
......@@ -1000,7 +1016,10 @@ const initRightDonut = async () => {
},
lineStyle: {
width: res.data[i].amount,
curveness: 0.2
curveness: 0.3,
color: `rgba(${Math.floor(Math.random() * 256)}, ${Math.floor(Math.random() * 100 + 100)}, ${Math.floor(
Math.random() * 256
)}, 0.6)`
}
};
......@@ -1043,7 +1062,7 @@ const initRightDonut = async () => {
{
type: "graph",
layout: "circular",
symbolSize: 50,
symbolSize: 80,
roam: true,
label: {
show: true
......@@ -1051,7 +1070,8 @@ const initRightDonut = async () => {
edgeSymbol: ["circle", ""],
edgeSymbolSize: [4, 80],
edgeLabel: {
fontSize: 20
fontSize: 20,
show: false
},
data: data,
// links: [],
......@@ -1059,7 +1079,20 @@ const initRightDonut = async () => {
lineStyle: {
opacity: 0.9,
width: 2,
curveness: 0
curveness: 0.3
},
emphasis: {
focus: "adjacency",
lineStyle: {
width: 4
},
label: {
show: true,
position: "outside",
fontWeight: "bold",
fontSize: 16,
distance: 10
}
}
}
]
......
......@@ -109,7 +109,7 @@
<DivideHeader id="position3" class="divide3" :titleText="'数据总览'"></DivideHeader>
<div class="center-footer">
<OverviewCard class="overview-card--double box5" title="涉华法案数量" :icon="box5HeaderIcon">
<OverviewCard class="overview-card--double box5" title="涉华法案数量变化趋势" :icon="box5HeaderIcon">
<template #right>
<el-select v-model="box5Select" placeholder="选择领域" @change="handleBox5Change" style="width: 150px">
<el-option label="全部领域" value="全部领域" />
......@@ -134,7 +134,7 @@
</OverviewCard>
</div>
<div class="center-footer1">
<OverviewCard class="overview-card--single box7" title="法案提出部门" :icon="box7HeaderIcon">
<OverviewCard class="overview-card--single box7" title="涉华法案提出部门" :icon="box7HeaderIcon">
<template #right>
<el-select v-model="box7selectetedTime" placeholder="选择时间" style="width: 90px">
<el-option v-for="item in box7YearList" :key="item.value" :label="item.label" :value="item.value" />
......@@ -159,7 +159,7 @@
</template>
</div>
</OverviewCard>
<OverviewCard class="overview-card--single box9" title="关键条款" :icon="box7HeaderIcon">
<OverviewCard class="overview-card--single box9" title="涉华法案关键条款" :icon="box7HeaderIcon">
<div class="box9-main" id="wordCloudChart"></div>
</OverviewCard>
</div>
......
......@@ -66,6 +66,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
type: 'value',
position: 'left',
axisLabel: {
formatter: '{value}项',
color: '#666'
}
},
......
......@@ -209,19 +209,19 @@ const mainHeaderBtnList = ref([
activeIcon: icon2Active,
name: "深度挖掘",
path: "/billLayout/deepDig"
},
{
icon: icon3,
activeIcon: icon3Active,
name: "影响分析",
path: "/billLayout/influence"
},
{
icon: icon4,
activeIcon: icon4Active,
name: "相关情况",
path: "/billLayout/relevantCircumstance"
}
// {
// icon: icon3,
// activeIcon: icon3Active,
// name: "影响分析",
// path: "/billLayout/influence"
// },
// {
// icon: icon4,
// activeIcon: icon4Active,
// name: "相关情况",
// path: "/billLayout/relevantCircumstance"
// }
]);
const activeTitle = ref("法案概况");
......
......@@ -39,10 +39,10 @@ const getBoxPlotChcart = (data, unit, labelConfig = {}) => {
}
},
grid: {
left: '5%',
right: '3%',
left: '8%',
right: '5%',
top: '10%',
bottom: '10%'
bottom: '12%'
},
xAxis: {
type: 'category',
......@@ -59,11 +59,9 @@ const getBoxPlotChcart = (data, unit, labelConfig = {}) => {
},
yAxis: {
type: 'value',
name: `单位:${unit}`,
nameTextStyle: {
padding: [0, 0, 0, 1520], // [上, 右, 下, 左]
verticalAlign: 'middle',
align: 'center'
name: '',
axisLabel: {
formatter: (value) => `${value}${unit}`
},
splitArea: {
show: true
......
......@@ -2,97 +2,107 @@
<div class="wrap">
<div class="box1">
<AnalysisBox title="相关政令关联分析" :showAllBtn="false">
<div class="box1-main">
<div class="left">
<el-empty v-if="siderList.length === 0" style="padding-top: 240px;" description="暂无数据" :image-size="100" />
<div
class="left-item"
:class="{ leftItemActive: siderActiveIndex === index }"
v-for="(item, index) in siderList"
:key="index"
@click="handleClickSider(index)"
>
<div class="time">{{ item.time }}</div>
<div class="title">{{ item.title }}</div>
<div class="box1-main">
<div class="left">
<el-empty
v-if="siderList.length === 0"
style="padding-top: 240px"
description="暂无数据"
:image-size="100"
/>
<div
class="left-item"
:class="{ leftItemActive: siderActiveIndex === index }"
v-for="(item, index) in siderList"
:key="index"
@click="handleClickSider(index)"
>
<div class="time">{{ item.time }}</div>
<div class="title">{{ item.title }}</div>
</div>
</div>
</div>
<div class="right">
<div class="info-box">
<div class="info-left">
<img :src="decreeInfo.img" alt="" />
</div>
<div class="info-right">
<div class="info-item">
<div class="item-left">{{ "政令全称:" }}</div>
<div class="item-right1">
<div class="item-right-text">
{{ decreeInfo.totalTitle }}
</div>
<div
class="item-right-icon"
v-if="decreeInfo.totalTitle"
@click="handleToDecreeDetail(decreeInfo)"
>
<img src="./assets/icons/open-icon.png" alt="" />
<div class="right">
<div class="info-box">
<div class="info-left">
<img :src="decreeInfo.img" alt="" />
</div>
<div class="info-right">
<div class="info-item">
<div class="item-left">{{ "政令全称:" }}</div>
<div class="item-right1">
<div class="item-right-text">
{{ decreeInfo.totalTitle }}
</div>
<div
class="item-right-icon"
v-if="decreeInfo.totalTitle"
@click="handleToDecreeDetail(decreeInfo)"
>
<img src="./assets/icons/open-icon.png" alt="" />
</div>
</div>
</div>
</div>
<div class="info-item">
<div class="item-left">{{ "英文全称:" }}</div>
<div class="item-right">
{{ decreeInfo.eTotalTitle }}
<div class="info-item">
<div class="item-left">{{ "英文全称:" }}</div>
<div class="item-right">
{{ decreeInfo.eTotalTitle }}
</div>
</div>
</div>
<div class="info-item">
<div class="item-left">{{ "签署时间:" }}</div>
<div class="item-right">
{{ decreeInfo.signTime }}
<div class="info-item">
<div class="item-left">{{ "签署时间:" }}</div>
<div class="item-right">
{{ decreeInfo.signTime }}
</div>
</div>
</div>
<div class="info-item">
<div class="item-left">{{ "发布机构:" }}</div>
<div class="item-right">
{{ decreeInfo.signOrg }}
<div class="info-item">
<div class="item-left">{{ "发布机构:" }}</div>
<div class="item-right">
{{ decreeInfo.signOrg }}
</div>
</div>
</div>
</div>
</div>
<div class="list-box">
<div class="list-header">
<div class="icon">
<img src="./assets/icons/box1-list-header-icon.png" alt="" />
<div class="list-box">
<div class="list-header">
<div class="icon">
<img src="./assets/icons/box1-list-header-icon.png" alt="" />
</div>
<div class="title">{{ "政令主要内容" }}</div>
</div>
<div class="title">{{ "政令主要内容" }}</div>
</div>
<div class="list-main">
<el-empty v-if="showList.length === 0" style="padding-top: 150px;" description="暂无数据" :image-size="100" />
<div class="list-item" v-for="(val, idx) in showList" :key="idx">
<div class="id">{{ idx + 1 }}</div>
<div class="title">{{ val.content }}</div>
<!-- <div class="open">
<div class="list-main">
<el-empty
v-if="showList.length === 0"
style="padding-top: 150px"
description="暂无数据"
:image-size="100"
/>
<div class="list-item" v-for="(val, idx) in showList" :key="idx">
<div class="id">{{ idx + 1 }}</div>
<div class="title">{{ val.content }}</div>
<!-- <div class="open">
<img src="./assets/icons/open-icon.png" alt="" />
</div> -->
</div>
</div>
</div>
</div>
<div class="list-footer">
<div class="footer-left">
{{ `共 ${decreeInfo.list.length} 项` }}
</div>
<div class="footer-right">
<el-pagination
@current-change="handleCurrentChange"
:pageSize="pageSize"
:current-page="currentPage"
background
layout="prev, pager, next"
:total="decreeInfo.list.length"
/>
<div class="list-footer">
<div class="footer-left">
{{ `共 ${decreeInfo.list.length} 项` }}
</div>
<div class="footer-right">
<el-pagination
@current-change="handleCurrentChange"
:pageSize="pageSize"
:current-page="currentPage"
background
layout="prev, pager, next"
:total="decreeInfo.list.length"
/>
</div>
</div>
</div>
</div>
</div>
</AnalysisBox>
</div>
</div>
......@@ -411,10 +421,11 @@ onMounted(() => {
margin-top: 22px;
.info-item {
display: flex;
height: 30px;
min-height: 30px;
max-height: 60px;
margin-bottom: 8px;
.item-left {
margin-top: 3px;
// margin-top: 3px;
width: 100px;
height: 24px;
color: rgba(59, 65, 75, 1);
......@@ -425,12 +436,12 @@ onMounted(() => {
}
.item-right {
width: 769px;
height: 30px;
// height: 30px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 30px;
line-height: 25px;
}
.item-right1 {
display: flex;
......@@ -491,7 +502,7 @@ onMounted(() => {
overflow-y: auto;
.list-item {
width: 1180px;
height: 54px;
min-height: 65px;
box-sizing: border-box;
border-radius: 4px;
background: rgba(255, 255, 255, 1);
......@@ -515,13 +526,14 @@ onMounted(() => {
.title {
margin-left: 13px;
margin-top: 12px;
height: 30px;
margin-bottom: 12px;
// height: 30px;
width: 1100px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
font-size: 16px;
font-weight: 400;
line-height: 30px;
line-height: 25px;
}
.open {
width: 16px;
......@@ -553,4 +565,4 @@ onMounted(() => {
}
}
}
</style>
\ No newline at end of file
</style>
......@@ -112,13 +112,11 @@
<div class="box1-top-content">
<div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 发布机构:</span>
<span class="box1-top-content-item-content">{{ item.postOrgName
}}</span>
<span class="box1-top-content-item-content">{{ item.postOrgName }}</span>
</div>
<div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 生效日期:</span>
<span class="box1-top-content-item-content">{{ item.postDate
}}</span>
<span class="box1-top-content-item-content">{{ item.postDate }}</span>
</div>
<div class="box1-top-content-item">
<span class="box1-top-content-item-title">· 涉及领域:</span>
......@@ -356,10 +354,9 @@
<el-table-column label="重点领域" width="180">
<template #default="scope">
<div style="display: flex; align-items: center; gap: 5px">
<el-tag v-for="tag in scope.row.tags" :key="tag"
:type="getTagType(tag)">{{
tag
}}</el-tag>
<el-tag v-for="tag in scope.row.tags" :key="tag" :type="getTagType(tag)">{{
tag
}}</el-tag>
</div>
</template>
</el-table-column>
......@@ -373,23 +370,22 @@
<el-row :gutter="20" style="width: 1600px; margin: 0 auto; height: 505px; margin-top: 16px">
<el-col :span="8">
<custom-container title="制裁领域分布" :titleIcon="radarIcon" height="480px">
<custom-container title="实体领域分布" :titleIcon="radarIcon" height="480px">
<template #header-right>
<el-checkbox v-model="domainChecked" label="50%规则" size="large" />
</template>
<template #default>
<EChart :option="radarOption" autoresize :style="{ height: '450px' }" />
<EChart :option="radarOption" autoresize :style="{ height: '460px' }" />
</template>
</custom-container>
</el-col>
<el-col :span="16">
<custom-container title="制裁清单数量增长趋势" :titleIcon="qushiIcon" height="480px">
<custom-container title="实体清单数量增长趋势" :titleIcon="qushiIcon" height="480px">
<template #header-right>
<div style="display: flex; align-items: center; gap: 16px">
<el-checkbox v-model="trendChecked" label="50%规则" size="large" />
<el-select v-model="selectedEntityId" placeholder="请选择清单类型" style="width: 160px">
<el-option v-for="item in infoList" :key="item.id" :label="item.nameZh"
:value="item.id" />
<el-option v-for="item in infoList" :key="item.id" :label="item.nameZh" :value="item.id" />
</el-select>
</div>
</template>
......@@ -419,8 +415,7 @@
<template #default>
<div class="box4">
<div style="height: 90%; overflow-y: auto; padding-top: 10px">
<div class="box4-item" v-for="(item, idx) in sanctionProcessList"
:key="item.title">
<div class="box4-item" v-for="(item, idx) in sanctionProcessList" :key="item.title">
<div class="box4-item-left">
<el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" />
<div
......@@ -502,8 +497,7 @@
)?.[0]
}}
</div>
<CommonPrompt :content="scope.row.name"
style="flex: 1; overflow: hidden" />
<CommonPrompt :content="scope.row.name" style="flex: 1; overflow: hidden" />
</div>
</template>
</el-table-column>
......@@ -511,10 +505,9 @@
<el-table-column prop="domains" label="涉及领域" min-width="150">
<template #default="scope">
<div class="domain-tags">
<el-tag v-for="tag in scope.row.domains" :key="tag"
:type="getTagType(tag)">{{
tag
}}</el-tag>
<el-tag v-for="tag in scope.row.domains" :key="tag" :type="getTagType(tag)">{{
tag
}}</el-tag>
</div>
</template>
</el-table-column>
......@@ -600,10 +593,9 @@
<div class="left-main">
<el-checkbox-group v-model="checkedTech">
<div class="checkbox-grid">
<el-checkbox v-for="item in techOptions" :key="item.value"
:label="item.value">{{
item.label
}}</el-checkbox>
<el-checkbox v-for="item in techOptions" :key="item.value" :label="item.value">{{
item.label
}}</el-checkbox>
</div>
</el-checkbox-group>
</div>
......@@ -634,12 +626,10 @@
</div>
<img :src="item.orgLogoUrl || comTitle" alt="" />
<div class="main">
<div class="main-title" @click="handleTitleClick(item)">{{ item.title }}
</div>
<div class="main-title" @click="handleTitleClick(item)">{{ item.title }}</div>
<div class="main-desc">{{ item.desc }}</div>
<div class="tag-box">
<div v-for="tag in item.tags" :key="tag" class="tag-item">{{ tag }}
</div>
<div v-for="tag in item.tags" :key="tag" class="tag-item">{{ tag }}</div>
</div>
<div :class="{ 'count-tag': item.countTag }">{{ item.countTag }}</div>
......@@ -711,7 +701,7 @@
</template>
<script setup>
import NewsList from "@/components/base/NewsList/index.vue";
import NewsList from "@/components/base/newsList/index.vue";
import RiskSignal from "@/components/RiskSignal/RiskSignal.vue";
import { onMounted, ref, computed, reactive, shallowRef, watch, nextTick } from "vue";
import { useContainerScroll } from "@/hooks/useScrollShow";
......@@ -1160,6 +1150,7 @@ const radarOption = ref({
confine: true
},
legend: {
show: false,
top: "0%",
icon: "circle",
itemWidth: 12,
......@@ -1175,9 +1166,13 @@ const radarOption = ref({
},
data: []
},
grid: {
top: "5%",
bottom: "5%"
},
radar: {
radius: "55%",
center: ["50%", "55%"],
radius: "60%",
center: ["50%", "50%"],
// shape: 'circle',
indicator: [],
axisName: {
......@@ -3522,7 +3517,7 @@ const handleMediaClick = item => {
margin-top: 21px;
height: 450px;
display: flex;
gap: 16px;
gap: 20px;
.center-center-news {
flex-shrink: 0;
......
......@@ -113,8 +113,8 @@ export function getPieOption1(data, title) {
? params.labelRect.x
: params.labelRect.x + params.labelRect.width
: data.length < 10
? params.labelRect.x + params.labelRect.width
: params.labelRect.x;
? params.labelRect.x + params.labelRect.width
: params.labelRect.x;
return {
labelLinePoints: points
};
......@@ -1001,12 +1001,39 @@ export const getMultipleBarChart_m = object => {
},
xAxis: {
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: {
type: "value",
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
};
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论