Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
26ccefc7
提交
26ccefc7
authored
3月 16, 2026
作者:
张烨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:政令-受影响实体板块-鱼骨图增加缩放和移动的功能
上级
123be9b5
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
129 行增加
和
188 行删除
+129
-188
index.vue
src/views/decree/decreeLayout/deepdig/index.vue
+2
-1
index.vue
src/views/decree/decreeLayout/index.vue
+6
-6
ChartRelation.vue
src/views/decree/decreeLayout/influence/ChartRelation.vue
+0
-0
AiTips.vue
src/views/decree/decreeLayout/influence/com/AiTips.vue
+62
-0
ChartChain.vue
src/views/decree/decreeLayout/influence/com/ChartChain.vue
+0
-0
index.vue
src/views/decree/decreeLayout/influence/index.vue
+59
-181
没有找到文件。
src/views/decree/decreeLayout/deepdig/index.vue
浏览文件 @
26ccefc7
...
...
@@ -3,7 +3,7 @@
<div
class=
"box1"
>
<AnalysisBox
title=
"相关政令"
:showAllBtn=
"false"
>
<div
class=
"box1-main"
>
<el-empty
v-if=
"
siderList.length===0"
style=
"padding-top: 30%
"
description=
"暂无数据"
:image-size=
"100"
/>
<el-empty
v-if=
"
!siderList?.length"
style=
"padding-top: 40%;
"
description=
"暂无数据"
:image-size=
"100"
/>
<el-scrollbar
height=
"100%"
always
>
<div
class=
"left-item"
:class=
"
{ 'item-active': false }" v-for="(item, index) in siderList" :key="index" @click="handleClickDecree(item)">
<div
class=
"item-head"
>
...
...
@@ -18,6 +18,7 @@
</div>
<div
class=
"box2"
>
<AnalysisBox
title=
"政令关系挖掘"
:showAllBtn=
"false"
>
<el-empty
v-if=
"!siderList?.length"
style=
"padding-top: 20%;"
description=
"暂无数据"
:image-size=
"100"
/>
<div
class=
"box2-main"
>
<div
ref=
"containerRef"
class=
"graph-container"
></div>
</div>
...
...
src/views/decree/decreeLayout/index.vue
浏览文件 @
26ccefc7
...
...
@@ -203,12 +203,12 @@ const mainHeaderBtnList = ref([
name
:
"深度挖掘"
,
path
:
"/decreeLayout/deepDig"
},
//
{
//
icon: icon3,
//
activeIcon: icon3Active,
//
name: "影响分析",
//
path: "/decreeLayout/influence"
//
},
{
icon
:
icon3
,
activeIcon
:
icon3Active
,
name
:
"影响分析"
,
path
:
"/decreeLayout/influence"
},
]);
const
activeTitle
=
ref
(
"政令概况"
);
...
...
src/views/decree/decreeLayout/influence/ChartRelation.vue
deleted
100644 → 0
浏览文件 @
123be9b5
差异被折叠。
点击展开。
src/views/decree/decreeLayout/influence/com/AiTips.vue
0 → 100644
浏览文件 @
26ccefc7
<
template
>
<div
class=
"view-box"
>
<div
class=
"icon-left"
>
<img
src=
"../../assets/icons/ai.png"
alt=
""
>
</div>
<div
class=
"tips-content"
>
{{
props
.
tips
}}
</div>
<div
class=
"icon-right"
>
<img
src=
"../../assets/icons/right.png"
alt=
""
>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
name=
"AiTips"
>
const
props
=
defineProps
({
tips
:
{
type
:
String
,
default
:
''
}
});
</
script
>
<
style
scoped
lang=
"scss"
>
.view-box
{
width
:
100%
;
display
:
flex
;
align-items
:
center
;
padding
:
7px
12px
;
border
:
1px
solid
rgba
(
231
,
243
,
255
,
1
);
border-radius
:
4px
;
background
:
rgba
(
246
,
250
,
255
,
1
);
.icon-left
{
width
:
20px
;
height
:
20px
;
img
{
width
:
100%
;
height
:
100%
;
object-fit
:
contain
;
}
}
.tips-content
{
color
:
rgb
(
5
,
95
,
194
);
font-size
:
16px
;
font-weight
:
400
;
line-height
:
24px
;
margin-left
:
13px
;
flex
:
1
;
}
.icon-right
{
width
:
24px
;
height
:
24px
;
img
{
width
:
100%
;
height
:
100%
;
object-fit
:
contain
;
}
}
}
</
style
>
\ No newline at end of file
src/views/decree/decreeLayout/influence/ChartChain.vue
→
src/views/decree/decreeLayout/influence/
com/
ChartChain.vue
浏览文件 @
26ccefc7
差异被折叠。
点击展开。
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
26ccefc7
...
...
@@ -16,7 +16,7 @@
</div>
<div
class=
"data-title"
>
实体名称
</div>
<div
style=
"height: 20px; flex: auto;"
>
<el-empty
v-if=
"
showCompanyList.length === 0"
style=
"padding-top: 30%
"
description=
"暂无数据"
:image-size=
"100"
/>
<el-empty
v-if=
"
!showCompanyList?.length"
style=
"padding-top: 35%;
"
description=
"暂无数据"
:image-size=
"100"
/>
<el-scrollbar
height=
"100%"
always
>
<div
class=
"list-data"
>
<div
class=
"list-item"
v-for=
"item in showCompanyList"
:key=
"item.id"
:class=
"
{ 'item-active': activeEntityId === item.id }" @click="handleToCompanyDetail(item)">
...
...
@@ -75,18 +75,14 @@
<
/div
>
<
/div
>
<
/template
>
<
div
class
=
"box2-main"
v
-
if
=
"contentType==1"
>
<
ChartChain
/>
<
/div
>
<
div
class
=
"box2-main"
v
-
if
=
"contentType==2"
>
<!--
<
ChartRelation
:
graph
-
data
=
"graphData"
:
tree
-
data
=
"treeData"
:
control
-
active
=
"1"
@
node
-
click
=
"handleNodeClick"
@
layout
-
change
=
"handleLayoutChange"
/>
-->
<
GraphChart
:
nodes
=
"testData.nodes"
:
links
=
"testData.links"
layoutType
=
"force"
/>
<
div
class
=
"box2-main"
>
<
AiTips
:
tips
=
"tips"
/>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==1"
>
<
ChartChain
/>
<
/div
>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==2"
>
<
GraphChart
:
nodes
=
"testData.nodes"
:
links
=
"testData.links"
layoutType
=
"force"
/>
<
/div
>
<
/div
>
<
/AnalysisBox
>
<
/div
>
...
...
@@ -101,9 +97,9 @@ import getBarChart from "./utils/barChart";
import
{
getDecreeIndustry
,
getDecreehylyList
,
getDecreeCompany
}
from
"@/api/decree/influence"
;
import
{
getCnEntityOnChain
,
getChainInfoByDomainId
}
from
"@/api/exportControl"
;
import
{
getSingleSanctionEntitySupplyChain
}
from
"@/api/exportControlV2.0"
;
import
ChartChain
from
"./ChartChain.vue"
;
import
ChartChain
from
"./com/ChartChain.vue"
;
import
AiTips
from
"./com/AiTips.vue"
;
import
GraphChart
from
"@/components/base/GraphChart/index.vue"
;
import
ChartRelation
from
"./ChartRelation.vue"
;
import
defaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
noticeIcon
from
"./assets/images/notice-icon.png"
;
import
icon422
from
"./assets/images/icon422.png"
;
...
...
@@ -113,191 +109,65 @@ import icon1621 from "./assets/images/icon1621.png";
import
company
from
"./assets/images/company.png"
;
import
companyActive
from
"./assets/images/company-active.png"
;
const
tips
=
"这项政令标志着中美AI竞争进入一个新阶段,其核心特征是 “精准封锁”与“体系输出”相结合。它短期内无疑会给中国AI产业链带来压力,但长期看,这场竞争更可能是一场围绕技术路线、生态系统和治理规则的持久战。"
// 关系图数据
const
testData
=
{
// 节点数据
nodes
:
[
{
id
:
0
,
name
:
"泰丰先行"
,
// category: 0,
symbolSize
:
30
,
value
:
8
,
symbol
:
`image://${company
}
`
,
x
:
50
,
y
:
10
}
,
{
id
:
1
,
name
:
"国轩高科"
,
// category: 0,
symbolSize
:
30
,
value
:
9
,
symbol
:
`image://${company
}
`
,
x
:
150
,
y
:
10
}
,
{
id
:
2
,
name
:
"智方纳米"
,
// category: 2,
symbolSize
:
30
,
value
:
7
,
symbol
:
`image://${company
}
`
,
x
:
250
,
y
:
10
}
,
{
id
:
3
,
name
:
"香百科技"
,
// category: 1,
symbolSize
:
30
,
value
:
6
,
symbol
:
`image://${company
}
`
,
x
:
350
,
y
:
10
}
,
{
id
:
4
,
name
:
"格林滨"
,
// category: 2,
symbolSize
:
30
,
value
:
6
,
symbol
:
`image://${company
}
`
,
x
:
450
,
y
:
10
}
,
{
id
:
5
,
name
:
"江西紫宸"
,
// category: 2,
symbolSize
:
30
,
value
:
7
,
symbol
:
`image://${company
}
`
,
x
:
550
,
y
:
10
}
,
{
id
:
6
,
name
:
"紫江企业"
,
// category: 4,
symbolSize
:
30
,
value
:
6
,
symbol
:
`image://${company
}
`
,
x
:
650
,
y
:
10
}
,
{
id
:
7
,
name
:
"大而美法案"
,
// category: 4,
symbolSize
:
50
,
value
:
5
,
symbol
:
`image://${company
}
`
,
x
:
300
,
y
:
200
}
,
{
id
:
0
,
name
:
"泰丰先行"
,
symbolSize
:
60
,
symbol
:
`image://${company
}
`
,
x
:
0
,
y
:
0
}
,
{
id
:
1
,
name
:
"国轩高科"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
2
,
name
:
"智方纳米"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
3
,
name
:
"香百科技"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
4
,
name
:
"格林滨"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
5
,
name
:
"江西紫宸"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
6
,
name
:
"紫江企业"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
7
,
name
:
"大而美法案"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
{
id
:
8
,
name
:
"比亚迪"
,
symbolSize
:
40
,
symbol
:
`image://${company
}
`
}
,
],
// 关系数据
links
:
[
{
id
:
8
,
name
:
"比亚迪"
,
// category: 0,
symbolSize
:
30
,
value
:
10
,
symbol
:
`image://${company
}
`
,
x
:
50
,
y
:
400
source
:
1
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'持股'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
9
,
name
:
"铜陵有色"
,
// category: 3,
symbolSize
:
30
,
value
:
8
,
symbol
:
`image://${company
}
`
,
x
:
150
,
y
:
400
source
:
2
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'持股'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
10
,
name
:
"长盛精密"
,
// category: 1,
symbolSize
:
30
,
value
:
7
,
symbol
:
`image://${company
}
`
,
x
:
250
,
y
:
400
source
:
3
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'合作'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
11
,
name
:
"天合光能"
,
// category: 0,
symbolSize
:
30
,
value
:
8
,
symbol
:
`image://${company
}
`
,
x
:
350
,
y
:
400
source
:
4
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'从属'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
12
,
name
:
"昆仑化学"
,
// category: 2,
symbolSize
:
30
,
value
:
6
,
symbol
:
`image://${company
}
`
,
x
:
250
,
y
:
400
source
:
5
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'合作'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
13
,
name
:
"嘉源科技"
,
// category: 1,
symbolSize
:
30
,
value
:
6
,
symbol
:
`image://${company
}
`
,
x
:
450
,
y
:
400
source
:
6
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'持股'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
14
,
name
:
"华阳集团"
,
// category: 4,
symbolSize
:
30
,
value
:
7
,
symbol
:
`image://${company
}
`
,
x
:
550
,
y
:
400
source
:
7
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'合作'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
{
id
:
15
,
name
:
"海辰智能"
,
// category: 1,
symbolSize
:
30
,
value
:
7
,
symbol
:
`image://${company
}
`
,
x
:
650
,
y
:
400
source
:
8
,
target
:
0
,
label
:
{
show
:
true
,
color
:
"#055FC2"
,
backgroundColor
:
"#E7F3FF"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
'合作'
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
}
}
,
],
// 关系数据
links
:
[
{
source
:
1
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
2
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'持股'
}
}
,
{
source
:
3
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
4
,
target
:
7
,
lineStyle
:
{
type
:
'dashed'
,
color
:
'#d32f2f'
}
,
label
:
{
show
:
true
,
formatter
:
'从属'
}
}
,
{
source
:
5
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
6
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'持股'
}
}
,
{
source
:
0
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'持股'
}
}
,
{
source
:
8
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
9
,
target
:
7
,
lineStyle
:
{
type
:
'dashed'
,
color
:
'#d32f2f'
}
,
label
:
{
show
:
true
,
formatter
:
'从属'
}
}
,
{
source
:
10
,
target
:
7
,
lineStyle
:
{
type
:
'dashed'
,
color
:
'#d32f2f'
}
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
11
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
12
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
13
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
14
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
}
}
,
{
source
:
15
,
target
:
7
,
label
:
{
show
:
true
,
formatter
:
'合作'
,
color
:
'red'
,
borderColor
:
'red'
}
}
,
],
}
;
// 受影响实体
...
...
@@ -374,7 +244,7 @@ const handleGetHylyList = async () => {
}
;
// 产业链/实体关系
const
contentType
=
ref
(
2
);
const
contentType
=
ref
(
1
);
const
headerContentType
=
(
type
)
=>
{
contentType
.
value
=
type
;
}
;
...
...
@@ -693,7 +563,7 @@ onMounted(() => {
align
-
items
:
flex
-
end
;
width
:
100
%
;
height
:
100
%
;
padding
:
0
16
px
;
padding
:
0
20
px
;
.
title
-
left
{
display
:
flex
;
border
:
1
px
solid
rgb
(
5
,
95
,
194
);
...
...
@@ -734,6 +604,14 @@ onMounted(() => {
.
box2
-
main
{
width
:
100
%
;
height
:
100
%
;
display
:
flex
;
flex
-
direction
:
column
;
padding
:
16
px
20
px
;
.
graph
-
box
{
height
:
20
px
;
flex
:
auto
;
margin
-
top
:
16
px
;
}
}
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论