Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
881c314b
提交
881c314b
authored
4月 20, 2026
作者:
朱政
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:风险信号、用户管理、合作限制前端bug修改
上级
442de840
流水线
#547
已通过 于阶段
in 1 分 42 秒
变更
13
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
580 行增加
和
331 行删除
+580
-331
risk-signal-overview-detail-dialog.scss
...rviewDetailDialog/risk-signal-overview-detail-dialog.scss
+23
-1
index.vue
src/components/base/moduleHeader/index.vue
+30
-20
index.vue
src/components/base/riskSignal/index.vue
+8
-3
riskSignalOverviewDetailHelpers.js
src/utils/riskSignalOverviewDetailHelpers.js
+4
-4
index.vue
src/views/coopRestriction/components/dataSub/index.vue
+43
-46
index.vue
src/views/coopRestriction/components/resLib/index.vue
+56
-32
index.vue
src/views/coopRestriction/detail/index.vue
+19
-5
index.vue
src/views/coopRestriction/index.vue
+1
-0
index.vue
src/views/ruleRestriction/detail/index.vue
+294
-185
danger.svg
src/views/viewRiskSignal/assets/images/danger.svg
+5
-0
warning.svg
src/views/viewRiskSignal/assets/images/warning.svg
+9
-0
index.vue
src/views/viewRiskSignal/index.vue
+87
-34
cleandarHeat.js
src/views/viewRiskSignal/utils/cleandarHeat.js
+1
-1
没有找到文件。
src/components/base/RiskSignalOverviewDetailDialog/risk-signal-overview-detail-dialog.scss
浏览文件 @
881c314b
...
@@ -132,6 +132,28 @@
...
@@ -132,6 +132,28 @@
position
:
relative
;
position
:
relative
;
}
}
.risk-signal-detail-dialog
.el-dialog__headerbtn
{
top
:
11px
!
important
;
right
:
16px
!
important
;
width
:
32px
!
important
;
height
:
32px
!
important
;
display
:
inline-flex
;
align-items
:
center
;
justify-content
:
center
;
}
.risk-signal-detail-dialog
.el-dialog__headerbtn
.el-dialog__close
{
width
:
16px
;
height
:
16px
;
color
:
rgb
(
59
,
65
,
75
)
!
important
;
}
.risk-signal-detail-dialog
.el-dialog__headerbtn
.el-dialog__close
svg
,
.risk-signal-detail-dialog
.el-dialog__headerbtn
.el-dialog__close
svg
path
{
fill
:
rgb
(
59
,
65
,
75
)
!
important
;
stroke
:
rgb
(
59
,
65
,
75
)
!
important
;
}
.
risk-signal-detail-dialog
.
el-dialog__header
:
:
after
{
.
risk-signal-detail-dialog
.
el-dialog__header
:
:
after
{
content
:
""
;
content
:
""
;
position
:
absolute
;
position
:
absolute
;
...
@@ -234,7 +256,7 @@
...
@@ -234,7 +256,7 @@
.risk-signal-detail-dialog
.risk-signal-detail-dialog__read-indicator
{
.risk-signal-detail-dialog
.risk-signal-detail-dialog__read-indicator
{
position
:
absolute
;
position
:
absolute
;
right
:
115
px
;
right
:
61
px
;
top
:
50%
;
top
:
50%
;
transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
display
:
inline-flex
;
display
:
inline-flex
;
...
...
src/components/base/moduleHeader/index.vue
浏览文件 @
881c314b
<
template
>
<
template
>
<div
class=
"module-header-wrapper"
>
<div
class=
"module-header-wrapper"
@
mouseleave=
"handleHideUserPanel"
>
<div
class=
"nav-content"
:class=
"
{ 'nav-content-library': isShowDataLibrary }">
<div
class=
"nav-content"
:class=
"
{ 'nav-content-library': isShowDataLibrary }">
<div
class=
"nav-left"
:class=
"
{ 'flex-start': isShowSearchBar }">
<div
class=
"nav-left"
:class=
"
{ 'flex-start': isShowSearchBar }">
<div
class=
"icon"
>
<div
class=
"icon"
>
...
@@ -24,31 +24,31 @@
...
@@ -24,31 +24,31 @@
<div
class=
"mail"
@
click=
"handleClickToolBox"
>
<div
class=
"mail"
@
click=
"handleClickToolBox"
>
<img
src=
"@/assets/icons/overview/mail.png"
alt=
""
/>
<img
src=
"@/assets/icons/overview/mail.png"
alt=
""
/>
</div>
</div>
<div
class=
"user-trigger"
>
<div
class=
"user-trigger"
@
mouseenter=
"handleShowUserPanel"
>
<div
class=
"user"
@
click
.
stop
=
"handleToggleUserPanel"
>
<div
class=
"user"
@
click
.
stop
>
<img
src=
"@/assets/icons/overview/user.png"
alt=
""
/>
<img
src=
"@/assets/icons/overview/user.png"
alt=
""
/>
</div>
</div>
</div
>
<div
v-if=
"isShowUserPanel"
class=
"user-panel"
>
<div
v-if=
"isShowUserPanel"
class=
"user-panel"
>
<div
class=
"user-panel-row"
>
<div
class=
"user-panel-row"
>
<div
class=
"blue-solid"
></div
>
<div
class=
"blue-solid"
></div
>
<span
class=
"user-panel-value user-panel-value--nickname"
>
{{
userNickname
}}
</span
>
<span
class=
"user-panel-value user-panel-value--nickname"
>
{{
userNickname
}}
</span
>
<div
class=
"role-box"
>
<div
class=
"role-box"
>
<span
class=
"user-panel-value user-panel-value--role"
>
{{
roleName
}}
</span
>
<
span
class=
"user-panel-value user-panel-value--role"
>
{{
roleName
}}
</span
>
<
/div
>
</div>
</div>
</div>
<div
class=
"user-panel-row user-panel-row--single"
>
<div
class=
"user-panel-row user-panel-row--single"
>
<span
class=
"user-panel-value user-panel-value--organ"
>
{{
organName
}}
</span>
<span
class=
"user-panel-value user-panel-value--organ"
>
{{
organName
}}
</span>
</div>
</div>
<div
class=
"solid"
></div>
<div
class=
"solid"
></div>
<div
class=
"user-panel-logout"
@
click
.
stop=
"handleUserCommand('logout')"
><img
src=
"./back.png"
<div
class=
"user-panel-logout"
@
click
.
stop=
"handleUserCommand('logout')"
><img
src=
"./back.png"
class=
"back-image"
/>
{{
"退出登录"
}}
class=
"back-image"
/>
{{
"退出登录"
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -404,8 +404,8 @@ const handleClickToolBox = () => {
...
@@ -404,8 +404,8 @@ const handleClickToolBox = () => {
ElMessage
.
warning
(
"当前功能正在开发中,敬请期待!"
);
ElMessage
.
warning
(
"当前功能正在开发中,敬请期待!"
);
};
};
const
handle
Toggle
UserPanel
=
()
=>
{
const
handle
Show
UserPanel
=
()
=>
{
isShowUserPanel
.
value
=
!
isShowUserPanel
.
val
ue
;
isShowUserPanel
.
value
=
tr
ue
;
};
};
const
handleHideUserPanel
=
()
=>
{
const
handleHideUserPanel
=
()
=>
{
...
@@ -662,10 +662,13 @@ onMounted(() => {
...
@@ -662,10 +662,13 @@ onMounted(() => {
top
:
calc
(
32px
+
21px
);
top
:
calc
(
32px
+
21px
);
width
:
240px
;
width
:
240px
;
height
:
141px
;
height
:
141px
;
// 与“中美科技博弈”下方菜单框(.menu-box)保持一致的透明/模糊效果
background
:
rgba
(
255
,
255
,
255
,
0
.8
);
background
:
rgba
(
255
,
255
,
255
,
0
.8
);
border
:
1px
solid
rgba
(
255
,
255
,
255
,
1
);
border
:
1px
solid
rgba
(
255
,
255
,
255
,
1
);
border-radius
:
10px
;
border-radius
:
10px
;
backdrop-filter
:
blur
(
30px
);
-webkit-backdrop-filter
:
blur
(
30px
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
...
@@ -785,6 +788,13 @@ onMounted(() => {
...
@@ -785,6 +788,13 @@ onMounted(() => {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
margin-left
:
8px
;
margin-left
:
8px
;
transition
:
color
0
.15s
ease
,
font-size
0
.15s
ease
,
font-weight
0
.15s
ease
;
&
:hover
{
color
:
var
(
--
color-main-active
);
font-size
:
18px
;
font-weight
:
700
;
}
.back-image
{
.back-image
{
width
:
16px
;
width
:
16px
;
...
...
src/components/base/riskSignal/index.vue
浏览文件 @
881c314b
...
@@ -12,14 +12,14 @@
...
@@ -12,14 +12,14 @@
<div
class=
"box2-main"
>
<div
class=
"box2-main"
>
<div
class=
"box2-main-item"
v-for=
"(item, index) in showRiskSignalList"
:key=
"index"
@
click=
"handleItemClick(item, index)"
>
<div
class=
"box2-main-item"
v-for=
"(item, index) in showRiskSignalList"
:key=
"index"
@
click=
"handleItemClick(item, index)"
>
<div
:class=
"
{
<div
v-if=
"!isRiskLevelNoData(item?.[props.riskLevel])"
:class=
"
{
itemLeftStatus1: item[props.riskLevel] === '特别重大',
itemLeftStatus1: item[props.riskLevel] === '特别重大',
itemLeftStatus2: item[props.riskLevel] === '重大风险',
itemLeftStatus2: item[props.riskLevel] === '重大风险',
itemLeftStatus3: item[props.riskLevel] === '较大风险',
itemLeftStatus3: item[props.riskLevel] === '较大风险',
itemLeftStatus4: item[props.riskLevel] === '一般风险'
|| !item[props.riskLevel]
,
itemLeftStatus4: item[props.riskLevel] === '一般风险',
itemLeftStatus5: item[props.riskLevel] === '低风险',
itemLeftStatus5: item[props.riskLevel] === '低风险',
}">
}">
{{
item
[
props
.
riskLevel
]
||
"暂无数据"
}}
{{
item
[
props
.
riskLevel
]
}}
</div>
</div>
<div
class=
"item-right"
>
<div
class=
"item-right"
>
<div
class=
"text"
>
<span
class=
"text-inner"
>
{{
item
[
props
.
name
]
}}
</span></div>
<div
class=
"text"
>
<span
class=
"text-inner"
>
{{
item
[
props
.
name
]
}}
</span></div>
...
@@ -76,6 +76,11 @@ const props = defineProps({
...
@@ -76,6 +76,11 @@ const props = defineProps({
});
});
const
isRiskLevelNoData
=
(
level
)
=>
{
const
t
=
String
(
level
??
""
).
trim
();
return
!
t
||
t
===
"暂无数据"
||
t
===
"暂无数值"
;
};
const
showRiskSignalList
=
computed
(()
=>
{
const
showRiskSignalList
=
computed
(()
=>
{
return
props
.
list
.
slice
(
0
,
6
)
return
props
.
list
.
slice
(
0
,
6
)
})
})
...
...
src/utils/riskSignalOverviewDetailHelpers.js
浏览文件 @
881c314b
...
@@ -223,14 +223,14 @@ export function getRiskDetailLevelModifier(level) {
...
@@ -223,14 +223,14 @@ export function getRiskDetailLevelModifier(level) {
if
(
t
===
"低风险"
)
{
if
(
t
===
"低风险"
)
{
return
"lv5"
;
return
"lv5"
;
}
}
if
(
t
===
"一般风险"
||
!
t
||
t
===
"暂无数据"
)
{
if
(
t
===
"一般风险"
||
!
t
||
t
===
"暂无数据"
||
t
===
"风险信号暂无评估"
)
{
return
"lv4"
;
return
"lv4"
;
}
}
return
"lv4"
;
return
"lv4"
;
}
}
/**
与 `@/components/base/riskSignal` 左侧等级一致:空 / null 等展示「暂无数据
」 */
/**
详情弹窗标题区等级文案:空 / null 等展示「风险信号暂无评估
」 */
export
const
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
=
"
暂无数据
"
;
export
const
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
=
"
风险信号暂无评估
"
;
/**
/**
* 列表行风险等级 → 弹窗标题区文案(null、空串与「暂无数值」等与列表「暂无数据」对齐)
* 列表行风险等级 → 弹窗标题区文案(null、空串与「暂无数值」等与列表「暂无数据」对齐)
...
@@ -241,7 +241,7 @@ export function normalizeRiskSignalListLevelText(raw) {
...
@@ -241,7 +241,7 @@ export function normalizeRiskSignalListLevelText(raw) {
return
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
;
return
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
;
}
}
const
s
=
String
(
raw
).
trim
();
const
s
=
String
(
raw
).
trim
();
if
(
s
===
""
||
s
===
"null"
||
s
===
"undefined"
||
s
===
"暂无数值"
)
{
if
(
s
===
""
||
s
===
"null"
||
s
===
"undefined"
||
s
===
"暂无数值"
||
s
===
"暂无数据"
)
{
return
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
;
return
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
;
}
}
return
s
;
return
s
;
...
...
src/views/coopRestriction/components/dataSub/index.vue
浏览文件 @
881c314b
...
@@ -602,9 +602,7 @@ const initRightChart = () => {
...
@@ -602,9 +602,7 @@ const initRightChart = () => {
const
domains
=
Array
.
from
(
domainsSet
);
const
domains
=
Array
.
from
(
domainsSet
);
const
types
=
Array
.
from
(
typesSet
);
const
types
=
Array
.
from
(
typesSet
);
const
legendSplitAt
=
Math
.
ceil
(
types
.
length
/
2
);
const
legendData
=
types
;
const
legendFirstLine
=
types
.
slice
(
0
,
legendSplitAt
);
const
legendSecondLine
=
types
.
slice
(
legendSplitAt
);
const
indicators
=
domains
.
map
((
domain
)
=>
{
const
indicators
=
domains
.
map
((
domain
)
=>
{
const
domainData
=
rawData
.
filter
((
item
)
=>
item
.
AREA
===
domain
);
const
domainData
=
rawData
.
filter
((
item
)
=>
item
.
AREA
===
domain
);
...
@@ -630,57 +628,56 @@ const initRightChart = () => {
...
@@ -630,57 +628,56 @@ const initRightChart = () => {
const
option
=
{
const
option
=
{
color
:
colorMap
,
color
:
colorMap
,
// 避免自动换行导致“第二行不居中”:拆成两行 legend,每行各自居中
// 图例尽量单行居中;放不下则横向滚动(不换行)
legend
:
[
legend
:
{
{
show
:
true
,
show
:
true
,
type
:
"scroll"
,
type
:
"plain"
,
orient
:
"horizontal"
,
data
:
legendFirstLine
,
data
:
legendData
,
top
:
8
,
top
:
8
,
left
:
"center"
,
left
:
"center"
,
icon
:
"circle"
,
width
:
"90%"
,
itemWidth
:
12
,
height
:
24
,
itemHeight
:
12
,
icon
:
"circle"
,
itemGap
:
24
,
itemWidth
:
12
,
textStyle
:
{
itemHeight
:
12
,
color
:
"rgb(95, 101, 108)"
,
itemGap
:
24
,
fontSize
:
16
,
pageButtonPosition
:
"end"
,
fontFamily
:
"Microsoft YaHei"
,
pageIconSize
:
12
,
fontWeight
:
400
,
pageTextStyle
:
{
lineHeight
:
24
color
:
"rgb(95, 101, 108)"
,
}
fontSize
:
12
,
fontFamily
:
"Microsoft YaHei"
},
},
{
textStyle
:
{
show
:
legendSecondLine
.
length
>
0
,
color
:
"rgb(95, 101, 108)"
,
type
:
"plain"
,
fontSize
:
16
,
data
:
legendSecondLine
,
fontFamily
:
"Microsoft YaHei"
,
top
:
32
,
fontWeight
:
400
,
left
:
"center"
,
lineHeight
:
24
icon
:
"circle"
,
itemWidth
:
12
,
itemHeight
:
12
,
itemGap
:
24
,
textStyle
:
{
color
:
"rgb(95, 101, 108)"
,
fontSize
:
16
,
fontFamily
:
"Microsoft YaHei"
,
fontWeight
:
400
,
lineHeight
:
24
}
}
}
]
,
}
,
radar
:
{
radar
:
{
// 对齐左侧折线图(grid top=34%)的“图例到图形”间距:下移雷达中心并略缩半径
// 对齐左侧折线图(grid top=34%)的“图例到图形”间距:下移雷达中心并略缩半径
center
:
[
"50%"
,
"
62
%"
],
center
:
[
"50%"
,
"
57
%"
],
radius
:
"
60
%"
,
radius
:
"
58
%"
,
indicator
:
indicators
,
indicator
:
indicators
,
axisName
:
{
axisName
:
{
color
:
"rgba(132, 136, 142, 1)"
,
fontFamily
:
"Source Han Sans CN"
,
fontSize
:
14
,
fontWeight
:
700
,
fontWeight
:
400
fontSize
:
16
,
lineHeight
:
24
,
letterSpacing
:
1
,
color
:
"rgb(59, 65, 75)"
},
},
splitLine
:
{
lineStyle
:
{
color
:
[
"#e6e6e6"
]
}
},
splitLine
:
{
lineStyle
:
{
color
:
[
"#e6e6e6"
]
}
},
splitArea
:
{
show
:
false
}
splitArea
:
{
show
:
true
,
areaStyle
:
{
// 从最内圈白色开始,向外层交替浅灰
color
:
[
"#ffffff"
,
"rgb(247, 248, 249)"
]
}
}
},
},
series
:
[
series
:
[
{
{
...
...
src/views/coopRestriction/components/resLib/index.vue
浏览文件 @
881c314b
...
@@ -7,8 +7,7 @@
...
@@ -7,8 +7,7 @@
</div>
</div>
</div>
</div>
<el-select
v-model=
"sortModel"
placeholder=
"发布时间"
class=
"select"
popper-class=
"coop-select-dropdown"
<el-select
v-model=
"sortModel"
placeholder=
"发布时间"
class=
"select"
popper-class=
"coop-select-dropdown"
:teleported=
"true"
placement=
"bottom-start"
:teleported=
"true"
placement=
"bottom-start"
:popper-options=
"sortPopperOptions"
@
change=
"handleSortChange"
>
:popper-options=
"sortPopperOptions"
@
change=
"handleSortChange"
>
<template
#
prefix
>
<template
#
prefix
>
<img
v-if=
"sortModel !== true"
src=
"@/views/thinkTank/ThinkTankDetail/thinkDynamics/images/image down.png"
<img
v-if=
"sortModel !== true"
src=
"@/views/thinkTank/ThinkTankDetail/thinkDynamics/images/image down.png"
class=
"select-prefix-img"
alt=
""
@
click
.
stop=
"toggleSortPrefix"
/>
class=
"select-prefix-img"
alt=
""
@
click
.
stop=
"toggleSortPrefix"
/>
...
@@ -37,35 +36,42 @@
...
@@ -37,35 +36,42 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
:class=
"{ 'right--empty': !(mainDataList && mainDataList.length) }"
>
<div
class=
"right-title"
>
<div
class=
"right-title"
>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<div>
合作限制历程
</div>
<div>
合作限制历程
</div>
</div>
</div>
<div
class=
"right-main"
>
<div
class=
"right-main"
>
<div
class=
"main-content"
>
<
template
v-if=
"mainDataList && mainDataList.length"
>
<div
v-for=
"item in mainDataList"
:key=
"item.id"
class=
"main-item"
>
<div
class=
"main-content"
>
<div
class=
"date"
>
{{ formatDateCn(item.date) }}
</div>
<div
v-for=
"item in mainDataList"
:key=
"item.id"
class=
"main-item"
>
<img
:src=
"item.img"
alt=
""
class=
"img"
/>
<div
class=
"date"
>
{{
formatDateCn
(
item
.
date
)
}}
</div>
<div
class=
"box"
>
<img
:src=
"item.img"
alt=
""
class=
"img"
/>
<div
class=
"title"
@
click=
"handleClick(item)"
>
{{ item.title }}
</div>
<div
class=
"box"
>
<div
class=
"content"
@
click=
"handleClick(item)"
>
{{ item.content }}
</div>
<div
class=
"title"
@
click=
"handleClick(item)"
>
{{
item
.
title
}}
</div>
<div
class=
"domain"
>
<div
class=
"content"
@
click=
"handleClick(item)"
>
{{
item
.
content
}}
</div>
<AreaTag
v-for=
"(domain, i) in item.domain"
:key=
"i"
"
:tagName=
"domain"
>
<div
class=
"domain"
>
</AreaTag>
<AreaTag
v-for=
"(domain, i) in item.domain"
:key=
"i"
"
:tagName=
"domain"
>
</div>
</AreaTag>
</div>
<div
class=
"type"
:class=
"getTypeClass(item.type)"
>
{{ item.type }}
<div
class=
"type"
:class=
"getTypeClass(item.type)"
>
{{
item
.
type
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"page"
>
<div
class=
"page"
>
<div
class=
"count"
>
共
{{
total
}}
项调查
</div>
<div
class=
"count"
>
共 {{ total }} 项调查
</div>
<el-pagination
v-model:current-page=
"currentPage"
:page-size=
"pageSize"
:total=
"total"
<el-pagination
v-model:current-page=
"currentPage"
:page-size=
"pageSize"
:total=
"total"
layout=
"prev, pager, next"
background
@
current-change=
"handlePageChange"
/>
layout=
"prev, pager, next"
background
@
current-change=
"handlePageChange"
/>
</div>
</div>
</
template
>
<
template
v-else
>
<div
class=
"right-main-empty"
>
<el-empty
class=
"right-el-empty"
description=
"暂无数据"
:image-size=
"100"
/>
</div>
</
template
>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -533,6 +539,13 @@ watch(currentPage, () => {
...
@@ -533,6 +539,13 @@ watch(currentPage, () => {
border-radius
:
10px
;
border-radius
:
10px
;
background-color
:
#fff
;
background-color
:
#fff
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
display
:
flex
;
flex-direction
:
column
;
&
.right--empty
{
// 与左侧筛选框等高
height
:
432px
;
}
.right-title
{
.right-title
{
width
:
1224px
;
width
:
1224px
;
...
@@ -563,10 +576,28 @@ watch(currentPage, () => {
...
@@ -563,10 +576,28 @@ watch(currentPage, () => {
.right-main
{
.right-main
{
width
:
1224px
;
width
:
1224px
;
flex
:
1
;
padding
:
12px
0px
80px
0px
;
padding
:
12px
0px
80px
0px
;
position
:
relative
;
position
:
relative
;
.right-main-empty
{
height
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
padding
:
24px
;
:deep
(
.el-empty__image
)
{
margin-bottom
:
0
;
}
.right-el-empty
{
padding
:
0
;
margin
:
0
;
}
}
.main-content
{
.main-content
{
width
:
1224px
;
width
:
1224px
;
...
@@ -594,15 +625,7 @@ watch(currentPage, () => {
...
@@ -594,15 +625,7 @@ watch(currentPage, () => {
}
}
&
:last-child::after
{
&
:last-child::after
{
content
:
""
;
content
:
none
;
position
:
absolute
;
top
:
37px
;
bottom
:
-37px
;
left
:
108px
;
width
:
2px
;
background-color
:
rgb
(
230
,
231
,
232
);
z-index
:
1
;
height
:
calc
(
100%
-
37px
);
}
}
.date
{
.date
{
...
@@ -635,6 +658,7 @@ watch(currentPage, () => {
...
@@ -635,6 +658,7 @@ watch(currentPage, () => {
.title
{
.title
{
font-size
:
20px
;
font-size
:
20px
;
width
:
950px
;
font-weight
:
700
;
font-weight
:
700
;
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
line-height
:
26px
;
line-height
:
26px
;
...
...
src/views/coopRestriction/detail/index.vue
浏览文件 @
881c314b
...
@@ -5,13 +5,13 @@
...
@@ -5,13 +5,13 @@
<img
:src=
"coopData?.IMAGEURL || defaultImg"
alt=
""
/>
<img
:src=
"coopData?.IMAGEURL || defaultImg"
alt=
""
/>
<div
class=
"content"
>
<div
class=
"content"
>
<div
class=
"cl1"
>
{{
coopData
?.
LIMITNAMEZH
}}
</div>
<div
class=
"cl1"
>
{{
coopData
?.
LIMITNAMEZH
}}
</div>
<div
class=
"cl2"
>
{{
coopData
?.
LIMITNAME
}}
</div>
<div
v-if=
"hasLimitNameEn"
class=
"cl2"
>
{{
coopData
?.
LIMITNAME
}}
</div>
<div
class=
"cl3"
>
{{
coopData
?.
LIMITDATE
}}
·
{{
coopData
?.
LIMITORGNAME
}}
</div>
<div
class=
"cl3"
>
{{
coopData
?.
LIMITDATE
}}
·
{{
coopData
?.
LIMITORGNAME
}}
</div>
</div>
</div>
<div
class=
"btn"
>
<div
class=
"btn"
>
<button
class=
"btn1"
><img
src=
"./assets/icon01.png"
alt=
""
/>
查看原文
</button>
<!--
<button
class=
"btn1"
><img
src=
"./assets/icon02.png"
alt=
""
/>
查看官网
</button>
-->
<!--
<button
class=
"btn1"
><img
src=
"./assets/icon02.png"
alt=
""
/>
查看官网
</button>
-->
<button
class=
"btn1 active"
><img
src=
"./assets/icon03.png"
alt=
""
/>
分析报告
</button>
<button
class=
"btn1 active"
@
click=
"handleOpenWrittingAsstaint"
><img
src=
"./assets/icon03.png"
alt=
""
/>
分析报告
</button>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -81,7 +81,8 @@
...
@@ -81,7 +81,8 @@
<img
src=
"./assets/打开按钮.png"
alt=
""
>
<img
src=
"./assets/打开按钮.png"
alt=
""
>
</div>
</div>
<!-- contentList:单条按原样式展示;多条则逐条展示并加 1.2.3. 前缀 -->
<!-- contentList:单条按原样式展示;多条则逐条展示并加 1.2.3. 前缀 -->
<div
v-if=
"Array.isArray(item.contentList) && item.contentList.length > 1"
class=
"clause-item-content-list"
>
<div
v-if=
"Array.isArray(item.contentList) && item.contentList.length > 1"
class=
"clause-item-content-list"
>
<div
v-for=
"(row, i) in item.contentList"
:key=
"i"
class=
"clause-item-content-row"
>
<div
v-for=
"(row, i) in item.contentList"
:key=
"i"
class=
"clause-item-content-row"
>
<span
class=
"row-index"
>
{{
i
+
1
}}
.
</span>
<span
class=
"row-index"
>
{{
i
+
1
}}
.
</span>
<span
class=
"row-text"
>
{{
row
.
CONTENT
}}
</span>
<span
class=
"row-text"
>
{{
row
.
CONTENT
}}
</span>
...
@@ -117,6 +118,15 @@ import Rubio from "./assets/卢比奥.png";
...
@@ -117,6 +118,15 @@ import Rubio from "./assets/卢比奥.png";
import
Bondi
from
"./assets/邦迪.png"
;
import
Bondi
from
"./assets/邦迪.png"
;
import
Nome
from
"./assets/诺姆.png"
;
import
Nome
from
"./assets/诺姆.png"
;
const
hasLimitNameEn
=
computed
(()
=>
{
return
Boolean
(
String
(
coopData
.
value
?.
LIMITNAME
??
""
).
trim
());
});
const
handleOpenWrittingAsstaint
=
()
=>
{
const
{
href
}
=
router
.
resolve
({
path
:
"/writtingAsstaint"
});
window
.
open
(
href
,
"_blank"
);
};
// 合作限制-查询限制条款
// 合作限制-查询限制条款
const
limitClauseData
=
ref
([]);
const
limitClauseData
=
ref
([]);
const
getlimitClauseData
=
async
()
=>
{
const
getlimitClauseData
=
async
()
=>
{
...
@@ -474,9 +484,13 @@ const dataList3 = ref([
...
@@ -474,9 +484,13 @@ const dataList3 = ref([
.btn
{
.btn
{
width
:
376px
;
width
:
376px
;
height
:
36
px
;
height
:
48
px
;
display
:
flex
;
display
:
flex
;
justify-content
:
right
;
justify-content
:
right
;
position
:
absolute
;
bottom
:
0
;
margin-left
:
1224px
;
.btn1
{
.btn1
{
border-radius
:
6px
;
border-radius
:
6px
;
...
...
src/views/coopRestriction/index.vue
浏览文件 @
881c314b
...
@@ -164,6 +164,7 @@ const handleToPosi = id => {
...
@@ -164,6 +164,7 @@ const handleToPosi = id => {
background-size
:
100%
100%
;
background-size
:
100%
100%
;
position
:
absolute
;
position
:
absolute
;
width
:
100%
;
width
:
100%
;
height
:
100%
;
z-index
:
-100
;
z-index
:
-100
;
top
:
-64px
;
top
:
-64px
;
...
...
src/views/ruleRestriction/detail/index.vue
浏览文件 @
881c314b
...
@@ -132,10 +132,7 @@
...
@@ -132,10 +132,7 @@
<img
:src=
"item.IMAGEURL"
alt
/>
<img
:src=
"item.IMAGEURL"
alt
/>
<div
class=
"name"
>
{{
item
.
RELATIONNAME
}}
</div>
<div
class=
"name"
>
{{
item
.
RELATIONNAME
}}
</div>
<div
class=
"time"
>
{{
getTime
(
item
.
RELATIONDATE
)
}}
</div>
<div
class=
"time"
>
{{
getTime
(
item
.
RELATIONDATE
)
}}
</div>
<div
<div
class=
"type"
:class=
"
{ type1: item.TYPE === '行政令', type2: item.TYPE === '法案' }">
{{
item
.
TYPE
}}
</div>
class=
"type"
:class=
"
{ type1: item.TYPE === '行政令', type2: item.TYPE === '法案' }"
>
{{
item
.
TYPE
}}
</div>
<div
class=
"content"
>
{{
item
.
RELATIONCONTENT
}}
</div>
<div
class=
"content"
>
{{
item
.
RELATIONCONTENT
}}
</div>
</div>
</div>
</div>
</div>
...
@@ -158,226 +155,226 @@ import gh from "./assets/国会.png";
...
@@ -158,226 +155,226 @@ import gh from "./assets/国会.png";
import
{
getSanctionOverview
,
getBackGround
,
getLimitClause
,
getRelevantMeasures
}
from
'@/api/ruleRestriction/index.js'
import
{
getSanctionOverview
,
getBackGround
,
getLimitClause
,
getRelevantMeasures
}
from
'@/api/ruleRestriction/index.js'
const
dataList
=
ref
([
const
dataList
=
ref
([
{
{
id
:
1
,
id
:
1
,
name
:
"中国检验认证集团(宁波)有限公司"
,
name
:
"中国检验认证集团(宁波)有限公司"
,
type
:
""
,
type
:
""
,
img
:
ningbo
img
:
ningbo
},
},
{
{
id
:
2
,
id
:
2
,
name
:
"德国莱茵 TÜV 集团"
,
name
:
"德国莱茵 TÜV 集团"
,
type
:
""
,
type
:
""
,
img
:
deguo
img
:
deguo
}
}
]);
]);
const
objList
=
ref
([
const
objList
=
ref
([
{
{
id
:
1
,
id
:
1
,
name
:
"撤销多家中国实验室对进入美国市场电子产品的测试认证许可。"
,
name
:
"撤销多家中国实验室对进入美国市场电子产品的测试认证许可。"
,
time
:
"2025-08-30"
,
time
:
"2025-08-30"
,
img
:
cycle
img
:
cycle
},
},
{
{
id
:
2
,
id
:
2
,
name
:
"禁止被认定存在“国家安全风险”的中国实验室为进入美国市场的电子设备(如手机、电脑)提供FCC要求的合规性测试与认..."
,
name
:
"禁止被认定存在“国家安全风险”的中国实验室为进入美国市场的电子设备(如手机、电脑)提供FCC要求的合规性测试与认..."
,
time
:
"2025-08-30"
,
time
:
"2025-08-30"
,
img
:
cycle
img
:
cycle
},
},
{
{
id
:
3
,
id
:
3
,
name
:
"禁止授权进口或销售任何新设备。新规进一步禁止新设备中使用这些清单内公司的零部件,并允许FCC撤销已授权设备的许可。"
,
name
:
"禁止授权进口或销售任何新设备。新规进一步禁止新设备中使用这些清单内公司的零部件,并允许FCC撤销已授权设备的许可。"
,
time
:
"2025-08-30"
,
time
:
"2025-08-30"
,
img
:
cycle
img
:
cycle
},
},
{
{
id
:
4
,
id
:
4
,
name
:
"撤销或终止中国电信运营商在美国提供国际电信服务的授权。"
,
name
:
"撤销或终止中国电信运营商在美国提供国际电信服务的授权。"
,
time
:
"2025-08-30"
,
time
:
"2025-08-30"
,
img
:
cycle
img
:
cycle
},
},
{
{
id
:
5
,
id
:
5
,
name
:
"禁止使用特定中国技术和设备的公司建造或运营连接美国的通信电缆。"
,
name
:
"禁止使用特定中国技术和设备的公司建造或运营连接美国的通信电缆。"
,
time
:
"2025-08-30"
,
time
:
"2025-08-30"
,
img
:
cycle
img
:
cycle
}
}
]);
]);
const
dataList2
=
ref
([
const
dataList2
=
ref
([
{
{
id
:
1
,
id
:
1
,
name
:
"根据本命令,OET认定TUV/宁波没有说明委员会为何不应开始撤销其作为认可测试实验室资格的程序。在其回应中,TUV/宁波声称其不受委员会规则下的禁止实体控制或指挥,但未说明其被禁止实体持有的股权。TUV/宁波的公司治理文件显示,CCIC是公司的股东,并出资占公司创立资本的49%."
name
:
"根据本命令,OET认定TUV/宁波没有说明委员会为何不应开始撤销其作为认可测试实验室资格的程序。在其回应中,TUV/宁波声称其不受委员会规则下的禁止实体控制或指挥,但未说明其被禁止实体持有的股权。TUV/宁波的公司治理文件显示,CCIC是公司的股东,并出资占公司创立资本的49%."
},
},
{
{
id
:
2
,
id
:
2
,
name
:
"TUV/宁波必须在本命令发布后三十五(35)天内提交回复,说明委员会为何不应撤销其认可。如果未能及时回复或提交说明委员会不应撤销其认可的合理依据的回复,可能会导致撤销认可。公司的回复必须包含一份书面详细事实说明,充分说明公司是否由中华人民共和国拥有、控制或受其指示。"
name
:
"TUV/宁波必须在本命令发布后三十五(35)天内提交回复,说明委员会为何不应撤销其认可。如果未能及时回复或提交说明委员会不应撤销其认可的合理依据的回复,可能会导致撤销认可。公司的回复必须包含一份书面详细事实说明,充分说明公司是否由中华人民共和国拥有、控制或受其指示。"
},
},
{
{
id
:
3
,
id
:
3
,
name
:
"OET 根据《法案》第302(e)条以及委员会规则第2.951(d)和(e)条启动了一个程序,以最终确定是否撤销对TUV/Ningbo作为认可测试实验室的认可。此程序为公司提供了额外的通知和机会,以提交书面回应,说明委员会为何不应撤销其当前的认可。"
name
:
"OET 根据《法案》第302(e)条以及委员会规则第2.951(d)和(e)条启动了一个程序,以最终确定是否撤销对TUV/Ningbo作为认可测试实验室的认可。此程序为公司提供了额外的通知和机会,以提交书面回应,说明委员会为何不应撤销其当前的认可。"
}
}
]);
]);
const
dataList3
=
ref
([
const
dataList3
=
ref
([
{
{
id
:
1
,
id
:
1
,
name
:
"美国商务部工业与安全局发布实体清单,涉及多家中国半导体企业"
,
name
:
"美国商务部工业与安全局发布实体清单,涉及多家中国半导体企业"
,
time
:
"2025年9月12日"
,
time
:
"2025年9月12日"
,
content
:
content
:
"23家中国实体,包括复旦微电旗下多家公司、华岭股份等,指控这些实体“违背美国国家安全或外交政策利益”,包括为中国的..."
,
"23家中国实体,包括复旦微电旗下多家公司、华岭股份等,指控这些实体“违背美国国家安全或外交政策利益”,包括为中国的..."
,
type
:
"行政令"
,
type
:
"行政令"
,
img
:
swb
img
:
swb
},
},
{
{
id
:
2
,
id
:
2
,
name
:
"美国白宫发布总统政令,提出将发展美国人工智能产业硬件支持放在新任期的科技首要地位"
,
name
:
"美国白宫发布总统政令,提出将发展美国人工智能产业硬件支持放在新任期的科技首要地位"
,
time
:
"2025年9月11日"
,
time
:
"2025年9月11日"
,
content
:
content
:
"9个中国实体(8家企业和1名个人),例如湖北奇卡工业有限公司、广州雅凯国际货运代理有限公司等,指控这些实体为也门胡塞..."
,
"9个中国实体(8家企业和1名个人),例如湖北奇卡工业有限公司、广州雅凯国际货运代理有限公司等,指控这些实体为也门胡塞..."
,
type
:
"行政令"
,
type
:
"行政令"
,
img
:
bg
img
:
bg
},
},
{
{
id
:
3
,
id
:
3
,
name
:
"美国财政部外国资产控制办公室指控中国企业及船只"
,
name
:
"美国财政部外国资产控制办公室指控中国企业及船只"
,
time
:
"2025年3月13日"
,
time
:
"2025年3月13日"
,
content
:
content
:
"4家中国企业和3艘关联船只(如香港和顺运贸有限公司、华夏贸易有限公司等),指控这些公司拥有或运营向中国运送伊朗石油或..."
,
"4家中国企业和3艘关联船只(如香港和顺运贸有限公司、华夏贸易有限公司等),指控这些公司拥有或运营向中国运送伊朗石油或..."
,
type
:
"行政令"
,
type
:
"行政令"
,
img
:
czb
img
:
czb
},
},
{
{
id
:
4
,
id
:
4
,
name
:
"美国国会通过《芯片科学》法案"
,
name
:
"美国国会通过《芯片科学》法案"
,
time
:
"2025年1月3日"
,
time
:
"2025年1月3日"
,
content
:
content
:
"多家中国实体,包括成都雷电微力科技股份有限公司、中国科学院长春光学精密机械与物理研究所等,指控这些实体与中国高超音..."
,
"多家中国实体,包括成都雷电微力科技股份有限公司、中国科学院长春光学精密机械与物理研究所等,指控这些实体与中国高超音..."
,
type
:
"法案"
,
type
:
"法案"
,
img
:
gh
img
:
gh
}
}
]);
]);
const
overviewInfo
=
ref
({})
const
overviewInfo
=
ref
({})
const
sanRecordId
=
ref
(
''
)
const
sanRecordId
=
ref
(
''
)
const
backgroundInfo
=
ref
([])
const
backgroundInfo
=
ref
([])
const
limitClauseInfo
=
ref
([])
const
limitClauseInfo
=
ref
([])
const
relevantMeasureInfo
=
ref
([])
const
relevantMeasureInfo
=
ref
([])
const
getUrlParams
=
()
=>
{
const
getUrlParams
=
()
=>
{
const
urlParams
=
new
URLSearchParams
(
window
.
location
.
search
);
const
urlParams
=
new
URLSearchParams
(
window
.
location
.
search
);
sanRecordId
.
value
=
urlParams
.
get
(
"id"
)
||
""
sanRecordId
.
value
=
urlParams
.
get
(
"id"
)
||
""
}
}
const
getSanctionOverviewInfo
=
async
()
=>
{
const
getSanctionOverviewInfo
=
async
()
=>
{
try
{
try
{
const
res
=
await
getSanctionOverview
(
sanRecordId
.
value
);
const
res
=
await
getSanctionOverview
(
sanRecordId
.
value
);
console
.
log
(
'------getSanctionOverviewInfo res'
,
res
)
console
.
log
(
'------getSanctionOverviewInfo res'
,
res
)
if
(
res
&&
res
.
code
===
200
)
{
if
(
res
&&
res
.
code
===
200
)
{
console
.
log
(
'----getSanctionOverviewInfo'
,
res
.
data
)
console
.
log
(
'----getSanctionOverviewInfo'
,
res
.
data
)
overviewInfo
.
value
=
res
.
data
overviewInfo
.
value
=
res
.
data
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取规则限制基本详情接口失败:"
,
error
);
console
.
error
(
"获取规则限制基本详情接口失败:"
,
error
);
}
}
}
}
const
getBackGroundInfo
=
async
()
=>
{
const
getBackGroundInfo
=
async
()
=>
{
try
{
try
{
const
res
=
await
getBackGround
(
sanRecordId
.
value
);
const
res
=
await
getBackGround
(
sanRecordId
.
value
);
console
.
log
(
'------getBackGroundInfo res'
,
res
)
console
.
log
(
'------getBackGroundInfo res'
,
res
)
if
(
res
&&
res
.
code
===
200
)
{
if
(
res
&&
res
.
code
===
200
)
{
console
.
log
(
'----getBackGroundInfo'
,
res
.
data
)
console
.
log
(
'----getBackGroundInfo'
,
res
.
data
)
backgroundInfo
.
value
=
res
.
data
backgroundInfo
.
value
=
res
.
data
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取背景分析接口失败:"
,
error
);
console
.
error
(
"获取背景分析接口失败:"
,
error
);
}
}
}
}
const
getLimitClauseInfo
=
async
()
=>
{
const
getLimitClauseInfo
=
async
()
=>
{
try
{
try
{
const
res
=
await
getLimitClause
(
sanRecordId
.
value
);
const
res
=
await
getLimitClause
(
sanRecordId
.
value
);
console
.
log
(
'------getLimitClauseInfo res'
,
res
)
console
.
log
(
'------getLimitClauseInfo res'
,
res
)
if
(
res
&&
res
.
code
===
200
)
{
if
(
res
&&
res
.
code
===
200
)
{
console
.
log
(
'----getLimitClauseInfo'
,
res
.
data
)
console
.
log
(
'----getLimitClauseInfo'
,
res
.
data
)
limitClauseInfo
.
value
=
res
.
data
limitClauseInfo
.
value
=
res
.
data
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取限制条款接口失败:"
,
error
);
console
.
error
(
"获取限制条款接口失败:"
,
error
);
}
}
}
}
const
getRelevantMeasuresInfo
=
async
()
=>
{
const
getRelevantMeasuresInfo
=
async
()
=>
{
try
{
try
{
const
res
=
await
getRelevantMeasures
(
sanRecordId
.
value
);
const
res
=
await
getRelevantMeasures
(
sanRecordId
.
value
);
console
.
log
(
'------getRelevantMeasuresInfo res'
,
res
)
console
.
log
(
'------getRelevantMeasuresInfo res'
,
res
)
if
(
res
&&
res
.
code
===
200
)
{
if
(
res
&&
res
.
code
===
200
)
{
console
.
log
(
'----getRelevantMeasuresInfo'
,
res
.
data
)
console
.
log
(
'----getRelevantMeasuresInfo'
,
res
.
data
)
relevantMeasureInfo
.
value
=
res
.
data
relevantMeasureInfo
.
value
=
res
.
data
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取限制条款接口失败:"
,
error
);
console
.
error
(
"获取限制条款接口失败:"
,
error
);
}
}
}
}
const
getTime
=
(
time
)
=>
{
const
getTime
=
(
time
)
=>
{
if
(
time
)
{
if
(
time
)
{
const
array
=
time
.
split
(
'-'
)
const
array
=
time
.
split
(
'-'
)
return
`
${
array
[
0
]}
年
${
array
[
1
]}
月
${
array
[
2
]}
日`
return
`
${
array
[
0
]}
年
${
array
[
1
]}
月
${
array
[
2
]}
日`
}
}
}
}
const
getClassName
=
(
type
)
=>
{
const
getClassName
=
(
type
)
=>
{
let
className
=
''
let
className
=
''
switch
(
type
)
{
switch
(
type
)
{
case
'人工智能'
:
case
'人工智能'
:
className
=
'ai'
className
=
'ai'
break
break
case
'新材料'
:
case
'新材料'
:
className
=
'material'
className
=
'material'
break
break
case
'量子科技'
:
case
'量子科技'
:
className
=
'technology'
className
=
'technology'
break
break
case
'生物科技'
:
case
'生物科技'
:
className
=
'organism'
className
=
'organism'
break
break
case
'航空航天'
:
case
'航空航天'
:
className
=
'aerospace'
className
=
'aerospace'
break
break
case
'能源'
:
case
'能源'
:
className
=
'energy'
className
=
'energy'
break
break
case
'集成电路'
:
case
'集成电路'
:
className
=
'integrated'
className
=
'integrated'
break
break
case
''
:
case
''
:
className
=
'none-class'
className
=
'none-class'
break
break
default
:
default
:
className
=
'other'
className
=
'other'
}
}
return
className
return
className
}
}
const
getRelation
=
ref
({})
const
getRelation
=
ref
({})
watch
(
overviewInfo
,
()
=>
{
watch
(
overviewInfo
,
()
=>
{
getRelation
.
value
=
overviewInfo
.
value
?.
Relation
?
overviewInfo
.
value
?.
Relation
[
0
]
:
{}
getRelation
.
value
=
overviewInfo
.
value
?.
Relation
?
overviewInfo
.
value
?.
Relation
[
0
]
:
{}
},
{
},
{
deep
:
true
deep
:
true
})
})
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
getUrlParams
()
getUrlParams
()
await
getSanctionOverviewInfo
()
await
getSanctionOverviewInfo
()
await
getBackGroundInfo
()
await
getBackGroundInfo
()
await
getLimitClauseInfo
()
await
getLimitClauseInfo
()
await
getRelevantMeasuresInfo
()
await
getRelevantMeasuresInfo
()
})
})
</
script
>
</
script
>
...
@@ -386,12 +383,14 @@ onMounted(async () => {
...
@@ -386,12 +383,14 @@ onMounted(async () => {
margin
:
0
;
margin
:
0
;
padding
:
0
;
padding
:
0
;
}
}
.cooperation-restrictions-detail
{
.cooperation-restrictions-detail
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
background
:
rgba
(
243
,
243
,
244
,
1
);
background
:
rgba
(
243
,
243
,
244
,
1
);
overflow
:
auto
;
overflow
:
auto
;
padding-bottom
:
50px
;
padding-bottom
:
50px
;
// 领域样式
// 领域样式
// 人工智能
// 人工智能
.ai
{
.ai
{
...
@@ -399,42 +398,49 @@ onMounted(async () => {
...
@@ -399,42 +398,49 @@ onMounted(async () => {
background
:
rgba
(
255
,
241
,
240
,
1
);
background
:
rgba
(
255
,
241
,
240
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
}
}
// 新材料
// 新材料
.material
{
.material
{
border
:
1px
solid
rgba
(
135
,
232
,
222
,
1
);
border
:
1px
solid
rgba
(
135
,
232
,
222
,
1
);
background
:
rgba
(
230
,
255
,
251
,
1
);
background
:
rgba
(
230
,
255
,
251
,
1
);
color
:
rgba
(
19
,
168
,
168
,
1
);
color
:
rgba
(
19
,
168
,
168
,
1
);
}
}
// 量子科技
// 量子科技
.technology
{
.technology
{
border
:
1px
solid
rgba
(
211
,
173
,
247
,
1
);
border
:
1px
solid
rgba
(
211
,
173
,
247
,
1
);
background
:
rgba
(
249
,
240
,
255
,
1
);
background
:
rgba
(
249
,
240
,
255
,
1
);
color
:
rgba
(
114
,
46
,
209
,
1
);
color
:
rgba
(
114
,
46
,
209
,
1
);
}
}
// 生物科技
// 生物科技
.organism
{
.organism
{
border
:
1px
solid
rgba
(
145
,
202
,
255
,
1
);
border
:
1px
solid
rgba
(
145
,
202
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
}
}
// 航空航天
// 航空航天
.aerospace
{
.aerospace
{
border
:
1px
solid
rgba
(
173
,
198
,
255
,
1
);
border
:
1px
solid
rgba
(
173
,
198
,
255
,
1
);
background
:
rgba
(
240
,
245
,
255
,
1
);
background
:
rgba
(
240
,
245
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
}
}
// 能源
// 能源
.energy
{
.energy
{
border
:
1px
solid
rgba
(
217
,
247
,
190
,
1
);
border
:
1px
solid
rgba
(
217
,
247
,
190
,
1
);
background
:
rgba
(
246
,
255
,
237
,
1
);
background
:
rgba
(
246
,
255
,
237
,
1
);
color
:
rgba
(
56
,
158
,
13
,
1
);
color
:
rgba
(
56
,
158
,
13
,
1
);
}
}
// 集成电路
// 集成电路
.integrated
{
.integrated
{
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
color
:
rgba
(
9
,
88
,
217
,
1
);
color
:
rgba
(
9
,
88
,
217
,
1
);
}
}
// 其他
// 其他
.other
{
.other
{
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
...
@@ -447,6 +453,7 @@ onMounted(async () => {
...
@@ -447,6 +453,7 @@ onMounted(async () => {
background
:
transparent
;
background
:
transparent
;
border
:
none
;
border
:
none
;
}
}
.nav
{
.nav
{
width
:
100%
;
width
:
100%
;
height
:
120px
;
height
:
120px
;
...
@@ -456,6 +463,7 @@ onMounted(async () => {
...
@@ -456,6 +463,7 @@ onMounted(async () => {
position
:
sticky
;
position
:
sticky
;
top
:
0
;
top
:
0
;
z-index
:
99999999
;
z-index
:
99999999
;
.nav-main
{
.nav-main
{
width
:
1600px
;
width
:
1600px
;
height
:
81px
;
height
:
81px
;
...
@@ -463,14 +471,17 @@ onMounted(async () => {
...
@@ -463,14 +471,17 @@ onMounted(async () => {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
justify-content
:
space-between
;
img
{
img
{
width
:
72px
;
width
:
72px
;
height
:
72px
;
height
:
72px
;
margin-right
:
16px
;
margin-right
:
16px
;
}
}
.content
{
.content
{
// width: 758px;
// width: 758px;
height
:
81px
;
height
:
81px
;
// margin-right: 378px;
// margin-right: 378px;
.cl1
{
.cl1
{
font-size
:
24px
;
font-size
:
24px
;
...
@@ -480,6 +491,7 @@ onMounted(async () => {
...
@@ -480,6 +491,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
margin-bottom
:
1px
;
margin-bottom
:
1px
;
}
}
.cl2
{
.cl2
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
...
@@ -488,6 +500,7 @@ onMounted(async () => {
...
@@ -488,6 +500,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
margin-bottom
:
1px
;
margin-bottom
:
1px
;
}
}
.cl3
{
.cl3
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
...
@@ -496,10 +509,12 @@ onMounted(async () => {
...
@@ -496,10 +509,12 @@ onMounted(async () => {
color
:
rgb
(
95
,
101
,
108
);
color
:
rgb
(
95
,
101
,
108
);
}
}
}
}
.btn
{
.btn
{
width
:
376px
;
width
:
376px
;
height
:
36px
;
height
:
36px
;
display
:
flex
;
display
:
flex
;
.btn1
{
.btn1
{
border-radius
:
6px
;
border-radius
:
6px
;
border
:
1px
solid
rgb
(
230
,
231
,
232
);
border
:
1px
solid
rgb
(
230
,
231
,
232
);
...
@@ -511,17 +526,20 @@ onMounted(async () => {
...
@@ -511,17 +526,20 @@ onMounted(async () => {
align-items
:
center
;
align-items
:
center
;
justify-content
:
center
;
justify-content
:
center
;
cursor
:
pointer
;
cursor
:
pointer
;
img
{
img
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
margin-right
:
8px
;
margin-right
:
8px
;
}
}
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
line-height
:
22px
;
line-height
:
22px
;
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
color
:
rgb
(
95
,
101
,
108
);
color
:
rgb
(
95
,
101
,
108
);
}
}
.active
{
.active
{
background-color
:
rgb
(
5
,
95
,
194
);
background-color
:
rgb
(
5
,
95
,
194
);
color
:
#fff
;
color
:
#fff
;
...
@@ -529,6 +547,7 @@ onMounted(async () => {
...
@@ -529,6 +547,7 @@ onMounted(async () => {
}
}
}
}
}
}
.title
{
.title
{
width
:
1600px
;
width
:
1600px
;
height
:
50px
;
height
:
50px
;
...
@@ -540,6 +559,7 @@ onMounted(async () => {
...
@@ -540,6 +559,7 @@ onMounted(async () => {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
position
:
relative
;
position
:
relative
;
.title-one
{
.title-one
{
margin-left
:
23px
;
margin-left
:
23px
;
font-size
:
16px
;
font-size
:
16px
;
...
@@ -548,6 +568,7 @@ onMounted(async () => {
...
@@ -548,6 +568,7 @@ onMounted(async () => {
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
.title-two
{
.title-two
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -556,6 +577,7 @@ onMounted(async () => {
...
@@ -556,6 +577,7 @@ onMounted(async () => {
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
cursor
:
pointer
;
cursor
:
pointer
;
}
}
img
{
img
{
width
:
24px
;
width
:
24px
;
height
:
24px
;
height
:
24px
;
...
@@ -565,15 +587,18 @@ onMounted(async () => {
...
@@ -565,15 +587,18 @@ onMounted(async () => {
cursor
:
pointer
;
cursor
:
pointer
;
}
}
}
}
.main
{
.main
{
width
:
1600px
;
width
:
1600px
;
height
:
1373px
;
height
:
1373px
;
margin
:
0
auto
;
margin
:
0
auto
;
display
:
flex
;
display
:
flex
;
.left
{
.left
{
width
:
520px
;
width
:
520px
;
height
:
1157px
;
height
:
1157px
;
margin-right
:
17px
;
margin-right
:
17px
;
.left-top
{
.left-top
{
margin-bottom
:
16px
;
margin-bottom
:
16px
;
width
:
520px
;
width
:
520px
;
...
@@ -582,6 +607,7 @@ onMounted(async () => {
...
@@ -582,6 +607,7 @@ onMounted(async () => {
border-radius
:
10px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
position
:
relative
;
.left-top-title
{
.left-top-title
{
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -592,6 +618,7 @@ onMounted(async () => {
...
@@ -592,6 +618,7 @@ onMounted(async () => {
top
:
14px
;
top
:
14px
;
left
:
22px
;
left
:
22px
;
}
}
.img1
{
.img1
{
width
:
8px
;
width
:
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -599,6 +626,7 @@ onMounted(async () => {
...
@@ -599,6 +626,7 @@ onMounted(async () => {
left
:
0px
;
left
:
0px
;
top
:
18px
;
top
:
18px
;
}
}
.img2
{
.img2
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -607,6 +635,7 @@ onMounted(async () => {
...
@@ -607,6 +635,7 @@ onMounted(async () => {
right
:
44px
;
right
:
44px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.img3
{
.img3
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -615,6 +644,7 @@ onMounted(async () => {
...
@@ -615,6 +644,7 @@ onMounted(async () => {
right
:
12px
;
right
:
12px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.left-top-content
{
.left-top-content
{
width
:
470px
;
width
:
470px
;
height
:
122px
;
height
:
122px
;
...
@@ -628,6 +658,7 @@ onMounted(async () => {
...
@@ -628,6 +658,7 @@ onMounted(async () => {
justify-content
:
center
;
justify-content
:
center
;
align-items
:
center
;
align-items
:
center
;
padding
:
16px
24px
;
padding
:
16px
24px
;
span
{
span
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -636,15 +667,18 @@ onMounted(async () => {
...
@@ -636,15 +667,18 @@ onMounted(async () => {
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
}
}
}
}
.left-top-bottom
{
.left-top-bottom
{
width
:
460px
;
width
:
460px
;
height
:
144px
;
height
:
144px
;
position
:
absolute
;
position
:
absolute
;
top
:
200px
;
top
:
200px
;
left
:
26px
;
left
:
26px
;
div
{
div
{
height
:
24px
;
height
:
24px
;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
.tit
{
.tit
{
display
:
inline-block
;
display
:
inline-block
;
width
:
120px
;
width
:
120px
;
...
@@ -654,6 +688,7 @@ onMounted(async () => {
...
@@ -654,6 +688,7 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
.tit1
{
.tit1
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
...
@@ -661,10 +696,12 @@ onMounted(async () => {
...
@@ -661,10 +696,12 @@ onMounted(async () => {
line-height
:
30px
;
line-height
:
30px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
.tit2
{
.tit2
{
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.tit3
{
.tit3
{
display
:
inline-block
;
display
:
inline-block
;
border-radius
:
4px
;
border-radius
:
4px
;
...
@@ -677,6 +714,7 @@ onMounted(async () => {
...
@@ -677,6 +714,7 @@ onMounted(async () => {
}
}
}
}
}
}
.left-bottom
{
.left-bottom
{
width
:
520px
;
width
:
520px
;
height
:
190px
;
height
:
190px
;
...
@@ -685,6 +723,7 @@ onMounted(async () => {
...
@@ -685,6 +723,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
position
:
relative
;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
.left-bottom-title
{
.left-bottom-title
{
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -695,6 +734,7 @@ onMounted(async () => {
...
@@ -695,6 +734,7 @@ onMounted(async () => {
top
:
14px
;
top
:
14px
;
left
:
22px
;
left
:
22px
;
}
}
.img1
{
.img1
{
width
:
8px
;
width
:
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -702,6 +742,7 @@ onMounted(async () => {
...
@@ -702,6 +742,7 @@ onMounted(async () => {
left
:
0px
;
left
:
0px
;
top
:
18px
;
top
:
18px
;
}
}
.img2
{
.img2
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -710,6 +751,7 @@ onMounted(async () => {
...
@@ -710,6 +751,7 @@ onMounted(async () => {
right
:
44px
;
right
:
44px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.img3
{
.img3
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -718,17 +760,20 @@ onMounted(async () => {
...
@@ -718,17 +760,20 @@ onMounted(async () => {
right
:
12px
;
right
:
12px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.left-bottom-main
{
.left-bottom-main
{
width
:
478px
;
width
:
478px
;
height
:
108px
;
height
:
108px
;
position
:
absolute
;
position
:
absolute
;
top
:
60px
;
top
:
60px
;
left
:
21px
;
left
:
21px
;
img
{
img
{
position
:
absolute
;
position
:
absolute
;
top
:
12px
;
top
:
12px
;
right
:
12px
;
right
:
12px
;
}
}
.main-box
{
.main-box
{
width
:
480px
;
width
:
480px
;
height
:
48px
;
height
:
48px
;
...
@@ -737,6 +782,7 @@ onMounted(async () => {
...
@@ -737,6 +782,7 @@ onMounted(async () => {
margin-bottom
:
12px
;
margin-bottom
:
12px
;
position
:
relative
;
position
:
relative
;
cursor
:
pointer
;
cursor
:
pointer
;
img
{
img
{
width
:
24px
;
width
:
24px
;
height
:
24px
;
height
:
24px
;
...
@@ -744,6 +790,7 @@ onMounted(async () => {
...
@@ -744,6 +790,7 @@ onMounted(async () => {
top
:
12px
;
top
:
12px
;
left
:
16px
;
left
:
16px
;
}
}
.name
{
.name
{
position
:
absolute
;
position
:
absolute
;
top
:
12px
;
top
:
12px
;
...
@@ -754,6 +801,7 @@ onMounted(async () => {
...
@@ -754,6 +801,7 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
.type
{
.type
{
position
:
absolute
;
position
:
absolute
;
top
:
12px
;
top
:
12px
;
...
@@ -767,6 +815,7 @@ onMounted(async () => {
...
@@ -767,6 +815,7 @@ onMounted(async () => {
}
}
}
}
}
}
.left-bottom-B
{
.left-bottom-B
{
width
:
520px
;
width
:
520px
;
height
:
567px
;
height
:
567px
;
...
@@ -774,6 +823,7 @@ onMounted(async () => {
...
@@ -774,6 +823,7 @@ onMounted(async () => {
border-radius
:
10px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
position
:
relative
;
.left-bottom-title
{
.left-bottom-title
{
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -784,6 +834,7 @@ onMounted(async () => {
...
@@ -784,6 +834,7 @@ onMounted(async () => {
top
:
14px
;
top
:
14px
;
left
:
22px
;
left
:
22px
;
}
}
.img1
{
.img1
{
width
:
8px
;
width
:
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -791,6 +842,7 @@ onMounted(async () => {
...
@@ -791,6 +842,7 @@ onMounted(async () => {
left
:
0px
;
left
:
0px
;
top
:
18px
;
top
:
18px
;
}
}
.img2
{
.img2
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -799,6 +851,7 @@ onMounted(async () => {
...
@@ -799,6 +851,7 @@ onMounted(async () => {
right
:
44px
;
right
:
44px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.img3
{
.img3
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -807,17 +860,20 @@ onMounted(async () => {
...
@@ -807,17 +860,20 @@ onMounted(async () => {
right
:
12px
;
right
:
12px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.left-bottom-main
{
.left-bottom-main
{
width
:
478px
;
width
:
478px
;
height
:
446px
;
height
:
446px
;
position
:
absolute
;
position
:
absolute
;
top
:
60px
;
top
:
60px
;
left
:
24px
;
left
:
24px
;
.main-box
{
.main-box
{
width
:
495px
;
width
:
495px
;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
padding
:
0
22px
0
0px
;
padding
:
0
22px
0
0px
;
position
:
relative
;
position
:
relative
;
img
{
img
{
width
:
10px
;
width
:
10px
;
height
:
10px
;
height
:
10px
;
...
@@ -826,6 +882,7 @@ onMounted(async () => {
...
@@ -826,6 +882,7 @@ onMounted(async () => {
left
:
0
;
left
:
0
;
z-index
:
100
;
z-index
:
100
;
}
}
.time
{
.time
{
margin-left
:
21px
;
margin-left
:
21px
;
margin-bottom
:
4px
;
margin-bottom
:
4px
;
...
@@ -835,6 +892,7 @@ onMounted(async () => {
...
@@ -835,6 +892,7 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
}
}
.name
{
.name
{
margin-left
:
21px
;
margin-left
:
21px
;
font-size
:
16px
;
font-size
:
16px
;
...
@@ -844,6 +902,7 @@ onMounted(async () => {
...
@@ -844,6 +902,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
}
}
.btn
{
.btn
{
cursor
:
pointer
;
cursor
:
pointer
;
width
:
100%
;
width
:
100%
;
...
@@ -854,11 +913,13 @@ onMounted(async () => {
...
@@ -854,11 +913,13 @@ onMounted(async () => {
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
line-height
:
22px
;
line-height
:
22px
;
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
img
{
img
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
}
}
}
}
.line
{
.line
{
position
:
absolute
;
position
:
absolute
;
height
:
360px
;
height
:
360px
;
...
@@ -869,9 +930,11 @@ onMounted(async () => {
...
@@ -869,9 +930,11 @@ onMounted(async () => {
}
}
}
}
}
}
.right
{
.right
{
width
:
1063px
;
width
:
1063px
;
height
:
1800px
;
height
:
1800px
;
.right-top
{
.right-top
{
margin-bottom
:
16px
;
margin-bottom
:
16px
;
width
:
1063px
;
width
:
1063px
;
...
@@ -881,6 +944,7 @@ onMounted(async () => {
...
@@ -881,6 +944,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
position
:
relative
;
padding
:
60px
19px
24px
22px
;
padding
:
60px
19px
24px
22px
;
.right-top-title
{
.right-top-title
{
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -891,6 +955,7 @@ onMounted(async () => {
...
@@ -891,6 +955,7 @@ onMounted(async () => {
top
:
14px
;
top
:
14px
;
left
:
22px
;
left
:
22px
;
}
}
.img1
{
.img1
{
width
:
8px
;
width
:
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -898,11 +963,13 @@ onMounted(async () => {
...
@@ -898,11 +963,13 @@ onMounted(async () => {
left
:
0px
;
left
:
0px
;
top
:
18px
;
top
:
18px
;
}
}
.right-top-content
{
.right-top-content
{
width
:
1022px
;
width
:
1022px
;
height
:
312px
;
height
:
312px
;
overflow-y
:
auto
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
overflow-x
:
hidden
;
.right-top-item
{
.right-top-item
{
width
:
1022px
;
width
:
1022px
;
padding
:
12px
0px
;
padding
:
12px
0px
;
...
@@ -912,6 +979,7 @@ onMounted(async () => {
...
@@ -912,6 +979,7 @@ onMounted(async () => {
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
}
}
// .right-top-item:nth-child(odd) {
// .right-top-item:nth-child(odd) {
// background-color: rgb(247, 248, 249);
// background-color: rgb(247, 248, 249);
// border-top: 1px solid rgb(234, 236, 238);
// border-top: 1px solid rgb(234, 236, 238);
...
@@ -933,6 +1001,7 @@ onMounted(async () => {
...
@@ -933,6 +1001,7 @@ onMounted(async () => {
top
:
16px
;
top
:
16px
;
left
:
24px
;
left
:
24px
;
}
}
.right-top-item
.name
{
.right-top-item
.name
{
display
:
inline-block
;
display
:
inline-block
;
width
:
902px
;
width
:
902px
;
...
@@ -943,6 +1012,7 @@ onMounted(async () => {
...
@@ -943,6 +1012,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
margin-left
:
64px
;
margin-left
:
64px
;
}
}
.right-top-item
img
{
.right-top-item
img
{
width
:
16px
;
width
:
16px
;
height
:
31px
;
height
:
31px
;
...
@@ -952,6 +1022,7 @@ onMounted(async () => {
...
@@ -952,6 +1022,7 @@ onMounted(async () => {
cursor
:
pointer
;
cursor
:
pointer
;
}
}
}
}
.btn
{
.btn
{
padding
:
2px
8px
;
padding
:
2px
8px
;
font-size
:
16px
;
font-size
:
16px
;
...
@@ -966,20 +1037,24 @@ onMounted(async () => {
...
@@ -966,20 +1037,24 @@ onMounted(async () => {
position
:
absolute
;
position
:
absolute
;
z-index
:
100
;
z-index
:
100
;
}
}
.cl1
{
.cl1
{
top
:
14px
;
top
:
14px
;
right
:
107px
;
right
:
107px
;
}
}
.cl2
{
.cl2
{
top
:
14px
;
top
:
14px
;
right
:
19px
;
right
:
19px
;
}
}
.active
{
.active
{
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
background-color
:
rgba
(
246
,
250
,
255
,
1
);
background-color
:
rgba
(
246
,
250
,
255
,
1
);
border-color
:
rgb
(
5
,
95
,
194
);
border-color
:
rgb
(
5
,
95
,
194
);
}
}
}
}
.right-bottom
{
.right-bottom
{
width
:
1063px
;
width
:
1063px
;
height
:
817px
;
height
:
817px
;
...
@@ -988,6 +1063,7 @@ onMounted(async () => {
...
@@ -988,6 +1063,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
position
:
relative
;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
.right-bottom-title
{
.right-bottom-title
{
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -998,6 +1074,7 @@ onMounted(async () => {
...
@@ -998,6 +1074,7 @@ onMounted(async () => {
top
:
14px
;
top
:
14px
;
left
:
22px
;
left
:
22px
;
}
}
.img1
{
.img1
{
width
:
8px
;
width
:
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -1005,6 +1082,7 @@ onMounted(async () => {
...
@@ -1005,6 +1082,7 @@ onMounted(async () => {
left
:
0px
;
left
:
0px
;
top
:
18px
;
top
:
18px
;
}
}
.img2
{
.img2
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -1013,6 +1091,7 @@ onMounted(async () => {
...
@@ -1013,6 +1091,7 @@ onMounted(async () => {
right
:
12px
;
right
:
12px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.btn
{
.btn
{
padding
:
2px
8px
;
padding
:
2px
8px
;
font-size
:
16px
;
font-size
:
16px
;
...
@@ -1027,19 +1106,23 @@ onMounted(async () => {
...
@@ -1027,19 +1106,23 @@ onMounted(async () => {
position
:
absolute
;
position
:
absolute
;
z-index
:
100
;
z-index
:
100
;
}
}
.cl1
{
.cl1
{
top
:
14px
;
top
:
14px
;
right
:
107px
;
right
:
107px
;
}
}
.cl2
{
.cl2
{
top
:
14px
;
top
:
14px
;
right
:
19px
;
right
:
19px
;
}
}
.active
{
.active
{
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
background-color
:
rgba
(
246
,
250
,
255
,
1
);
background-color
:
rgba
(
246
,
250
,
255
,
1
);
border-color
:
rgb
(
5
,
95
,
194
);
border-color
:
rgb
(
5
,
95
,
194
);
}
}
.right-bottom-content1
{
.right-bottom-content1
{
width
:
1022px
;
width
:
1022px
;
height
:
auto
;
height
:
auto
;
...
@@ -1047,6 +1130,7 @@ onMounted(async () => {
...
@@ -1047,6 +1130,7 @@ onMounted(async () => {
// top: 60px;
// top: 60px;
// left: 22px;
// left: 22px;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
.right-bottom-content1-title
{
.right-bottom-content1-title
{
width
:
1022px
;
width
:
1022px
;
height
:
55px
;
height
:
55px
;
...
@@ -1057,6 +1141,7 @@ onMounted(async () => {
...
@@ -1057,6 +1141,7 @@ onMounted(async () => {
background-color
:
rgb
(
247
,
248
,
249
);
background-color
:
rgb
(
247
,
248
,
249
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
span
{
span
{
font-size
:
18px
;
font-size
:
18px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -1064,6 +1149,7 @@ onMounted(async () => {
...
@@ -1064,6 +1149,7 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
img
{
img
{
width
:
16px
;
width
:
16px
;
height
:
31px
;
height
:
31px
;
...
@@ -1073,6 +1159,7 @@ onMounted(async () => {
...
@@ -1073,6 +1159,7 @@ onMounted(async () => {
cursor
:
pointer
;
cursor
:
pointer
;
}
}
}
}
.right-bottom-content1-content
{
.right-bottom-content1-content
{
width
:
1022px
;
width
:
1022px
;
// height: 144px;
// height: 144px;
...
@@ -1085,6 +1172,7 @@ onMounted(async () => {
...
@@ -1085,6 +1172,7 @@ onMounted(async () => {
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
}
}
}
}
.right-bottom-content2
{
.right-bottom-content2
{
width
:
1022px
;
width
:
1022px
;
height
:
229px
;
height
:
229px
;
...
@@ -1092,6 +1180,7 @@ onMounted(async () => {
...
@@ -1092,6 +1180,7 @@ onMounted(async () => {
top
:
283px
;
top
:
283px
;
left
:
22px
;
left
:
22px
;
margin-bottom
:
24px
;
margin-bottom
:
24px
;
.right-bottom-content2-title
{
.right-bottom-content2-title
{
width
:
1022px
;
width
:
1022px
;
height
:
55px
;
height
:
55px
;
...
@@ -1102,6 +1191,7 @@ onMounted(async () => {
...
@@ -1102,6 +1191,7 @@ onMounted(async () => {
background-color
:
rgb
(
247
,
248
,
249
);
background-color
:
rgb
(
247
,
248
,
249
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
span
{
span
{
font-size
:
18px
;
font-size
:
18px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -1109,6 +1199,7 @@ onMounted(async () => {
...
@@ -1109,6 +1199,7 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
img
{
img
{
width
:
16px
;
width
:
16px
;
height
:
31px
;
height
:
31px
;
...
@@ -1118,6 +1209,7 @@ onMounted(async () => {
...
@@ -1118,6 +1209,7 @@ onMounted(async () => {
cursor
:
pointer
;
cursor
:
pointer
;
}
}
}
}
.right-bottom-content2-content
{
.right-bottom-content2-content
{
width
:
1022px
;
width
:
1022px
;
height
:
174px
;
height
:
174px
;
...
@@ -1130,6 +1222,7 @@ onMounted(async () => {
...
@@ -1130,6 +1222,7 @@ onMounted(async () => {
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
}
}
}
}
.right-bottom-content3
{
.right-bottom-content3
{
width
:
1022px
;
width
:
1022px
;
height
:
169px
;
height
:
169px
;
...
@@ -1137,6 +1230,7 @@ onMounted(async () => {
...
@@ -1137,6 +1230,7 @@ onMounted(async () => {
top
:
536px
;
top
:
536px
;
left
:
22px
;
left
:
22px
;
margin-bottom
:
24px
;
margin-bottom
:
24px
;
.right-bottom-content3-title
{
.right-bottom-content3-title
{
width
:
1022px
;
width
:
1022px
;
height
:
55px
;
height
:
55px
;
...
@@ -1147,6 +1241,7 @@ onMounted(async () => {
...
@@ -1147,6 +1241,7 @@ onMounted(async () => {
background-color
:
rgb
(
247
,
248
,
249
);
background-color
:
rgb
(
247
,
248
,
249
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
span
{
span
{
font-size
:
18px
;
font-size
:
18px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -1154,6 +1249,7 @@ onMounted(async () => {
...
@@ -1154,6 +1249,7 @@ onMounted(async () => {
line-height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
rgb
(
59
,
65
,
75
);
}
}
img
{
img
{
width
:
16px
;
width
:
16px
;
height
:
31px
;
height
:
31px
;
...
@@ -1163,6 +1259,7 @@ onMounted(async () => {
...
@@ -1163,6 +1259,7 @@ onMounted(async () => {
cursor
:
pointer
;
cursor
:
pointer
;
}
}
}
}
.right-bottom-content3-content
{
.right-bottom-content3-content
{
width
:
1022px
;
width
:
1022px
;
height
:
114px
;
height
:
114px
;
...
@@ -1176,6 +1273,7 @@ onMounted(async () => {
...
@@ -1176,6 +1273,7 @@ onMounted(async () => {
}
}
}
}
}
}
.right-top-b
{
.right-top-b
{
margin-bottom
:
50px
;
margin-bottom
:
50px
;
width
:
1063px
;
width
:
1063px
;
...
@@ -1185,6 +1283,7 @@ onMounted(async () => {
...
@@ -1185,6 +1283,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
position
:
relative
;
padding
:
60px
19px
28px
22px
;
padding
:
60px
19px
28px
22px
;
.right-top-title
{
.right-top-title
{
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -1195,6 +1294,7 @@ onMounted(async () => {
...
@@ -1195,6 +1294,7 @@ onMounted(async () => {
top
:
14px
;
top
:
14px
;
left
:
22px
;
left
:
22px
;
}
}
.img1
{
.img1
{
width
:
8px
;
width
:
8px
;
height
:
20px
;
height
:
20px
;
...
@@ -1202,11 +1302,13 @@ onMounted(async () => {
...
@@ -1202,11 +1302,13 @@ onMounted(async () => {
left
:
0px
;
left
:
0px
;
top
:
18px
;
top
:
18px
;
}
}
.right-top-content
{
.right-top-content
{
width
:
1022px
;
width
:
1022px
;
height
:
421px
;
height
:
421px
;
overflow-y
:
auto
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
overflow-x
:
hidden
;
.right-top-item
{
.right-top-item
{
width
:
1022px
;
width
:
1022px
;
height
:
104px
;
height
:
104px
;
...
@@ -1214,6 +1316,7 @@ onMounted(async () => {
...
@@ -1214,6 +1316,7 @@ onMounted(async () => {
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
padding
:
12px
0
;
padding
:
12px
0
;
position
:
relative
;
position
:
relative
;
img
{
img
{
width
:
24px
;
width
:
24px
;
height
:
24px
;
height
:
24px
;
...
@@ -1221,6 +1324,7 @@ onMounted(async () => {
...
@@ -1221,6 +1324,7 @@ onMounted(async () => {
left
:
26px
;
left
:
26px
;
top
:
12px
;
top
:
12px
;
}
}
.type
{
.type
{
position
:
absolute
;
position
:
absolute
;
right
:
48px
;
right
:
48px
;
...
@@ -1232,14 +1336,17 @@ onMounted(async () => {
...
@@ -1232,14 +1336,17 @@ onMounted(async () => {
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
line-height
:
24px
;
line-height
:
24px
;
}
}
.type1
{
.type1
{
background-color
:
rgba
(
232
,
189
,
11
,
0
.1
);
background-color
:
rgba
(
232
,
189
,
11
,
0
.1
);
color
:
rgb
(
232
,
189
,
11
);
color
:
rgb
(
232
,
189
,
11
);
}
}
.type2
{
.type2
{
background-color
:
rgba
(
231
,
243
,
255
,
1
);
background-color
:
rgba
(
231
,
243
,
255
,
1
);
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
}
}
.name
{
.name
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
700
;
font-weight
:
700
;
...
@@ -1249,6 +1356,7 @@ onMounted(async () => {
...
@@ -1249,6 +1356,7 @@ onMounted(async () => {
margin-left
:
65px
;
margin-left
:
65px
;
margin-bottom
:
4px
;
margin-bottom
:
4px
;
}
}
.time
{
.time
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
...
@@ -1257,6 +1365,7 @@ onMounted(async () => {
...
@@ -1257,6 +1365,7 @@ onMounted(async () => {
color
:
rgb
(
95
,
101
,
108
);
color
:
rgb
(
95
,
101
,
108
);
margin-left
:
65px
;
margin-left
:
65px
;
}
}
.content
{
.content
{
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
...
...
src/views/viewRiskSignal/assets/images/danger.svg
0 → 100644
浏览文件 @
881c314b
<svg
viewBox=
"0 0 15.0039 14.5"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"15.003906"
height=
"14.500000"
fill=
"none"
customFrame=
"#000000"
>
<rect
id=
"容器 239"
width=
"14.000000"
height=
"14.000000"
x=
"0.501953"
y=
"0.500000"
/>
<path
id=
"矢量 467"
d=
"M0.501953 4.81104L4.27116 2.65573L8.0404 4.81118L14.502 0.5"
stroke=
"rgb(255,255,255)"
stroke-linecap=
"round"
stroke-linejoin=
"round"
stroke-width=
"1.000000"
/>
<path
id=
"矢量 468"
d=
"M4.27118 6.96812L0.501953 9.12357L0.50198 14.5015L14.502 14.5013L14.502 4.8125L8.04045 9.12354L4.27118 6.96812Z"
fill=
"rgb(255,255,255)"
fill-rule=
"evenodd"
/>
</svg>
src/views/viewRiskSignal/assets/images/warning.svg
0 → 100644
浏览文件 @
881c314b
<svg
viewBox=
"0 0 26.1548 23.3789"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"26.154785"
height=
"23.378906"
fill=
"none"
customFrame=
"#000000"
>
<defs>
<linearGradient
id=
"paint_linear_0"
x1=
"12.260066"
x2=
"21.2057495"
y1=
"1.21773767"
y2=
"18.4094753"
gradientUnits=
"userSpaceOnUse"
>
<stop
stop-color=
"rgb(206,79,81)"
offset=
"0"
stop-opacity=
"1"
/>
<stop
stop-color=
"rgb(240,202,202)"
offset=
"1"
stop-opacity=
"1"
/>
</linearGradient>
</defs>
<path
id=
"减去顶层"
d=
"M25.8883 20.3883L14.8139 1.00773C14.0461 -0.335911 12.1087 -0.335911 11.3409 1.00773L0.266462 20.3883C-0.495419 21.7216 0.467316 23.3806 2.00295 23.3806L24.1519 23.3806C25.6875 23.3806 26.6502 21.7216 25.8883 20.3883ZM14.2931 14.8346C14.2711 15.4323 13.7802 15.9054 13.1821 15.9054C12.5832 15.9054 12.0919 15.4311 12.0709 14.8326L11.8462 8.42741C11.8196 7.66793 12.428 7.03775 13.188 7.03775C13.9489 7.03775 14.5578 7.66948 14.5297 8.42989L14.2931 14.8346ZM11.7811 18.0226C11.8557 17.8691 11.9621 17.7314 12.1004 17.6094C12.1956 17.5255 12.2977 17.4548 12.4066 17.3975C12.6412 17.2741 12.9075 17.2124 13.2057 17.2124C13.5225 17.2124 13.8007 17.2811 14.0405 17.4184C14.1353 17.4727 14.2241 17.5378 14.3068 17.6136C14.442 17.7374 14.5458 17.8762 14.6184 18.0301C14.7027 18.2087 14.7448 18.4077 14.7448 18.6269C14.7448 18.8242 14.7098 19.0065 14.6397 19.1738C14.5688 19.3433 14.4619 19.4974 14.3191 19.6361C14.1832 19.7681 14.0342 19.8685 13.8721 19.9373C13.6955 20.0122 13.5034 20.0497 13.2957 20.0497C12.8581 20.0497 12.4982 19.945 12.216 19.7355C12.2122 19.7327 12.2085 19.7299 12.2047 19.7271C12.1672 19.6986 12.131 19.6683 12.0963 19.6361C11.9352 19.4868 11.8178 19.3197 11.7439 19.1349C11.6814 18.9783 11.6501 18.809 11.6501 18.6269C11.6501 18.4038 11.6938 18.2024 11.7811 18.0226Z"
fill=
"url(#paint_linear_0)"
fill-rule=
"evenodd"
/>
</svg>
src/views/viewRiskSignal/index.vue
浏览文件 @
881c314b
...
@@ -5,11 +5,11 @@
...
@@ -5,11 +5,11 @@
<div
class=
"center-center"
>
<div
class=
"center-center"
>
<div
class=
"center-header"
>
<div
class=
"center-header"
>
<div
class=
"center-header-left"
>
<div
class=
"center-header-left"
>
<img
class=
"iconstyle"
src=
"./assets/images/warning.
pn
g"
/>
<img
class=
"iconstyle"
src=
"./assets/images/warning.
sv
g"
/>
<div
class=
"center-header-title"
>
风险信号管理
</div>
<div
class=
"center-header-title"
>
风险信号管理
</div>
</div>
</div>
<div
class=
"center-header-right"
>
<div
class=
"center-header-right"
>
<img
class=
"img"
src=
"./assets/images/danger.
pn
g"
/>
<img
class=
"img"
src=
"./assets/images/danger.
sv
g"
/>
<div
class=
"text"
>
风险统计
</div>
<div
class=
"text"
>
风险统计
</div>
</div>
</div>
</div>
</div>
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
<div
class=
"text1"
>
本年新增风险
</div>
<div
class=
"text1"
>
本年新增风险
</div>
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(95, 101, 108, 1)"
>
<div
class=
"text2"
style=
"color: rgba(95, 101, 108, 1)"
>
{{
basicInfo
.
yearAdded
+
" 项"
}}
<span
class=
"text2-inner"
>
{{
basicInfo
.
yearAdded
+
" 项"
}}
</span>
</div>
</div>
</div>
</div>
<div
class=
"item"
>
<div
class=
"item"
>
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
<div
class=
"text1"
>
本月新增风险
</div>
<div
class=
"text1"
>
本月新增风险
</div>
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(95, 101, 108, 1)"
>
<div
class=
"text2"
style=
"color: rgba(95, 101, 108, 1)"
>
{{
basicInfo
.
monthAdded
+
" 项"
}}
<span
class=
"text2-inner"
>
{{
basicInfo
.
monthAdded
+
" 项"
}}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -41,7 +41,8 @@
...
@@ -41,7 +41,8 @@
<div
class=
"dot"
style=
"background-color: rgba(5, 95, 194, 1)"
></div>
<div
class=
"dot"
style=
"background-color: rgba(5, 95, 194, 1)"
></div>
<div
class=
"text1"
>
已处理风险
</div>
<div
class=
"text1"
>
已处理风险
</div>
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(5, 95, 194, 1)"
>
{{
basicInfo
.
dealCount
+
" 项"
}}
</div>
<div
class=
"text2"
style=
"color: rgba(5, 95, 194, 1)"
><span
class=
"text2-inner"
>
{{
basicInfo
.
dealCount
+
" 项"
}}
</span></div>
</div>
</div>
<div
class=
"item"
>
<div
class=
"item"
>
<div
class=
"top"
>
<div
class=
"top"
>
...
@@ -49,7 +50,7 @@
...
@@ -49,7 +50,7 @@
<div
class=
"text1"
>
待处理风险
</div>
<div
class=
"text1"
>
待处理风险
</div>
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(206, 79, 81, 1)"
>
<div
class=
"text2"
style=
"color: rgba(206, 79, 81, 1)"
>
{{
basicInfo
.
pendingCount
+
" 项"
}}
<span
class=
"text2-inner"
>
{{
basicInfo
.
pendingCount
+
" 项"
}}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -125,7 +126,7 @@
...
@@ -125,7 +126,7 @@
<div
class=
"title"
>
{{
"风险类型"
}}
</div>
<div
class=
"title"
>
{{
"风险类型"
}}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main"
>
<el-checkbox-group
class=
"checkbox-group"
:model-value=
"selectedRiskTypeModel"
<el-checkbox-group
class=
"checkbox-group
risk-type-checkbox-group
"
:model-value=
"selectedRiskTypeModel"
@
change=
"handleRiskTypeGroupChange"
>
@
change=
"handleRiskTypeGroupChange"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RISK_FILTER_ALL_TYPE"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RISK_FILTER_ALL_TYPE"
>
{{
RISK_FILTER_ALL_TYPE
}}
{{
RISK_FILTER_ALL_TYPE
}}
...
@@ -188,35 +189,43 @@
...
@@ -188,35 +189,43 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"right-main"
>
<
template
v-if=
"riskList && riskList.length"
>
<div
class=
"itemlist itemlist--clickable"
v-for=
"(val, idx) in riskList"
:key=
"val.rowKey"
<div
class=
"right-main"
>
@
click=
"handleOpenRiskDetail(val)"
>
<div
class=
"itemlist itemlist--clickable"
v-for=
"(val, idx) in riskList"
:key=
"val.rowKey"
<div
class=
"box-title"
>
@
click=
"handleOpenRiskDetail(val)"
>
<div
class=
"risktitle"
v-html=
"highlightRiskText(val.title)"
/>
<div
class=
"box-title"
>
<div
class=
"risktype"
:class=
"'risktype--' + getRiskListItemLevelKey(val.risktype)"
>
<div
class=
"risktitle"
v-html=
"highlightRiskText(val.title)"
/>
<div
class=
"icon"
:class=
"'icon--' + getRiskListItemLevelKey(val.risktype)"
/>
<div
v-if=
"!isRiskLevelNoData(val.risktype)"
class=
"risktype"
<div
class=
"text"
>
{{ getRiskListItemLevelLabel(val.risktype) }}
</div>
:class=
"'risktype--' + getRiskListItemLevelKey(val.risktype)"
>
<div
class=
"icon"
:class=
"'icon--' + getRiskListItemLevelKey(val.risktype)"
/>
<div
class=
"text"
>
{{
getRiskListItemLevelLabel
(
val
.
risktype
)
}}
</div>
</div>
</div>
<div
class=
"box-source"
>
<img
class=
"source-pic"
:src=
"val.pic || DefaultIcon2"
alt=
""
/>
<div
class=
"source-text"
>
{{
formatRiskSourceLine
(
val
)
}}
</div>
</div>
<div
class=
"desc-box"
v-html=
"highlightRiskText(val.dsc)"
/>
<div
class=
"tag-box"
v-if=
"val.tag.length"
>
<AreaTag
v-for=
"(tag, index) in val.tag"
:key=
"index"
:tagName=
"tag"
>
{{
tag
}}
</AreaTag>
</div>
</div>
</div>
</div>
<div
class=
"box-source"
>
</div>
<img
class=
"source-pic"
:src=
"val.pic || DefaultIcon2"
alt=
""
/>
<div
class=
"right-footer"
>
<div
class=
"source-text"
>
{{ formatRiskSourceLine(val) }}
</div>
<div
class=
"footer-left"
>
{{
`共 ${totalNum
}
项调查`
}}
<
/div
>
<
/div
>
<div
class=
"
desc-box"
v-html=
"highlightRiskText(val.dsc)"
/
>
<
div
class
=
"
footer-right"
>
<div
class=
"tag-box"
v-if=
"val.tag.length"
>
<
el
-
pagination
@
current
-
change
=
"handleCurrentChange"
:
pageSize
=
"pageSize"
:
current
-
page
=
"currentPage"
<AreaTag
v-for=
"(tag, index) in val.tag"
:key=
"index"
:tagName=
"tag"
>
{{ tag }}
</AreaTag
>
:
total
=
"totalNum"
background
layout
=
"prev, pager, next"
/
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
</div>
<
/template
>
<div
class=
"right-footer"
>
<
template
v
-
else
>
<div
class=
"footer-left"
>
<
div
class
=
"right-empty"
>
{{ `共 ${totalNum} 项调查` }}
<
el
-
empty
class
=
"right-el-empty"
description
=
"暂无数据"
:
image
-
size
=
"100"
/>
</div>
<div
class=
"footer-right"
>
<el-pagination
@
current-change=
"handleCurrentChange"
:pageSize=
"pageSize"
:current-page=
"currentPage"
:total=
"totalNum"
background
layout=
"prev, pager, next"
/>
<
/div
>
<
/div
>
</
div
>
<
/
template
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -606,6 +615,11 @@ const getRiskListItemLevelLabel = (level) => {
...
@@ -606,6 +615,11 @@ const getRiskListItemLevelLabel = (level) => {
return
t
;
return
t
;
}
;
}
;
const
isRiskLevelNoData
=
(
level
)
=>
{
const
t
=
String
(
level
??
""
).
trim
();
return
!
t
||
t
===
"暂无数值"
||
t
===
"暂无数据"
;
}
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
router
=
useRouter
();
...
@@ -935,6 +949,15 @@ onMounted(async () => {
...
@@ -935,6 +949,15 @@ onMounted(async () => {
vertical
-
align
:
middle
;
vertical
-
align
:
middle
;
}
}
.
risk
-
type
-
checkbox
-
group
:
deep
(.
el
-
checkbox__label
)
{
display
:
inline
-
block
;
max
-
width
:
8
em
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
vertical
-
align
:
middle
;
}
.
home
-
wrapper
{
.
home
-
wrapper
{
width
:
100
%
;
width
:
100
%
;
height
:
100
%
;
height
:
100
%
;
...
@@ -997,8 +1020,8 @@ onMounted(async () => {
...
@@ -997,8 +1020,8 @@ onMounted(async () => {
cursor
:
pointer
;
cursor
:
pointer
;
.
img
{
.
img
{
width
:
1
6
px
;
width
:
1
4
px
;
height
:
1
5
px
;
height
:
1
4
px
;
}
}
.
text
{
.
text
{
...
@@ -1051,6 +1074,7 @@ onMounted(async () => {
...
@@ -1051,6 +1074,7 @@ onMounted(async () => {
line
-
height
:
24
px
;
line
-
height
:
24
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
text
-
align
:
right
;
text
-
align
:
right
;
white
-
space
:
nowrap
;
}
}
}
}
...
@@ -1061,6 +1085,14 @@ onMounted(async () => {
...
@@ -1061,6 +1085,14 @@ onMounted(async () => {
text
-
align
:
right
;
text
-
align
:
right
;
/* 强制不换行 */
/* 强制不换行 */
white
-
space
:
nowrap
;
white
-
space
:
nowrap
;
// 让右边界固定在块内,超长只会向左溢出(且不省略、完整显示)
width
:
100
%
;
direction
:
rtl
;
}
.
text2
-
inner
{
direction
:
ltr
;
unicode
-
bidi
:
isolate
;
}
}
}
}
}
}
...
@@ -1188,6 +1220,8 @@ onMounted(async () => {
...
@@ -1188,6 +1220,8 @@ onMounted(async () => {
margin
-
bottom
:
24
px
;
margin
-
bottom
:
24
px
;
width
:
1224
px
;
width
:
1224
px
;
position
:
relative
;
position
:
relative
;
display
:
flex
;
flex
-
direction
:
column
;
border
-
radius
:
10
px
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
...
@@ -1277,6 +1311,7 @@ onMounted(async () => {
...
@@ -1277,6 +1311,7 @@ onMounted(async () => {
.
right
-
main
{
.
right
-
main
{
width
:
1224
px
;
width
:
1224
px
;
flex
:
1
;
padding
-
left
:
24
px
;
padding
-
left
:
24
px
;
padding
-
top
:
6
px
;
padding
-
top
:
6
px
;
...
@@ -1451,6 +1486,24 @@ onMounted(async () => {
...
@@ -1451,6 +1486,24 @@ onMounted(async () => {
margin
-
right
:
58
px
;
margin
-
right
:
58
px
;
}
}
}
}
.
right
-
empty
{
flex
:
1
;
min
-
height
:
520
px
;
display
:
flex
;
align
-
items
:
center
;
justify
-
content
:
center
;
padding
:
24
px
;
:
deep
(.
el
-
empty__image
)
{
margin
-
bottom
:
0
;
}
.
right
-
el
-
empty
{
padding
:
0
;
margin
:
0
;
}
}
}
}
}
}
}
}
...
@@ -1839,7 +1892,7 @@ onMounted(async () => {
...
@@ -1839,7 +1892,7 @@ onMounted(async () => {
.
risk
-
signal
-
detail
-
dialog
.
risk
-
signal
-
detail
-
dialog__header
-
badge
-
close
{
.
risk
-
signal
-
detail
-
dialog
.
risk
-
signal
-
detail
-
dialog__header
-
badge
-
close
{
position
:
absolute
;
position
:
absolute
;
right
:
115
px
;
right
:
61
px
;
top
:
50
%
;
top
:
50
%
;
transform
:
translateY
(
-
50
%
);
transform
:
translateY
(
-
50
%
);
width
:
16
px
;
width
:
16
px
;
...
@@ -1864,7 +1917,7 @@ onMounted(async () => {
...
@@ -1864,7 +1917,7 @@ onMounted(async () => {
.
risk
-
signal
-
detail
-
dialog
.
risk
-
signal
-
detail
-
dialog__read
-
indicator
{
.
risk
-
signal
-
detail
-
dialog
.
risk
-
signal
-
detail
-
dialog__read
-
indicator
{
position
:
absolute
;
position
:
absolute
;
right
:
115
px
;
right
:
61
px
;
top
:
50
%
;
top
:
50
%
;
transform
:
translateY
(
-
50
%
);
transform
:
translateY
(
-
50
%
);
display
:
inline
-
flex
;
display
:
inline
-
flex
;
...
...
src/views/viewRiskSignal/utils/cleandarHeat.js
浏览文件 @
881c314b
...
@@ -206,7 +206,7 @@ const getCalendarHeatChart = (rawData) => {
...
@@ -206,7 +206,7 @@ const getCalendarHeatChart = (rawData) => {
return
""
;
return
""
;
}
}
const
v
=
p
.
data
?.[
3
]
??
0
;
const
v
=
p
.
data
?.[
3
]
??
0
;
return
`
${
dateStr
}
<br/>
数值
:
${
v
}
`
;
return
`
${
dateStr
}
<br/>
风险数量
:
${
v
}
`
;
}
}
}
}
};
};
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论