Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
603c6875
提交
603c6875
authored
3月 27, 2026
作者:
yanpeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
查找合并后丢失的问题
上级
cc8e9abf
流水线
#114
已取消 于阶段
in 1 分 24 秒
变更
2
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
83 行增加
和
8 行删除
+83
-8
index.vue
src/views/exportControl/index.vue
+80
-5
index.vue
...ontrol/v2.0EntityList/components/dataStatistics/index.vue
+3
-3
没有找到文件。
src/views/exportControl/index.vue
浏览文件 @
603c6875
...
@@ -368,19 +368,29 @@
...
@@ -368,19 +368,29 @@
</el-col>
</el-col>
</el-row>
</el-row>
<el-row
:gutter=
"20"
style=
"width: 1600px; margin: 0 auto; height: 5
05
px; margin-top: 16px"
>
<el-row
:gutter=
"20"
style=
"width: 1600px; margin: 0 auto; height: 5
40
px; margin-top: 16px"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<custom-container
title=
"实体领域分布"
:titleIcon=
"radarIcon"
height=
"
48
0px"
>
<custom-container
title=
"实体领域分布"
:titleIcon=
"radarIcon"
height=
"
54
0px"
>
<
template
#
header-right
>
<
template
#
header-right
>
<el-checkbox
v-model=
"domainChecked"
label=
"50%规则"
size=
"large"
/>
<el-checkbox
v-model=
"domainChecked"
label=
"50%规则"
size=
"large"
/>
</
template
>
</
template
>
<
template
#
default
>
<
template
#
default
>
<EChart
:option=
"radarOption"
autoresize
:style=
"
{ height: '460px' }" />
<EChart
:option=
"radarOption"
autoresize
:style=
"
{ height: '420px' }" />
<div
class=
"data-origin-box"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsIcon"
alt=
""
/>
</div>
<div
class=
"data-origin-text"
>
实体领域分布情况,数据来源:美国各行政机构官网
</div>
</div>
<div
class=
"ai-pane"
>
<AiButton
/>
<AiPane
:aiContent=
"radarChart.loading ? '解读生成中...' : radarChart.interpretation"
/>
</div>
</
template
>
</
template
>
</custom-container>
</custom-container>
</el-col>
</el-col>
<el-col
:span=
"16"
>
<el-col
:span=
"16"
>
<custom-container
title=
"实体清单数量增长趋势"
:titleIcon=
"qushiIcon"
height=
"
48
0px"
>
<custom-container
title=
"实体清单数量增长趋势"
:titleIcon=
"qushiIcon"
height=
"
54
0px"
>
<
template
#
header-right
>
<
template
#
header-right
>
<div
style=
"display: flex; align-items: center; gap: 16px"
>
<div
style=
"display: flex; align-items: center; gap: 16px"
>
<el-checkbox
v-model=
"trendChecked"
label=
"50%规则"
size=
"large"
/>
<el-checkbox
v-model=
"trendChecked"
label=
"50%规则"
size=
"large"
/>
...
@@ -390,7 +400,17 @@
...
@@ -390,7 +400,17 @@
</div>
</div>
</
template
>
</
template
>
<
template
#
default
>
<
template
#
default
>
<EChart
:option=
"trendOption"
autoresize
:style=
"
{ height: '400px' }" />
<EChart
:option=
"trendOption"
autoresize
:style=
"
{ height: '420px' }" />
<div
class=
"data-origin-box"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsIcon"
alt=
""
/>
</div>
<div
class=
"data-origin-text"
>
实体清单数量增长趋势情况,数据来源:美国各行政机构官网
</div>
</div>
<div
class=
"ai-pane"
>
<AiButton
/>
<AiPane
:aiContent=
"trendChart.loading ? '解读生成中...' : trendChart.interpretation"
/>
</div>
</
template
>
</
template
>
</custom-container>
</custom-container>
</el-col>
</el-col>
...
@@ -714,11 +734,18 @@ import { ElMessage, ElMessageBox } from "element-plus";
...
@@ -714,11 +734,18 @@ import { ElMessage, ElMessageBox } from "element-plus";
import
{
DArrowRight
,
Warning
,
Search
}
from
"@element-plus/icons-vue"
;
import
{
DArrowRight
,
Warning
,
Search
}
from
"@element-plus/icons-vue"
;
import
EChart
from
"@/components/Chart/index.vue"
;
import
EChart
from
"@/components/Chart/index.vue"
;
import
tipsIcon
from
"./assets/icons/info-icon.png"
;
import
AiButton
from
"@/components/base/Ai/AiButton/index.vue"
;
import
AiPane
from
"@/components/base/Ai/AiPane/index.vue"
;
import
{
useChartInterpretation
}
from
"@/views/exportControl/utils/common"
;
const
sanctionCountChart
=
useChartInterpretation
();
import
{
TAGTYPE
}
from
"@/public/constant"
;
import
{
TAGTYPE
}
from
"@/public/constant"
;
import
{
useGotoCompanyPages
}
from
"@/router/modules/company"
;
import
{
useGotoCompanyPages
}
from
"@/router/modules/company"
;
import
{
useGotoNewsDetail
}
from
"@/router/modules/news"
;
import
{
useGotoNewsDetail
}
from
"@/router/modules/news"
;
const
gotoCompanyPages
=
useGotoCompanyPages
();
const
gotoCompanyPages
=
useGotoCompanyPages
();
const
gotoNewsDetail
=
useGotoNewsDetail
();
const
gotoNewsDetail
=
useGotoNewsDetail
();
const
trendChart
=
useChartInterpretation
();
const
radarChart
=
useChartInterpretation
();
import
{
useRouter
}
from
"vue-router"
;
import
{
useRouter
}
from
"vue-router"
;
...
@@ -1026,6 +1053,7 @@ const fetchTrendData = async () => {
...
@@ -1026,6 +1053,7 @@ const fetchTrendData = async () => {
});
});
if
(
res
&&
res
[
0
]
&&
res
[
0
].
yearDomainCount
)
{
if
(
res
&&
res
[
0
]
&&
res
[
0
].
yearDomainCount
)
{
trendOption
.
value
=
processYearDomainCountData
(
res
[
0
].
yearDomainCount
);
trendOption
.
value
=
processYearDomainCountData
(
res
[
0
].
yearDomainCount
);
trendChart
.
interpret
({
type
:
"柱状图"
,
name
:
"实体清单数量增长趋势"
,
data
:
res
[
0
].
yearDomainCount
});
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取趋势图数据失败:"
,
error
);
console
.
error
(
"获取趋势图数据失败:"
,
error
);
...
@@ -1297,6 +1325,7 @@ const fetchRadarData = async checked => {
...
@@ -1297,6 +1325,7 @@ const fetchRadarData = async checked => {
}
}
};
};
});
});
radarChart
.
interpret
({
type
:
"雷达图"
,
name
:
"实体领域分布"
,
data
:
data
});
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取雷达图数据失败:"
,
error
);
console
.
error
(
"获取雷达图数据失败:"
,
error
);
...
@@ -3596,4 +3625,50 @@ const handleMediaClick = item => {
...
@@ -3596,4 +3625,50 @@ const handleMediaClick = item => {
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
}
}
}
}
.data-origin-box
{
width
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
padding
:
22px
0
;
.data-origin-icon
{
width
:
16px
;
height
:
16px
;
font-size
:
0px
;
margin-right
:
8px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.data-origin-text
{
font-family
:
Source
Han
Sans
CN
;
font-size
:
14px
;
color
:
var
(
--
text-primary-50-color
);
}
}
.ai-pane
{
position
:
absolute
;
right
:
0px
;
bottom
:
15px
;
z-index
:
2
;
:deep
(
.ai-pane-wrapper
)
{
display
:
none
;
}
:deep
(
.ai-button-wrapper
)
{
display
:
flex
;
}
&
:hover
{
width
:
100%
;
bottom
:
0px
;
:deep
(
.ai-pane-wrapper
)
{
display
:
block
;
}
:deep
(
.ai-button-wrapper
)
{
display
:
none
;
}
}
}
</
style
>
</
style
>
src/views/exportControl/v2.0EntityList/components/dataStatistics/index.vue
浏览文件 @
603c6875
...
@@ -252,7 +252,6 @@ import * as echarts from "echarts";
...
@@ -252,7 +252,6 @@ import * as echarts from "echarts";
import
chinaJson
from
"../../../utils/China.json"
;
import
chinaJson
from
"../../../utils/China.json"
;
import
ai
from
"./assets/ai.png"
;
import
ai
from
"./assets/ai.png"
;
import
right
from
"./assets/right.png"
;
import
right
from
"./assets/right.png"
;
import
tipsIcon
from
"../../../assets/icons/info-icon.png"
;
import
{
import
{
getTotalCount
,
getTotalCount
,
getSanctionCountChange
,
getSanctionCountChange
,
...
@@ -260,11 +259,12 @@ import {
...
@@ -260,11 +259,12 @@ import {
getTechDomainCount
,
getTechDomainCount
,
getEntityTypeCount
getEntityTypeCount
}
from
"@/api/exportControlV2.0"
;
}
from
"@/api/exportControlV2.0"
;
import
EChart
from
"@/components/Chart/index.vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
tipsIcon
from
"../../../assets/icons/info-icon.png"
;
import
AiButton
from
"@/components/base/Ai/AiButton/index.vue"
;
import
AiButton
from
"@/components/base/Ai/AiButton/index.vue"
;
import
AiPane
from
"@/components/base/Ai/AiPane/index.vue"
;
import
AiPane
from
"@/components/base/Ai/AiPane/index.vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useChartInterpretation
}
from
"@/views/exportControl/utils/common"
;
import
{
useChartInterpretation
}
from
"@/views/exportControl/utils/common"
;
import
EChart
from
"@/components/Chart/index.vue"
;
const
sanctionCountChart
=
useChartInterpretation
();
const
sanctionCountChart
=
useChartInterpretation
();
const
domainChart
=
useChartInterpretation
();
const
domainChart
=
useChartInterpretation
();
const
typeChart
=
useChartInterpretation
();
const
typeChart
=
useChartInterpretation
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论