提交 1a2e041e authored 作者: 闫鹏's avatar 闫鹏

合并分支 'yp-dev' 到 'master'

Yp dev 查看合并请求 !20
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
<slot name="header-top"></slot> <slot name="header-top"></slot>
</div> </div>
<div class="container-header"> <div class="container-header">
<div class="header-left"> <div class="header-left" :style="{ paddingLeft: block ? 0 : '14px' }">
<slot name="header-left"> <slot name="header-left">
<!-- <div class="blue-title-block"></div> --> <div v-if="block" class="blue-title-block"></div>
<el-image :src="titleIcon" class="header-icon" fit="contain" /> <el-image v-else :src="titleIcon" class="header-icon" fit="contain" />
<div :class="headerTitleClasses">{{ title }}</div> <div :class="headerTitleClasses">{{ title }}</div>
<div v-if="props.headerNum > 0" class="num-box"> <div v-if="props.headerNum > 0" class="num-box">
<div class="num"> <div class="num">
...@@ -63,6 +63,10 @@ const props = defineProps({ ...@@ -63,6 +63,10 @@ const props = defineProps({
type: String, type: String,
default: "" default: ""
}, },
block: {
type: Boolean,
default: false
},
headerNum: { headerNum: {
type: Number, type: Number,
default: 0 default: 0
...@@ -135,9 +139,9 @@ const headerTitleClasses = computed(() => [ ...@@ -135,9 +139,9 @@ const headerTitleClasses = computed(() => [
.blue-title-block { .blue-title-block {
width: 8px; width: 8px;
height: 16px; height: 16px;
background-color: var(--base-color); background-color: $base-color;
/* border-radius: 3px; */ /* border-radius: 3px; */
margin-right: 14px; margin-right: 4px;
} }
.header-title { .header-title {
......
...@@ -51,6 +51,9 @@ import MarketSingleCaseDeepdig from "@/views/marketAccessRestrictions/singleCase ...@@ -51,6 +51,9 @@ import MarketSingleCaseDeepdig from "@/views/marketAccessRestrictions/singleCase
// 投融资限制 // 投融资限制
import Finance from "@/views/finance/index.vue"; import Finance from "@/views/finance/index.vue";
// 新闻事件分析
import NewsAnalysis from "@/views/newsAnalysis/index.vue";
// 智能写报 // 智能写报
import WrittingAsstaint from "@/views/writtingAsstaint/index.vue"; import WrittingAsstaint from "@/views/writtingAsstaint/index.vue";
// 门户 // 门户
...@@ -433,6 +436,132 @@ const routes = [ ...@@ -433,6 +436,132 @@ const routes = [
}, },
// 市场准入限制首页
{
path: "/marketAccessRestrictions",
name: "MarketAccessRestrictions",
component: MarketAccessRestrictions,
meta: {
title: "市场准入限制"
}
},
{
path: "/marketAccessLayout",
name: "MarketAccessLayout",
component: MarketAccessLayout,
redirect: "/marketAccessLayout/overview",
meta: {
title: "市场准入限制布局"
},
children: [
{
path: "overview",
name: "MarketAccessOverview",
component: MarketAccessOverview,
meta: {
title: "调查概况"
}
},
{
path: "case",
name: "MarketAccessCase",
component: MarketAccessCase,
meta: {
title: "调查案件"
}
}
]
},
{
path: "/marketSingleCaseLayout",
name: "MarketSingleCaseLayout",
component: MarketSingleCaseLayout,
redirect: "/marketSingleCaseLayout/overview",
meta: {
title: "单次调查案件布局"
},
children: [
{
path: "overview",
name: "MarketSingleCaseOverview",
component: MarketSingleCaseOverview,
meta: {
title: "调查简介"
}
},
{
path: "deepdig",
name: "MarketSingleCaseDeepdig",
component: MarketSingleCaseDeepdig,
meta: {
title: "深度挖掘"
}
}
]
},
// 出口管制转移过来的页面
{
path: "/exportControl/analysis",
name: "analysis",
component: () => import("@/views/exportControl/analysis/index.vue"),
meta: {
title: "分析页"
}
},
{
path: "/exportControl/infoplatform",
name: "infoplatform",
component: () => import("@/views/exportControl/infoPlatform/index.vue"),
meta: {
title: "信息平台"
}
},
{
path: "/exportControl/rulelimit",
name: "rulelimit",
component: () => import("@/views/exportControl/ruleLimit/index.vue"),
meta: {
title: "规则限制"
}
},
{
path: "/exportControl/ruledetail",
name: "ruledetail",
component: () => import("@/views/exportControl/ruleDetail/index.vue"),
meta: {
title: "规则详情"
}
},
{
path: "/exportControl/researchfunding",
name: "researchfunding",
component: () => import("@/views/exportControl/researchFunding/index.vue"),
meta: {
title: "科研资助"
}
},
// 投融资限制
{
path: "/finance",
name: "finance",
component: Finance,
meta: {
title: "投融资限制"
}
},
// 新闻事件分析
{
path: "/newsAnalysis",
name: "newsAnalysis",
component: NewsAnalysis,
meta: {
title: "新闻事件分析"
}
},
// 门户 // 门户
{ {
path: "/portal1", path: "/portal1",
...@@ -467,15 +596,7 @@ const routes = [ ...@@ -467,15 +596,7 @@ const routes = [
meta: { meta: {
title: "搜索结果" title: "搜索结果"
} }
},
{
path: "/chat",
name: "chat",
component: Chat,
meta: {
title: "智能问答"
} }
},
]; ];
const router = createRouter({ const router = createRouter({
......
<template>
<div class="page-container">
<div class="page-header">
<div class="page-header-left">
<el-image :src="newsImg" alt="新闻" class="page-header-left-img"></el-image>
<div class="page-header-left-top">
<div class="page-header-left-top-title">众议院共和党人起草新的中国投资限制</div>
<div class="page-header-left-top-en">House Republicans draft new China investment curbs</div>
<div class="page-header-left-top-desc">
2025年11月11日 10:33 · 福克斯新闻网
<el-tag type="primary">生物科技</el-tag>
<el-tag type="primary">人工智能</el-tag>
</div>
</div>
</div>
<div class="page-header-right">
<el-button type="primary">
<el-image :src="openIcon" alt="打开" class="page-header-right-icon"></el-image>
查看原网页
</el-button>
</div>
</div>
<div class="page-content">
<el-row :gutter="20">
<el-col :span="17">
<custom-container block title="新闻内容" :titleIcon="houseIcon" height="1180px">
<template #header-right>
<div class="page-content-right-switch">
<el-switch v-model="highlightEntities" />
高亮实体
</div>
<el-button type="primary" @click="handleToDetail"> 译文 </el-button>
</template>
<template #default>
<!-- 内容区域 - 分三块-->
<div class="page-content-news-abstract">
美国众议院共和党人正在起草一项新提案,以限制美国对中国的投资。此前,参议院已将其纳入国防政策立法中。知情人士向Semafor透露,众议院工作人员希望在11月7日前就该提案达成共识,并将财政部的反馈纳入由肯塔基州共和党众议员安迪·巴尔提出的配套提案中(尽管政府停摆可能推迟这一时间表)。随后,众议员将利用该文本与参议员就最终《国防授权法案》的内容进行协商。此前一届国会中,类似的尝试因北卡罗来纳州前众议员帕特里克·麦克亨利的反对而失败,但本届国会中,“所有人都在共同努力”。知情人士补充说,领导人并不担心此举会剥夺特朗普在周四与中国领导人习近平会谈时的谈判筹码,因为财政部已开始实施类似的指导方针。
</div>
<div class="page-content-news-artical">
<div class="page-content-news-artical-zn">
<p>
<span class="highlight">华盛顿邮报</span>报道,了解谈判情况的知情人士透露,<span
class="highlight"
>美国众议院</span
><span class="highlight">共和党人</span
>正在起草一项新的提案,以限制美国对华投资。目前<span class="highlight">参议院</span
>已将其相关法案作为国防政策立法的一部分通过。
</p>
<p>
谈判各方希望能在11月7日前就这项措施的文本达成共识(尽管政府停摆、可能推迟这一日期)。该措施已将财政部的反馈意见纳入<span
class="highlight"
>肯塔基州</span
><span class="highlight">共和党众议员</span
><span class="highlight">安迪·巴尔</span><span class="highlight">配套提案中</span>
</p>
<p>
此后,<span class="highlight">国会议员</span
>们将利用这份文本来与参议员进行协商,以决定哪些内容能最终纳入定版的《国防授权法案》中。
</p>
<p>
在上届国会期间,类似的立法尝试曾因<span class="highlight">北卡罗来纳州</span><span
class="highlight"
>共和党前众议员</span
><span class="highlight">帕特里克·麦克亨利</span>的反对而失败。但在本届国会中,<span
class="highlight"
>一位知情人士</span
>表示,"现在所有人实际上都在共同努力"。
</p>
<p>
该人士还补充说,领导层并不担心此举会剥夺<span class="highlight">特朗普</span
><span class="highlight">总统</span>的一个谈判工具。
</p>
</div>
<div class="page-content-news-artical-en">
<p class="indented-paragraph">
<span class="highlight">House Republicans</span> are drafting a fresh proposal to curb US
investments in China after the <span class="highlight">Senate</span> passed its bill as
part of defense policy legislation, people familiar with the talks told Semafor.
</p>
<p class="indented-paragraph">
Staff hope to reach consensus on the measure, which incorporates
<span class="highlight">Treasury Department</span> feedback into a companion proposal from
Rep. <span class="highlight">Andy Barr</span>, R-Ky., by
<span class="highlight">Nov. 7</span> (though the shutdown could delay that date).
</p>
<p class="indented-paragraph">
Members will then use that text to negotiate with senators over what makes it into the
final <span class="highlight">National Defense Authorization Act</span>.
</p>
<p class="indented-paragraph">
Last Congress, similar attempts to add language implored amid pushback from former Rep.
<span class="highlight">Patrick McHenry</span>, R-N.C.; this Congress, "everyone's
actually working together" now, one of the people said.
</p>
<p class="indented-paragraph">
They added that leaders are unconcerned about depriving
<span class="highlight">Trump</span> of a negotiating tool in talks with Chinese leader
<span class="highlight">Xi Jinping</span> on Thursday because
<span class="highlight">Treasury</span> is already implementing parallel guidance.
</p>
</div>
</div>
<div class="page-content-news-img">
<el-image :src="newsImg1" alt="新闻图片" fit="contain" />
<el-image :src="newsImg2" alt="新闻图片" fit="contain" />
<el-image :src="newsImg3" alt="新闻图片" fit="contain" />
</div>
</template>
</custom-container>
</el-col>
<el-col :span="7">
<custom-container block title="事件脉络" :titleIcon="houseIcon" height="630px">
<template #default>
<div class="box4">
<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 class="box4-item-left-line" v-if="idx + 1 != sanctionProcessList.length"></div>
</div>
<div class="box4-item-right">
<div class="box4-item-right-header">
<span class="box4-item-right-header-title" :title="item.title">{{ item.title }}</span>
<span class="box4-item-right-header-desc">{{ item.desc }}</span>
</div>
<div class="box4-item-right-content">
{{ item.content }}
</div>
</div>
</div>
</div>
</template>
</custom-container>
<custom-container block title="相关新闻" :titleIcon="houseIcon" height="500px">
<template #default>
<div class="news-list">
<NewsList :list-data="customNewsData" />
</div>
</template>
</custom-container>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="17">
<custom-container block title="关系图谱" :titleIcon="linkIcon" height="500px">
<template #default>
<Graph />
</template>
</custom-container>
</el-col>
</el-row>
</div>
</div>
</template>
<script setup>
import { ref } from "vue";
import CustomContainer from "@/components/Container/index.vue";
import NewsList from "@/views/exportControl/components/news.vue";
import Graph from "./relation.vue";
import newsImg from "@/assets/images/img-news.png";
import openIcon from "@/assets/images/icon-open.png";
import dotIcon from "@/assets/images/dot.png";
import newsImg1 from "@/assets/images/news-image-1.png";
import newsImg2 from "@/assets/images/news-image-2.png";
import newsImg3 from "@/assets/images/news-image-3.png";
import newsImg4 from "@/assets/images/news-img.png";
const highlightEntities = ref(false);
const handleToDetail = () => {
// window.open("https://www.foxnews.com/technology/house-republicans-draft-new-china-investment-curbs");
};
// 历次制裁过程
const sanctionProcessList = ref([
{
title: "减税与就业法案的出台与立法博弈",
desc: "2025-08-30 11:30",
content: "2017年,美国通过了一项自里根时代以来最为重大的税制改革——《减税与就业法案..."
},
{
title: "信用评级机构穆迪下调美国信用评级",
desc: "2025-08-16 13:00",
content: "2025年5月16日,信用评级机构穆迪自2011年以来第三次下调美国主权信用评级,直..."
},
{
title: "马斯克与特朗普决裂",
desc: "2025-08-16 11:05",
content: "马斯克5月30日离任政府效率部负责人时与特朗普友好告别,但6月3日突然批评OBB..."
},
{
title: "马斯克成立“美国党”​",
desc: "2025-08-16 08:30",
content: "7月5日(法案签署次日),马斯克宣布成立新政党“美国党”,计划参与2026年中期..."
},
{
title: "“90天关税暂缓期”即将到期",
desc: "2025-08-14 18:00",
content: "法案通过恰逢美国对多国“90天关税暂缓期”即将到期(2025年7月9日)。欧盟、..."
}
]);
const customNewsData = ref([
{
image: newsImg4,
title: "市场因结束美国政府关门协议的希望而提振",
time: "",
source: "",
description: "2017-08-30 · Channel NewsAsia..."
},
{
image: newsImg4,
title: "市场因结束美国政府关门协议的希望而提振",
time: "",
source: "",
description: "2017-08-30 · Channel NewsAsia..."
},
{
image: newsImg4,
title: "市场因结束美国政府关门协议的希望而提振",
time: "",
source: "",
description: "2017-08-30 · Channel NewsAsia..."
},
{
image: newsImg4,
title: "市场因结束美国政府关门协议的希望而提振",
time: "",
source: "",
description: "2017-08-30 · Channel NewsAsia..."
}
]);
</script>
<style scoped lang="scss">
.page-container {
/* padding: 20px; */
width: 100%;
overflow-x: hidden;
}
.page-header {
display: flex;
align-items: center;
justify-content: center;
height: 120px;
background: #fff;
padding: 0 160px;
&-left {
display: flex;
align-items: center;
justify-content: center;
gap: 15px;
margin-right: auto;
&-img {
width: 72px;
height: 72px;
}
&-top {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
gap: 5px;
&-title {
font-size: 24px;
font-weight: 700;
// margin-bottom: 10px;
color: rgba(59, 65, 75, 1);
}
&-en {
font-size: 16px;
font-weight: 400;
// margin-bottom: 10px;
color: rgba(59, 65, 75, 1);
}
&-desc {
font-size: 16px;
font-weight: 400;
color: rgba(95, 101, 108, 1);
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
}
}
}
&-right {
&-icon {
width: 12px;
height: 12px;
margin-right: 5px;
}
}
}
.page-content {
padding: 20px 160px;
&-news-abstract {
height: 260px;
width: 100%;
padding: 10px;
background: linear-gradient(to bottom, rgba(246, 250, 255, 1), rgba(246, 250, 255, 0));
font-size: 16px;
font-weight: 400;
line-height: 30px;
border-radius: 4px;
border: 1px solid rgba(246, 250, 255, 1);
text-indent: 2em;
}
&-news-artical {
line-height: 1.8;
color: #303133;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 25px;
&-zn,
&-en {
width: 50%;
}
p {
text-align: justify;
text-indent: 2em; /* 段落开头缩进2个字符 */
margin-bottom: -1px;
line-height: 28px;
}
.highlight {
color: rgba(5, 95, 194, 1); /* 指定的蓝色高亮 */
font-weight: 500;
}
}
&-news-img {
border-top: 1px solid rgba(234, 236, 238, 1);
padding: 15px 10px;
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
}
.box4 {
.box4-item {
display: flex;
gap: 10px;
align-items: flex-start;
padding-bottom: 30px;
.box4-item-left {
display: flex;
flex-direction: column;
align-items: center;
padding-top: 8px;
position: relative;
.box4-item-left-icon {
width: 10px;
height: 10px;
}
.box4-item-left-line {
width: 1px;
height: 120px;
position: absolute;
top: 15px;
border-left: 1px solid rgba(10, 87, 166, 0.3);
}
}
.box4-item-right {
display: flex;
flex-direction: column;
gap: 5px;
.box4-item-right-header {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 12px;
border-bottom: 1px solid rgba(234, 236, 238, 1);
&-title {
width: 60%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 16px;
color: rgba(59, 65, 75, 1);
font-weight: 700;
}
&-desc {
font-size: 14px;
font-weight: 400;
color: rgba(95, 101, 108, 1);
}
}
.box4-item-right-content {
// margin-top: 10px;
font-size: 16px;
font-weight: 400;
color: rgba(95, 101, 108, 1);
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
height: 48px;
line-height: 24px;
}
}
}
}
}
</style>
<!-- src/components/HuaweiSupplyChainChart.vue -->
<template>
<div class="chart-container" ref="chartRef"></div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import * as echarts from "echarts";
// import { graphData } from "./mockData";
const graphData = {
nodes: [
{ id: "huawei", name: "美国众议院", category: 0, symbolSize: 80 },
{ id: "huawei-cloud", name: "约翰·斯奎尔斯", category: 0, symbolSize: 50 },
{ id: "huawei-digital-energy", name: "马尔科·卢比奥", category: 0, symbolSize: 50 },
{ id: "huawei-intelligent-car", name: "埃隆·马斯克", category: 0, symbolSize: 50 },
{ id: "qualcomm", name: "道格·伯格姆", category: 1, symbolSize: 50 },
{ id: "intel", name: "斯科特·贝森特", category: 1, symbolSize: 50 },
{ id: "mediatek", name: "杰弗里·凯斯勒", category: 1, symbolSize: 50 },
{ id: "shenghongda", name: "杰弗里·凯斯勒", category: 1, symbolSize: 50 },
{ id: "foxconn", name: "唐纳德·特朗普", category: 1, symbolSize: 50 }
// { id: "luxshare", name: "立讯精密", category: 1, symbolSize: 20 },
// { id: "tianma", name: "天马微电子", category: 1, symbolSize: 20 },
// { id: "desay", name: "德赛电池", category: 1, symbolSize: 20 },
// { id: "auspicious-sound", name: "瑞声科技", category: 1, symbolSize: 20 },
// { id: "goertek", name: "歌尔股份", category: 1, symbolSize: 20 },
// { id: "sony-semiconductor", name: "索尼半导体", category: 1, symbolSize: 20 },
// { id: "ibm", name: "IBM", category: 1, symbolSize: 20 },
// { id: "lg-innotek", name: "LG伊诺特", category: 1, symbolSize: 20 },
// { id: "micron", name: "美光科技", category: 1, symbolSize: 20 }
// { id: "nokia", name: "诺基亚", category: 1, symbolSize: 20 },
// { id: "google", name: "谷歌", category: 1, symbolSize: 20 },
// { id: "vodafone", name: "沃达丰", category: 1, symbolSize: 20 },
// { id: "microsoft", name: "微软", category: 1, symbolSize: 20 },
// { id: "china-unicom", name: "中国联通", category: 1, symbolSize: 20 },
// { id: "china-mobile", name: "中国移动", category: 1, symbolSize: 20 },
// { id: "tsmc", name: "台积电", category: 1, symbolSize: 20 }
// { id: "orange", name: "Orange", category: 1, symbolSize: 20 },
// { id: "germany-telecom", name: "德国电信", category: 1, symbolSize: 20 },
// { id: "byd-electronics", name: "比亚迪电子", category: 1, symbolSize: 20 },
// { id: "boe", name: "京东方", category: 1, symbolSize: 20 },
// { id: "dali-optical", name: "大力光", category: 1, symbolSize: 20 },
// { id: "lg-display", name: "LG显示", category: 1, symbolSize: 20 },
// { id: "sunny-optical", name: "舜宇光学", category: 1, symbolSize: 20 }
],
links: [
{ source: "huawei", target: "huawei-cloud" },
{ source: "huawei", target: "huawei-digital-energy" },
{ source: "huawei", target: "huawei-intelligent-car" },
{ source: "huawei", target: "qualcomm" },
{ source: "huawei", target: "intel" },
{ source: "huawei", target: "mediatek" },
{ source: "huawei", target: "shenghongda" },
{ source: "huawei", target: "foxconn" }
// { source: "huawei", target: "luxshare" },
// { source: "huawei", target: "tianma" },
// { source: "huawei", target: "desay" },
// { source: "huawei", target: "auspicious-sound" },
// { source: "huawei", target: "goertek" },
// { source: "huawei", target: "sony-semiconductor" },
// { source: "huawei", target: "ibm" },
// { source: "huawei", target: "lg-innotek" },
// { source: "huawei", target: "micron" }
// { source: "huawei", target: "nokia" },
// { source: "huawei", target: "google" },
// { source: "huawei", target: "vodafone" },
// { source: "huawei", target: "microsoft" },
// { source: "huawei", target: "china-unicom" },
// { source: "huawei", target: "china-mobile" },
// { source: "huawei", target: "tsmc" }
// { source: "huawei", target: "orange" },
// { source: "huawei", target: "germany-telecom" },
// { source: "huawei", target: "byd-electronics" },
// { source: "huawei", target: "boe" },
// { source: "huawei", target: "dali-optical" },
// { source: "huawei", target: "lg-display" },
// { source: "huawei", target: "sunny-optical" }
],
categories: [{ name: "子业务" }, { name: "合作商" }]
};
const chartRef = ref(null);
onMounted(() => {
const chart = echarts.init(chartRef.value);
const option = {
title: { text: "", left: "center" },
tooltip: {},
legend: {
data: graphData.categories.map(item => item.name),
left: "left"
},
series: [
{
type: "graph",
layout: "force", // 力导向布局
force: {
repulsion: 1000, // 节点排斥力
edgeLength: [50, 200] // 边长度范围
},
data: graphData.nodes,
links: graphData.links,
categories: graphData.categories,
roam: true, // 支持缩放、平移
label: {
show: true,
fontSize: 12
},
edgeSymbol: ["arrow", "none"], // 边的箭头
edgeSymbolSize: [8, 50],
itemStyle: {
color: "rgba(5, 95, 194, 1)"
// borderColor: "red",
// borderWidth: 1
},
lineStyle: {
color: "rgba(174, 214, 255, 1)",
width: 2,
opacity: 0.5
},
emphasis: {
focus: "adjacency",
lineStyle: {
width: 2
}
}
}
]
};
chart.setOption(option);
// 窗口resize时自适应
window.addEventListener("resize", () => chart.resize());
});
</script>
<style scoped>
.chart-container {
width: 100%;
height: 600px;
background-color: #fff; /* 深色背景,模拟原图风格 */
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论