提交 dc99c723 authored 作者: 朱政's avatar 朱政

Merge branch 'pre' into zz-dev

流水线 #336 已通过 于阶段
in 1 分 36 秒
......@@ -199,6 +199,7 @@
"resolved": "https://registry.npmmirror.com/@antv/g6/-/g6-4.8.25.tgz",
"integrity": "sha512-8mdTnN9QMVNQZtlXmftL8fvRsa4L+GajK58Zp51wyrGLFyjeop8R0QSkCALW45DWP2TaQeZAPtjhQUU/wf5hIg==",
"license": "MIT",
"peer": true,
"dependencies": {
"@antv/g6-pc": "0.8.25"
}
......@@ -2171,6 +2172,7 @@
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/lodash": "*"
}
......@@ -2287,6 +2289,7 @@
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz",
"integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.28.3",
"@vue/compiler-core": "3.5.21",
......@@ -2893,6 +2896,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
......@@ -3251,6 +3255,7 @@
"resolved": "https://registry.npmmirror.com/cytoscape/-/cytoscape-3.33.1.tgz",
"integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10"
}
......@@ -3648,6 +3653,7 @@
"resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC",
"peer": true,
"engines": {
"node": ">=12"
}
......@@ -3736,6 +3742,7 @@
"version": "0.8.5",
"resolved": "https://registry.npmmirror.com/dagre/-/dagre-0.8.5.tgz",
"integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==",
"peer": true,
"dependencies": {
"graphlib": "^2.1.8",
"lodash": "^4.17.15"
......@@ -3943,6 +3950,7 @@
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz",
"integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"tslib": "2.3.0",
"zrender": "5.6.1"
......@@ -5334,13 +5342,15 @@
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
"integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/lodash-es": {
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
"integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/lodash-unified": {
"version": "1.0.3",
......@@ -5388,6 +5398,7 @@
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz",
"integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
"license": "MIT",
"peer": true,
"dependencies": {
"argparse": "^2.0.1",
"entities": "^4.4.0",
......@@ -6467,6 +6478,7 @@
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
......@@ -6563,6 +6575,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
......@@ -6964,6 +6977,7 @@
"integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
......@@ -8134,6 +8148,7 @@
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
......@@ -8193,6 +8208,7 @@
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.21.tgz",
"integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.21",
"@vue/compiler-sfc": "3.5.21",
......
......@@ -4,7 +4,7 @@ import { ElMessage } from "element-plus";
const request200 = requestP => {
return requestP.then(data => {
if (data.code === 200) {
console.log('返回的数据结构 =>', data.data)
console.log("返回的数据结构 =>", data.data);
return data.data;
}
ElMessage({
......@@ -393,13 +393,13 @@ export function getDomainDistribution(sanctionDate = "2025-11-11") {
* startTime: string
* }[]>}
*/
export function getEntitiesList(sanTypeId=1, pageNum = 1, pageSize = 10, sanctionDate = "", isCn = false) {
export function getEntitiesList(sanTypeIds = ["1"], pageNum = 1, pageSize = 10, sanctionDate = "", isCn = false) {
return request200(
request({
method: "POST",
url: "/api/sanctionList/pageQuery",
data: {
sanTypeId,
sanTypeIds,
pageNum,
pageSize,
sanctionDate,
......
......@@ -30,7 +30,7 @@ import { http } from "./service.js";
/**
* 总次数统计
*/
*/
export function getDataCount() {
return http.get("/api/sanctionList/invFin/getTotalInfo");
}
......@@ -38,7 +38,7 @@ export function getDataCount() {
/**
* 最新出口管制政策
* url:/sanctionList/invFin/getLatestEntityListInfo
*/
*/
export function getLatestEntityListInfo() {
return http.get("/api/sanctionList/invFin/getLatestEntityListInfo");
}
......@@ -46,31 +46,31 @@ export function getLatestEntityListInfo() {
/**
* 风险信号
* url:/commonFeature/riskSignal/{moduleId}
*/
export function getRiskSignal(moduleId='0104') {
*/
export function getRiskSignal(moduleId = "0104") {
return http.get(`/api/commonFeature/riskSignal/${moduleId}`);
}
/**
* 新闻资讯
* url:/commonFeature/news/{moduleId}
*/
export function getNewsInfo(moduleId='0104') {
*/
export function getNewsInfo(moduleId = "0104") {
return http.get(`/api/commonFeature/news/${moduleId}`);
}
/**
* 社交媒体信息
* url:/commonFeature/remarks/{moduleId}
*/
export function getSocialMediaInfo(moduleId='0104') {
*/
export function getSocialMediaInfo(moduleId = "0104") {
return http.get(`/api/commonFeature/remarks/${moduleId}`);
}
/**
* 发布频度
* url:/entitiesDataCount/getAnnualCount
*/
*/
export function getReleaseCount(id) {
return http.get(`/api/entitiesDataCount/getAnnualCount?sanTypeId=${id}`);
}
......@@ -78,7 +78,7 @@ export function getReleaseCount(id) {
/**
* 制裁领域分析
* url:/entitiesDataCount/getSanDomainCount
*/
*/
export function getSanDomainCount(sanTypeIds) {
return http.get(`/api/entitiesDataCount/getSanDomainCount?sanTypeIds=${sanTypeIds}`);
}
......@@ -86,7 +86,7 @@ export function getSanDomainCount(sanTypeIds) {
/**
* 制裁清单增长趋势
* url:/entitiesDataCount/getAnnualSanDomain
*/
*/
export function getAnnualSanDomain(params) {
return http.post("/api/entitiesDataCount/getAnnualSanDomain", params);
}
......@@ -94,9 +94,9 @@ export function getAnnualSanDomain(params) {
/**
* 全部制裁(历史制裁过程)
* url:/entitiesDataCount/getSanctionProcess
*/
*/
export function getSanctionProcess(sanTypeIds = "1", pageNum = 1, pageSize = 10, isCn = false) {
return http.post("/api/entitiesDataCount/getSanctionProcess",{
return http.post("/api/entitiesDataCount/getSanctionProcess", {
sanTypeIds,
// typeName: tabMap[sanTypeId],
pageNum,
......@@ -104,3 +104,35 @@ export function getSanctionProcess(sanTypeIds = "1", pageNum = 1, pageSize = 10,
isCn
});
}
/**
* 制裁实体领域数量变化情况
* url:/sanctionList/statistics/domainNum
*/
export function getDomainNum(params) {
return http.get("/api/sanctionList/statistics/domainNum", params);
}
/**
* 获取制裁实体类型分布列表
* url:/sanctionList/statistics/entityTypeId
*/
export function getEntityTypeCount(params) {
return http.get("/api/sanctionList/statistics/entityTypeId", params);
}
/**
* 新闻链接
* url:/sanctionList/invFin/getRelateNews
*/
export function getRelateNews(sanRecordId) {
return http.get(`/api/sanctionList/invFin/getRelateNews?sanRecordId=${sanRecordId}`);
}
/**
* 制裁原因及相关历史制裁
* url:/sanctionList/invFin/getReasonAndSan
*/
export function getReasonAndSan(sanRecordId) {
return http.get(`/api/sanctionList/invFin/getReasonAndSan?sanRecordId=${sanRecordId}`);
}
// 出口管制
const ExportControl = () => import('@/views/exportControl/index.vue')
const ExportControl = () => import("@/views/exportControl/index.vue");
const exportControlRoutes = [
// 出口管制首页
......@@ -44,7 +44,7 @@ const exportControlRoutes = [
meta: {
title: "影响分析"
}
},
}
]
},
{
......@@ -102,7 +102,7 @@ const exportControlRoutes = [
name: "singleSanction",
component: () => import("@/views/exportControl/v2.0SingleSanction/index.vue"),
meta: {
title: "单条制裁详情",
title: "单次制裁详情",
dynamicTitle: true
}
},
......@@ -110,12 +110,12 @@ const exportControlRoutes = [
{
path: "/exportControl/origin",
name: "entityListOrigin",
component: () => import("@/views/exportControl/v2.0SingleSanction/originPage/index.vue"),
component: () => import("@/views/exportControl/v2.0SingleSanction/originPage/index.vue")
// meta: {
// title: "实体清单原文"
// }
},
// V2.0全部实体清单
// V2.0商业制裁清单
{
path: "/exportControl/commercialControlList",
name: "commercialControlList",
......@@ -124,6 +124,6 @@ const exportControlRoutes = [
title: "商业管制清单概览"
}
}
]
];
export default exportControlRoutes
\ No newline at end of file
export default exportControlRoutes;
// 投融资限制
const Finance = () => import('@/views/finance/index.vue')
const Finance = () => import("@/views/finance/index.vue");
const financeRoutes = [
// 投融资限制
......@@ -12,7 +12,43 @@ const financeRoutes = [
isShowHeader: true
}
},
// SDN制裁清单概览
{
path: "/finance/sdnlistoverview",
name: "sdnlistOverview",
component: () => import("@/views/finance/v2.0EntityList/index.vue"),
meta: {
title: "SDN制裁清单概览"
}
},
// V2.0单条制裁详情
{
path: "/finance/singleSanction",
name: "singleSanction",
component: () => import("@/views/finance/v2.0SingleSanction/index.vue"),
meta: {
title: "单条制裁详情",
dynamicTitle: true
}
},
// V2.0单条制裁详情-实体清单原文
{
path: "/exportControl/origin",
name: "entityListOrigin",
component: () => import("@/views/exportControl/v2.0SingleSanction/originPage/index.vue")
// meta: {
// title: "实体清单原文"
// }
},
// V2.0商业制裁清单
{
path: "/finance/cmccontrolList",
name: "cmccontrolList",
component: () => import("@/views/finance/v2.0CommercialControlList/index.vue"),
meta: {
title: "涉军企业清单概览"
}
}
];
]
export default financeRoutes
\ No newline at end of file
export default financeRoutes;
......@@ -267,6 +267,7 @@ const resetModal = () => {
};
onMounted(() => {
console.log("出口管制-单次制裁");
getUrlParams();
getSingleSanctionOverviewData();
});
......
......@@ -1045,7 +1045,7 @@ const handleToEntityList = item => {
entitiesDataInfoList.value[currentCarouselIndex.value].postDate + " 《实体清单新增条目》"
);
const routeData = router.resolve({
path: "/exportControl/singleSanction",
path: "/finance/singleSanction",
query: {
id,
sanTypeId
......@@ -1057,19 +1057,18 @@ const handleToEntityList = item => {
// 跳转到V2.0实体清单无ID
const handleToEntityListNoId = item => {
console.log("这是什么数据 =>", item);
if (item.nameZh == "实体清单") {
if (item.id == allSanTypeIds.value[0]) {
const routeData = router.resolve({
path: "/exportControl/entityList",
path: "/finance/sdnlistoverview",
query: {
sanTypeId: item.id
}
});
// 打开一个新页面
window.open(routeData.href, "_blank");
} else if (item.nameZh == "商业管制清单") {
} else if (item.id == allSanTypeIds.value[1]) {
const routeData = router.resolve({
path: "/exportControl/commercialControlList",
path: "/finance/cmccontrolList",
query: {
sanTypeId: item.id
}
......@@ -1378,7 +1377,7 @@ watch(
const fetchEntitiesList = async (page = 1, size = 10) => {
try {
console.log("activeResourceTabItem.value.id", activeResourceTabItem.value.id);
const res = await getEntitiesList(activeResourceTabItem.value.id.join(","), page, size);
const res = await getEntitiesList(activeResourceTabItem.value.id, page, size);
if (res) {
entitiesList.value = res.content.map(item => ({
...item,
......@@ -1781,6 +1780,7 @@ onMounted(async () => {
// 获取出口管制制裁措施
await fetchSanctionList();
} catch (err) {
console.log("此处报错?");
console.log(err);
}
handleGetHylyList();
......
......@@ -104,19 +104,8 @@
</div>
</div>
</template>
<!-- <div class="echarts" ref="sanctionCountChartRef"></div> -->
<EChart :option="sanctionCountChartOption" autoresize :style="{ height: '300px', padding: '0 20px' }" />
<!-- <div class="bottom">
<div class="ai">
<div class="left">
<img :src="ai" alt="" class="icon1" />
<div class="text">美国对中国的制裁近年来呈现显著增长趋势。</div>
</div>
<div class="right">
<img :src="right" alt="" class="icon2" />
</div>
</div>
</div> -->
<div class="data-origin-box">
<div class="data-origin-icon">
<img :src="tipsIcon" alt="" />
......@@ -129,7 +118,7 @@
</div>
</AnalysisBox>
</div>
<div class="main-item">
<!-- <div class="main-item">
<AnalysisBox title="制裁实体各省分布情况">
<template #header-btn>
<el-select v-model="regionTime" class="time-select" placeholder="请选择" @change="getRegionCountData">
......@@ -155,17 +144,6 @@
</div>
</div>
</div>
<!-- <div class="bottom">
<div class="ai">
<div class="left">
<img :src="ai" alt="" class="icon1" />
<div class="text">我国被制裁实体多分布于沿海经济活跃省份。</div>
</div>
<div class="right">
<img :src="right" alt="" class="icon2" />
</div>
</div>
</div> -->
<div class="data-origin-box">
<div class="data-origin-icon">
<img :src="tipsIcon" alt="" />
......@@ -177,7 +155,7 @@
<AiPane :aiContent="rankChart.interpretation" />
</div>
</AnalysisBox>
</div>
</div> -->
<div class="main-item">
<AnalysisBox title="制裁实体领域分布情况">
<template #header-btn>
......@@ -185,19 +163,47 @@
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</template>
<!-- <div class="echarts" ref="domainChartRef"></div> -->
<EChart :option="domainChartOption" autoresize :style="{ height: '300px', padding: '0 20px' }" />
<!-- <div class="bottom">
<div class="ai">
<div class="left">
<img :src="ai" alt="" class="icon1" />
<div class="text">美国对中国的制裁集中在半导体、人工智能等领域。</div>
<div class="data-origin-box">
<div class="data-origin-icon">
<img :src="tipsIcon" alt="" />
</div>
<div class="right">
<img :src="right" alt="" class="icon2" />
<div class="data-origin-text">进入实体清单的中国实体领域分布情况,数据来源:美国商务部官网</div>
</div>
<div class="ai-pane">
<AiButton />
<AiPane :aiContent="domainChart.interpretation" />
</div>
</AnalysisBox>
</div>
</div> -->
<div class="main-item">
<AnalysisBox title="制裁实体领域数量变化情况">
<!-- <template #header-btn>
<el-select v-model="domainTime" class="time-select" placeholder="请选择" @change="getDomainCountData">
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</template> -->
<template #header-btn>
<div class="toggle-btns">
<div
class="t-btn"
:class="{ active: activeDomainTab === 'year' }"
@click="handleDomainTabChange('year')"
>
按年度
</div>
<div
class="t-btn"
:class="{ active: activeDomainTab === 'sanction' }"
@click="handleDomainTabChange('sanction')"
>
按制裁
</div>
</div>
</template>
<EChart :option="domainNumChartOption" autoresize :style="{ height: '300px', padding: '0 20px' }" />
<div class="data-origin-box">
<div class="data-origin-icon">
<img :src="tipsIcon" alt="" />
......@@ -206,7 +212,7 @@
</div>
<div class="ai-pane">
<AiButton />
<AiPane :aiContent="domainChart.interpretation" />
<AiPane :aiContent="domainNumChart.interpretation" />
</div>
</AnalysisBox>
</div>
......@@ -259,6 +265,8 @@ import {
getTechDomainCount,
getEntityTypeCount
} from "@/api/exportControlV2.0";
import { getDomainNum } from "@/api/finance";
import getMultiLineChart from "@/views/ZMOverView/components/fourSuppress/components/addDomain/multiLineChart";
import EChart from "@/components/Chart/index.vue";
import { useRoute } from "vue-router";
import tipsIcon from "../../../assets/icons/info-icon.png";
......@@ -267,6 +275,7 @@ import AiPane from "@/components/base/Ai/AiPane/index.vue";
import { useChartInterpretation } from "@/views/exportControl/utils/common";
const sanctionCountChart = useChartInterpretation();
const domainChart = useChartInterpretation();
const domainNumChart = useChartInterpretation();
const typeChart = useChartInterpretation();
const rankChart = useChartInterpretation();
......@@ -285,14 +294,15 @@ const getTypeCountData = async () => {
try {
const res = await getEntityTypeCount(param);
console.log("制裁实体类型分布情况", res.data);
if (res && res.code === 200) {
const data = res.data || [];
typeData.value = data.map(item => ({
name: item.name,
value: item.count || item.value
}));
typeChart.interpret({ type: "饼图", name: "制裁实体类型分布情况", data: data });
updateTypeChart();
typeChart.interpret({ type: "饼图", name: "制裁实体类型分布情况", data: data });
}
} catch (error) {
console.error("获取实体清单-数据统计-制裁实体类型分布情况失败:", error);
......@@ -365,6 +375,35 @@ const getRegionCountData = async () => {
}
};
// 实体清单-数据统计- 制裁实体领域数量变化趋势
const domainNumChartOption = ref({});
const activeDomainTab = ref("year");
const handleDomainTabChange = tab => {
activeDomainTab.value = tab;
getDomainNumData();
};
const getDomainNumData = async () => {
// 参数
const param = {
IDsanTypeId: activeDomainTab.value === "year" ? "year" : "record",
type: sanTypeId.value
};
try {
const res = await getDomainNum(param);
if (res && res.code === 200) {
domainNumChartOption.value = getMultiLineChart({
data: res.data || [],
xAxis: res.xAxis || [],
yAxis: res.yAxis || [],
title: "制裁实体领域数量变化趋势",
xAxisName: "时间",
yAxisName: "数量"
});
}
} catch (error) {
console.error("获取实体清单-数据统计-制裁实体领域数量变化趋势失败:", error);
}
};
// 实体清单-数据统计-制裁实体数量变化情况
const sanctionCountChange = ref([]);
// 获取实体清单-数据统计-制裁实体数量变化情况
......@@ -967,12 +1006,6 @@ const typeChartOption = ref({
]
});
const updateTypeChart = () => {
// if (!typeChartRef.value) return;
// let chart = echarts.getInstanceByDom(typeChartRef.value);
// if (!chart) {
// chart = echarts.init(typeChartRef.value);
// }
let data = typeData.value.length
? [...typeData.value]
: [
......@@ -989,7 +1022,7 @@ const updateTypeChart = () => {
totalValue = data.reduce((sum, item) => sum + (item.value || 0), 0);
}
if (data.length > TOP_N) {
// if (data.length > TOP_N) {
const topData = data.slice(0, TOP_N);
const otherData = data.slice(TOP_N);
const otherValue = otherData.reduce((sum, item) => sum + (item.value || 0), 0);
......@@ -1002,7 +1035,7 @@ const updateTypeChart = () => {
// });
// }
typeChartOption.value.series[0].data = topData;
}
// }
// const option = {
// tooltip: {
......@@ -1117,15 +1150,12 @@ onMounted(() => {
getDomainCountData();
// 获取实体清单-数据统计-制裁实体类型分布情况
getTypeCountData();
// 获取实体清单-数据统计-制裁实体领域数量变化趋势
getDomainNumData();
});
</script>
<style scoped lang="scss">
* {
margin: 0;
padding: 0;
}
.data-statistics {
width: 1601px;
margin: 0 auto;
......
......@@ -565,7 +565,7 @@ onMounted(async () => {
display: flex;
flex-direction: column;
gap: 16px;
display: none;
.tab-item {
cursor: pointer;
padding: 4px 20px;
......
......@@ -13,7 +13,7 @@
</div>
</div>
<industrial-impact v-if="activeIndex === 0"></industrial-impact>
<research-impact v-if="activeIndex === 1"></research-impact>
<!-- <research-impact v-if="activeIndex === 1"></research-impact> -->
</div>
</template>
......@@ -23,7 +23,8 @@ import { ref } from "vue";
import industrialImpact from "./components/industrialImpact/index.vue";
import researchImpact from "./components/researchImpact/index.vue";
const activeTab = ref(["对华产业影响", "对华科研影响"]);
// const activeTab = ref(["对华产业影响", "对华科研影响"]);
const activeTab = ref(["对华产业影响"]);
const activeIndex = ref(0);
</script>
......@@ -44,6 +45,7 @@ const activeIndex = ref(0);
display: flex;
flex-direction: column;
gap: 16px;
display: none;
.tab-item {
cursor: pointer;
padding: 4px 20px;
......
......@@ -16,18 +16,18 @@
<div class="label">发布时间:</div>
<div class="value">{{ formattedData.postDate }}</div>
</div>
<div class="info-row">
<!-- <div class="info-row">
<div class="label">生效时间:</div>
<div class="value">{{ formattedData.effectiveDate }}</div>
</div>
</div> -->
<div class="info-row">
<div class="label">发布文件:</div>
<div class="value">{{ formattedData.fileCode }}</div>
</div>
<div class="info-row">
<!-- <div class="info-row">
<div class="label">案卷号:</div>
<div class="value">{{ formattedData.administrativeOrderId }}</div>
</div>
</div> -->
<div class="info-row">
<div class="label">发布人:</div>
<div class="value link">
......@@ -42,6 +42,15 @@
</div>
</div>
</div>
<div class="left-top-content">
<div class="content-title">新闻链接:</div>
<div class="distribution-list">
<div class="list-item news-item" v-for="item in newsList" :key="item.newsId">
<div class="item-title">{{ item.newsTitle }}</div>
<img :src="openIcon" class="flag" />
</div>
</div>
</div>
<div class="left-top-content">
<div class="content-title">制裁实体分布:</div>
<div class="distribution-list">
......@@ -158,7 +167,7 @@
<el-table-column label="实体名称" min-width="280">
<template #default="scope">
<div class="name-cell">
<div class="dot"></div>
<!-- <div class="dot"></div> -->
<img :src="defaultTitle" class="company-icon" />
<span class="company-name" @click="handleCompClick(scope.row)">{{
scope.row.name
......@@ -187,7 +196,22 @@
</el-table-column>
<el-table-column prop="location" label="上市地点" width="90" align="center" />
<el-table-column prop="date" label="制裁时间" width="150" align="center" />
<el-table-column prop="revenue" label="营收(亿元)" width="110" align="center" />
<el-table-column prop="entityTypeId" label="类型" width="120" align="center">
<template #default="scope">
<div style="display: flex; gap: 4px; justify-content: center">
<AreaTag
:tagName="
scope.row.entityType === 1
? '个人'
: scope.row.entityType === 2
? '实体'
: '公司'
"
/>
</div>
</template>
</el-table-column>
<!-- <el-table-column prop="revenue" label="营收(亿元)" width="110" align="center" /> -->
<el-table-column label="50%规则子企业" width="180" align="center">
<template #default="scope">
<span
......@@ -209,6 +233,8 @@
</div>
</div>
</AnalysisBox>
<div :style="{ height: '20px' }"></div>
<AnalysisBox title="制裁原因及相关历史制裁" :showAllBtn="false"></AnalysisBox>
</div>
</div>
<!-- 50%规则子企业弹框 -->
......@@ -231,11 +257,13 @@ import { debounce } from "lodash";
import title from "../../assets/title.png";
import defaultTitle from "../../assets/default-icon1.png";
import flag from "../../assets/default-icon2.png";
import openIcon from "../../../assets/icons/icon-open.png";
import {
getSingleSanctionEntityCountry,
getSingleSanctionBackground,
getSingleSanctionOverviewList
} from "@/api/exportControlV2.0";
import { getRelateNews } from "@/api/finance";
import RuleSubsidiaryDialog from "../../../v2.0EntityList/components/sanctionsOverview/components/listPage/RuleSubsidiaryDialog.vue";
import { useRoute } from "vue-router";
......@@ -420,6 +448,19 @@ const getEntityCountry = async () => {
}
};
const newsList = ref([]);
// 调用新闻链接接口
const getNewsList = async () => {
try {
const res = await getRelateNews(sanRecordId.value);
console.log("res --:", res);
newsList.value = res;
} catch (error) {
console.log(error);
}
};
const props = defineProps({
data: {
type: Object,
......@@ -562,6 +603,8 @@ onMounted(() => {
getUrlParams();
// 单次制裁-制裁概况-制裁实体国家分布
getEntityCountry();
// 新闻链接
getNewsList();
// 单次制裁-制裁概况-制裁背景
getSanctionBackground();
// 单次制裁-制裁概况-制裁清单
......@@ -751,6 +794,35 @@ onMounted(() => {
}
}
}
.news-item {
display: flex;
justify-content: space-between;
align-items: center;
border-radius: 20px;
width: 460px;
background-color: rgb(246, 250, 255);
padding: 5px 15px;
font-size: 14px;
height: 36px;
cursor: pointer;
.item-title {
font-size: 14px;
font-weight: 400;
color: rgba(5, 95, 194, 1);
font-family: Source Han Sans CN;
line-height: 24px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
max-width: 90%;
}
.flag {
width: 16px;
height: 16px;
margin-right: 0px;
}
}
}
}
}
......@@ -1015,10 +1087,10 @@ onMounted(() => {
:deep(.el-table__header-wrapper) {
th {
background-color: var(--color-primary-100) !important;
// background-color: var(--color-primary-100) !important;
height: 48px;
padding: 0;
color: #fff;
color: rgb(34, 41, 52);
font-weight: 700;
font-size: 16px;
font-family: "Microsoft YaHei";
......@@ -1079,7 +1151,7 @@ onMounted(() => {
font-size: 16px;
font-weight: 700;
line-height: 24px;
font-family: "Microsoft YaHei";
font-family: "Source Han Sans CN";
color: rgba(59, 65, 75, 1);
cursor: pointer;
}
......
......@@ -273,15 +273,12 @@ onMounted(() => {
</script>
<style scoped lang="scss">
* {
margin: 0;
padding: 0;
}
.entity-list {
width: 100%;
height: 100%;
overflow-y: auto;
padding-bottom: 50px;
padding-bottom: 10px;
background: #f7f8f9;
.header {
width: 100%;
height: 148px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论