Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
925c1fb9
提交
925c1fb9
authored
3月 13, 2026
作者:
yanpeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
union and element
上级
0623bd07
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
1178 行增加
和
130 行删除
+1178
-130
allUnion.js
src/api/allUnion.js
+26
-17
index.js
src/api/zmOverview/allElement/index.js
+43
-18
countryCoordMap.js
src/assets/json/countryCoordMap.js
+215
-0
index.vue
src/components/Container/index.vue
+6
-6
index.vue
...ew/components/fourSuppress/components/addDomain/index.vue
+60
-27
icon-trend.png
...ppress/components/allElement/assets/images/icon-trend.png
+0
-0
index.vue
...w/components/fourSuppress/components/allElement/index.vue
+595
-62
mock.json
...w/components/fourSuppress/components/allElement/mock.json
+233
-0
没有可用的文件名
+0
-0
没有找到文件。
src/api/allUnion.js
浏览文件 @
925c1fb9
...
...
@@ -8,31 +8,40 @@ import request from "@/api/request.js";
*/
export
function
getAllUnionList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/union/union/unionList/
${
params
.
date
}
`
})
method
:
"GET"
,
url
:
`/api/union/union/unionList/
${
params
.
date
}
`
,
params
:
{
domainId
:
params
.
domainId
?
params
.
domainId
:
null
}
});
}
// 全联盟-获取排华数量
/**
* @header token
*/
export
function
getUnionCount
()
{
export
function
getUnionCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/union/union/unionCount`
})
method
:
"GET"
,
url
:
`/api/union/union/unionCount`
,
params
:
{
currentPage
:
params
.
page
?
params
.
page
:
1
,
pageSize
:
params
.
pageSize
?
params
.
pageSize
:
10
,
domainId
:
params
.
domainId
?
params
.
domainId
:
null
}
});
}
// 全联盟-获取排华联盟动态
/**
* @header token
*/
export
function
getDynamic
()
{
export
function
getDynamic
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/union/union/dynamic`
})
method
:
"GET"
,
url
:
`/api/union/union/dynamic`
,
params
});
}
// 全联盟-获取排华联盟预警
...
...
@@ -43,9 +52,9 @@ export function getDynamic() {
*/
export
function
getPrediction
()
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/union/union/prediction`
})
});
}
// 全联盟-获取排华联盟领域分布
...
...
@@ -56,9 +65,9 @@ export function getPrediction() {
*/
export
function
getIndustry
()
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/union/union/industry`
})
});
}
// 全联盟-获取排华联盟国家紧密度
...
...
@@ -69,7 +78,7 @@ export function getIndustry() {
*/
export
function
getCountryRelation
()
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/union/union/countryRelation`
})
});
}
src/api/zmOverview/allElement/index.js
浏览文件 @
925c1fb9
...
...
@@ -3,17 +3,28 @@ import request from "@/api/request.js";
// 全要素统计
export
function
getElementCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/elementCount/
${
params
.
date
}
`
,
})
method
:
"GET"
,
url
:
`/api/element/elementCount/
${
params
.
date
}
`
});
}
// 美对华科技要素打压遏制数量趋势
export
function
getElementSuppressTrend
(
params
)
{
return
request
({
method
:
"GET"
,
url
:
`/api/element/DomainContainmentTrend/
${
params
.
date
}
`
,
params
:
{
domainId
:
params
.
domainId
?
params
.
domainId
:
null
}
});
}
// 最新动态
export
function
getNewDynamics
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/newDynamics`
,
})
method
:
"GET"
,
url
:
`/api/element/newDynamics`
});
}
// 美对我要素打压情况
...
...
@@ -22,10 +33,14 @@ export function getNewDynamics() {
*/
export
function
getElementSuppress
(
params
)
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/element/elementSuppress/
${
params
.
date
}
`
,
params
})
params
:
{
elementId
:
params
.
elementId
?
params
.
elementId
:
null
,
page
:
params
.
currentPage
,
pageSize
:
params
.
pageSize
}
});
}
// 关键词云-上
...
...
@@ -34,9 +49,12 @@ export function getElementSuppress(params) {
*/
export
function
getKeyWordUp
(
params
)
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/element/getKeyWordUp/
${
params
.
date
}
`
,
})
params
:
{
elementId
:
params
.
elementId
?
params
.
elementId
:
null
}
});
}
// 美自身要素发展情况
...
...
@@ -45,10 +63,14 @@ export function getKeyWordUp(params) {
*/
export
function
getElementDevelop
(
params
)
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/element/elementDevelop/
${
params
.
date
}
`
,
params
})
params
:
{
elementId
:
params
.
elementId
?
params
.
elementId
:
null
,
page
:
params
.
currentPage
,
pageSize
:
params
.
pageSize
}
});
}
// 关键词云-下
...
...
@@ -57,9 +79,12 @@ export function getElementDevelop(params) {
*/
export
function
getKeyWordDown
(
params
)
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/element/getKeyWordDown/
${
params
.
date
}
`
,
})
params
:
{
elementId
:
params
.
elementId
?
params
.
elementId
:
null
}
});
}
// 通过id获取政令详细信息
...
...
@@ -68,8 +93,8 @@ export function getKeyWordDown(params) {
*/
export
function
getOrderInfo
(
params
)
{
return
request
({
method
:
'GET'
,
method
:
"GET"
,
url
:
`/api/element/getOrderInfo/
${
params
.
id
}
`
,
params
})
});
}
src/assets/json/countryCoordMap.js
0 → 100644
浏览文件 @
925c1fb9
export
const
countryCoordMap
=
{
// 亚洲
中国
:
[
104.1954
,
35.8617
],
// 中国地理中心
日本
:
[
138.2529
,
36.2048
],
// 日本地理中心
韩国
:
[
127.7669
,
35.9078
],
// 韩国首尔
朝鲜
:
[
127.5101
,
40.3399
],
// 朝鲜平壤
蒙古
:
[
103.8198
,
46.8625
],
// 蒙古乌兰巴托
越南
:
[
108.2772
,
14.0583
],
// 越南河内
泰国
:
[
100.9925
,
15.87
],
// 泰国曼谷
马来西亚
:
[
101.9758
,
4.2105
],
// 马来西亚吉隆坡
新加坡
:
[
103.8198
,
1.3521
],
// 新加坡
印度尼西亚
:
[
113.9213
,
-
0.7893
],
// 印尼雅加达
菲律宾
:
[
121.774
,
12.8797
],
// 菲律宾马尼拉
印度
:
[
78.9629
,
20.5937
],
// 印度新德里
巴基斯坦
:
[
73.0479
,
30.3753
],
// 巴基斯坦伊斯兰堡
孟加拉国
:
[
90.3563
,
23.685
],
// 孟加拉达卡
斯里兰卡
:
[
80.7718
,
7.8731
],
// 斯里兰卡科伦坡
尼泊尔
:
[
85.3131
,
27.7172
],
// 尼泊尔加德满都
不丹
:
[
89.412
,
27.5142
],
// 不丹廷布
缅甸
:
[
96.1997
,
21.9162
],
// 缅甸内比都
柬埔寨
:
[
104.9162
,
11.5621
],
// 柬埔寨金边
老挝
:
[
102.4955
,
19.8563
],
// 老挝万象
文莱
:
[
114.9409
,
4.5353
],
// 文莱斯里巴加湾
东帝汶
:
[
125.573
,
-
8.8742
],
// 东帝汶帝力
阿富汗
:
[
69.1761
,
33.9391
],
// 阿富汗喀布尔
伊拉克
:
[
44.3661
,
33.2232
],
// 伊拉克巴格达
伊朗
:
[
53.688
,
32.4279
],
// 伊朗德黑兰
沙特阿拉伯
:
[
45.0792
,
23.8859
],
// 沙特利雅得
阿联酋
:
[
54.3705
,
23.4241
],
// 阿联酋阿布扎比
阿曼
:
[
57.595
,
23.588
],
// 阿曼马斯喀特
科威特
:
[
47.999
,
29.3117
],
// 科威特科威特城
卡塔尔
:
[
51.531
,
25.2854
],
// 卡塔尔多哈
巴林
:
[
50.5853
,
26.0275
],
// 巴林麦纳麦
也门
:
[
48.5164
,
15.5527
],
// 也门萨那
约旦
:
[
36.2384
,
30.5852
],
// 约旦安曼
黎巴嫩
:
[
35.5018
,
33.8938
],
// 黎巴嫩贝鲁特
以色列
:
[
35.2137
,
31.0461
],
// 以色列耶路撒冷
巴勒斯坦
:
[
35.2037
,
31.9522
],
// 巴勒斯坦拉姆安拉
叙利亚
:
[
36.8065
,
33.5138
],
// 叙利亚大马士革
土耳其
:
[
35.2433
,
38.9637
],
// 土耳其安卡拉
塞浦路斯
:
[
33.238
,
35.1264
],
// 塞浦路斯尼科西亚
哈萨克斯坦
:
[
66.9237
,
48.0196
],
// 哈萨克斯坦努尔苏丹
吉尔吉斯斯坦
:
[
74.5818
,
42.8746
],
// 吉尔吉斯斯坦比什凯克
塔吉克斯坦
:
[
68.7872
,
38.5598
],
// 塔吉克斯坦杜尚别
乌兹别克斯坦
:
[
69.2401
,
41.3775
],
// 乌兹别克斯坦塔什干
土库曼斯坦
:
[
59.5568
,
38.9697
],
// 土库曼斯坦阿什哈巴德
阿塞拜疆
:
[
47.5769
,
40.1431
],
// 阿塞拜疆巴库
格鲁吉亚
:
[
44.8337
,
41.7151
],
// 格鲁吉亚第比利斯
亚美尼亚
:
[
44.5136
,
40.0691
],
// 亚美尼亚埃里温
// 欧洲
俄罗斯
:
[
37.6184
,
55.7558
],
// 俄罗斯莫斯科
德国
:
[
10.4515
,
51.1657
],
// 德国柏林
英国
:
[
-
3.436
,
55.3781
],
// 英国伦敦
法国
:
[
2.2137
,
46.2276
],
// 法国巴黎
意大利
:
[
12.5674
,
41.8719
],
// 意大利罗马
西班牙
:
[
-
3.7492
,
40.4637
],
// 西班牙马德里
葡萄牙
:
[
-
8.2275
,
39.3999
],
// 葡萄牙里斯本
荷兰
:
[
5.2913
,
52.1326
],
// 荷兰阿姆斯特丹
比利时
:
[
4.3517
,
50.8503
],
// 比利时布鲁塞尔
卢森堡
:
[
6.1296
,
49.8153
],
// 卢森堡卢森堡市
瑞士
:
[
8.2275
,
46.8182
],
// 瑞士伯尔尼
奥地利
:
[
16.3738
,
48.2082
],
// 奥地利维也纳
爱尔兰
:
[
-
8.2439
,
53.1424
],
// 爱尔兰都柏林
芬兰
:
[
25.7482
,
61.9241
],
// 芬兰赫尔辛基
瑞典
:
[
18.6435
,
60.1282
],
// 瑞典斯德哥尔摩
挪威
:
[
10.7461
,
60.472
],
// 挪威奥斯陆
丹麦
:
[
9.5018
,
56.2639
],
// 丹麦哥本哈根
冰岛
:
[
-
19.0208
,
64.9631
],
// 冰岛雷克雅未克
波兰
:
[
19.1451
,
51.9194
],
// 波兰华沙
捷克
:
[
14.4208
,
50.0755
],
// 捷克布拉格
斯洛伐克
:
[
19.699
,
48.1486
],
// 斯洛伐克布拉迪斯拉发
匈牙利
:
[
19.0402
,
47.4979
],
// 匈牙利布达佩斯
罗马尼亚
:
[
24.9375
,
45.9432
],
// 罗马尼亚布加勒斯特
保加利亚
:
[
23.3219
,
42.7339
],
// 保加利亚索非亚
塞尔维亚
:
[
20.4651
,
44.804
],
// 塞尔维亚贝尔格莱德
克罗地亚
:
[
16.0
,
45.1
],
// 克罗地亚萨格勒布
斯洛文尼亚
:
[
14.5146
,
46.0569
],
// 斯洛文尼亚卢布尔雅那
波黑
:
[
18.3564
,
43.8486
],
// 波黑萨拉热窝
黑山
:
[
19.2664
,
42.4304
],
// 黑山波德戈里察
马其顿
:
[
21.7453
,
41.6086
],
// 北马其顿斯科普里
阿尔巴尼亚
:
[
20.1683
,
41.3275
],
// 阿尔巴尼亚地拉那
希腊
:
[
21.8243
,
39.0742
],
// 希腊雅典
乌克兰
:
[
30.5234
,
50.4501
],
// 乌克兰基辅
白俄罗斯
:
[
27.5615
,
53.9045
],
// 白俄罗斯明斯克
摩尔多瓦
:
[
28.8613
,
47.4116
],
// 摩尔多瓦基希讷乌
立陶宛
:
[
25.2797
,
54.6872
],
// 立陶宛维尔纽斯
拉脱维亚
:
[
24.1052
,
56.9496
],
// 拉脱维亚里加
爱沙尼亚
:
[
24.7536
,
59.437
],
// 爱沙尼亚塔林
马耳他
:
[
14.5146
,
35.8997
],
// 马耳他瓦莱塔
列支敦士登
:
[
9.5215
,
47.166
],
// 列支敦士登瓦杜兹
摩纳哥
:
[
7.4215
,
43.7384
],
// 摩纳哥摩纳哥城
安道尔
:
[
1.5218
,
42.5063
],
// 安道尔安道尔城
圣马力诺
:
[
12.4417
,
43.9424
],
// 圣马力诺圣马力诺市
梵蒂冈
:
[
12.4534
,
41.9028
],
// 梵蒂冈梵蒂冈城
// 非洲
埃及
:
[
30.8025
,
26.8206
],
// 埃及开罗
南非
:
[
25.0
,
-
30.0
],
// 南非比勒陀利亚
尼日利亚
:
[
8.6753
,
9.082
],
// 尼日利亚阿布贾
肯尼亚
:
[
36.8219
,
-
1.2921
],
// 肯尼亚内罗毕
埃塞俄比亚
:
[
38.7469
,
9.145
],
// 埃塞俄比亚亚的斯亚贝巴
坦桑尼亚
:
[
34.8888
,
-
6.369
],
// 坦桑尼亚达累斯萨拉姆
加纳
:
[
-
0.187
,
5.6037
],
// 加纳阿克拉
科特迪瓦
:
[
-
5.581
,
7.5399
],
// 科特迪瓦亚穆苏克罗
喀麦隆
:
[
12.3578
,
4.0417
],
// 喀麦隆雅温得
塞内加尔
:
[
-
17.4441
,
14.6937
],
// 塞内加尔达喀尔
马里
:
[
-
7.6009
,
17.5707
],
// 马里巴马科
布基纳法索
:
[
-
1.5332
,
12.2383
],
// 布基纳法索瓦加杜古
尼日尔
:
[
8.9676
,
13.518
],
// 尼日尔尼亚美
乍得
:
[
19.3973
,
15.4542
],
// 乍得恩贾梅纳
苏丹
:
[
32.535
,
15.588
],
// 苏丹喀土穆
南苏丹
:
[
31.6
,
6.87
],
// 南苏丹朱巴
摩洛哥
:
[
-
7.6114
,
31.7917
],
// 摩洛哥拉巴特
阿尔及利亚
:
[
2.8235
,
28.0339
],
// 阿尔及利亚阿尔及尔
突尼斯
:
[
10.1815
,
36.8065
],
// 突尼斯突尼斯市
利比亚
:
[
17.2283
,
26.3351
],
// 利比亚的黎波里
毛里塔尼亚
:
[
-
10.9408
,
20.9373
],
// 毛里塔尼亚努瓦克肖特
塞拉利昂
:
[
-
13.2356
,
8.4606
],
// 塞拉利昂弗里敦
利比里亚
:
[
-
9.5018
,
6.4281
],
// 利比里亚蒙罗维亚
几内亚
:
[
-
9.6966
,
9.9456
],
// 几内亚科纳克里
几内亚比绍
:
[
-
15.1804
,
11.8037
],
// 几内亚比绍比绍
冈比亚
:
[
-
16.579
,
13.4432
],
// 冈比亚班珠尔
贝宁
:
[
2.3158
,
6.3697
],
// 贝宁波多诺伏
多哥
:
[
1.2226
,
6.826
],
// 多哥洛美
加蓬
:
[
11.601
,
0.417
],
// 加蓬利伯维尔
"刚果(布)"
:
[
15.2829
,
-
4.2634
],
// 刚果布拉柴维尔
"刚果(金)"
:
[
15.309
,
-
4.4419
],
// 刚果金金沙萨
乌干达
:
[
32.5825
,
0.3476
],
// 乌干达坎帕拉
卢旺达
:
[
30.058
,
-
1.9403
],
// 卢旺达基加利
布隆迪
:
[
29.3694
,
-
3.3731
],
// 布隆迪布琼布拉
马拉维
:
[
34.9
,
-
13.5
],
// 马拉维利隆圭
赞比亚
:
[
28.2871
,
-
15.4067
],
// 赞比亚卢萨卡
津巴布韦
:
[
30.1502
,
-
17.8252
],
// 津巴布韦哈拉雷
博茨瓦纳
:
[
24.6849
,
-
24.6282
],
// 博茨瓦纳哈博罗内
纳米比亚
:
[
18.5449
,
-
22.5594
],
// 纳米比亚温得和克
莱索托
:
[
28.2336
,
-
29.61
],
// 莱索托马塞卢
斯威士兰
:
[
31.1378
,
-
26.5225
],
// 斯威士兰姆巴巴内
莫桑比克
:
[
32.5709
,
-
25.9655
],
// 莫桑比克马普托
马达加斯加
:
[
46.8691
,
-
18.7669
],
// 马达加斯加塔那那利佛
毛里求斯
:
[
57.5522
,
-
20.3484
],
// 毛里求斯路易港
科摩罗
:
[
43.865
,
-
11.8678
],
// 科摩罗莫罗尼
塞舌尔
:
[
55.4919
,
-
4.6737
],
// 塞舌尔维多利亚
佛得角
:
[
-
23.5087
,
16.0
],
// 佛得角普拉亚
圣多美和普林西比
:
[
6.6131
,
0.3385
],
// 圣多美和普林西比圣多美
厄立特里亚
:
[
38.9208
,
15.1794
],
// 厄立特里亚阿斯马拉
吉布提
:
[
43.145
,
11.8251
],
// 吉布提吉布提市
索马里
:
[
45.3438
,
5.1521
],
// 索马里摩加迪沙
中非
:
[
20.9394
,
6.6111
],
// 中非班吉
赤道几内亚
:
[
8.7815
,
1.6508
],
// 赤道几内亚马拉博
"加那利群岛(西)"
:
[
-
15.5974
,
28.0966
],
// 加那利群岛拉斯帕尔马斯
西撒哈拉
:
[
-
12.8858
,
24.2155
],
// 西撒哈拉阿尤恩
// 北美洲
美国
:
[
-
95.7129
,
37.0902
],
// 美国华盛顿
加拿大
:
[
-
106.3468
,
56.1304
],
// 加拿大渥太华
墨西哥
:
[
-
102.5528
,
23.6345
],
// 墨西哥墨西哥城
危地马拉
:
[
-
90.5578
,
15.7835
],
// 危地马拉危地马拉城
伯利兹
:
[
-
88.2075
,
17.1899
],
// 伯利兹贝尔莫潘
萨尔瓦多
:
[
-
88.8965
,
13.7942
],
// 萨尔瓦多圣萨尔瓦多
洪都拉斯
:
[
-
86.2419
,
15.199
],
// 洪都拉斯特古西加尔巴
尼加拉瓜
:
[
-
85.2072
,
12.8654
],
// 尼加拉瓜马那瓜
哥斯达黎加
:
[
-
84.0875
,
9.7489
],
// 哥斯达黎加圣何塞
巴拿马
:
[
-
79.5199
,
8.538
],
// 巴拿马巴拿马城
古巴
:
[
-
77.7812
,
21.5218
],
// 古巴哈瓦那
海地
:
[
-
72.337
,
18.9712
],
// 海地太子港
多米尼加
:
[
-
70.1627
,
18.7357
],
// 多米尼加圣多明各
牙买加
:
[
-
76.802
,
18.1096
],
// 牙买加金斯顿
巴哈马
:
[
-
77.34
,
25.0343
],
// 巴哈马拿骚
巴巴多斯
:
[
-
59.5236
,
13.1939
],
// 巴巴多斯布里奇顿
特立尼达和多巴哥
:
[
-
61.2225
,
10.6918
],
// 特多西班牙港
格林纳达
:
[
-
61.6781
,
12.1165
],
// 格林纳达圣乔治
圣卢西亚
:
[
-
60.9915
,
13.9094
],
// 圣卢西亚卡斯特里
圣文森特和格林纳丁斯
:
[
-
61.2273
,
13.2529
],
// 圣文森特金斯敦
安提瓜和巴布达
:
[
-
61.7964
,
17.0608
],
// 安提瓜圣约翰
多米尼克
:
[
-
61.3709
,
15.414
],
// 多米尼克罗索
圣基茨和尼维斯
:
[
-
62.7177
,
17.3578
],
// 圣基茨巴斯特尔
"波多黎各(美)"
:
[
-
66.5901
,
18.2208
],
// 波多黎各圣胡安
"开曼群岛(英)"
:
[
-
81.25
,
19.2975
],
// 开曼群岛乔治敦
"百慕大(英)"
:
[
-
64.8457
,
32.3078
],
// 百慕大汉密尔顿
// 南美洲
巴西
:
[
-
51.9253
,
-
14.235
],
// 巴西巴西利亚
阿根廷
:
[
-
68.3064
,
-
38.4161
],
// 阿根廷布宜诺斯艾利斯
智利
:
[
-
71.5429
,
-
35.6751
],
// 智利圣地亚哥
秘鲁
:
[
-
75.0152
,
-
9.1899
],
// 秘鲁利马
哥伦比亚
:
[
-
74.0818
,
4.711
],
// 哥伦比亚波哥大
委内瑞拉
:
[
-
66.9036
,
6.4238
],
// 委内瑞拉加拉加斯
厄瓜多尔
:
[
-
78.5249
,
-
0.1807
],
// 厄瓜多尔基多
玻利维亚
:
[
-
68.15
,
-
16.5
],
// 玻利维亚苏克雷
巴拉圭
:
[
-
58.4434
,
-
25.2637
],
// 巴拉圭亚松森
乌拉圭
:
[
-
56.1645
,
-
34.9011
],
// 乌拉圭蒙得维的亚
圭亚那
:
[
-
58.1551
,
6.8013
],
// 圭亚那乔治敦
苏里南
:
[
-
55.2038
,
3.9193
],
// 苏里南帕拉马里博
法属圭亚那
:
[
-
52.3264
,
4.9375
],
// 法属圭亚那卡宴
// 大洋洲
澳大利亚
:
[
133.7751
,
-
25.2744
],
// 澳大利亚堪培拉
新西兰
:
[
174.886
,
-
40.9006
],
// 新西兰惠灵顿
巴布亚新几内亚
:
[
147.1557
,
-
6.3149
],
// 巴新莫尔兹比港
所罗门群岛
:
[
159.95
,
-
9.6457
],
// 所罗门群岛霍尼亚拉
瓦努阿图
:
[
167.6864
,
-
16.5225
],
// 瓦努阿图维拉港
斐济
:
[
179.4144
,
-
18.1416
],
// 斐济苏瓦
萨摩亚
:
[
-
172.1626
,
-
13.759
],
// 萨摩亚阿皮亚
汤加
:
[
-
175.1982
,
-
21.1789
],
// 汤加努库阿洛法
基里巴斯
:
[
173.038
,
1.2921
],
// 基里巴斯塔拉瓦
密克罗尼西亚
:
[
158.166
,
6.9167
],
// 密克罗尼西亚帕利基尔
马绍尔群岛
:
[
171.8485
,
7.1315
],
// 马绍尔群岛马朱罗
帕劳
:
[
134.5825
,
7.5149
],
// 帕劳梅莱凯奥克
瑙鲁
:
[
166.9315
,
-
0.5228
],
// 瑙鲁亚伦
图瓦卢
:
[
179.1942
,
-
8.5243
],
// 图瓦卢富纳富提
"库克群岛(新)"
:
[
-
159.7756
,
-
21.2367
],
// 库克群岛阿瓦鲁阿
"纽埃(新)"
:
[
-
169.8672
,
-
19.0544
],
// 纽埃阿洛菲
"托克劳(新)"
:
[
-
171.7415
,
-
8.9672
],
// 托克劳法考福
美属萨摩亚
:
[
-
170.6991
,
-
14.271
],
// 美属萨摩亚马努阿
"关岛(美)"
:
[
144.7937
,
13.4443
],
// 关岛阿加尼亚
"北马里亚纳群岛(美)"
:
[
145.6739
,
15.1178
],
// 北马里亚纳塞班
法属波利尼西亚
:
[
-
149.5986
,
-
17.6797
],
// 法属波利尼西亚帕皮提
"新喀里多尼亚(法)"
:
[
166.4572
,
-
21.5547
]
// 新喀里多尼亚努美阿
};
src/components/Container/index.vue
浏览文件 @
925c1fb9
...
...
@@ -103,6 +103,7 @@ const headerTitleClasses = computed(() => [
border-bottom
:
1px
solid
#ebeef5
;
/* background-color: #f8fafc; */
padding-left
:
0
;
// background: linear-gradient(180deg, rgb(231, 243, 255) 0%, rgba(231, 243, 255, 0) 100%);
}
.header-left
{
...
...
@@ -132,10 +133,10 @@ const headerTitleClasses = computed(() => [
}
.header-icon
{
width
:
2
0
px
;
height
:
20
px
;
width
:
2
2
px
;
height
:
18
px
;
margin-left
:
5px
;
margin-right
:
1
9
px
;
margin-right
:
1
4
px
;
}
.blue-title-block
{
...
...
@@ -148,14 +149,13 @@ const headerTitleClasses = computed(() => [
.header-title
{
font-family
:
$base-font-family
;
font-size
:
$base-font-size
;
font-size
:
20px
;
font-weight
:
700
;
/* color: var(--color-main-active); */
/* color: var(--base-color); */
color
:
$base-color
;
line-height
:
48px
;
padding
:
0
12px
;
font-size
:
20px
;
// padding: 0 12px;
}
.header-title-primary
{
...
...
src/views/ZMOverView/components/fourSuppress/components/addDomain/index.vue
浏览文件 @
925c1fb9
...
...
@@ -141,12 +141,30 @@
@
page-change=
"handleNewsPageChange"
/>
</div>
<!--
<custom-container
title=
"美对华领域打压遏制排行"
:titleIcon=
"icon3"
height=
"700px"
>
<template
#
header-right
>
<div
class=
"title-right-select"
>
<el-select
v-model=
"selectedField"
@
change=
"handleFieldChange"
placeholder=
"全部领域"
class=
"field-select"
:style=
"
{ width: '160px' }"
>
<el-option
v-for=
"item in fieldOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
</
template
>
</custom-container>
-->
<div
class=
"empty-section"
>
<div
class=
"bottom-item"
>
<div
class=
"bottom-item-title"
>
<img
:src=
"icon3"
alt=
""
/>
<span>
美对华领域打压遏制排行
</span>
</div>
<el-select
v-model=
"selectedField"
placeholder=
"全部领域"
class=
"field-select"
>
<el-option
v-for=
"item in fieldOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
<div
class=
"select-box"
>
<div
class=
"rank-btns"
>
...
...
@@ -160,13 +178,18 @@
受打压院校
</div>
</div>
<el-select
v-model=
"selectedField"
placeholder=
"全部领域"
class=
"field-select"
>
<el-option
v-for=
"item in fieldOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
<div
class=
"main-box"
v-loading=
"rankLoading"
element-loading-background=
"rgba(255, 255, 255, 0.5)"
>
<!-- 机构排行的原有样式 -->
<
template
v-if=
"rankType === 'institution'"
>
<div
class=
"table-header"
>
<div
class=
"col-rank col-rank-75"
></div>
<div
class=
"col-name"
style=
"color: rgb(59, 65, 75); font-weight: 700"
>
部门名称
</div>
<div
class=
"col-domain"
style=
"color: rgb(59, 65, 75); font-weight: 700"
></div>
<div
class=
"col-date"
style=
"color: rgb(59, 65, 75); font-weight: 700"
></div>
<div
class=
"col-member"
v-if=
"rankType !== 'school'"
style=
"color: rgb(59, 65, 75); font-weight: 700"
>
打压次数
</div>
</div>
<div
v-for=
"(item, index) in rankList"
:key=
"index"
class=
"rank-item"
>
<div
class=
"rank-num"
:class=
"'rank-' + (index + 1)"
>
{{
index
+
1
}}
</div>
<img
:src=
"item.orgPicture ? item.orgPicture : defaultImg"
alt=
""
class=
"rank-icon"
/>
...
...
@@ -177,7 +200,6 @@
<div
class=
"rank-count"
>
{{
item
.
count
}}
次
</div>
</div>
</
template
>
<!-- 企业/院校排行的表格样式 -->
<
template
v-else
>
<div
class=
"table-header"
>
<div
class=
"col-rank"
></div>
...
...
@@ -210,7 +232,6 @@
</div>
</div>
<div
class=
"col-date"
>
{{
item
.
date
}}
</div>
<!--
<div
class=
"col-member"
v-if=
"rankType !== 'school'"
>
{{
item
.
member
}}
</div>
-->
<div
class=
"col-member"
v-if=
"rankType !== 'school'"
>
{{
item
.
province
}}
</div>
</div>
</div>
...
...
@@ -315,10 +336,13 @@ import getMultiLineChart from "./multiLineChart";
import
CommonPrompt
from
"../../../../commonPrompt/index.vue"
;
import
leftBtn
from
"../../assets/left-btn.png"
;
import
rightBtn
from
"../../assets/right-btn.png"
;
import
icon1
from
"./icon/icon-1.png"
;
import
icon3
from
"./icon/icon-3.png"
;
import
icon4
from
"./icon/icon-4.png"
;
import
defaultImg
from
"../../../../assets/images/default-icon2.png"
;
import
{
fieldOptions
}
from
"@/views/ZMOverView/public.js"
;
import
{
getAllDomainCount
,
getDomainContainmentTrend
,
...
...
@@ -330,6 +354,7 @@ import { getUSGovernmentLatestDynamic, getDepartmentList, getSanTypeList } from
import
{
ElMessage
}
from
"element-plus"
;
import
{
ArrowLeft
,
ArrowRight
}
from
"@element-plus/icons-vue"
;
import
SimplePagination
from
"@/components/SimplePagination.vue"
;
import
CustomContainer
from
"@/components/Container/index.vue"
;
const
router
=
useRouter
();
...
...
@@ -752,23 +777,23 @@ const svgHeight = computed(() => {
return
startY
+
rows
*
rowHeight
+
50
;
});
const
fieldOptions
=
[
{
value
:
""
,
label
:
"全部领域"
},
{
value
:
"1"
,
label
:
"人工智能"
},
{
value
:
"2"
,
label
:
"生物科技"
},
{
value
:
"3"
,
label
:
"新一代信息技术"
},
{
value
:
"4"
,
label
:
"量子科技"
},
{
value
:
"5"
,
label
:
"新能源"
},
{
value
:
"6"
,
label
:
"集成电路"
},
{
value
:
"7"
,
label
:
"海洋"
},
{
value
:
"8"
,
label
:
"先进制造"
},
{
value
:
"9"
,
label
:
"新材料"
},
{
value
:
"10"
,
label
:
"航空航天"
},
{
value
:
"11"
,
label
:
"深海"
},
{
value
:
"12"
,
label
:
"极地"
},
{
value
:
"13"
,
label
:
"太空"
},
{
value
:
"14"
,
label
:
"核"
}
];
//
const fieldOptions = [
//
{ value: "", label: "全部领域" },
//
{ value: "1", label: "人工智能" },
//
{ value: "2", label: "生物科技" },
//
{ value: "3", label: "新一代信息技术" },
//
{ value: "4", label: "量子科技" },
//
{ value: "5", label: "新能源" },
//
{ value: "6", label: "集成电路" },
//
{ value: "7", label: "海洋" },
//
{ value: "8", label: "先进制造" },
//
{ value: "9", label: "新材料" },
//
{ value: "10", label: "航空航天" },
//
{ value: "11", label: "深海" },
//
{ value: "12", label: "极地" },
//
{ value: "13", label: "太空" },
//
{ value: "14", label: "核" }
//
];
// 全领域统计
const
buttonsData
=
ref
([]);
...
...
@@ -1614,8 +1639,8 @@ watch(activeDate, () => {
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding-left
:
1
7
px
;
padding-right
:
35
px
;
padding-left
:
1
6
px
;
padding-right
:
16
px
;
box-sizing
:
border-box
;
background
:
linear-gradient
(
180deg
,
rgba
(
231
,
243
,
255
,
1
)
0%
,
rgba
(
231
,
243
,
255
,
0
)
100%
);
.bottom-item-title
{
...
...
@@ -1634,14 +1659,19 @@ watch(activeDate, () => {
color
:
rgb
(
5
,
95
,
194
);
}
}
.field-select
{
width
:
160px
;
}
}
.select-box
{
width
:
691px
;
height
:
32
px
;
height
:
50
px
;
margin
:
10px
auto
5px
auto
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
border-bottom
:
1px
solid
#eee
;
padding-bottom
:
15px
;
.rank-btns
{
display
:
flex
;
...
...
@@ -1698,7 +1728,7 @@ watch(activeDate, () => {
box-sizing
:
border-box
;
display
:
flex
;
flex-direction
:
column
;
gap
:
2
8
px
;
gap
:
2
1
px
;
overflow-y
:
auto
;
.rank-item
{
display
:
flex
;
...
...
@@ -1910,6 +1940,9 @@ watch(activeDate, () => {
text-align
:
center
;
flex-shrink
:
0
;
}
.col-rank-75
{
width
:
75px
;
}
.col-name
{
flex
:
1
.5
;
min-width
:
0
;
...
...
src/views/ZMOverView/components/fourSuppress/components/allElement/assets/images/icon-trend.png
0 → 100644
浏览文件 @
925c1fb9
749 Bytes
src/views/ZMOverView/components/fourSuppress/components/allElement/index.vue
浏览文件 @
925c1fb9
<
template
>
<div
class=
"content-wrapper"
>
<div
class=
"header"
>
<div
class=
"header-arrow-left"
@
click=
"prev"
>
<
!--
<
div
class=
"header-arrow-left"
@
click=
"prev"
>
<img
src=
"../../assets/left-btn.png"
alt=
""
/>
</div>
<div
class=
"header-arrow-right"
@
click=
"next"
>
<img
src=
"../../assets/right-btn.png"
alt=
""
/>
</div>
</div>
-->
<div
class=
"cards-mask"
>
<div
class=
"item-box"
:style=
"
{ transform: `translateX(-${currentIndex * (307 + 16)}px)` }">
<!--
<div
class=
"item-box"
:style=
"
{ transform: `translateX(-${currentIndex * (307 + 16)}px)` }"> -->
<div
class=
"item-box"
>
<div
class=
"header-item"
:class=
"
{
...
...
@@ -75,20 +76,68 @@
</div>
</div>
<div
class=
"right"
>
<container
:title=
"'美对华科技要素打压遏制数量趋势'"
:header-bg-color=
"headerBgColor"
:headerBorderBottom=
"false"
:title-icon=
"trendIcon"
height=
"500px"
>
<template
#
header-right
>
<el-select
v-model=
"selectField"
@
change=
"handleFieldChange"
placeholder=
"全部领域"
:style=
"
{ width: '160px' }"
>
<el-option
v-for=
"item in fieldOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
<!--
<el-select
v-model=
"selectSandMethod"
@
change=
"handleSandMethodChange"
placeholder=
"全部制裁手段"
:style=
"
{ width: '160px' }"
>
<el-option
v-for=
"item in sanTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
-->
</
template
>
<el-empty
v-if=
"usChinaSanctionTrendData.length == 0"
style=
"padding-top: 120px"
description=
"暂无数据"
:image-size=
"100"
/>
<Echarts
v-else
:option=
"usChinaSanctionTrendOptions"
height=
"410px"
></Echarts>
</container>
<div
class=
"box box2"
>
<div
class=
"box2-header"
>
<div
class=
"
icon
"
>
<div
class=
"
box2-header-left
"
>
<img
src=
"./assets/images/box-header-icon2.png"
alt=
""
/>
</div>
<div
class=
"title"
>
{{ "美对华要素打压情况" }}
</div>
</div>
<div
class=
"box2-header-right"
>
<el-select
v-model=
"selectSuppressElement"
@
change=
"handleElementSuppressChange"
placeholder=
"全部科技要素"
class=
"field-select"
>
<el-option
v-for=
"item in elementOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
</div>
<div
class=
"box2-main"
>
<div
class=
"inner-box1"
>
<div
class=
"left"
>
<div
class=
"left-main"
>
<el-empty
v-if=
"box2DataList.length === 0"
style=
"padding-top:
8
0px"
style=
"padding-top:
14
0px"
description=
"暂无数据"
:image-size=
"100"
/>
...
...
@@ -99,12 +148,30 @@
:key=
"index"
@
click=
"handleClickBox2Item(index)"
>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"id"
>
{{ (box2CurrentPage - 1) * box2PageSize + index + 1 }}
</div>
<div
class=
"left-item-content"
>
<div
class=
"content-header"
>
<div
class=
"text"
>
{{ item.name }}
</div>
<div
class=
"date"
>
{{ item.postDate }}
</div>
</div>
<div
class=
"describe"
>
{{ item.describe || item.name }}
</div>
<div
class=
"content-footer"
>
<div
class=
"element-box"
>
<AreaTag
v-for=
"(ele, idxx) in item.elementList"
:key=
"idxx"
:tagName=
"ele"
/>
</div>
<div
class=
"tag-box"
>
<AreaTag
v-for=
"(ele, idxx) in item.domainList"
:key=
"idxx"
:tagName=
"ele.industryName"
/>
</div>
</div>
</div>
<div
class=
"left-footer"
v-if=
"box2DataList.length !== 0"
>
<el-pagination
</div>
</div>
<div
class=
"left-footer"
v-if=
"box2AllDataList.length !== 0"
>
<!-- <el-pagination
background
layout="prev, pager, next"
:total="box2Total"
...
...
@@ -113,13 +180,19 @@
@current-change="handleGetBox2DataList"
size="small"
:pager-count="4"
/> -->
<simple-pagination
v-model:current-page=
"box2CurrentPage"
:page-size=
"box2PageSize"
:total=
"box2AllDataList.length"
@
page-change=
"handleBox2PageChange"
/>
</div>
</div>
<div
class=
"right"
@
click=
"handleToDecreeDetail(box2DetailInfo)"
>
<el-empty
v-if=
"box2DataList.length === 0 || !isShowBox2Info"
style=
"padding-top:
8
0px"
style=
"padding-top:
14
0px"
description=
"暂无数据"
:image-size=
"100"
/>
...
...
@@ -154,6 +227,12 @@
</div>
</div>
<div
class=
"inner-box2"
>
<el-empty
v-if=
"box2ChartData.length === 0"
style=
"padding-top: 140px"
description=
"暂无数据"
:image-size=
"100"
/>
<div
class=
"chart-header"
>
{{ "关键词云" }}
</div>
<div
class=
"box2Chart"
id=
"box2Chart"
></div>
</div>
...
...
@@ -161,18 +240,33 @@
</div>
<div
class=
"box box3"
>
<div
class=
"box3-header"
>
<
div
class
=
"
icon
"
>
<div
class=
"
box3-header-left
"
>
<img
src=
"./assets/images/box-header-icon2.png"
alt=
""
/>
<
/div
>
<div
class=
"title"
>
{{ "美自身要素发展情况" }}
</div>
</div>
<div
class=
"box3-header-right"
>
<el-select
v-model=
"selectDevElement"
@
change=
"handleElementDevChange"
placeholder=
"全部科技要素"
class=
"field-select"
>
<el-option
v-for=
"item in elementOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
</div>
<div
class=
"box3-main"
>
<div
class=
"inner-box1"
>
<div
class=
"left"
>
<div
class=
"left-main"
>
<el-empty
v-if=
"box3DataList.length === 0"
style
=
"padding-top:
8
0px"
style=
"padding-top:
14
0px"
description=
"暂无数据"
:image-size=
"100"
/>
...
...
@@ -183,12 +277,30 @@
:key=
"index"
@
click=
"handleClickBox3Item(index)"
>
<
div
class
=
"id"
>
{{
index
+
1
}}
<
/div
>
<div
class=
"id"
>
{{ (box3CurrentPage - 1) * box3PageSize + index + 1 }}
</div>
<div
class=
"left-item-content"
>
<div
class=
"content-header"
>
<div
class=
"text"
>
{{ item.name }}
</div>
<div
class=
"date"
>
{{ item.postDate }}
</div>
</div>
<div
class=
"describe"
>
{{ item.describe || item.name }}
</div>
<div
class=
"content-footer"
>
<div
class=
"element-box"
>
<AreaTag
v-for=
"(ele, idxx) in item.elementList"
:key=
"idxx"
:tagName=
"ele"
/>
</div>
<div
class=
"tag-box"
>
<AreaTag
v-for=
"(ele, idxx) in item.domainList"
:key=
"idxx"
:tagName=
"ele.industryName"
/>
</div>
</div>
</div>
<
div
class
=
"left-footer"
v
-
if
=
"box3DataList.length"
>
<
el
-
pagination
</div>
</div>
<div
class=
"left-footer"
v-if=
"box3AllDataList.length !== 0"
>
<!-- <el-pagination
background
layout="prev, pager, next"
:total="box3Total"
...
...
@@ -197,13 +309,19 @@
@current-change="handleGetBox3DataList"
size="small"
:pager-count="4"
/> -->
<simple-pagination
v-model:current-page=
"box3CurrentPage"
:page-size=
"box3PageSize"
:total=
"box3AllDataList.length"
@
page-change=
"handleBox3PageChange"
/>
</div>
</div>
<div
class=
"right"
@
click=
"handleToDecreeDetail(box3DetailInfo)"
>
<el-empty
v-if=
"box3DataList.length === 0 || !isShowBox3Info"
style
=
"padding-top:
8
0px"
style=
"padding-top:
14
0px"
description=
"暂无数据"
:image-size=
"100"
/>
...
...
@@ -240,13 +358,12 @@
<div
class=
"inner-box2"
>
<el-empty
v-if=
"box3ChartData.length === 0"
style
=
"padding-top:
8
0px"
style=
"padding-top:
14
0px"
description=
"暂无数据"
:image-size=
"100"
/>
<div
class=
"chart-header"
>
{{ "关键词云" }}
</div>
<div
class=
"box3Chart"
id=
"box3Chart"
></div>
<!--
<
Echarts
:
option
=
"usChinaSanctionTrendOptions"
height
=
"100%"
><
/Echarts> --
>
</div>
</div>
</div>
...
...
@@ -256,7 +373,7 @@
</template>
<
script
setup
>
import
{
onMounted
,
ref
,
computed
,
inject
,
watch
,
onUnmounted
}
from
"vue"
;
import
{
onMounted
,
ref
,
computed
,
inject
,
watch
,
onUnmounted
,
nextTick
}
from
"vue"
;
import
router
from
"@/router"
;
import
setChart
from
"@/utils/setChart"
;
import
getWordCloudChart
from
"./uitls/worldCloudChart"
;
...
...
@@ -268,9 +385,18 @@ import {
getKeyWordUp
,
getElementDevelop
,
getKeyWordDown
,
getOrderInfo
getOrderInfo
,
getElementSuppressTrend
}
from
"@/api/zmOverview/allElement"
;
import
Echarts
from
"@/components/Chart/index.vue"
;
import
{
elementOptions
,
sanTypeOptions
,
fieldOptions
}
from
"@/views/ZMOverView/public.js"
;
import
SimplePagination
from
"@/components/SimplePagination.vue"
;
import
container
from
"@/views/ZMOverView/components/fourSuppress/components/container/index.vue"
;
import
trendIcon
from
"./assets/images/icon-trend.png"
;
import
{
Legend
}
from
"@antv/g6"
;
const
headerBgColor
=
ref
(
"linear-gradient(180deg, rgba(231, 243, 255, 0.5), rgba(231, 243, 255, 0) 100%)"
);
const
activeDate
=
inject
(
"activeDate"
);
...
...
@@ -328,23 +454,189 @@ const handleGetHeaderList = async () => {
}
catch
(
error
)
{}
};
// 数量趋势
const
selectField
=
ref
(
""
);
const
selectSandMethod
=
ref
(
""
);
const
handleFieldChange
=
val
=>
{
getUsChinaSanctionTrendData
();
};
const
handleSandMethodChange
=
val
=>
{};
const
getChartOption
=
(
xAxisData
=
[],
seriesData
=
[])
=>
{
const
option
=
{
tooltip
:
{
trigger
:
"axis"
,
backgroundColor
:
"rgba(255, 255, 255, 0.9)"
,
borderColor
:
"#2f79c4"
,
textStyle
:
{
color
:
"#666"
},
formatter
:
function
(
params
)
{
console
.
log
(
"图形数据的详情"
,
params
);
if
(
!
params
||
params
.
length
===
0
)
return
""
;
let
result
=
`<div style="padding: 6px 10px;">
<div style="font-weight: bold; margin-bottom: 6px; padding-bottom: 4px; border-bottom: 1px solid #eee;">
${
params
[
0
].
name
}
</div>`
;
params
.
forEach
(
param
=>
{
const
color
=
param
.
borderColor
||
"#2f79c4"
;
result
+=
`
<div style="display: flex; align-items: center; margin-top: 4px;">
<span style="display: inline-block; width: 10px; height: 10px; border-radius: 50%; background-color:
${
color
}
; margin-right: 8px;"></span>
<span style="color: #666;">
${
param
.
seriesName
}
:</span>
<span style="color:
${
color
}
; font-weight: bold; margin-left: 8px;">
${
param
.
value
}
</span>
</div>`
;
});
result
+=
`</div>`
;
return
result
;
}
},
legend
:
{
show
:
true
,
top
:
"10px"
,
// left: "center",
itemWidth
:
15
,
itemHeight
:
10
,
itemGap
:
20
,
textStyle
:
{
color
:
"#666"
,
fontSize
:
14
}
},
grid
:
{
top
:
"10%"
,
left
:
"1%"
,
right
:
"2%"
,
bottom
:
"5%"
,
containLabel
:
true
},
xAxis
:
{
type
:
"category"
,
boundaryGap
:
false
,
data
:
xAxisData
,
axisLine
:
{
lineStyle
:
{
color
:
"#f0f0f0"
}
},
axisLabel
:
{
color
:
"#999"
,
fontSize
:
12
},
axisTick
:
{
show
:
false
}
},
yAxis
:
{
name
:
"次数"
,
fontSize
:
18
,
type
:
"value"
,
min
:
0
,
minInterval
:
1
,
// 保证最小间隔为1,避免小数
axisLine
:
{
show
:
false
},
axisLabel
:
{
color
:
"#999"
,
fontSize
:
12
},
splitLine
:
{
lineStyle
:
{
type
:
"dashed"
,
color
:
"#f0f0f0"
}
}
},
series
:
seriesData
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
data
:
item
.
data
,
type
:
"line"
,
// smooth: true,
symbol
:
"circle"
,
symbolSize
:
8
,
itemStyle
:
{
color
:
item
.
color
||
"#fff"
,
borderColor
:
item
.
borderColor
||
"#2f79c4"
,
borderWidth
:
2
},
lineStyle
:
{
color
:
item
.
borderColor
||
"#2f79c4"
,
width
:
2
}
};
})
};
return
option
;
};
const
usChinaSanctionTrendOptions
=
ref
(
getChartOption
([],
[]));
const
usChinaSanctionTrendData
=
ref
([]);
// 获取打压遏制趋势数据
const
getUsChinaSanctionTrendData
=
async
()
=>
{
const
{
startDate
,
endDate
}
=
getCalculatedDate
(
activeDate
.
value
);
const
params
=
{
date
:
startDate
,
domainId
:
selectField
.
value
// sanTypeId: selectSandMethod.value
};
try
{
const
res
=
await
getElementSuppressTrend
(
params
);
console
.
log
(
"美对华科技要素打压遏制数量趋势"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
// 按 elementName 分组整理数据
const
dataMap
=
new
Map
();
const
dateSet
=
new
Set
();
usChinaSanctionTrendData
.
value
=
res
.
data
;
res
.
data
.
forEach
(
item
=>
{
const
{
elementName
,
elementDate
,
elementNum
}
=
item
;
dateSet
.
add
(
elementDate
);
if
(
!
dataMap
.
has
(
elementName
))
{
dataMap
.
set
(
elementName
,
[]);
}
dataMap
.
get
(
elementName
).
push
({
date
:
elementDate
,
value
:
elementNum
});
});
// 排序日期
const
sortedDates
=
Array
.
from
(
dateSet
).
sort
();
// 为每个 elementName 生成完整的数据系列(补齐缺失的日期)
const
seriesData
=
[];
const
colors
=
[
"#2f79c4"
,
"#e74c3c"
,
"#2ecc71"
,
"#f39c12"
,
"#9b59b6"
,
"#1abc9c"
];
dataMap
.
forEach
((
values
,
elementName
)
=>
{
// 创建日期到值的映射
const
valueMap
=
new
Map
(
values
.
map
(
v
=>
[
v
.
date
,
v
.
value
]));
// 补齐所有日期的数据
const
seriesValues
=
sortedDates
.
map
(
date
=>
valueMap
.
get
(
date
)
||
0
);
seriesData
.
push
({
name
:
elementName
,
data
:
seriesValues
,
borderColor
:
colors
[
seriesData
.
length
%
colors
.
length
]
});
});
usChinaSanctionTrendOptions
.
value
=
getChartOption
(
sortedDates
,
seriesData
);
console
.
log
(
"美对华科技要素打压遏制数量趋势 options"
,
usChinaSanctionTrendOptions
.
value
);
}
}
catch
(
error
)
{
console
.
error
(
"获取打压遏制趋势数据失败:"
,
error
);
usChinaSanctionTrendOptions
.
value
=
getChartOption
([],
[]);
usChinaSanctionTrendData
.
value
=
[];
}
};
// 最新动态
const
box1DataList
=
ref
([
//
{
// title: '更新"中国涉军企业清单"(NS-CMIC List)',
// content: "国防部新增多家中国高科技实体至清单,依据法律禁止美国人士对其进行投资。",
// tagList: ["科研机构", "科研经费"],
// time: "2025年12月18日",
// areaList: [
//
{
// name: "量子科技"
//
}
,
//
{
// name: "量子科技"
//
}
// ]
//
}
]);
const
box1DataList
=
ref
([]);
const
handleGetBox1Data
=
async
()
=>
{
try
{
const
res
=
await
getNewDynamics
();
...
...
@@ -355,10 +647,19 @@ const handleGetBox1Data = async () => {
}
catch
(
error
)
{}
};
const
selectSuppressElement
=
ref
(
""
);
const
handleElementSuppressChange
=
val
=>
{
selectSuppressElement
.
value
=
val
;
box2CurrentPage
.
value
=
1
;
handleGetBox2DataList
();
handleBox2Chart
();
};
const
box2DataList
=
ref
([]);
const
box2AllDataList
=
ref
([]);
const
box2Total
=
ref
(
0
);
const
box2CurrentPage
=
ref
(
1
);
const
box2PageSize
=
ref
(
10
);
const
box2PageSize
=
ref
(
5
);
const
box2LeftActiveIndex
=
ref
(
0
);
const
box2DetailInfo
=
ref
({});
...
...
@@ -384,20 +685,32 @@ const handleGetBox2DataList = async () => {
const
{
startDate
,
endDate
}
=
getCalculatedDate
(
activeDate
.
value
);
const
params
=
{
currentPage
:
box2CurrentPage
.
value
,
pageSize
:
box2PageSize
.
value
,
date
:
startDate
pageSize
:
100
,
date
:
startDate
,
elementId
:
selectSuppressElement
.
value
};
try
{
const
res
=
await
getElementSuppress
(
params
);
console
.
log
(
"美对我要素打压情况"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box2DataList
.
value
=
res
.
data
.
content
;
box2
All
DataList
.
value
=
res
.
data
.
content
;
box2Total
.
value
=
res
.
data
.
totalElements
;
handleGetOrderInfo
(
box2DataList
.
value
[
box2LeftActiveIndex
.
value
].
id
);
//
handleGetOrderInfo(box2DataList.value[box2LeftActiveIndex.value].id);
}
updateBox2DataList
();
}
catch
(
error
)
{}
};
const
updateBox2DataList
=
()
=>
{
const
start
=
(
box2CurrentPage
.
value
-
1
)
*
box2PageSize
.
value
;
const
end
=
start
+
box2PageSize
.
value
;
box2DataList
.
value
=
box2AllDataList
.
value
.
slice
(
start
,
end
);
};
const
handleBox2PageChange
=
page
=>
{
updateBox2DataList
();
};
const
handleClickBox2Item
=
index
=>
{
box2LeftActiveIndex
.
value
=
index
;
handleGetOrderInfo
(
box2DataList
.
value
[
index
].
id
);
...
...
@@ -407,7 +720,8 @@ const box2ChartData = ref([]);
const
handleGetBox2ChartData
=
async
()
=>
{
const
{
startDate
,
endDate
}
=
getCalculatedDate
(
activeDate
.
value
);
const
params
=
{
date
:
startDate
date
:
startDate
,
elementId
:
selectSuppressElement
.
value
};
try
{
const
res
=
await
getKeyWordUp
(
params
);
...
...
@@ -431,14 +745,26 @@ const handleBox2Chart = async () => {
setChart
(
box2Chart
,
"box2Chart"
);
};
const
box3DataList
=
ref
([]);
const
selectDevElement
=
ref
(
""
);
const
handleElementDevChange
=
val
=>
{
selectDevElement
.
value
=
val
;
box3CurrentPage
.
value
=
1
;
handleGetBox3DataList
();
handleBox3Chart
();
};
const
box3DataList
=
ref
([]);
const
box3AllDataList
=
ref
([]);
const
box3Total
=
ref
(
0
);
const
box3CurrentPage
=
ref
(
1
);
const
box3PageSize
=
ref
(
10
);
const
box3PageSize
=
ref
(
5
);
const
box3LeftActiveIndex
=
ref
(
0
);
const
box3DetailInfo
=
ref
({});
const
handleBox3PageChange
=
page
=>
{
updateBox3DataList
();
};
// 根据id 获取政令详细信息
const
handleGetOrderInfo1
=
async
id
=>
{
const
params
=
{
...
...
@@ -462,26 +788,34 @@ const handleGetBox3DataList = async () => {
const
params
=
{
currentPage
:
box3CurrentPage
.
value
,
pageSize
:
box3PageSize
.
value
,
date
:
startDate
pageSize
:
100
,
date
:
startDate
,
elementId
:
selectDevElement
.
value
};
try
{
const
res
=
await
getElementDevelop
(
params
);
console
.
log
(
"美自身要素发展情况"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box3DataList
.
value
=
res
.
data
.
content
;
box3
All
DataList
.
value
=
res
.
data
.
content
;
box3Total
.
value
=
res
.
data
.
totalElements
;
if
(
res
.
data
.
content
.
length
)
{
handleGetOrderInfo1
(
box3DataList
.
value
[
box3LeftActiveIndex
.
value
].
id
);
}
else
{
box3DetailInfo
.
value
=
{
}
;
}
//
if (res.data.content.length) {
//
handleGetOrderInfo1(box3DataList.value[box3LeftActiveIndex.value].id);
//
} else {
//
box3DetailInfo.value = {};
//
}
}
else
{
box3DetailInfo
.
value
=
{};
}
updateBox3DataList
();
}
catch
(
error
)
{}
};
const
updateBox3DataList
=
async
()
=>
{
const
start
=
(
box3CurrentPage
.
value
-
1
)
*
box3PageSize
.
value
;
const
end
=
start
+
box3PageSize
.
value
;
box3DataList
.
value
=
box3AllDataList
.
value
.
slice
(
start
,
end
);
};
const
handleClickBox3Item
=
index
=>
{
box3LeftActiveIndex
.
value
=
index
;
handleGetOrderInfo1
(
box3DataList
.
value
[
index
].
id
);
...
...
@@ -492,7 +826,8 @@ const box3ChartData = ref([]);
const
handleGetBox3ChartData
=
async
()
=>
{
const
{
startDate
,
endDate
}
=
getCalculatedDate
(
activeDate
.
value
);
const
params
=
{
date
:
startDate
date
:
startDate
,
elementId
:
selectDevElement
.
value
};
try
{
const
res
=
await
getKeyWordDown
(
params
);
...
...
@@ -567,10 +902,13 @@ const handleToDecreeDetail = item => {
};
watch
(
activeDate
,
async
()
=>
{
box2CurrentPage
.
value
=
1
;
box3CurrentPage
.
value
=
1
;
handleGetBox2DataList
();
// 美对我要素打压情况
handleGetBox3DataList
();
// 美自身要素发展情况
handleBox2Chart
();
// 关键词云-上
handleBox3Chart
();
// 关键词云-下
getUsChinaSanctionTrendData
();
await
handleGetHeaderList
();
// 全要素统计
// startAutoPlay();
});
...
...
@@ -581,6 +919,7 @@ onMounted(async () => {
handleGetBox3DataList
();
// 美自身要素发展情况
handleBox2Chart
();
// 关键词云-上
handleBox3Chart
();
// 关键词云-下
getUsChinaSanctionTrendData
();
await
handleGetHeaderList
();
// 全要素统计
// startAutoPlay();
});
...
...
@@ -928,7 +1267,32 @@ onUnmounted(() => {
border-bottom
:
1px
solid
rgba
(
255
,
255
,
255
,
1
);
background
:
linear-gradient
(
180deg
,
rgba
(
231
,
243
,
255
,
0
.5
)
,
rgba
(
231
,
243
,
255
,
0
)
100%
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
10px
16px
;
.box2-header-left
{
display
:
flex
;
align-items
:
center
;
img
{
width
:
17px
;
height
:
17px
;
margin-right
:
8px
;
}
.title
{
font-family
:
YouSheBiaoTiHei
;
font-size
:
24px
;
font-weight
:
400
;
line-height
:
31px
;
letter-spacing
:
0px
;
text-align
:
left
;
color
:
rgba
(
5
,
95
,
194
,
1
);
}
}
.field-select
{
width
:
160px
;
}
.icon
{
width
:
17px
;
height
:
16
.5px
;
...
...
@@ -942,8 +1306,8 @@ onUnmounted(() => {
}
.title
{
margin
-
top
:
8
px
;
margin
-
left
:
13
px
;
//
margin-top: 8px;
//
margin-left: 13px;
width
:
199px
;
height
:
31px
;
color
:
var
(
--
color-main-active
);
...
...
@@ -986,11 +1350,82 @@ onUnmounted(() => {
.left-item
{
width
:
100%
;
height
:
54
px
;
height
:
120
px
;
border
:
1px
solid
transparent
;
display
:
flex
;
align
-
items
:
center
;
padding
:
10px
;
box-sizing
:
border-box
;
border-bottom
:
1px
solid
#eee
;
// align-items: center;
.left-item-content
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-between
;
gap
:
5px
;
width
:
100%
;
.content-header
{
display
:
flex
;
justify-content
:
space-between
;
.text
{
max-width
:
80%
;
height
:
30px
;
margin-left
:
12px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-style
:
Regular
;
font-size
:
16px
;
font-weight
:
700
;
line-height
:
30px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.date
{
font-family
:
Source
Han
Sans
CN
;
font-size
:
16px
;
font-weight
:
400
;
}
}
.describe
{
max-width
:
80%
;
height
:
30px
;
margin-left
:
12px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-style
:
Regular
;
font-size
:
16px
;
font-weight
:
400
;
line-height
:
30px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.content-footer
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.element-box
{
display
:
flex
;
flex-direction
:
row
;
gap
:
5px
;
}
.tag-box
{
min-width
:
75px
;
height
:
24px
;
gap
:
5px
;
/* 自动布局 */
display
:
flex
;
flex-direction
:
row
;
justify-content
:
right
;
align-items
:
center
;
}
}
}
&
:hover
{
background
:
rgba
(
246
,
250
,
255
,
1
);
}
...
...
@@ -998,7 +1433,8 @@ onUnmounted(() => {
cursor
:
pointer
;
.id
{
margin
-
left
:
16
px
;
// margin-left: 16px;
margin-top
:
3px
;
width
:
24px
;
height
:
24px
;
border-radius
:
50px
;
...
...
@@ -1211,7 +1647,32 @@ onUnmounted(() => {
border-bottom
:
1px
solid
rgba
(
255
,
255
,
255
,
1
);
background
:
linear-gradient
(
180deg
,
rgba
(
231
,
243
,
255
,
0
.5
)
,
rgba
(
231
,
243
,
255
,
0
)
100%
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
10px
16px
;
.box3-header-left
{
display
:
flex
;
align-items
:
center
;
img
{
width
:
17px
;
height
:
17px
;
margin-right
:
8px
;
}
.title
{
font-family
:
YouSheBiaoTiHei
;
font-size
:
24px
;
font-weight
:
400
;
line-height
:
31px
;
letter-spacing
:
0px
;
text-align
:
left
;
color
:
rgba
(
5
,
95
,
194
,
1
);
}
}
.field-select
{
width
:
160px
;
}
.icon
{
width
:
17px
;
height
:
16
.5px
;
...
...
@@ -1225,7 +1686,7 @@ onUnmounted(() => {
}
.title
{
margin
-
top
:
8
px
;
//
margin-top: 8px;
margin-left
:
13px
;
width
:
199px
;
height
:
31px
;
...
...
@@ -1267,10 +1728,80 @@ onUnmounted(() => {
.left-item
{
width
:
100%
;
height
:
54
px
;
height
:
120
px
;
border
:
1px
solid
transparent
;
display
:
flex
;
border-bottom
:
1px
solid
#eee
;
padding
:
10px
;
.left-item-content
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-between
;
gap
:
5px
;
width
:
100%
;
.content-header
{
display
:
flex
;
justify-content
:
space-between
;
.text
{
max-width
:
80%
;
height
:
30px
;
margin-left
:
12px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-style
:
Regular
;
font-size
:
16px
;
font-weight
:
700
;
line-height
:
30px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.date
{
font-family
:
Source
Han
Sans
CN
;
font-size
:
16px
;
font-weight
:
400
;
}
}
.describe
{
max-width
:
80%
;
height
:
30px
;
margin-left
:
12px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-style
:
Regular
;
font-size
:
16px
;
font-weight
:
400
;
line-height
:
30px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.content-footer
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.element-box
{
display
:
flex
;
flex-direction
:
row
;
gap
:
5px
;
}
.tag-box
{
min-width
:
75px
;
height
:
24px
;
gap
:
5px
;
/* 自动布局 */
display
:
flex
;
flex-direction
:
row
;
justify-content
:
right
;
align-items
:
center
;
}
}
}
&
:hover
{
background
:
rgba
(
246
,
250
,
255
,
1
);
...
...
@@ -1279,7 +1810,9 @@ onUnmounted(() => {
cursor
:
pointer
;
.id
{
margin
-
left
:
16
px
;
// margin-left: 16px;
margin-top
:
3px
;
width
:
24px
;
height
:
24px
;
border-radius
:
50px
;
...
...
src/views/ZMOverView/components/fourSuppress/components/allElement/mock.json
0 → 100644
浏览文件 @
925c1fb9
{
"code"
:
200
,
"message"
:
"操作成功"
,
"success"
:
true
,
"data"
:
[
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-01"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
1
,
"elementDate"
:
"2025-01"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-01"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-02"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-02"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
1
,
"elementDate"
:
"2025-02"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-03"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-03"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-03"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
1
,
"elementDate"
:
"2025-04"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-04"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-04"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-05"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
1
,
"elementDate"
:
"2025-05"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-05"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-06"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-06"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-06"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-07"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-07"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
3
,
"elementDate"
:
"2025-07"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-08"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-08"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-08"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-09"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-09"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-09"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-10"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-10"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-10"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-11"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-11"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-11"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-12"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-12"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2025-12"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-01"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-01"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-01"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-02"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-02"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-02"
},
{
"elementName"
:
"科研机构"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-03"
},
{
"elementName"
:
"科研人才"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-03"
},
{
"elementName"
:
"科研仪器"
,
"elementNum"
:
0
,
"elementDate"
:
"2026-03"
}
]
}
\ No newline at end of file
浏览文件 @
925c1fb9
No preview for this file type
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论