Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
367c86e4
提交
367c86e4
authored
11月 13, 2025
作者:
liujq23
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
门户页面
上级
08b76029
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
983 行增加
和
827 行删除
+983
-827
index.js
src/router/index.js
+14
-5
icon5.png
src/views/portals/assets/img/icon5.png
+0
-0
CardCustom.vue
src/views/portals/components/CardCustom.vue
+118
-98
index.vue
src/views/portals/index.vue
+0
-724
index.vue
src/views/portals/portal1/index.vue
+689
-0
index.vue
src/views/portals/portal2/index.vue
+162
-0
没有找到文件。
src/router/index.js
浏览文件 @
367c86e4
...
...
@@ -42,7 +42,8 @@ import MarketSingleCaseOverview from "@/views/marketAccessRestrictions/singleCas
import
MarketSingleCaseDeepdig
from
"@/views/marketAccessRestrictions/singleCaseLayout/deepdig/index.vue"
;
// 门户
import
Portals
from
'@/views/portals/index.vue'
import
Portal1
from
'@/views/portals/portal1/index.vue'
;
import
Portal2
from
'@/views/portals/portal2/index.vue'
;
const
routes
=
[
// 智库系统的主要路由
...
...
@@ -382,11 +383,19 @@ const routes = [
}
},
{
path
:
"/
Portals
"
,
name
:
"
Portals
"
,
component
:
Portal
s
,
path
:
"/
portal1
"
,
name
:
"
portal1
"
,
component
:
Portal
1
,
meta
:
{
title
:
"门户"
title
:
"门户1"
}
},
{
path
:
"/portal2"
,
name
:
"portal2"
,
component
:
Portal2
,
meta
:
{
title
:
"门户2"
}
}
];
...
...
src/views/portals/assets/img/icon5.png
0 → 100644
浏览文件 @
367c86e4
1.4 KB
src/views/portals/components/CardCustom.vue
浏览文件 @
367c86e4
<
template
>
<el-card
class=
"card"
>
<div
class=
"wrap"
>
<div
class=
"line"
:style=
"
{ backgroundColor: lineColor }">
</div>
<div
class=
"header"
>
<div
class=
"iconWrap"
>
<slot
name=
"icon"
>
<el-icon
:size=
"20"
>
<Edit
/>
</el-icon>
</slot>
</div>
<div
class=
"titleWrap"
:style=
"
{ backgroundColor: titleBackgroundColor }"
>
{{
title
}}
</div>
<div
class=
"rightWrap"
>
<slot
name=
"right"
>
<div
class=
"moreWrap"
>
<el-button
text
@
click=
"moreClick"
>
<span
class=
"moreText"
>
更多
</span>
<el-icon
:size=
"14"
>
<Plus
/>
</el-icon>
</el-button>
</div>
</slot>
</div>
</div>
<div
class=
"body"
>
<slot
name=
"default"
>
</slot>
</div>
</div>
</el-card>
<el-card
class=
"card"
>
<div
class=
"wrap"
>
<div
class=
"line"
:style=
"
{ backgroundColor: lineColor }">
</div>
<div
class=
"header"
:style=
"
{ height: headerHeight }">
<div
class=
"iconWrap"
:style=
"
{ width: iconWidth }">
<slot
name=
"icon"
>
<el-icon
:size=
"20"
>
<Edit
/>
</el-icon>
</slot>
</div>
<div
class=
"titleWrap"
:style=
"
{
backgroundColor: titleBackgroundColor,
color: titleColor,
paddingLeft: titleTextAlign === 'left' ? '0px' : '20px'
}"
>
{{
title
}}
</div>
<div
class=
"rightWrap"
>
<slot
name=
"right"
>
<div
class=
"moreWrap"
>
<el-button
text
@
click=
"moreClick"
>
<span
class=
"moreText"
>
更多
</span>
<el-icon
:size=
"14"
>
<Plus
/>
</el-icon>
</el-button>
</div>
</slot>
</div>
</div>
<div
class=
"body"
>
<slot
name=
"default"
>
</slot>
</div>
</div>
</el-card>
</
template
>
<
script
setup
>
import
{
Edit
,
Plus
}
from
"@element-plus/icons-vue"
;
const
emit
=
defineEmits
([
"moreClick"
]);
defineProps
({
titleBackgroundColor
:
{
type
:
String
,
default
:
"red"
,
},
lineColor
:
{
type
:
String
,
default
:
"transparent"
,
},
title
:
{
type
:
String
,
default
:
"风险信号"
,
},
titleBackgroundColor
:
{
type
:
String
,
default
:
"red"
},
titleColor
:
{
type
:
String
,
default
:
"#fff"
},
titleTextAlign
:
{
type
:
String
,
default
:
"center"
},
lineColor
:
{
type
:
String
,
default
:
"transparent"
},
title
:
{
type
:
String
,
default
:
"风险信号"
},
iconWidth
:
{
type
:
String
,
default
:
"60px"
},
headerHeight
:
{
type
:
String
,
default
:
"48px"
}
});
function
moreClick
()
{
emit
(
"moreClick"
);
emit
(
"moreClick"
);
}
</
script
>
<
style
lang=
"scss"
scoped
>
.card
{
position
:
relative
;
:deep
(
.el-card__body
)
{
padding
:
0
;
height
:
100%
;
}
position
:
relative
;
:deep
(
.el-card__body
)
{
padding
:
0
;
height
:
100%
;
}
}
.wrap
{
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
}
.line
{
left
:
1px
;
right
:
1px
;
background-color
:
transparent
;
height
:
1px
;
top
:
0
;
position
:
absolute
;
left
:
1px
;
right
:
1px
;
background-color
:
transparent
;
height
:
1px
;
top
:
0
;
position
:
absolute
;
}
.header
{
height
:
48px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
display
:
flex
;
flex-direction
:
row
;
align-items
:
stretch
;
z-index
:
1
;
position
:
relative
;
flex-shrink
:
0
;
height
:
48px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
display
:
flex
;
flex-direction
:
row
;
align-items
:
stretch
;
z-index
:
1
;
position
:
relative
;
flex-shrink
:
0
;
}
.iconWrap
{
width
:
60px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
width
:
60px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.titleWrap
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
padding-left
:
20px
;
padding-right
:
20px
;
background-color
:
red
;
color
:
#fff
;
font-size
:
20px
;
font-weight
:
700
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
padding-left
:
20px
;
padding-right
:
20px
;
background-color
:
red
;
color
:
#fff
;
font-size
:
20px
;
font-weight
:
700
;
}
.rightWrap
{
display
:
flex
;
justify-content
:
end
;
align-items
:
center
;
flex
:
1
;
display
:
flex
;
justify-content
:
end
;
align-items
:
center
;
flex
:
1
;
}
.moreWrap
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
16px
;
height
:
100%
;
padding-left
:
10px
;
padding-right
:
10px
;
cursor
:
pointer
;
.moreText
{
margin-right
:
3px
;
}
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
16px
;
height
:
100%
;
padding-left
:
10px
;
padding-right
:
10px
;
cursor
:
pointer
;
.moreText
{
margin-right
:
3px
;
}
}
.body
{
flex
:
1
;
padding
:
14px
20px
;
flex
:
1
;
padding
:
14px
20px
;
}
</
style
>
src/views/portals/index.vue
deleted
100644 → 0
浏览文件 @
08b76029
<
template
>
<div
class=
"wrap"
>
<el-row>
<CardCustom
@
more-click=
"moreClick"
title=
"风险信号"
:style=
"
{ width: '986px', height: '540px' }"
title-background-color="rgba(206, 79, 81, 1)"
>
<template
#
icon
>
<div
class=
"icon icon1"
></div>
</
template
>
</CardCustom>
<CardCustom
@
more-click=
"moreClick"
title=
"安全速递"
:style=
"{ width: '600px', height: '540px', marginLeft: '14px' }"
title-background-color=
"rgba(206, 79, 81, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon1"
></div>
</
template
>
<div
class=
"item"
v-for=
"(item, index) in securityExpressList"
:key=
"index"
>
<span
class=
"itemLevel"
:class=
"levelMap[item.level].class"
>
{{ levelMap[item.level].text }}
</span>
<div
class=
"itemText"
>
{{ item.title }}
</div>
<span
class=
"itemTime"
>
{{ item.time }}
</span>
<span
class=
"itemFlag"
:style=
"{ backgroundImage: 'url(' + item.flag + ')' }"
></span>
</div>
</CardCustom>
</el-row>
<el-card
class=
"gap"
>
<el-row>
<PieProgress
v-for=
"item in List"
:data=
"item"
/>
</el-row>
</el-card>
<el-row
class=
"gap"
>
<CardCustom
@
more-click=
"moreClick"
title=
"科技动态"
:style=
"{ width: '792px', height: '360px' }"
title-background-color=
"rgba(10, 87, 166, 1)"
line-color=
"rgba(10, 87, 166, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon2"
></div>
</
template
>
<div
class=
"itemTrends"
v-for=
"(item, index) in trendsList"
:key=
"index"
>
<span
class=
"itemTrendsIcon"
>
</span>
<div
class=
"itemTrendsText"
>
{{ item.title }}
</div>
<span
class=
"itemTrendsTime"
>
{{ item.time }}
</span>
</div>
</CardCustom>
<CardCustom
@
more-click=
"moreClick"
title=
"科技政策"
:style=
"{ width: '792px', height: '360px', marginLeft: '16px' }"
title-background-color=
"rgba(10, 87, 166, 1)"
line-color=
"rgba(10, 87, 166, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon3"
></div>
</
template
>
<div
class=
"itemTrends"
v-for=
"(item, index) in policyList"
:key=
"index"
>
<span
class=
"itemTrendsIcon"
>
</span>
<div
class=
"itemTrendsText"
>
{{ item.title }}
</div>
<span
class=
"itemTrendsTime"
>
{{ item.time }}
</span>
</div>
</CardCustom>
</el-row>
<div
class=
"gap"
>
<el-row
class=
"cardContainer"
>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon1"
></span>
<div
class=
"itemCardTitle"
>
业务协同
</div>
</div>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon2"
></span>
<div
class=
"itemCardTitle"
>
专题研判
</div>
</div>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon3"
></span>
<div
class=
"itemCardTitle"
>
数据直报
</div>
</div>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon4"
></span>
<div
class=
"itemCardTitle"
>
专家库
</div>
</div>
</el-row>
</div>
<el-row
class=
"gap"
>
<CardCustom
@
more-click=
"moreClick"
title=
"最新报告"
:style=
"{ width: '1600px', height: '360px' }"
title-background-color=
"rgba(10, 87, 166, 1)"
line-color=
"rgba(10, 87, 166, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon4"
></div>
</
template
>
<
template
#
right
>
<div
class=
"moreWrap"
>
<el-button
text
@
click=
"moreClick"
:style=
"
{ marginLeft: '515px' }">
<span
class=
"moreText"
>
更多
</span>
<el-icon
:size=
"14"
>
<Plus
/>
</el-icon>
</el-button>
<el-button
text
@
click=
"moreClick"
>
<span
class=
"moreText"
>
换一批
</span>
<span
class=
"shuaxinIcon"
></span>
</el-button>
</div>
</
template
>
<el-row>
<div
:style=
"{ width: '750px' }"
>
<div
class=
"itemTrends"
v-for=
"(item, index) in policyList"
:key=
"index"
>
<span
class=
"itemTrendsIcon"
>
</span>
<div
class=
"itemTrendsText"
>
{{ item.title }}
</div>
<span
class=
"itemTrendsTime"
>
{{ item.time }}
</span>
</div>
</div>
<div
class=
"CardCustomRight"
>
<div
class=
"itemCard1"
v-for=
"item in 3"
>
<div
class=
"itemCard1Img"
>
<div
class=
"itemCard1Footer"
>
国内外技术创新合作模式探索与实践
</div>
</div>
</div>
</div>
</el-row>
</CardCustom>
</el-row>
<el-row
class=
"gap spaceBetween"
>
<el-card
v-for=
"(item, index) in catdList"
class=
"itemCard2"
:key=
"index"
>
<div
class=
"itemCard2Line"
:style=
"{ backgroundColor: item.bgColor }"
></div>
<div
class=
"itemCard2Container"
>
<div
class=
"itemCard2BigTextWrap"
:style=
"{ color: item.bgColor }"
>
{{ item.title }}
</div>
<div
class=
"itemCard2TextWrap"
v-for=
"(itemText, inde) in item.list"
:key=
"index"
>
<div
class=
"temCard2Title"
>
{{ itemText.title }}
</div>
<div
class=
"temCard2Text"
>
{{ itemText.text }}
</div>
</div>
</div>
</el-card>
</el-row>
</div>
</template>
<
script
setup
>
import
CardCustom
from
"./components/CardCustom.vue"
;
import
PieProgress
from
"./components/PieProgress.vue"
;
import
flag1
from
"./assets/img/flag1.png"
;
import
flag2
from
"./assets/img/flag2.png"
;
import
flag3
from
"./assets/img/flag3.png"
;
import
{
ref
}
from
"vue"
;
const
levelMap
=
{
L1
:
{
text
:
"特别重大"
,
class
:
"level1"
},
L2
:
{
text
:
"重大风险"
,
class
:
"level2"
},
L3
:
{
text
:
"一般风险"
,
class
:
"level3"
},
};
const
securityExpressList
=
ref
([
{
title
:
"美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实"
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag1
,
},
{
title
:
"美国加强对华AI芯片出口限制,考虑制..."
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag1
,
},
{
title
:
"日本出台《半导体材料出口管制令》..."
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag2
,
},
{
title
:
"日本对GAAFET技术、EUV光刻设备等..."
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag2
,
},
{
title
:
"欧盟签署协议限制高端AI芯片对华出口"
,
level
:
"L2"
,
time
:
"一天前"
,
flag
:
flag3
,
},
{
title
:
"欧盟第18轮制裁中首次将3家中资企业..."
,
level
:
"L2"
,
time
:
"一天前"
,
flag
:
flag3
,
},
{
title
:
"美国发布《保障信息和通信技术与服务..."
,
level
:
"L2"
,
time
:
"一天前"
,
flag
:
flag1
,
},
{
title
:
"日本将42家中国实体列入出口管制“..."
,
level
:
"L3"
,
time
:
"一天前"
,
flag
:
flag2
,
},
{
title
:
"美国政府放慢向英伟达和超威等芯片..."
,
level
:
"L3"
,
time
:
"一天前"
,
flag
:
flag1
,
},
{
title
:
"七国集团成员国就人工智能发表了以..."
,
level
:
"L3"
,
time
:
"一天前"
,
flag
:
flag3
,
},
]);
const
trendsList
=
ref
([
{
title
:
"韩研制用于存内计算的小型低功耗神经形态模块"
,
time
:
"08-16"
,
},
{
title
:
"中国科学院大学等在有机太阳能电池领域取得重要突破"
,
time
:
"08-16"
,
},
{
title
:
"德国于利希研究中心成功制造并实验验证全球首个二维半金属材料"
,
time
:
"08-16"
,
},
{
title
:
"浙江大学开发“女娲”AI模型,精准预测基因组调控序列"
,
time
:
"08-16"
,
},
{
title
:
"我国基于碳量子点材料制备出高效低成本有机太阳能电池"
,
time
:
"08-16"
,
},
{
title
:
"谷歌Gemini 2.5系列模型更新,实现高速推理与极致性价比"
,
time
:
"08-16"
,
},
{
title
:
"上海理工大学联合杜克大学在AI赋能仿生视觉技术领域实现突破"
,
time
:
"08-16"
,
},
]);
const
policyList
=
ref
([
{
title
:
"美国发布《2025财年国防授权法案》,拨款替换华为、中兴设备;禁止国防..."
,
time
:
"08-16"
,
},
{
title
:
"美国发布对华投资限制新规,限制美资在半导体、AI、量子技术等领域的对..."
,
time
:
"08-16"
,
},
{
title
:
"欧盟发布《网络弹性法案》(CRA),要求数字产品全生命周期安全合规,..."
,
time
:
"08-16"
,
},
{
title
:
"欧盟发布对外投资审查建议,要求成员国审查在半导体、AI、量子技术等领..."
,
time
:
"08-16"
,
},
{
title
:
"日本出台《半导体出口管制修正》加强对十余种半导体相关物项的出口管制..."
,
time
:
"08-16"
,
},
{
title
:
"日本拟出台“许可制”,限制外国留学生(特别提及中国)学习半导体、机..."
,
time
:
"08-16"
,
},
{
title
:
"日本通过并实施《经济安全保障推进法案》相关措施"
,
time
:
"08-16"
,
},
]);
const
List
=
ref
([
{
title
:
"当月/总数"
,
titleSub
:
"较上月+4"
,
progress
:
90
,
slope
:
"add"
,
total
:
8
,
current
:
7
,
},
{
title
:
"人工智能"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
26
,
current
:
3
,
},
{
title
:
"生物技术"
,
titleSub
:
"较上月+4"
,
progress
:
60
,
slope
:
"add"
,
total
:
13
,
current
:
3
,
},
{
title
:
"航空航天"
,
titleSub
:
"较上月+4"
,
progress
:
40
,
slope
:
"add"
,
total
:
15
,
current
:
3
,
},
{
title
:
"新一代信息技术"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
12
,
current
:
3
,
},
{
title
:
"量子科技"
,
titleSub
:
"较上月+4"
,
progress
:
20
,
slope
:
"add"
,
total
:
8
,
current
:
3
,
},
{
title
:
"新能源"
,
titleSub
:
"较上月+4"
,
progress
:
90
,
slope
:
"add"
,
total
:
18
,
current
:
3
,
},
{
title
:
"集成电路"
,
titleSub
:
"较上月+4"
,
progress
:
20
,
slope
:
"add"
,
total
:
16
,
current
:
3
,
},
{
title
:
"海洋"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
8
,
current
:
3
,
},
{
title
:
"先进制造"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
15
,
current
:
3
,
},
{
title
:
"新材料"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
8
,
current
:
3
,
},
]);
const
catdList
=
ref
([
{
title
:
"数据资源管理"
,
bgColor
:
"rgba(206, 79, 81, 1)"
,
list
:
[
{
title
:
"数据资源目录"
,
text
:
"平台各类数据资源汇总导航"
,
},
{
title
:
"数据统计分析"
,
text
:
"查看资源发布量、各部门资源注册情况"
,
},
{
title
:
"信息空间"
,
text
:
"对数据资源的全生命周期进行管理"
,
},
],
},
{
title
:
"信息发布与管理"
,
bgColor
:
"rgba(19, 168, 168, 1)"
,
list
:
[
{
title
:
"信息编辑"
,
text
:
"信息的内容导入、格式编辑"
,
},
{
title
:
"信息审核"
,
text
:
"发布前内容自动审核、词库屏蔽"
,
},
{
title
:
"信息发布"
,
text
:
"提供点到点以及点到面的消息发送"
,
},
],
},
{
title
:
"应用支撑平台"
,
bgColor
:
"rgba(250, 140, 22, 1)"
,
list
:
[
{
title
:
"应用功能目录"
,
text
:
"快速访问和使用系统功能"
,
},
{
title
:
"应用工具目录"
,
text
:
"各项应用工具的使用方法和应用场景"
,
},
{
title
:
"应用功能与工具管理"
,
text
:
"实现功能及工具快捷访问配置入口"
,
},
],
},
{
title
:
"后台服务管理"
,
bgColor
:
"rgba(10, 87, 166, 1)"
,
list
:
[
{
title
:
"界面配置管理"
,
text
:
"支持界面布局、样式定制化修改"
,
},
{
title
:
"数据接口管理"
,
text
:
"实现数据接口的访问调用、权限控制等"
,
},
{
title
:
"系统配置管理"
,
text
:
"支持各分系统配置的定制与调整"
,
},
],
},
]);
function
moreClick
(
n
)
{
alert
(
n
);
}
</
script
>
<
style
lang=
"scss"
scoped
>
.wrap
{
width
:
1600px
;
margin
:
30px
auto
;
}
.gap
{
margin-top
:
24px
;
}
.icon
{
width
:
24px
;
height
:
22px
;
background-size
:
contain
;
background-repeat
:
no-repeat
;
}
.icon1
{
background-image
:
url("./assets/img/icon1.png")
;
}
.icon2
{
background-image
:
url("./assets/img/icon2.png")
;
}
.icon3
{
background-image
:
url("./assets/img/icon3.png")
;
}
.icon4
{
background-image
:
url("./assets/img/icon4.png")
;
}
.item
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
margin-bottom
:
7px
;
}
.itemLevel
{
width
:
40px
;
height
:
40px
;
border-radius
:
20px
;
font-family
:
Microsoft
YaHei
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
14px
;
padding
:
6px
4px
;
text-align
:
center
;
margin-right
:
5px
;
}
.itemTime
{
color
:
rgba
(
132
,
136
,
142
,
1
);
}
.itemFlag
{
width
:
20px
;
height
:
20px
;
background-size
:
cover
;
background-repeat
:
no-repeat
;
margin-left
:
10px
;
}
.itemTrends
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
margin-bottom
:
20px
;
}
.itemTrendsIcon
{
width
:
4px
;
height
:
4px
;
background-color
:
rgba
(
206
,
79
,
81
,
1
);
border-radius
:
50%
;
margin-right
:
14px
;
margin-left
:
20px
;
}
.itemTrendsText
{
flex
:
1
;
}
.itemTrendsTime
{
margin-right
:
6px
;
}
.level1
{
background
:
rgb
(
255
,
241
,
240
);
color
:
rgb
(
245
,
34
,
45
);
}
.level2
{
color
:
rgb
(
250
,
140
,
22
);
background
:
rgb
(
255
,
247
,
230
);
}
.level3
{
color
:
rgb
(
82
,
196
,
26
);
background
:
rgb
(
246
,
255
,
237
);
}
.itemText
{
flex
:
1
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.cardContainer
{
justify-content
:
space-between
;
}
.itemCardWrap
{
width
:
400px
;
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
}
.itemCard
{
width
:
388px
;
height
:
80px
;
border-radius
:
4px
;
background-image
:
url("./assets/img/cardBg.png")
;
background-size
:
cover
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
.itemCardIcon
{
width
:
30px
;
height
:
30px
;
background-size
:
contain
;
margin-right
:
7px
;
}
.itemCardIcon1
{
background-image
:
url("./assets/img/cardIcon1.png")
;
}
.itemCardIcon2
{
background-image
:
url("./assets/img/cardIcon2.png")
;
}
.itemCardIcon3
{
background-image
:
url("./assets/img/cardIcon3.png")
;
}
.itemCardIcon4
{
background-image
:
url("./assets/img/cardIcon4.png")
;
}
.itemCardTitle
{
font-size
:
24px
;
font-weight
:
700
;
color
:
#ffffff
;
}
}
.moreWrap
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
font-size
:
16px
;
height
:
100%
;
padding-left
:
10px
;
padding-right
:
10px
;
flex
:
1
;
.moreText
{
margin-right
:
3px
;
}
.shuaxinIcon
{
width
:
16px
;
height
:
16px
;
background-image
:
url("./assets/img/shuaxin.png")
;
background-size
:
contain
;
}
}
.CardCustomRight
{
flex
:
1
;
padding-left
:
50px
;
padding-right
:
50px
;
margin-left
:
30px
;
display
:
flex
;
justify-content
:
space-between
;
}
.itemCard1
{
.itemCard1Img
{
position
:
relative
;
width
:
204px
;
height
:
266px
;
background-image
:
url("./assets/img/book.png")
;
background-size
:
contain
;
.itemCard1Footer
{
position
:
absolute
;
left
:
0
;
bottom
:
0
;
width
:
204px
;
height
:
64px
;
padding
:
10px
;
background-color
:
#000
;
color
:
#fff
;
}
}
}
.spaceBetween
{
justify-content
:
space-between
;
}
.itemCard2
{
width
:
388px
;
height
:
360px
;
position
:
relative
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
:deep
(
.el-card__body
)
{
padding-top
:
0
;
}
.itemCard2Line
{
/* 矩形 214 */
width
:
320px
;
height
:
4px
;
background-color
:
rgba
(
206
,
79
,
81
,
1
);
position
:
absolute
;
top
:
0
;
left
:
34px
;
}
.itemCard2Container
{
width
:
320px
;
height
:
360px
;
.itemCard2BigTextWrap
{
color
:
rgba
(
206
,
79
,
81
,
1
);
font-size
:
24px
;
font-weight
:
700
;
height
:
83px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
border-bottom
:
1px
solid
#ddd
;
}
.itemCard2TextWrap
{
height
:
83px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
border-bottom
:
1px
solid
#ddd
;
}
.temCard2Title
{
color
:
rgba
(
59
,
65
,
75
,
1
);
font-size
:
20px
;
font-weight
:
700
;
}
.temCard2Text
{
color
:
rgba
(
95
,
101
,
108
,
1
);
font-size
:
16px
;
font-weight
:
400
;
}
}
}
</
style
>
src/views/portals/portal1/index.vue
0 → 100644
浏览文件 @
367c86e4
<
template
>
<div
class=
"wrap"
>
<el-row>
<CardCustom
@
more-click=
"moreClick"
title=
"风险信号"
:style=
"
{ width: '986px', height: '540px' }"
title-background-color="rgba(206, 79, 81, 1)"
>
<template
#
icon
>
<div
class=
"icon icon1"
></div>
</
template
>
</CardCustom>
<CardCustom
@
more-click=
"moreClick"
title=
"安全速递"
:style=
"{ width: '600px', height: '540px', marginLeft: '14px' }"
title-background-color=
"rgba(206, 79, 81, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon1"
></div>
</
template
>
<div
class=
"item"
v-for=
"(item, index) in securityExpressList"
:key=
"index"
>
<span
class=
"itemLevel"
:class=
"levelMap[item.level].class"
>
{{ levelMap[item.level].text }}
</span>
<div
class=
"itemText"
>
{{ item.title }}
</div>
<span
class=
"itemTime"
>
{{ item.time }}
</span>
<span
class=
"itemFlag"
:style=
"{ backgroundImage: 'url(' + item.flag + ')' }"
></span>
</div>
</CardCustom>
</el-row>
<el-card
class=
"gap"
>
<el-row>
<PieProgress
v-for=
"item in List"
:data=
"item"
/>
</el-row>
</el-card>
<el-row
class=
"gap"
>
<CardCustom
@
more-click=
"moreClick"
title=
"科技动态"
:style=
"{ width: '792px', height: '360px' }"
title-background-color=
"rgba(10, 87, 166, 1)"
line-color=
"rgba(10, 87, 166, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon2"
></div>
</
template
>
<div
class=
"itemTrends"
v-for=
"(item, index) in trendsList"
:key=
"index"
>
<span
class=
"itemTrendsIcon"
>
</span>
<div
class=
"itemTrendsText"
>
{{ item.title }}
</div>
<span
class=
"itemTrendsTime"
>
{{ item.time }}
</span>
</div>
</CardCustom>
<CardCustom
@
more-click=
"moreClick"
title=
"科技政策"
:style=
"{ width: '792px', height: '360px', marginLeft: '16px' }"
title-background-color=
"rgba(10, 87, 166, 1)"
line-color=
"rgba(10, 87, 166, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon3"
></div>
</
template
>
<div
class=
"itemTrends"
v-for=
"(item, index) in policyList"
:key=
"index"
>
<span
class=
"itemTrendsIcon"
>
</span>
<div
class=
"itemTrendsText"
>
{{ item.title }}
</div>
<span
class=
"itemTrendsTime"
>
{{ item.time }}
</span>
</div>
</CardCustom>
</el-row>
<div
class=
"gap"
>
<el-row
class=
"cardContainer"
>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon1"
></span>
<div
class=
"itemCardTitle"
>
业务协同
</div>
</div>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon2"
></span>
<div
class=
"itemCardTitle"
>
专题研判
</div>
</div>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon3"
></span>
<div
class=
"itemCardTitle"
>
数据直报
</div>
</div>
<div
class=
"itemCard"
>
<span
class=
"itemCardIcon itemCardIcon4"
></span>
<div
class=
"itemCardTitle"
>
专家库
</div>
</div>
</el-row>
</div>
<el-row
class=
"gap"
>
<CardCustom
@
more-click=
"moreClick"
title=
"最新报告"
:style=
"{ width: '1600px', height: '360px' }"
title-background-color=
"rgba(10, 87, 166, 1)"
line-color=
"rgba(10, 87, 166, 1)"
>
<
template
#
icon
>
<div
class=
"icon icon4"
></div>
</
template
>
<
template
#
right
>
<div
class=
"moreWrap"
>
<el-button
text
@
click=
"moreClick"
:style=
"
{ marginLeft: '515px' }">
<span
class=
"moreText"
>
更多
</span>
<el-icon
:size=
"14"
>
<Plus
/>
</el-icon>
</el-button>
<el-button
text
@
click=
"moreClick"
>
<span
class=
"moreText"
>
换一批
</span>
<span
class=
"shuaxinIcon"
></span>
</el-button>
</div>
</
template
>
<el-row>
<div
:style=
"{ width: '750px' }"
>
<div
class=
"itemTrends"
v-for=
"(item, index) in policyList"
:key=
"index"
>
<span
class=
"itemTrendsIcon"
>
</span>
<div
class=
"itemTrendsText"
>
{{ item.title }}
</div>
<span
class=
"itemTrendsTime"
>
{{ item.time }}
</span>
</div>
</div>
<div
class=
"CardCustomRight"
>
<div
class=
"itemCard1"
v-for=
"item in 3"
>
<div
class=
"itemCard1Img"
>
<div
class=
"itemCard1Footer"
>
国内外技术创新合作模式探索与实践
</div>
</div>
</div>
</div>
</el-row>
</CardCustom>
</el-row>
<el-row
class=
"gap spaceBetween"
>
<el-card
v-for=
"(item, index) in catdList"
class=
"itemCard2"
:key=
"index"
>
<div
class=
"itemCard2Line"
:style=
"{ backgroundColor: item.bgColor }"
></div>
<div
class=
"itemCard2Container"
>
<div
class=
"itemCard2BigTextWrap"
:style=
"{ color: item.bgColor }"
>
{{ item.title }}
</div>
<div
class=
"itemCard2TextWrap"
v-for=
"(itemText, inde) in item.list"
:key=
"index"
>
<div
class=
"temCard2Title"
>
{{ itemText.title }}
</div>
<div
class=
"temCard2Text"
>
{{ itemText.text }}
</div>
</div>
</div>
</el-card>
</el-row>
</div>
</template>
<
script
setup
>
import
CardCustom
from
"../components/CardCustom.vue"
;
import
PieProgress
from
"../components/PieProgress.vue"
;
import
flag1
from
"../assets/img/flag1.png"
;
import
flag2
from
"../assets/img/flag2.png"
;
import
flag3
from
"../assets/img/flag3.png"
;
import
{
ref
}
from
"vue"
;
const
levelMap
=
{
L1
:
{
text
:
"特别重大"
,
class
:
"level1"
},
L2
:
{
text
:
"重大风险"
,
class
:
"level2"
},
L3
:
{
text
:
"一般风险"
,
class
:
"level3"
}
};
const
securityExpressList
=
ref
([
{
title
:
"美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实美国新增出口管制,52家中国科技实"
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag1
},
{
title
:
"美国加强对华AI芯片出口限制,考虑制..."
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag1
},
{
title
:
"日本出台《半导体材料出口管制令》..."
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag2
},
{
title
:
"日本对GAAFET技术、EUV光刻设备等..."
,
level
:
"L1"
,
time
:
"一天前"
,
flag
:
flag2
},
{
title
:
"欧盟签署协议限制高端AI芯片对华出口"
,
level
:
"L2"
,
time
:
"一天前"
,
flag
:
flag3
},
{
title
:
"欧盟第18轮制裁中首次将3家中资企业..."
,
level
:
"L2"
,
time
:
"一天前"
,
flag
:
flag3
},
{
title
:
"美国发布《保障信息和通信技术与服务..."
,
level
:
"L2"
,
time
:
"一天前"
,
flag
:
flag1
},
{
title
:
"日本将42家中国实体列入出口管制“..."
,
level
:
"L3"
,
time
:
"一天前"
,
flag
:
flag2
},
{
title
:
"美国政府放慢向英伟达和超威等芯片..."
,
level
:
"L3"
,
time
:
"一天前"
,
flag
:
flag1
},
{
title
:
"七国集团成员国就人工智能发表了以..."
,
level
:
"L3"
,
time
:
"一天前"
,
flag
:
flag3
}
]);
const
trendsList
=
ref
([
{
title
:
"韩研制用于存内计算的小型低功耗神经形态模块"
,
time
:
"08-16"
},
{
title
:
"中国科学院大学等在有机太阳能电池领域取得重要突破"
,
time
:
"08-16"
},
{
title
:
"德国于利希研究中心成功制造并实验验证全球首个二维半金属材料"
,
time
:
"08-16"
},
{
title
:
"浙江大学开发“女娲”AI模型,精准预测基因组调控序列"
,
time
:
"08-16"
},
{
title
:
"我国基于碳量子点材料制备出高效低成本有机太阳能电池"
,
time
:
"08-16"
},
{
title
:
"谷歌Gemini 2.5系列模型更新,实现高速推理与极致性价比"
,
time
:
"08-16"
},
{
title
:
"上海理工大学联合杜克大学在AI赋能仿生视觉技术领域实现突破"
,
time
:
"08-16"
}
]);
const
policyList
=
ref
([
{
title
:
"美国发布《2025财年国防授权法案》,拨款替换华为、中兴设备;禁止国防..."
,
time
:
"08-16"
},
{
title
:
"美国发布对华投资限制新规,限制美资在半导体、AI、量子技术等领域的对..."
,
time
:
"08-16"
},
{
title
:
"欧盟发布《网络弹性法案》(CRA),要求数字产品全生命周期安全合规,..."
,
time
:
"08-16"
},
{
title
:
"欧盟发布对外投资审查建议,要求成员国审查在半导体、AI、量子技术等领..."
,
time
:
"08-16"
},
{
title
:
"日本出台《半导体出口管制修正》加强对十余种半导体相关物项的出口管制..."
,
time
:
"08-16"
},
{
title
:
"日本拟出台“许可制”,限制外国留学生(特别提及中国)学习半导体、机..."
,
time
:
"08-16"
},
{
title
:
"日本通过并实施《经济安全保障推进法案》相关措施"
,
time
:
"08-16"
}
]);
const
List
=
ref
([
{
title
:
"当月/总数"
,
titleSub
:
"较上月+4"
,
progress
:
90
,
slope
:
"add"
,
total
:
8
,
current
:
7
},
{
title
:
"人工智能"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
26
,
current
:
3
},
{
title
:
"生物技术"
,
titleSub
:
"较上月+4"
,
progress
:
60
,
slope
:
"add"
,
total
:
13
,
current
:
3
},
{
title
:
"航空航天"
,
titleSub
:
"较上月+4"
,
progress
:
40
,
slope
:
"add"
,
total
:
15
,
current
:
3
},
{
title
:
"新一代信息技术"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
12
,
current
:
3
},
{
title
:
"量子科技"
,
titleSub
:
"较上月+4"
,
progress
:
20
,
slope
:
"add"
,
total
:
8
,
current
:
3
},
{
title
:
"新能源"
,
titleSub
:
"较上月+4"
,
progress
:
90
,
slope
:
"add"
,
total
:
18
,
current
:
3
},
{
title
:
"集成电路"
,
titleSub
:
"较上月+4"
,
progress
:
20
,
slope
:
"add"
,
total
:
16
,
current
:
3
},
{
title
:
"海洋"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
8
,
current
:
3
},
{
title
:
"先进制造"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
15
,
current
:
3
},
{
title
:
"新材料"
,
titleSub
:
"较上月+4"
,
progress
:
50
,
slope
:
"add"
,
total
:
8
,
current
:
3
}
]);
const
catdList
=
ref
([
{
title
:
"数据资源管理"
,
bgColor
:
"rgba(206, 79, 81, 1)"
,
list
:
[
{
title
:
"数据资源目录"
,
text
:
"平台各类数据资源汇总导航"
},
{
title
:
"数据统计分析"
,
text
:
"查看资源发布量、各部门资源注册情况"
},
{
title
:
"信息空间"
,
text
:
"对数据资源的全生命周期进行管理"
}
]
},
{
title
:
"信息发布与管理"
,
bgColor
:
"rgba(19, 168, 168, 1)"
,
list
:
[
{
title
:
"信息编辑"
,
text
:
"信息的内容导入、格式编辑"
},
{
title
:
"信息审核"
,
text
:
"发布前内容自动审核、词库屏蔽"
},
{
title
:
"信息发布"
,
text
:
"提供点到点以及点到面的消息发送"
}
]
},
{
title
:
"应用支撑平台"
,
bgColor
:
"rgba(250, 140, 22, 1)"
,
list
:
[
{
title
:
"应用功能目录"
,
text
:
"快速访问和使用系统功能"
},
{
title
:
"应用工具目录"
,
text
:
"各项应用工具的使用方法和应用场景"
},
{
title
:
"应用功能与工具管理"
,
text
:
"实现功能及工具快捷访问配置入口"
}
]
},
{
title
:
"后台服务管理"
,
bgColor
:
"rgba(10, 87, 166, 1)"
,
list
:
[
{
title
:
"界面配置管理"
,
text
:
"支持界面布局、样式定制化修改"
},
{
title
:
"数据接口管理"
,
text
:
"实现数据接口的访问调用、权限控制等"
},
{
title
:
"系统配置管理"
,
text
:
"支持各分系统配置的定制与调整"
}
]
}
]);
function
moreClick
(
n
)
{
alert
(
n
);
}
</
script
>
<
style
lang=
"scss"
scoped
>
.wrap
{
width
:
1600px
;
margin
:
30px
auto
;
}
.gap
{
margin-top
:
24px
;
}
.icon
{
width
:
24px
;
height
:
22px
;
background-size
:
contain
;
background-repeat
:
no-repeat
;
}
.icon1
{
background-image
:
url("../assets/img/icon1.png")
;
}
.icon2
{
background-image
:
url("../assets/img/icon2.png")
;
}
.icon3
{
background-image
:
url("../assets/img/icon3.png")
;
}
.icon4
{
background-image
:
url("../assets/img/icon4.png")
;
}
.item
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
margin-bottom
:
7px
;
}
.itemLevel
{
width
:
40px
;
height
:
40px
;
border-radius
:
20px
;
font-family
:
Microsoft
YaHei
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
14px
;
padding
:
6px
4px
;
text-align
:
center
;
margin-right
:
5px
;
}
.itemTime
{
color
:
rgba
(
132
,
136
,
142
,
1
);
}
.itemFlag
{
width
:
20px
;
height
:
20px
;
background-size
:
cover
;
background-repeat
:
no-repeat
;
margin-left
:
10px
;
}
.itemTrends
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
margin-bottom
:
20px
;
}
.itemTrendsIcon
{
width
:
4px
;
height
:
4px
;
background-color
:
rgba
(
206
,
79
,
81
,
1
);
border-radius
:
50%
;
margin-right
:
14px
;
margin-left
:
20px
;
}
.itemTrendsText
{
flex
:
1
;
}
.itemTrendsTime
{
margin-right
:
6px
;
}
.level1
{
background
:
rgb
(
255
,
241
,
240
);
color
:
rgb
(
245
,
34
,
45
);
}
.level2
{
color
:
rgb
(
250
,
140
,
22
);
background
:
rgb
(
255
,
247
,
230
);
}
.level3
{
color
:
rgb
(
82
,
196
,
26
);
background
:
rgb
(
246
,
255
,
237
);
}
.itemText
{
flex
:
1
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.cardContainer
{
justify-content
:
space-between
;
}
.itemCardWrap
{
width
:
400px
;
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
}
.itemCard
{
width
:
388px
;
height
:
80px
;
border-radius
:
4px
;
background-image
:
url("../assets/img/cardBg.png")
;
background-size
:
cover
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
.itemCardIcon
{
width
:
30px
;
height
:
30px
;
background-size
:
contain
;
margin-right
:
7px
;
}
.itemCardIcon1
{
background-image
:
url("../assets/img/cardIcon1.png")
;
}
.itemCardIcon2
{
background-image
:
url("../assets/img/cardIcon2.png")
;
}
.itemCardIcon3
{
background-image
:
url("../assets/img/cardIcon3.png")
;
}
.itemCardIcon4
{
background-image
:
url("../assets/img/cardIcon4.png")
;
}
.itemCardTitle
{
font-size
:
24px
;
font-weight
:
700
;
color
:
#ffffff
;
}
}
.moreWrap
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
font-size
:
16px
;
height
:
100%
;
padding-left
:
10px
;
padding-right
:
10px
;
flex
:
1
;
.moreText
{
margin-right
:
3px
;
}
.shuaxinIcon
{
width
:
16px
;
height
:
16px
;
background-image
:
url("../assets/img/shuaxin.png")
;
background-size
:
contain
;
}
}
.CardCustomRight
{
flex
:
1
;
padding-left
:
50px
;
padding-right
:
50px
;
margin-left
:
30px
;
display
:
flex
;
justify-content
:
space-between
;
}
.itemCard1
{
.itemCard1Img
{
position
:
relative
;
width
:
204px
;
height
:
266px
;
background-image
:
url("../assets/img/book.png")
;
background-size
:
contain
;
.itemCard1Footer
{
position
:
absolute
;
left
:
0
;
bottom
:
0
;
width
:
204px
;
height
:
64px
;
padding
:
10px
;
background-color
:
#000
;
color
:
#fff
;
}
}
}
.spaceBetween
{
justify-content
:
space-between
;
}
.itemCard2
{
width
:
388px
;
height
:
360px
;
position
:
relative
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
:deep
(
.el-card__body
)
{
padding-top
:
0
;
}
.itemCard2Line
{
/* 矩形 214 */
width
:
320px
;
height
:
4px
;
background-color
:
rgba
(
206
,
79
,
81
,
1
);
position
:
absolute
;
top
:
0
;
left
:
34px
;
}
.itemCard2Container
{
width
:
320px
;
height
:
360px
;
.itemCard2BigTextWrap
{
color
:
rgba
(
206
,
79
,
81
,
1
);
font-size
:
24px
;
font-weight
:
700
;
height
:
83px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
border-bottom
:
1px
solid
#ddd
;
}
.itemCard2TextWrap
{
height
:
83px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
border-bottom
:
1px
solid
#ddd
;
}
.temCard2Title
{
color
:
rgba
(
59
,
65
,
75
,
1
);
font-size
:
20px
;
font-weight
:
700
;
}
.temCard2Text
{
color
:
rgba
(
95
,
101
,
108
,
1
);
font-size
:
16px
;
font-weight
:
400
;
}
}
}
</
style
>
src/views/portals/portal2/index.vue
0 → 100644
浏览文件 @
367c86e4
<
template
>
<div
class=
"wrap"
>
<el-row>
<CardCustom
title=
"热门数据"
title-text-align=
"left"
title-color=
"rgba(10, 87, 166, 1)"
:style=
"
{ width: '520px', height: '459px' }"
title-background-color="rgba(255, 255, 255, 1)"
header-height="53px"
>
<template
#
icon
>
<div
class=
"icon icon5"
></div>
</
template
>
<
template
#
right
>
<div></div>
</
template
>
<div
class=
"item"
v-for=
"(item, index) in List"
:key=
"index"
>
<span
class=
"itemNumber"
:style=
"{ color: getColor(index) }"
>
{{ index + 1 }}
</span>
<div
class=
"itemText"
>
{{ item.title }}
</div>
<span
class=
"itemClass"
>
{{ item.class }}
</span>
</div>
</CardCustom>
<CardCustom
title=
"数据分布"
title-text-align=
"left"
title-color=
"rgba(10, 87, 166, 1)"
:style=
"{ width: '1064px', height: '459px', marginLeft: '16px' }"
title-background-color=
"rgba(255, 255, 255, 1)"
header-height=
"53px"
>
<
template
#
icon
>
<div
class=
"icon icon3"
></div>
</
template
>
<
template
#
right
>
<div></div>
</
template
>
</CardCustom>
</el-row>
<div
class=
"gap"
>
<el-row
class=
"cardContainer"
>
<div
class=
"itemCard"
>
<div
class=
"itemCardTitle"
>
科研学术
</div>
<div
class=
"itemCardNumber"
>
2465
</div>
</div>
</el-row>
</div>
</div>
</template>
<
script
setup
>
import
CardCustom
from
"../components/CardCustom.vue"
;
import
{
ref
}
from
"vue"
;
function
getColor
(
index
)
{
const
mapColor
=
[
"rgba(206, 79, 81, 1)"
,
"rgba(255, 169, 64, 1)"
,
"rgba(255, 197, 61, 1)"
];
let
color
=
mapColor
[
index
];
return
color
||
"transparent"
;
}
const
List
=
ref
([
{
title
:
"H.R.1-119th-大而美法案"
,
class
:
"科技法案"
},
{
title
:
"欧盟单方面宣布对中国电动汽车加征反补贴..."
,
class
:
"媒体报道"
},
{
title
:
"禁止在中国建设半导体产能"
,
class
:
"总统政令"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
},
{
title
:
"2025年实体清单"
,
class
:
"实体清单"
}
]);
</
script
>
<
style
lang=
"scss"
scoped
>
.wrap
{
width
:
1600px
;
margin
:
30px
auto
;
}
.gap
{
margin-top
:
24px
;
}
.icon
{
width
:
18px
;
height
:
18px
;
background-size
:
contain
;
background-repeat
:
no-repeat
;
}
.icon3
{
background-image
:
url("../assets/img/icon3.png")
;
}
.icon5
{
background-image
:
url("../assets/img/icon5.png")
;
}
.item
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
margin-top
:
7px
;
}
.itemNumber
{
width
:
40px
;
}
.itemText
{
flex
:
1
;
}
.itemClass
{
color
:
rgba
(
132
,
136
,
142
,
1
);
}
.cardContainer
{
justify-content
:
space-between
;
}
.itemCard
{
/* 容器 245 */
width
:
186px
;
height
:
80px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
border-radius
:
4px
;
}
.itemCardTitle
{
font-size
:
20px
;
font-weight
:
700
;
}
.itemCardNumber
{
margin-top
:
5px
;
font-size
:
16px
;
}
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论