Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
1a2e041e
提交
1a2e041e
authored
11月 28, 2025
作者:
闫鹏
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'yp-dev' 到 'master'
Yp dev 查看合并请求
!20
上级
3af0b73c
36503d51
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
706 行增加
和
13 行删除
+706
-13
img-news.png
src/assets/images/img-news.png
+0
-0
news-image-1.png
src/assets/images/news-image-1.png
+0
-0
news-image-2.png
src/assets/images/news-image-2.png
+0
-0
news-image-3.png
src/assets/images/news-image-3.png
+0
-0
index.vue
src/components/Container/index.vue
+9
-5
index.js
src/router/index.js
+129
-8
index.vue
src/views/newsAnalysis/index.vue
+426
-0
relation.vue
src/views/newsAnalysis/relation.vue
+142
-0
没有找到文件。
src/assets/images/img-news.png
0 → 100644
浏览文件 @
1a2e041e
5.8 KB
src/assets/images/news-image-1.png
0 → 100644
浏览文件 @
1a2e041e
109.7 KB
src/assets/images/news-image-2.png
0 → 100644
浏览文件 @
1a2e041e
199.2 KB
src/assets/images/news-image-3.png
0 → 100644
浏览文件 @
1a2e041e
188.3 KB
src/components/Container/index.vue
浏览文件 @
1a2e041e
...
@@ -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
:
1
4px
;
margin-right
:
4px
;
}
}
.header-title
{
.header-title
{
...
...
src/router/index.js
浏览文件 @
1a2e041e
...
@@ -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
({
...
...
src/views/newsAnalysis/index.vue
0 → 100644
浏览文件 @
1a2e041e
<
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/views/newsAnalysis/relation.vue
0 → 100644
浏览文件 @
1a2e041e
<!-- 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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论