Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
2cf6d83f
提交
2cf6d83f
authored
11月 14, 2025
作者:
huhuiqing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
首页
上级
63a21e28
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
618 行增加
和
330 行删除
+618
-330
概览页模块标题2.png
src/assets/images/bg/概览页模块标题2.png
+0
-0
概览页模块标题3.png
src/assets/images/bg/概览页模块标题3.png
+0
-0
ResourceSupport.vue
src/views/overView/component/ResourceSupport.vue
+88
-285
strengthComparison.vue
src/views/overView/component/strengthComparison.vue
+240
-0
barChart2.js
src/views/overView/js/barChart2.js
+53
-0
multiLineChart1.js
src/views/overView/js/multiLineChart1.js
+79
-0
radarChart.js
src/views/overView/js/radarChart.js
+29
-45
radarChart2.js
src/views/overView/js/radarChart2.js
+54
-0
radarChart3.js
src/views/overView/js/radarChart3.js
+75
-0
没有找到文件。
src/assets/images/bg/概览页模块标题2.png
0 → 100644
浏览文件 @
2cf6d83f
11.7 KB
src/assets/images/bg/概览页模块标题3.png
0 → 100644
浏览文件 @
2cf6d83f
11.5 KB
src/views/overView/component/ResourceSupport.vue
浏览文件 @
2cf6d83f
<!-- 中M博弈概览页 -->
<!-- 中M博弈概览页 -->
<
template
>
<
template
>
<div
class=
"thematic-box"
>
<div
class=
"resource-box"
>
<div
class=
"title-text"
>
中美博弈专题分析
</div>
<img
class=
"title-img"
src=
"@/assets/images/bg/概览页模块标题.png"
></img>
<div
class=
"thematic-content"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
对华打压历程
</div>
<div
class=
"item-header-right"
>
<img
class=
"item-header-right-icon"
src=
"@/assets/images/icon/tips.png"
></img>
数据来源:美国某某局
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
style=
"display: flex;height: calc(100% - 60px);"
>
<div
class=
"thematic-btn-left"
@
click=
"changeBtn('timwLine', 'left')"
>
<img
class=
"thematic-btn-icon"
src=
"@/assets/images/icon/card-btn-left.png"
></img>
</div>
<img
class=
"title-img"
src=
"@/assets/images/bg/概览页模块标题2.png"
></img>
<div
class=
"timeLine-box"
>
<div
style=
"height: calc(50% - 8px);display: flex"
>
<div
v-for=
"(item, index) in timeLineOddIndexItems"
class=
"time-item-box"
>
{{
item
.
titlle
}}
</div>
</div>
<img
style=
" width: 100%; height: 10px;"
src=
"@/assets/images/bg/time-line.png"
></img>
<div
style=
"height: calc(50% - 8px);display: flex;"
>
<div
v-for=
"(item, index) in timeLineIndexItems"
class=
"time-item-box"
>
{{
item
.
titlle
}}
</div>
</div>
</div>
<div
class=
"thematic-btn-right"
@
click=
"changeBtn('right')"
>
<img
class=
"thematic-btn-icon"
src=
"@/assets/images/icon/card-btn-right.png"
></img>
<div
style=
"margin-top: 20px;height: 450px;display: flex;"
>
<div
class=
"resource-content"
style=
"width: 45%; display: block;"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
中美博弈资源新闻动态
</div>
<div
class=
"item-header-right"
>
更多 +
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
</div>
</div>
<div
class=
"resource-content"
style=
"width: 45%;margin-left: 5%;"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
创新主体排名
</div>
</div>
</div>
<div
class=
"thematic-content"
style=
"margin-top: 20px;height: 350px;"
>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
打压遏制手段分布
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
style=
"display: flex;height: calc(100% - 60px);"
>
<div
class=
"thematic-btn-left"
@
click=
"changeBtn('timwLine', 'left')"
>
<img
class=
"thematic-btn-icon"
src=
"@/assets/images/icon/card-btn-left.png"
></img>
</div>
</div>
<div
class=
"cup-box"
style=
"display: flex;"
>
<div
style=
"margin-top: 20px;height: 450px;display: flex;"
>
<div
v-for=
"item in distribution"
class=
"cup-item-box"
:style=
"
{
<div
class=
"resource-content"
style=
"width: 45%; display: block;"
>
color: item.borderColor
<div
class=
"item-header"
>
}">
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"cup-title"
>
<div
class=
"item-header-text"
>
研发投入情况
</div>
{{
item
.
titlle
}}
</div>
<div
class=
"cup"
:style=
"
{
borderColor: item.bgColor1,
outlineColor: item.bgColor1,
}">
<!-- 水位 -->
<div
class=
"water"
:style=
"
{
'--percent': item.value,
'--c1': item.bgColor1,
'--c2': item.bgColor2,
}">
</div>
<!-- 文字 -->
<span
class=
"txt"
:style=
"
{ color: item.borderColor, }">
{{
item
.
text
}}
</span>
</div>
<div
style=
"margin-top: 20px;"
>
{{
item
.
change
}}
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
style=
"display: flex;height: calc(100% - 60px);"
id=
"char3"
>
</div>
</div>
<div
class=
"thematic-btn-right"
@
click=
"changeBtn('right')"
>
</div>
<img
class=
"thematic-btn-icon"
src=
"@/assets/images/icon/card-btn-right.png"
></img>
<div
class=
"resource-content"
style=
"width: 45%;margin-left: 5%;"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
研发投入领域
</div>
<div
class=
"item-header-right"
>
查看数据源>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
style=
"display: flex;height: calc(100% - 60px);"
id=
"char4"
>
</div>
</div>
</div>
</div>
</div>
</div>
<div
style=
"margin-top: 20px;height: 450px;display: flex;"
>
<div
style=
"margin-top: 20px;height: 450px;display: flex;"
>
<div
class=
"
thematic
-content"
style=
"width: 45%; display: block;"
>
<div
class=
"
resource
-content"
style=
"width: 45%; display: block;"
>
<div
class=
"item-header"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
打压遏制强度变化
</div>
<div
class=
"item-header-text"
>
专利申请情况
</div>
<div
class=
"item-header-right"
>
<img
class=
"item-header-right-icon"
src=
"@/assets/images/icon/tips.png"
></img>
数据来源:美国某某局
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
style=
"display: flex;height: calc(100% - 60px);"
id=
"char
t1
"
>
<div
style=
"display: flex;height: calc(100% - 60px);"
id=
"char
5
"
>
</div>
</div>
</div>
</div>
<div
class=
"
thematic
-content"
style=
"width: 45%;margin-left: 5%;"
>
<div
class=
"
resource
-content"
style=
"width: 45%;margin-left: 5%;"
>
<div
class=
"item-header"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/thematic-card-header-time.png"
></img>
<div
class=
"item-header-text"
>
打压遏制强度变化
</div>
<div
class=
"item-header-text"
>
论文发表情况
</div>
<div
class=
"item-header-right"
>
<img
class=
"item-header-right-icon"
src=
"@/assets/images/icon/tips.png"
></img>
<div
class=
"item-header-right"
>
查看数据源>
</div>
数据来源:美国某某局
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
style=
"display: flex;height: calc(100% - 60px);"
id=
"char
2
"
>
<div
style=
"display: flex;height: calc(100% - 60px);"
id=
"char
6
"
>
</div>
</div>
</div>
</div>
...
@@ -117,114 +82,46 @@
...
@@ -117,114 +82,46 @@
<
script
setup
>
<
script
setup
>
import
{
onMounted
,
ref
,
computed
}
from
"vue"
;
import
{
onMounted
,
ref
,
computed
}
from
"vue"
;
import
*
as
echarts
from
"echarts"
;
import
*
as
echarts
from
"echarts"
;
import
getBarChart
from
'../js/barChart.js'
import
getBarChart2
from
'../js/barChart2.js'
import
radarChart
from
'../js/radarChart.js'
import
radarChart2
from
'../js/radarChart2.js'
const
timeLine
=
ref
([
import
getMultiLineChart1
from
"../js/multiLineChart1.js"
;
{
time
:
'2025年1月'
,
titlle
:
'《AI扩散暂行最终规则》发布0'
,
content
:
'拜登政府发布《AI扩散暂行最终规则》,建立三级许可制度。'
},
{
time
:
'2025年1月'
,
titlle
:
'《AI扩散暂行最终规则》发布1'
,
content
:
'拜登政府发布《AI扩散暂行最终规则》,建立三级许可制度。'
},
{
time
:
'2025年1月'
,
titlle
:
'特朗普签署EO 143202'
,
content
:
'拜登政府发布《AI扩散暂行最终规则》,建立三级许可制度。'
},
{
time
:
'2025年1月'
,
titlle
:
'《AI扩散暂行最终规则》发布3'
,
content
:
'拜登政府发布《AI扩散暂行最终规则》,建立三级许可制度。'
},
{
time
:
'2025年7月23日'
,
titlle
:
'《AI扩散暂行最终规则》发布4'
,
content
:
'拜登政府发布《AI扩散暂行最终规则》,建立三级许可制度。'
},
])
// 过滤出奇数下标(1,3,5...)
const
timeLineOddIndexItems
=
computed
(()
=>
timeLine
.
value
.
filter
((
_
,
idx
)
=>
idx
%
2
===
1
)
)
// 过滤出偶数下标(1,3,5...)
const
timeLineIndexItems
=
computed
(()
=>
timeLine
.
value
.
filter
((
_
,
idx
)
=>
idx
%
2
===
0
)
)
const
distribution
=
ref
([
{
titlle
:
'法案'
,
value
:
80
,
text
:
'1626个'
,
change
:
'较上个月+3'
,
bgColor1
:
'#E6F4FF'
,
//浅色
bgColor2
:
'#91CAFF'
,
//深色
borderColor
:
'#0958D9'
,
},
{
titlle
:
'法案'
,
value
:
20
,
text
:
'1626个'
,
change
:
'较上个月+3'
,
bgColor1
:
'#FFFBE6'
,
//浅色
bgColor2
:
'#FDE19A'
,
//深色
borderColor
:
'#D48806'
,
},
{
titlle
:
'法案'
,
value
:
10
,
text
:
'1626个'
,
change
:
'较上个月+3'
,
bgColor1
:
'#E6F4FF'
,
//浅色
bgColor2
:
'#91CAFF'
,
//深色
borderColor
:
'#0958D9'
,
},
{
titlle
:
'法案'
,
value
:
40
,
text
:
'1626个'
,
change
:
'较上个月+3'
,
bgColor1
:
'#E6F4FF'
,
//浅色
bgColor2
:
'#91CAFF'
,
//深色
borderColor
:
'#0958D9'
,
},
{
titlle
:
'法案'
,
value
:
50
,
text
:
'1626个'
,
change
:
'较上个月+3'
,
bgColor1
:
'#E6F4FF'
,
//浅色
bgColor2
:
'#91CAFF'
,
//深色
borderColor
:
'#0958D9'
,
}
])
const
timeIndex
=
ref
(
0
)
//时间轴及遏制手段分布按钮
function
changeBtn
(
data
,
type
)
{
if
(
type
===
'left'
)
{
timeIndex
.
value
===
0
?
''
:
timeIndex
.
value
=
timeIndex
.
value
-
1
}
else
{
(
timeIndex
.
value
.
length
-
timeIndex
.
value
<=
4
)
?
''
:
timeIndex
.
value
=
timeIndex
.
value
+
1
}
}
const
names
=
[
'Jan'
,
'Feb'
,
'Mar'
,
'Apr'
,
'May'
]
const
data1
=
[
120
,
200
,
150
,
80
,
70
]
const
data2
=
[
90
,
230
,
180
,
110
,
100
]
const
chart1Data
=
ref
({
//专利申请情况
name
:
[
const
chart5Data
=
ref
({
title
:
[
"2024-09"
,
"2024-10"
,
"2024-11"
,
"2024-12"
,
"2024-12"
,
"2025-1"
,
"2025-01"
,
"2025-2"
,
"2025-3"
,
"2025-4"
,
"2025-5"
,
"2025-6"
,
"2025-7"
,
"2025-02"
,
"2025-03"
,
"2025-04"
,
"2025-05"
,
"2025-06"
,
"2025-07"
,
"2025-08"
],
],
value
:
[
83.76
,
76.72
,
73.89
,
72.16
,
66.24
,
65.47
,
63.98
,
62.12
,
44.38
,
24.79
],
data
:
[
{
name
:
"提出法案"
,
value
:
[
145
,
52
,
84
,
99
,
71
,
96
,
128
,
144
,
140
,
168
,
188
,
172
]
},
{
name
:
"通过法案"
,
value
:
[
6
,
3
,
4
,
6
,
11
,
5
,
2
,
14
,
16
,
27
,
28
,
44
]
}
]
});
});
// 绘制echarts图表
// 绘制echarts图表
const
setChart
=
(
option
,
chartId
)
=>
{
const
setChart
=
(
option
,
chartId
)
=>
{
let
chartDom
=
document
.
getElementById
(
chartId
);
let
chartDom
=
document
.
getElementById
(
chartId
);
console
.
log
(
chartDom
,
'chartDomchartDomchartDom'
)
chartDom
.
removeAttribute
(
"_echarts_instance_"
);
chartDom
.
removeAttribute
(
"_echarts_instance_"
);
let
chart
=
echarts
.
init
(
chartDom
);
let
chart
=
echarts
.
init
(
chartDom
);
chart
.
setOption
(
option
);
chart
.
setOption
(
option
);
...
@@ -232,118 +129,24 @@ const setChart = (option, chartId) => {
...
@@ -232,118 +129,24 @@ const setChart = (option, chartId) => {
};
};
onMounted
(()
=>
{
onMounted
(()
=>
{
let
char1
=
getBarChart
(
chart1Data
.
value
.
name
,
chart1Data
.
value
.
value
,
true
);
setChart
(
char1
,
"chart1"
);
let
char3
=
getBarChart2
(
names
,
data1
,
data2
,
false
);
setChart
(
char3
,
"char3"
);
let
char4
=
radarChart2
()
setChart
(
char4
,
"char4"
);
let
char2
=
radarChart
()
let
chart5
=
getMultiLineChart1
(
chart5Data
.
value
.
title
,
chart5Data
.
value
.
data
[
0
].
value
,
chart5Data
.
value
.
data
[
1
].
value
);
setChart
(
char2
,
"char2"
);
setChart
(
chart5
,
"char5"
);
let
chart6
=
getMultiLineChart1
(
chart5Data
.
value
.
title
,
chart5Data
.
value
.
data
[
0
].
value
,
chart5Data
.
value
.
data
[
1
].
value
);
setChart
(
chart6
,
"char6"
);
});
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.cup-box
{
.resource-box
{
overflow-x
:
auto
;
height
:
1550px
;
.cup-item-box
{
width
:
220px
;
text-align
:
center
;
box-sizing
:
border-box
;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
var
(
---,
10px
);
margin
:
20px
;
padding
:
20px
;
.cup-title
{
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-weight
:
700
;
line-height
:
26px
;
letter-spacing
:
0px
;
text-align
:
center
;
margin-bottom
:
20px
;
}
}
}
/* 杯子:正圆 */
.cup
{
position
:
relative
;
width
:
130px
;
height
:
130px
;
/* 本身高度设为 0,内容靠子元素或绝对定位 */
border-radius
:
50%
;
border
:
4px
#2196f3
solid
;
overflow
:
hidden
;
/* 关键:把超出部分裁掉 */
display
:
flex
;
align-items
:
flex-end
;
/* 水永远贴底 */
justify-content
:
center
;
border
:
4px
solid
#2196f3
;
/* 内圈实线 */
outline
:
4px
solid
#2196f3
;
/* 外圈实线 */
outline-offset
:
4px
;
/* 两线间距,想再宽调大即可 */
}
/* 水位层 */
.water
{
width
:
100%
;
height
:
calc
(
var
(
--
percent
)
*
1%
);
/* 0~100 对应 0~100% */
background
:
linear-gradient
(
to
top
,
var
(
--
c1
)
,
var
(
--
c2
));
position
:
relative
;
animation
:
wave
3s
linear
infinite
;
}
/* 波浪 */
.
water
:
:
before
,
.
water
::
after
{
content
:
''
;
position
:
absolute
;
width
:
400px
;
height
:
400px
;
top
:
-350px
;
/* 把圆心顶到上面去 */
left
:
50%
;
border-radius
:
45%
;
transform
:
translate
(
-50%
,
0
);
background
:
rgba
(
255
,
255
,
255
,
.4
);
animation
:
rotate
7s
linear
infinite
;
}
.
water
:
:
after
{
top
:
-370px
;
border-radius
:
40%
;
opacity
:
.7
;
animation-duration
:
9s
;
animation-direction
:
reverse
;
}
/* 旋转动画 */
@keyframes
rotate
{
to
{
transform
:
translate
(
-50%
,
0
)
rotate
(
360deg
);
}
}
/* 百分比文字 */
.txt
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
font
:
24px
/
1
sans-serif
;
color
:
#0d47a1
;
z-index
:
2
;
}
.thematic-box
{
height
:
1500px
;
}
}
.title-text
{
.title-text
{
...
@@ -359,7 +162,7 @@ onMounted(() => {
...
@@ -359,7 +162,7 @@ onMounted(() => {
height
:
42px
;
height
:
42px
;
}
}
.
thematic
-content
{
.
resource
-content
{
/* 容器 480 */
/* 容器 480 */
width
:
100%
;
width
:
100%
;
height
:
450px
;
height
:
450px
;
...
@@ -430,17 +233,17 @@ onMounted(() => {
...
@@ -430,17 +233,17 @@ onMounted(() => {
background
:
#eaecee
;
background
:
#eaecee
;
}
}
.
thematic
-btn-left
{
.
resource
-btn-left
{
height
:
100%
;
height
:
100%
;
width
:
24px
;
width
:
24px
;
}
}
.
thematic
-btn-right
{
.
resource
-btn-right
{
height
:
100%
;
height
:
100%
;
width
:
24px
;
width
:
24px
;
}
}
.
thematic
-btn-icon
{
.
resource
-btn-icon
{
height
:
48px
;
height
:
48px
;
width
:
100%
;
width
:
100%
;
margin-top
:
calc
(
50%
-
24px
);
margin-top
:
calc
(
50%
-
24px
);
...
...
src/views/overView/component/strengthComparison.vue
0 → 100644
浏览文件 @
2cf6d83f
<!-- 中M博弈概览页 -->
<
template
>
<div
class=
"resource-box"
>
<img
class=
"title-img"
src=
"@/assets/images/bg/概览页模块标题3.png"
></img>
<div
style=
"margin-top: 20px;height: 450px;display: flex;"
>
<div
class=
"resource-content"
style=
"width:100%; display: flex;"
>
<div
style=
"width: 50%;height: 100%;"
id=
"char7"
>
</div>
<div
style=
"width: 50%;height: 100%;text-align: center;"
>
<div
v-for=
"value in data"
>
<div>
{{
value
.
name
}}
</div>
<div
class=
"progress-row"
>
<div
class=
"progress-wrapper left"
>
<el-progress
:percentage=
"value.value[0]"
:stroke-width=
"20"
class=
"left-progress"
/>
<span
class=
"inner-text"
>
{{
value
.
value
[
0
]
}}
%
</span>
</div>
<!-- 右侧进度条 -->
<div
class=
"progress-wrapper right"
>
<el-progress
:percentage=
"value.value[1]"
:stroke-width=
"20"
class=
"right-progress"
/>
<span
class=
"inner-text"
>
{{
value
.
value
[
0
]
}}
%
</span>
</div>
</div>
</div>
<!-- 左侧进度条 -->
</div>
<div>
</div>
</div>
</div>
</div>
</
template
>
<
script
setup
>
import
{
onMounted
,
ref
,
computed
}
from
"vue"
;
import
*
as
echarts
from
"echarts"
;
import
radarChart3
from
'../js/radarChart3.js'
// 绘制echarts图表
const
setChart
=
(
option
,
chartId
)
=>
{
let
chartDom
=
document
.
getElementById
(
chartId
);
chartDom
.
removeAttribute
(
"_echarts_instance_"
);
let
chart
=
echarts
.
init
(
chartDom
);
chart
.
setOption
(
option
);
return
chart
;
};
const
data
=
ref
([
{
name
:
'竞争潜力'
,
value
:
[
81.7
,
75.4
]
},
{
name
:
'研究人员总数'
,
value
:
[
81.7
,
75.4
]
},
{
name
:
'研发经费投入总额'
,
value
:
[
81.7
,
75.4
]
},
{
name
:
'研发经费占GDP的比重'
,
value
:
[
81.7
,
75.4
]
},
{
name
:
'每万人研发经费投入额'
,
value
:
[
81.7
,
75.4
]
},
{
name
:
'每万研究人员经费投入额'
,
value
:
[
81.7
,
75.4
]
},
{
name
:
'每万人研究人员数'
,
value
:
[
81.7
,
75.4
]
}
])
onMounted
(()
=>
{
let
char7
=
radarChart3
()
setChart
(
char7
,
"char7"
);
});
</
script
>
<
style
lang=
"scss"
scoped
>
/* ========== 一行两个 ========== */
.progress-row
{
display
:
flex
;
gap
:
16px
;
align-items
:
center
;
padding
:
10px
;
}
/* ========== 公共外壳 ========== */
.progress-wrapper
{
position
:
relative
;
flex
:
1
;
height
:
20px
;
}
/* 文字居中在彩色条内 */
.inner-text
{
position
:
absolute
;
left
:
50%
;
top
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
font-size
:
12px
;
color
:
#fff
;
font-weight
:
bold
;
z-index
:
2
;
}
/* ========== 左侧:右侧斜切 + 左侧圆角 ========== */
/* 左侧文字 */
.left-text
{
font-size
:
12px
;
color
:
#333
;
margin-right
:
8px
;
white-space
:
nowrap
;
}
.left-progress
:deep
(
.el-progress-bar__outer
)
{
border-radius
:
10px
0
0
10px
;
clip-path
:
polygon
(
0
0
,
calc
(
100%
-
10px
)
0
,
100%
100%
,
0
100%
);
background
:
#aed6ff
;
overflow
:
hidden
;
}
.left-progress
:deep
(
.el-progress-bar__inner
)
{
border-radius
:
10px
0
0
10px
;
clip-path
:
polygon
(
0
0
,
calc
(
100%
-
10px
)
0
,
100%
100%
,
0
100%
);
background
:
#aed6ff
;
}
/* ========== 右侧:左侧斜切 + 右侧圆角 ========== */
.right-progress
:deep
(
.el-progress-bar__outer
)
{
border-radius
:
0
10px
10px
0
;
clip-path
:
polygon
(
10px
0
,
100%
0
,
100%
100%
,
0
100%
);
background
:
#ffccc7
;
overflow
:
hidden
;
}
.right-progress
:deep
(
.el-progress-bar__inner
)
{
border-radius
:
0
10px
10px
0
;
clip-path
:
polygon
(
10px
0
,
100%
0
,
100%
100%
,
0
100%
);
background
:
#ff7875
;
}
.resource-box
{
height
:
700px
;
}
.title-text
{
font-size
:
32px
;
font-weight
:
700
;
line-height
:
42px
;
margin
:
40px
;
text-align
:
center
;
}
.title-img
{
width
:
100%
;
height
:
42px
;
}
.resource-content
{
/* 容器 480 */
width
:
100%
;
height
:
450px
;
box-sizing
:
border-box
;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
var
(
---,
10px
);
/* 业务系统/模块阴影 */
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.item-header
{
height
:
48px
;
width
:
100%
;
display
:
flex
;
.item-header-icon
{
width
:
20px
;
height
:
20px
;
margin
:
15px
;
}
.item-header-text
{
width
:
250px
;
font-size
:
20px
;
font-weight
:
700
;
line-height
:
26px
;
background
:
rgba
(
255
,
255
,
255
,
0
.65
);
color
:
#055FC2
;
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
line-height
:
48px
;
text-align
:
left
;
}
.item-header-right
{
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
line-height
:
48px
;
text-align
:
right
;
width
:
calc
(
100%
-
350px
);
.item-header-right-icon
{
/* 容器 704 */
width
:
14px
;
height
:
16px
;
}
}
}
.item-header-divider
{
/* 矩形 249 */
width
:
100%
;
height
:
1px
;
background
:
#eaecee
;
}
}
</
style
>
src/views/overView/js/barChart2.js
0 → 100644
浏览文件 @
2cf6d83f
import
*
as
echarts
from
"echarts"
;
const
getColumnChart
=
(
nameList
,
series1
,
series2
,
isPer
)
=>
{
// 两套渐变
const
gradBlue
=
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
'#055FC2'
},
{
offset
:
1
,
color
:
'#BAE0FF'
}
])
const
gradCyan
=
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
'#CE4F51'
},
{
offset
:
1
,
color
:
'#FFA39E'
}
])
return
{
tooltip
:
{
trigger
:
'axis'
,
axisPointer
:
{
type
:
'shadow'
}
},
grid
:
{
top
:
'10%'
,
right
:
'3%'
,
bottom
:
'15%'
,
left
:
'3%'
,
containLabel
:
true
},
legend
:
{
data
:
[
'中国'
,
'美国'
],
top
:
0
},
xAxis
:
{
type
:
'category'
,
data
:
nameList
,
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
axisLabel
:
{
rotate
:
45
,
color
:
'#666'
,
fontSize
:
12
}
},
yAxis
:
{
type
:
'value'
,
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
axisLabel
:
{
show
:
true
,
color
:
'#666'
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
color
:
'#ebebeb'
}
}
},
series
:
[
{
name
:
'中国'
,
type
:
'bar'
,
data
:
series1
,
barWidth
:
16
,
label
:
{
show
:
false
},
itemStyle
:
{
borderRadius
:
[
8
,
8
,
0
,
0
],
color
:
gradBlue
}
},
{
name
:
'美国'
,
type
:
'bar'
,
data
:
series2
,
barWidth
:
16
,
label
:
{
show
:
false
},
itemStyle
:
{
borderRadius
:
[
8
,
8
,
0
,
0
],
color
:
gradCyan
}
}
]
}
}
export
default
getColumnChart
\ No newline at end of file
src/views/overView/js/multiLineChart1.js
0 → 100644
浏览文件 @
2cf6d83f
import
*
as
echarts
from
'echarts'
const
getMultiLineChart
=
(
dataX
,
dataY1
,
dataY2
)
=>
{
return
{
tooltip
:
{
trigger
:
'axis'
,
axisPointer
:
{
type
:
'cross'
,
label
:
{
backgroundColor
:
'#6a7985'
}
}
},
grid
:
{
top
:
'8%'
,
right
:
'5%'
,
bottom
:
'5%'
,
left
:
'5%'
,
containLabel
:
true
},
legend
:
{
data
:
[
'中国'
,
'美国'
],
show
:
true
},
color
:
[
'#AED6FF'
,
'#FF7875'
],
xAxis
:
[
{
type
:
'category'
,
boundaryGap
:
false
,
data
:
dataX
}
],
yAxis
:
[
{
type
:
'value'
}
],
series
:
[
{
name
:
'中国'
,
type
:
'line'
,
areaStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[{
offset
:
0
,
color
:
'#0958D9'
// 起始颜色
},
{
offset
:
1
,
color
:
'rgba(22, 119, 255, 0)'
// 结束颜色
}])
},
emphasis
:
{
focus
:
'series'
},
data
:
dataY1
},
{
name
:
'美国'
,
type
:
'line'
,
areaStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[{
offset
:
0
,
color
:
'#FF7875'
// 起始颜色
},
{
offset
:
1
,
color
:
'rgba(255, 172, 77, 0)'
// 结束颜色
}])
},
emphasis
:
{
focus
:
'series'
},
data
:
dataY2
}
]
}
}
export
default
getMultiLineChart
\ No newline at end of file
src/views/overView/js/radarChart.js
浏览文件 @
2cf6d83f
import
*
as
echarts
from
"echarts"
;
import
*
as
echarts
from
"echarts"
;
const
getBarChart
=
(
nameList
,
valueList
,
isPer
)
=>
{
const
getBarChart
=
(
nameList
,
valueList
,
isPer
)
=>
{
const
option
=
{
const
option
=
{
title
:
{
title
:
{
text
:
''
},
text
:
""
},
// grid: {
// top: 100
// },
legend
:
{
legend
:
{
top
:
0
,
icon
:
'circle'
,
icon
:
"circle"
,
orient
:
'vertical'
,
// 纵向排列
data
:
[
"能源"
,
"集成电路"
,
"人工智能"
,
'通信网络'
,
'量子科技'
,
'生物科技'
]
right
:
0
,
// 贴右边
top
:
'center'
,
// 垂直居中
align
:
'left'
,
// 文字在图标左侧
data
:
[
'法案'
,
'行政令'
,
'科技智库'
,
'出口管制'
,
'投融资限制'
,
'市场准入'
]
},
},
radar
:
{
radar
:
{
// shape: 'circle',
indicator
:
[
indicator
:
[
{
name
:
"能源"
,
max
:
6500
},
{
name
:
'能源'
,
max
:
6500
},
{
name
:
"集成电路"
,
max
:
16000
},
{
name
:
'集成电路'
,
max
:
16000
},
{
name
:
"人工智能"
,
max
:
30000
},
{
name
:
'人工智能'
,
max
:
30000
},
{
name
:
"通信网络"
,
max
:
38000
},
{
name
:
'通信网络'
,
max
:
38000
},
{
name
:
"量子科技"
,
max
:
52000
},
{
name
:
'量子科技'
,
max
:
52000
},
{
name
:
"生物科技"
,
max
:
25000
}
{
name
:
'生物科技'
,
max
:
25000
}
],
],
axisName
:
{
axisName
:
{
formatter
:
"{value}"
,
formatter
:
'{value}'
,
color
:
"rgba(59, 65, 75, 1)"
,
color
:
'rgba(59, 65, 75, 1)'
,
fontSize
:
16
,
fontSize
:
16
,
fontWeight
:
700
fontWeight
:
700
}
}
},
},
series
:
[
series
:
[
{
{
name
:
"Budget vs spending"
,
name
:
'Budget vs spending'
,
type
:
"radar"
,
type
:
'radar'
,
data
:
[
data
:
[
{
{
value
:
[
4200
,
3000
,
20000
,
35000
,
50000
,
18000
],
value
:
[
4200
,
3000
,
20000
,
35000
,
50000
,
18000
],
name
:
"法案"
,
name
:
'法案'
,
areaStyle
:
{
areaStyle
:
{
color
:
'rgba(10, 87, 166, 0.2)'
}
color
:
"rgba(10, 87, 166, 0.2)"
}
},
},
{
{
value
:
[
5000
,
14000
,
28000
,
26000
,
42000
,
21000
],
value
:
[
5000
,
14000
,
28000
,
26000
,
42000
,
21000
],
name
:
"行政令"
,
name
:
'行政令'
,
areaStyle
:
{
areaStyle
:
{
color
:
'rgba(206, 79, 81, 0.2)'
}
color
:
"rgba(206, 79, 81, 0.2)"
}
},
},
{
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
"科技智库"
,
name
:
'科技智库'
,
areaStyle
:
{
areaStyle
:
{
color
:
'rgba(250, 140, 22, 0.2)'
}
color
:
"rgba(250, 140, 22, 0.2)"
}
},
},
{
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
"出口管制"
,
name
:
'出口管制'
,
areaStyle
:
{
areaStyle
:
{
color
:
'rgba(250, 140, 22, 0.2)'
}
color
:
"rgba(250, 140, 22, 0.2)"
}
},
},
{
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
"投融资限制"
,
name
:
'投融资限制'
,
areaStyle
:
{
areaStyle
:
{
color
:
'rgba(250, 140, 22, 0.2)'
}
color
:
"rgba(250, 140, 22, 0.2)"
}
},
},
{
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
"市场准入"
,
name
:
'市场准入'
,
areaStyle
:
{
areaStyle
:
{
color
:
'rgba(250, 140, 22, 0.2)'
}
color
:
"rgba(250, 140, 22, 0.2)"
}
}
}
]
]
}
}
...
...
src/views/overView/js/radarChart2.js
0 → 100644
浏览文件 @
2cf6d83f
import
*
as
echarts
from
"echarts"
;
const
getBarChart
=
(
nameList
,
valueList
,
isPer
)
=>
{
const
option
=
{
title
:
{
text
:
''
},
legend
:
{
icon
:
'circle'
,
orient
:
'vertical'
,
// 纵向排列
right
:
0
,
// 贴右边
top
:
'center'
,
// 垂直居中
align
:
'left'
,
// 文字在图标左侧
data
:
[
'中国'
,
'美国'
]
},
radar
:
{
indicator
:
[
{
name
:
'能源'
,
max
:
6500
},
{
name
:
'集成电路'
,
max
:
16000
},
{
name
:
'人工智能'
,
max
:
30000
},
{
name
:
'通信网络'
,
max
:
38000
},
{
name
:
'量子科技'
,
max
:
52000
},
{
name
:
'生物科技'
,
max
:
25000
}
],
axisName
:
{
formatter
:
'{value}'
,
color
:
'rgba(59, 65, 75, 1)'
,
fontSize
:
16
,
fontWeight
:
700
}
},
series
:
[
{
name
:
'Budget vs spending'
,
type
:
'radar'
,
data
:
[
{
value
:
[
4200
,
3000
,
20000
,
35000
,
50000
,
18000
],
name
:
'中国'
,
areaStyle
:
{
color
:
'rgba(10, 87, 166, 0.2)'
}
},
{
value
:
[
5000
,
14000
,
28000
,
26000
,
42000
,
21000
],
name
:
'美国'
,
areaStyle
:
{
color
:
'rgba(206, 79, 81, 0.2)'
}
},
]
}
]
}
return
option
}
export
default
getBarChart
\ No newline at end of file
src/views/overView/js/radarChart3.js
0 → 100644
浏览文件 @
2cf6d83f
import
*
as
echarts
from
"echarts"
;
const
getBarChart
=
(
nameList
,
valueList
,
isPer
)
=>
{
const
option
=
{
title
:
{
text
:
''
},
legend
:
{
show
:
false
,
icon
:
'circle'
,
orient
:
'vertical'
,
right
:
0
,
top
:
'center'
,
align
:
'left'
,
data
:
[
'法案'
,
'行政令'
,
'科技智库'
,
'出口管制'
,
'投融资限制'
,
'市场准入'
]
},
radar
:
{
shape
:
'circle'
,
// ① 参考线变弧线
indicator
:
[
{
name
:
'研究人员总数'
,
max
:
6500
},
{
name
:
'每万人研究人员数'
,
max
:
16000
},
{
name
:
'每万研究人员研发经费投入额'
,
max
:
30000
},
{
name
:
'每万人研发经费投入额'
,
max
:
38000
},
{
name
:
'研发经费占GDP的比重'
,
max
:
52000
},
{
name
:
'研发经费投入总额'
,
max
:
25000
}
],
axisName
:
{
// ② 文字在线上方 + 自动换两行
formatter
:
function
(
txt
)
{
// 按字数 10 左右自动断行
const
len
=
txt
.
length
;
if
(
len
<=
5
)
return
txt
;
const
br
=
Math
.
ceil
(
len
/
2
);
return
txt
.
substring
(
0
,
br
)
+
'
\
n'
+
txt
.
substring
(
br
);
},
rich
:
{
a
:
{
lineHeight
:
20
}
// 行高
},
color
:
'rgba(59, 65, 75, 1)'
,
fontSize
:
14
,
fontWeight
:
600
},
splitLine
:
{
lineStyle
:
{
color
:
'rgba(200,200,200,.6)'
}
},
splitArea
:
{
show
:
false
},
axisLine
:
{
show
:
false
}
},
series
:
[{
name
:
'Budget vs spending'
,
type
:
'radar'
,
data
:
[
{
value
:
[
4200
,
3000
,
20000
,
35000
,
50000
,
18000
],
name
:
'法案'
,
areaStyle
:
{
color
:
'rgba(10, 87, 166, 0.2)'
}
},
{
value
:
[
5000
,
14000
,
28000
,
26000
,
42000
,
21000
],
name
:
'行政令'
,
areaStyle
:
{
color
:
'rgba(206, 79, 81, 0.2)'
}
},
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
'科技智库'
,
areaStyle
:
{
color
:
'rgba(250, 140, 22, 0.2)'
}
},
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
'出口管制'
,
areaStyle
:
{
color
:
'rgba(22, 180, 120, 0.2)'
}
},
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
'投融资限制'
,
areaStyle
:
{
color
:
'rgba(120, 100, 200, 0.2)'
}
},
{
value
:
[
4000
,
14000
,
18000
,
21000
,
32000
,
10000
],
name
:
'市场准入'
,
areaStyle
:
{
color
:
'rgba(255, 100, 150, 0.2)'
}
}
]
}],
// ③ 最外层弧线加粗:用 graphic 画一个圆环覆盖在最外层
graphic
:
[{
type
:
'circle'
,
shape
:
{
cx
:
300
,
cy
:
300
,
r
:
'65%'
},
style
:
{
stroke
:
'#333'
,
lineWidth
:
30
,
fill
:
'transparent'
},
z
:
1000
}]
};
return
option
}
export
default
getBarChart
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论