Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
dc88159f
提交
dc88159f
authored
4月 21, 2026
作者:
yanpeng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'pre' of
http://8.140.26.4:10003/caijian/risk-monitor
into yp-dev
上级
35c52158
fbb2a7a4
流水线
#560
已通过 于阶段
in 1 分 44 秒
变更
23
流水线
1
显示空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
760 行增加
和
276 行删除
+760
-276
risk-signal-overview-detail-dialog.scss
...rviewDetailDialog/risk-signal-overview-detail-dialog.scss
+23
-1
index.vue
src/components/base/moduleHeader/index.vue
+23
-34
index.vue
src/components/base/riskSignal/index.vue
+8
-3
goToPage.js
src/utils/goToPage.js
+53
-0
riskSignalOverviewDetailHelpers.js
src/utils/riskSignalOverviewDetailHelpers.js
+4
-4
index.vue
src/views/comprehensiveSearch/searchResults/index.vue
+298
-120
index.vue
src/views/coopRestriction/components/dataSub/index.vue
+29
-32
index.vue
src/views/coopRestriction/components/resLib/index.vue
+36
-12
index.vue
src/views/coopRestriction/detail/index.vue
+19
-5
index.vue
src/views/coopRestriction/index.vue
+1
-0
index.vue
src/views/dataLibrary/bill/countryBill/index.vue
+3
-3
lineChart.js
src/views/dataLibrary/components/LineChart/lineChart.js
+1
-0
piechart.js
src/views/dataLibrary/components/PieChart/piechart.js
+4
-3
index.vue
src/views/dataLibrary/index.vue
+16
-8
index.vue
src/views/dataLibrary/news/index.vue
+1
-1
index.vue
src/views/decree/institution/index.vue
+44
-11
index.vue
src/views/ruleRestriction/detail/index.vue
+115
-6
index.vue
src/views/thinkTank/index.vue
+1
-1
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
+65
-12
cleandarHeat.js
src/views/viewRiskSignal/utils/cleandarHeat.js
+1
-1
vite.config.js
vite.config.js
+1
-19
没有找到文件。
src/components/base/RiskSignalOverviewDetailDialog/risk-signal-overview-detail-dialog.scss
浏览文件 @
dc88159f
...
...
@@ -132,6 +132,28 @@
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
{
content
:
""
;
position
:
absolute
;
...
...
@@ -234,7 +256,7 @@
.risk-signal-detail-dialog
.risk-signal-detail-dialog__read-indicator
{
position
:
absolute
;
right
:
115
px
;
right
:
61
px
;
top
:
50%
;
transform
:
translateY
(
-50%
);
display
:
inline-flex
;
...
...
src/components/base/moduleHeader/index.vue
浏览文件 @
dc88159f
<
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-left"
:class=
"
{ 'flex-start': isShowSearchBar }">
<div
class=
"icon"
>
...
...
@@ -24,11 +24,10 @@
<div
class=
"mail"
@
click=
"handleClickToolBox"
>
<img
src=
"@/assets/icons/overview/mail.png"
alt=
""
/>
</div>
<div
class=
"user-trigger"
>
<div
class=
"user"
@
click
.
stop
=
"handleToggleUserPanel"
>
<div
class=
"user-trigger"
@
mouseenter=
"handleShowUserPanel"
>
<div
class=
"user"
@
click
.
stop
>
<img
src=
"@/assets/icons/overview/user.png"
alt=
""
/>
</div>
</div>
<div
v-if=
"isShowUserPanel"
class=
"user-panel"
>
<div
class=
"user-panel-row"
>
...
...
@@ -53,7 +52,8 @@
</div>
</div>
</div>
<div
class=
"menu-box"
v-show=
"isShowMenu"
@
mouseenter=
"handleHoverMenu(true)"
</div>
<div
class=
"menu-box"
v-if=
"isShowMenu"
@
mouseenter=
"handleHoverMenu(true)"
@
mouseleave=
"handleHoverMenu(false)"
>
<div
class=
"menu-content"
>
<div
class=
"menu-item"
v-for=
"(item, index) in menuList"
:key=
"index"
@
click=
"handleToModule(item, 1)"
>
...
...
@@ -64,9 +64,9 @@
</div>
</div>
</div>
<div
class=
"tool-box"
v-
show
=
"isShowTool"
@
mouseenter=
"handleHoverTool(true)"
<div
class=
"tool-box"
v-
if
=
"isShowTool"
@
mouseenter=
"handleHoverTool(true)"
@
mouseleave=
"handleHoverTool(false)"
>
<div
class=
"
menu
-content"
>
<div
class=
"
tool
-content"
>
<div
class=
"menu-item"
v-for=
"(item, index) in toolList"
:key=
"index"
@
click=
"handleToModule(item, 2)"
>
<div
class=
"icon"
>
<img
:src=
"item.icon"
alt=
""
/>
...
...
@@ -404,8 +404,8 @@ const handleClickToolBox = () => {
ElMessage
.
warning
(
"当前功能正在开发中,敬请期待!"
);
};
const
handle
Toggle
UserPanel
=
()
=>
{
isShowUserPanel
.
value
=
!
isShowUserPanel
.
val
ue
;
const
handle
Show
UserPanel
=
()
=>
{
isShowUserPanel
.
value
=
tr
ue
;
};
const
handleHideUserPanel
=
()
=>
{
...
...
@@ -662,10 +662,13 @@ onMounted(() => {
top
:
calc
(
32px
+
21px
);
width
:
240px
;
height
:
141px
;
// 与“中美科技博弈”下方菜单框(.menu-box)保持一致的透明/模糊效果
background
:
rgba
(
255
,
255
,
255
,
0
.8
);
border
:
1px
solid
rgba
(
255
,
255
,
255
,
1
);
border-radius
:
10px
;
backdrop-filter
:
blur
(
30px
);
-webkit-backdrop-filter
:
blur
(
30px
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
display
:
flex
;
flex-direction
:
column
;
...
...
@@ -785,6 +788,13 @@ onMounted(() => {
display
:
flex
;
align-items
:
center
;
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
{
width
:
16px
;
...
...
@@ -805,23 +815,6 @@ onMounted(() => {
}
.menu-box
{
// position: absolute;
// z-index: 999999999;
// width: 713px;
// height: 413px;
// top: 52px;
// left: 0;
// box-sizing: border-box;
// border-radius: 10px;
// backdrop-filter: blur(10px);
// -webkit-backdrop-filter: blur(10px);
// box-shadow: 0px 8px 32px 0px rgba(31, 38, 135, 0.15);
// background: rgba(255, 255, 255, 0.25);
// backdrop-filter: blur(10px);
// -webkit-backdrop-filter: blur(10px);
// border: 1px solid rgba(255, 255, 255, 0.3);
// background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.2) 100%);
// box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.2);
position
:
absolute
;
z-index
:
999999
;
width
:
713px
;
...
...
@@ -902,21 +895,17 @@ onMounted(() => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
0
.8
);
.
menu
-content
{
width
:
562
px
;
height
:
348
px
;
.
tool
-content
{
width
:
130
px
;
height
:
120
px
;
margin-top
:
8px
;
margin-left
:
72px
;
.menu-item
{
margin-top
:
36px
;
width
:
280px
;
width
:
100%
;
height
:
24px
;
display
:
flex
;
cursor
:
pointer
;
&
:hover
{
.title
{
color
:
var
(
--
color-main-active
);
...
...
src/components/base/riskSignal/index.vue
浏览文件 @
dc88159f
...
...
@@ -12,14 +12,14 @@
<div
class=
"box2-main"
>
<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] === '特别重大',
itemLeftStatus2: item[props.riskLevel] === '重大风险',
itemLeftStatus3: item[props.riskLevel] === '较大风险',
itemLeftStatus4: item[props.riskLevel] === '一般风险'
|| !item[props.riskLevel]
,
itemLeftStatus4: item[props.riskLevel] === '一般风险',
itemLeftStatus5: item[props.riskLevel] === '低风险',
}">
{{
item
[
props
.
riskLevel
]
||
"暂无数据"
}}
{{
item
[
props
.
riskLevel
]
}}
</div>
<div
class=
"item-right"
>
<div
class=
"text"
>
<span
class=
"text-inner"
>
{{
item
[
props
.
name
]
}}
</span></div>
...
...
@@ -76,6 +76,11 @@ const props = defineProps({
});
const
isRiskLevelNoData
=
(
level
)
=>
{
const
t
=
String
(
level
??
""
).
trim
();
return
!
t
||
t
===
"暂无数据"
||
t
===
"暂无数值"
;
};
const
showRiskSignalList
=
computed
(()
=>
{
return
props
.
list
.
slice
(
0
,
6
)
})
...
...
src/utils/goToPage.js
0 → 100644
浏览文件 @
dc88159f
import
{
useRouter
}
from
"vue-router"
;
const
router
=
useRouter
()
// 跳转法案详情
export
const
goToBill
=
(
id
,
tabName
)
=>
{
window
.
sessionStorage
.
setItem
(
"billId"
,
id
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
tabName
);
const
route
=
router
.
resolve
({
path
:
"/billLayout"
,
query
:
{
billId
:
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 跳转政令详情
export
const
goToDecree
=
(
id
,
tabName
)
=>
{
window
.
sessionStorage
.
setItem
(
"decreeId"
,
id
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
tabName
);
const
route
=
router
.
resolve
({
path
:
"/decreeLayout"
,
query
:
{
id
:
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 跳转智库
export
const
goToThinkTank
=
(
id
,
tabName
)
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
tabName
);
const
route
=
router
.
resolve
({
name
:
"ReportDetail"
,
params
:
{
id
:
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
// 跳转机构详情
export
const
goToInstitution
=
(
id
,
tabName
)
=>
{
window
.
sessionStorage
.
setItem
(
'curTabName'
,
tabName
)
const
curRoute
=
router
.
resolve
({
path
:
"/institution"
,
query
:
{
id
:
id
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
}
\ No newline at end of file
src/utils/riskSignalOverviewDetailHelpers.js
浏览文件 @
dc88159f
...
...
@@ -223,14 +223,14 @@ export function getRiskDetailLevelModifier(level) {
if
(
t
===
"低风险"
)
{
return
"lv5"
;
}
if
(
t
===
"一般风险"
||
!
t
||
t
===
"暂无数据"
)
{
if
(
t
===
"一般风险"
||
!
t
||
t
===
"暂无数据"
||
t
===
"风险信号暂无评估"
)
{
return
"lv4"
;
}
return
"lv4"
;
}
/**
与 `@/components/base/riskSignal` 左侧等级一致:空 / null 等展示「暂无数据
」 */
export
const
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
=
"
暂无数据
"
;
/**
详情弹窗标题区等级文案:空 / null 等展示「风险信号暂无评估
」 */
export
const
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
=
"
风险信号暂无评估
"
;
/**
* 列表行风险等级 → 弹窗标题区文案(null、空串与「暂无数值」等与列表「暂无数据」对齐)
...
...
@@ -241,7 +241,7 @@ export function normalizeRiskSignalListLevelText(raw) {
return
RISK_SIGNAL_LIST_LEVEL_EMPTY_TEXT
;
}
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
s
;
...
...
src/views/comprehensiveSearch/searchResults/index.vue
浏览文件 @
dc88159f
<
template
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
ref=
"container"
v-loading=
"isLoading"
element-loading-text=
"数据加载中,请稍候..."
>
<div
class=
"header"
>
<div
class=
"search-box"
>
<div
class=
"left"
>
<div
class=
"icon"
>
<img
src=
"./assets/images/search-icon1.png"
alt=
""
/>
</div>
<el-input
v-model=
"keyword"
:border=
"false"
style=
"width: 900px"
@
keyup
.
enter=
"handleSearch"
/>
<el-input
v-model=
"keyword"
:border=
"false"
style=
"width: 900px"
@
keyup
.
enter=
"handleSearch
(true)
"
/>
</div>
<div
class=
"right"
@
click=
"handleToAi"
>
<img
src=
"./assets/images/ai-icon.png"
alt=
""
/>
...
...
@@ -14,13 +14,8 @@
</div>
<div
class=
"tab-box"
>
<div
class=
"tab-left"
>
<div
class=
"tab"
:class=
"
{ tabActive: activeTabId === item.id }"
v-for="(item, index) in tabList"
:key="index"
@click="handleClickTab(item.name, item.id)"
>
<div
class=
"tab"
:class=
"
{ tabActive: activeTabId === item.id }" v-for="(item, index) in tabList" :key="index"
@click="handleClickTab(item.name, item.id)">
{{
item
.
name
}}
</div>
</div>
...
...
@@ -32,21 +27,15 @@
</div>
-->
</div>
<div
class=
"tag-box"
>
<div
class=
"tag"
:class=
"
{ tagActive: item.selected }"
@click="handleClickDomains(item)"
v-for="item in domains"
:key="item.id"
>
<div
class=
"tag"
:class=
"
{ tagActive: item.selected }" @click="handleClickDomains(item)" v-for="item in domains"
:key="item.id">
{{
item
.
name
}}
</div>
</div>
<div
class=
"info-box"
>
<div
class=
"info-left"
>
<div
class=
"text-box"
>
搜索结果
<span
class=
"text-1"
>
{{
totalNum
}}
</span
>
条
搜索结果
<span
class=
"text-1"
>
{{
totalNum
}}
</span>
条
</div>
<div
class=
"text-box"
>
搜索关键词:
<span
class=
"text-2"
>
{{
keyword
}}
</span>
...
...
@@ -55,14 +44,14 @@
当前领域:
<span
class=
"text-2"
>
{{
curArea
}}
</span>
</div>
-->
</div>
<
!--
<
div
class=
"info-right"
>
<el-select
v-model=
"select
Time"
placeholder=
"选择时间"
style=
"width: 125px
"
>
<el-option
v-for=
"item in
time
List"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
<div
class=
"info-right"
>
<el-select
v-model=
"select
Order"
placeholder=
"请选择排序条件"
style=
"width: 125px"
@
change=
"handleOrderChange
"
>
<el-option
v-for=
"item in
order
List"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
<el-select
v-model=
"selectRelation"
placeholder=
"选择相关度"
style=
"width: 125px"
>
<
!--
<
el-select
v-model=
"selectRelation"
placeholder=
"选择相关度"
style=
"width: 125px"
>
<el-option
v-for=
"item in relationList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</div>
-->
</el-select>
-->
</div>
</div>
<!--
<div
class=
"summary-box"
>
<div
class=
"summary-header"
>
...
...
@@ -86,7 +75,7 @@
</div>
</div>
-->
</div>
<div
class=
"main"
v-if=
"curArea !== '实体清单'"
>
<div
class=
"main"
v-if=
"curArea !== '实体清单'"
>
<div
class=
"item"
v-for=
"(item, index) in searchResults"
:key=
"index"
@
click=
"handleToPage(item)"
>
<div
class=
"item-left"
v-if=
"item.img"
>
<img
:src=
"item?.img"
alt=
""
/>
...
...
@@ -102,8 +91,9 @@
</div>
</div>
</div>
<el-empty
v-if=
"!searchResults.length"
></el-empty>
</div>
<div
class=
"main1"
v-if=
"curArea === '实体清单'"
>
<div
class=
"main1"
v-if=
"curArea === '实体清单'"
>
<div
class=
"item"
v-for=
"(item, index) in searchResults"
:key=
"index"
@
click=
"handleToPage(item)"
>
<div
class=
"main-header"
>
<div
class=
"title"
v-html=
"item?.originalTitle"
></div>
...
...
@@ -112,7 +102,7 @@
</div>
</div>
<div
class=
"entity-box"
>
<div
class=
"entity"
v-for=
"val,
idx in item.sanctionList"
:key=
"idx"
@
click
.
prevent=
"handleCompClick(val)
"
>
<div
class=
"entity"
v-for=
"val,
idx in item.sanctionList"
:key=
"idx
"
>
<div
class=
"icon"
>
<img
src=
"./assets/images/warning.png"
alt=
""
>
</div>
...
...
@@ -122,16 +112,11 @@
<div
class=
"content"
v-html=
"item?.originalDescription"
></div>
<div
class=
"time"
v-if=
"item.date"
>
{{
item
?.
date
}}
</div>
</div>
<el-empty
v-if=
"!searchResults.length"
></el-empty>
</div>
<div
class=
"footer"
>
<el-pagination
@
current-change=
"handleChangeCurrentPage"
:size=
"pageSize"
:current-page=
"currentPage"
background
layout=
"prev, pager, next"
:total=
"totalNum"
/>
<el-pagination
@
current-change=
"handleChangeCurrentPage"
:size=
"pageSize"
:current-page=
"currentPage"
background
layout=
"prev, pager, next"
:total=
"totalNum
<
500
?
totalNum
:
500
"
/>
</div>
</div>
</
template
>
...
...
@@ -148,10 +133,43 @@ import Img3 from "./assets/images/img3.png";
import
{
ElMessage
}
from
"element-plus"
;
const
route
=
useRoute
();
const
container
=
ref
(
null
)
const
isLoading
=
ref
(
false
)
const
select
Time
=
ref
(
"全部时间"
);
const
select
Order
=
ref
(
2
);
const
selectRelation
=
ref
(
"相关度优先"
);
const
handleOrderChange
=
()
=>
{
// alert(selectOrder.value)
currentPage
.
value
=
1
handleSearch
(
true
)
}
const
orderList
=
ref
([
{
label
:
"按时间倒序"
,
value
:
2
},
{
label
:
"按评分倒序"
,
value
:
0
},
]);
const
relationList
=
ref
([
{
label
:
"相关度优先"
,
value
:
"相关度优先"
},
{
label
:
"相关度优先1"
,
value
:
"相关度优先1"
},
{
label
:
"相关度优先2"
,
value
:
"相关度优先2"
}
]);
const
keyword
=
ref
(
""
);
const
tabList
=
ref
([
...
...
@@ -167,17 +185,30 @@ const tabList = ref([
name
:
"政令"
,
id
:
2
},
{
name
:
"智库"
,
id
:
3
},
//
{
//
name: "智库",
//
id: 3
//
},
{
name
:
"智库报告"
,
id
:
4
},
{
name
:
"实体清单"
,
id
:
5
// id: 5,
id
:
10
,
},
{
name
:
"商业管制清单"
,
id
:
11
},
{
name
:
"SDN清单"
,
id
:
14
},
{
name
:
"涉军企业清单"
,
id
:
15
},
{
name
:
"人物"
,
...
...
@@ -205,39 +236,10 @@ const handleClickTab = (name, id) => {
curArea
.
value
=
name
;
domains
.
value
=
[];
selectedDomains
.
value
=
[];
handleSearch
();
currentPage
.
value
=
1
handleSearch
(
true
);
};
const
timeList
=
ref
([
{
label
:
"全部时间"
,
value
:
"全部时间"
},
{
label
:
"2025年"
,
value
:
"2025年"
},
{
label
:
"2024年"
,
value
:
"2024年"
}
]);
const
relationList
=
ref
([
{
label
:
"相关度优先"
,
value
:
"相关度优先"
},
{
label
:
"相关度优先1"
,
value
:
"相关度优先1"
},
{
label
:
"相关度优先2"
,
value
:
"相关度优先2"
}
]);
// 关联检索
const
relatedSearchList
=
ref
([
"金融制度是如何建立的?"
,
...
...
@@ -263,7 +265,11 @@ const totalNum = ref(0);
const
handleChangeCurrentPage
=
page
=>
{
currentPage
.
value
=
page
;
handleSearch
();
container
.
value
?.
scrollTo
({
top
:
0
,
behavior
:
'smooth'
// 平滑滚动
})
handleSearch
(
false
);
};
const
domains
=
ref
([
...
...
@@ -282,8 +288,11 @@ const handleClickDomains = domain => {
return
item
.
selected
;
})
.
map
(
item
=>
item
.
name
);
console
.
log
(
"selectedDomains"
,
selectedDomains
.
value
);
handleSearch
();
// 页码初始化为1
currentPage
.
value
=
1
handleSearch
(
true
);
};
function
highlightText
(
text
,
keyword
)
{
...
...
@@ -293,22 +302,25 @@ function highlightText(text, keyword) {
return
text
.
replace
(
regex
,
'<span style="color: red; font-weight: bold;">$1</span>'
);
}
const
handleSearch
=
async
()
=>
{
const
handleSearch
=
async
(
isShowResultTip
)
=>
{
isLoading
.
value
=
true
let
params
;
if
(
activeTabId
.
value
)
{
params
=
{
size
:
pageSize
.
value
,
page
:
currentPage
.
value
,
keyword
:
keyword
.
value
,
// "出口"
keyword
:
keyword
.
value
,
type
:
activeTabId
.
value
==
100
?
''
:
activeTabId
.
value
,
domains
:
selectedDomains
.
value
domains
:
selectedDomains
.
value
,
sort
:
selectOrder
.
value
};
}
else
{
params
=
{
size
:
pageSize
.
value
,
page
:
currentPage
.
value
,
keyword
:
keyword
.
value
,
// "出口"
domains
:
selectedDomains
.
value
keyword
:
keyword
.
value
,
domains
:
selectedDomains
.
value
,
sort
:
selectOrder
.
value
};
}
try
{
...
...
@@ -328,16 +340,30 @@ const handleSearch = async () => {
item
.
originalTitle
=
highlightText
(
item
.
originalTitle
,
keyword
.
value
);
item
.
originalDescription
=
highlightText
(
item
.
originalDescription
,
keyword
.
value
);
});
totalNum
.
value
=
res
.
data
.
total
;
totalNum
.
value
=
res
.
data
.
total
if
(
totalNum
.
value
)
{
if
(
isShowResultTip
)
{
ElMessage
.
success
(
`共计搜索到
${
totalNum
.
value
}
条结果`
);
}
}
else
{
if
(
isShowResultTip
)
{
ElMessage
.
warning
(
`共计搜索到
${
totalNum
.
value
}
条结果`
);
}
}
}
else
{
if
(
isShowResultTip
)
{
ElMessage
.
warning
(
"当前条件共搜索到0条结果!"
);
}
}
catch
(
error
)
{}
}
}
catch
(
error
)
{
console
.
error
(
'error'
,
error
);
}
finally
{
isLoading
.
value
=
false
}
};
const
handleToPage
=
async
item
=>
{
...
...
@@ -392,9 +418,13 @@ const handleToPage = async item => {
ElMessage
.
warning
(
"获取人物全局信息错误"
);
return
;
}
}
catch
(
error
)
{}
}
catch
(
error
)
{
}
}
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
titleText
);
// window.sessionStorage.setItem(
// "curTabName",
// item.date + item.title
// );
let
curRoute
;
switch
(
item
.
typeStr
)
{
case
"法案"
:
...
...
@@ -430,42 +460,109 @@ const handleToPage = async item => {
});
break
;
case
"实体清单"
:
if
(
!
item
.
organizationId
)
{
ElMessage
.
warning
(
'当前条目没有相关实体,无法跳转'
)
return
}
curRoute
=
router
.
resolve
({
name
:
"companyPages"
,
params
:
{
id
:
item
.
organizationId
}
});
break
;
case
"商业管制清单"
:
if
(
!
item
.
organizationId
)
{
ElMessage
.
warning
(
'当前条目没有相关实体,无法跳转'
)
return
}
curRoute
=
router
.
resolve
({
name
:
"companyPages"
,
params
:
{
id
:
item
.
organizationId
}
});
break
;
case
"SDN清单"
:
if
(
!
item
.
organizationId
)
{
ElMessage
.
warning
(
'当前条目没有相关实体,无法跳转'
)
return
}
curRoute
=
router
.
resolve
({
name
:
"companyPages"
,
params
:
{
id
:
item
.
organizationId
}
});
break
;
case
"涉军企业清单"
:
if
(
!
item
.
organizationId
)
{
ElMessage
.
warning
(
'当前条目没有相关实体,无法跳转'
)
return
}
curRoute
=
router
.
resolve
({
name
:
"companyPages"
,
params
:
{
id
:
item
.
organizationId
}
});
break
;
case
"实体清单事件"
:
curRoute
=
router
.
resolve
({
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
id
:
item
.
id
,
sanTypeId
:
2
,
date
:
item
.
date
}
});
break
;
// case "人物":
// curRoute = router.resolve({
// path: "/decreeLayout",
// query: {
// id: id
// }
// });
// break;
break
case
"商业管制清单事件"
:
curRoute
=
router
.
resolve
({
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
2
,
date
:
item
.
date
}
});
break
case
"SDN清单事件"
:
curRoute
=
router
.
resolve
({
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
2
,
date
:
item
.
date
}
});
break
case
"涉军企业清单事件"
:
curRoute
=
router
.
resolve
({
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
2
,
date
:
item
.
date
}
});
break
case
"机构"
:
curRoute
=
router
.
resolve
({
path
:
"/newsModeule/"
+
item
.
id
path
:
"/institution"
,
query
:
{
id
:
item
.
id
}
});
break
;
case
"新闻"
:
curRoute
=
router
.
resolve
({
name
:
"newsDetail"
,
query
:
{
newsI
d
:
item
.
id
params
:
{
i
d
:
item
.
id
}
});
break
;
// case "社媒":
// curRoute = router.resolve({
// path: "/decreeLayout",
// query: {
// id: id
// }
// });
// break;
}
window
.
open
(
curRoute
.
href
,
"_blank"
);
...
...
@@ -487,15 +584,9 @@ onMounted(() => {
case
"政令"
:
activeTabId
.
value
=
2
;
break
;
case
"智库"
:
activeTabId
.
value
=
3
;
break
;
case
"智库报告"
:
activeTabId
.
value
=
4
;
break
;
case
"社媒"
:
activeTabId
.
value
=
9
;
break
;
case
"人物"
:
activeTabId
.
value
=
6
;
break
;
...
...
@@ -505,14 +596,24 @@ onMounted(() => {
case
"新闻"
:
activeTabId
.
value
=
8
;
break
;
default
:
activeTabId
.
value
=
5
;
case
"实体清单"
:
activeTabId
.
value
=
10
;
break
;
case
"商业管制清单"
:
activeTabId
.
value
=
11
;
break
;
case
"SDN清单"
:
activeTabId
.
value
=
14
;
break
;
case
"SDN清单"
:
activeTabId
.
value
=
15
;
break
;
}
}
else
{
curArea
.
value
=
"全部"
activeTabId
.
value
=
100
;
}
handleSearch
();
handleSearch
(
true
);
});
const
handleToAi
=
()
=>
{
...
...
@@ -543,8 +644,10 @@ const handleCompClick = item => {
background
:
url("../assets/images/background.png")
no-repeat
;
background-size
:
100%
100%
;
overflow-y
:
auto
;
.header
{
margin-top
:
24px
;
// position: sticky;
// top: 24px;
.header-right
{
...
...
@@ -552,6 +655,7 @@ const handleCompClick = item => {
width
:
360px
;
top
:
134px
;
left
:
1300px
;
.header-right-header
{
height
:
30px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
...
...
@@ -562,9 +666,11 @@ const handleCompClick = item => {
letter-spacing
:
0px
;
text-align
:
left
;
}
.header-right-main
{
margin-top
:
24px
;
height
:
300px
;
.header-right-main-item
{
width
:
360px
;
height
:
40px
;
...
...
@@ -574,19 +680,24 @@ const handleCompClick = item => {
gap
:
8px
;
margin-bottom
:
8px
;
cursor
:
pointer
;
&
:hover
{
background
:
rgb
(
234
,
234
,
234
);
}
.icon
{
width
:
16px
;
height
:
16px
;
img
{
width
:
100%
;
height
:
100%
;
}
margin-left
:
16px
;
margin-top
:
12px
;
}
.text
{
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
...
...
@@ -597,8 +708,10 @@ const handleCompClick = item => {
}
}
}
.search-box
{
display
:
flex
;
.left
{
margin-left
:
240px
;
width
:
960px
;
...
...
@@ -609,44 +722,52 @@ const handleCompClick = item => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
0
.65
);
display
:
flex
;
&
:hover
{
border
:
1px
solid
var
(
--
color-main-active
);
}
.icon
{
width
:
20px
;
height
:
20px
;
margin-top
:
14px
;
margin-left
:
16px
;
margin-right
:
10px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
}
.right
{
margin-left
:
2px
;
margin-top
:
-16px
;
width
:
80px
;
height
:
80px
;
cursor
:
pointer
;
img
{
width
:
100%
;
height
:
100%
;
}
}
}
.tab-box
{
margin-top
:
12px
;
height
:
48px
;
display
:
flex
;
margin-left
:
240px
;
.tab-left
{
width
:
726
px
;
width
:
1000
px
;
height
:
48px
;
display
:
flex
;
justify-content
:
flex-start
;
gap
:
32px
;
gap
:
24px
;
.tab
{
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
...
...
@@ -656,10 +777,12 @@ const handleCompClick = item => {
box-sizing
:
border-box
;
border-bottom
:
3px
solid
transparent
;
cursor
:
pointer
;
&
:hover
{
color
:
var
(
--
color-main-active
);
}
}
.tabActive
{
color
:
var
(
--
color-main-active
);
font-size
:
18px
;
...
...
@@ -667,6 +790,7 @@ const handleCompClick = item => {
border-bottom
:
3px
solid
var
(
--
color-main-active
);
}
}
.tab-right
{
margin-left
:
74px
;
width
:
120px
;
...
...
@@ -678,6 +802,7 @@ const handleCompClick = item => {
display
:
flex
;
justify-content
:
center
;
gap
:
8px
;
.text
{
margin-top
:
4px
;
height
:
24px
;
...
...
@@ -687,10 +812,12 @@ const handleCompClick = item => {
font-weight
:
700
;
line-height
:
24px
;
}
.icon
{
margin-top
:
3px
;
width
:
8px
;
height
:
5px
;
img
{
width
:
100%
;
height
:
100%
;
...
...
@@ -698,6 +825,7 @@ const handleCompClick = item => {
}
}
}
.tag-box
{
margin-top
:
16px
;
width
:
908px
;
...
...
@@ -707,6 +835,7 @@ const handleCompClick = item => {
flex-wrap
:
wrap
;
gap
:
12px
;
margin-left
:
240px
;
.tag
{
height
:
32px
;
line-height
:
30px
;
...
...
@@ -721,12 +850,14 @@ const handleCompClick = item => {
font-weight
:
400
;
cursor
:
pointer
;
}
.tagActive
{
color
:
var
(
--
color-main-active
);
border
:
1px
solid
var
(
--
color-main-active
);
background
:
rgba
(
231
,
243
,
255
,
1
);
}
}
.info-box
{
margin-top
:
26px
;
margin-left
:
240px
;
...
...
@@ -734,9 +865,11 @@ const handleCompClick = item => {
height
:
32px
;
display
:
flex
;
justify-content
:
space-between
;
.info-left
{
display
:
flex
;
gap
:
24px
;
.text-box
{
height
:
32px
;
line-height
:
32px
;
...
...
@@ -744,12 +877,14 @@ const handleCompClick = item => {
font-size
:
16px
;
font-weight
:
400
;
color
:
rgba
(
59
,
65
,
75
,
1
);
.text-1
{
color
:
var
(
--
color-main-active
);
font-weight
:
700
;
font-size
:
20px
;
margin
:
0
5px
;
}
.text-2
{
color
:
var
(
--
color-main-active
);
font-size
:
18px
;
...
...
@@ -757,11 +892,13 @@ const handleCompClick = item => {
}
}
}
.info-right
{
display
:
flex
;
gap
:
13px
;
}
}
.summary-box
{
width
:
960px
;
height
:
260px
;
...
...
@@ -771,16 +908,19 @@ const handleCompClick = item => {
border
:
1px
solid
rgba
(
231
,
243
,
255
,
1
);
border-radius
:
10px
;
background
:
linear-gradient
(
180deg
,
rgba
(
246
,
250
,
255
,
1
)
,
rgba
(
246
,
250
,
255
,
0
)
100%
);
.summary-header
{
width
:
135px
;
height
:
32px
;
margin-top
:
16px
;
margin-left
:
24px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.summary-content
{
width
:
912px
;
height
:
180px
;
...
...
@@ -795,11 +935,13 @@ const handleCompClick = item => {
}
}
}
.main
{
width
:
913px
;
// height: 1464px;
margin-top
:
36px
;
margin-left
:
240px
;
.item
{
width
:
913px
;
min-height
:
108px
;
...
...
@@ -809,17 +951,21 @@ const handleCompClick = item => {
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
display
:
flex
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-bg-hover
);
}
.item-left
{
width
:
170px
;
height
:
115px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.item-right
{
// width: 731px;
flex
:
1
;
...
...
@@ -835,7 +981,11 @@ const handleCompClick = item => {
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.content
{
margin-top
:
10px
;
min-height
:
0
;
...
...
@@ -849,9 +999,11 @@ const handleCompClick = item => {
text-align
:
left
;
overflow
:
hidden
;
}
.item-right-footer
{
margin-top
:
10px
;
display
:
flex
;
.time
{
height
:
24px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
...
...
@@ -863,6 +1015,7 @@ const handleCompClick = item => {
text-align
:
left
;
margin-right
:
16px
;
}
.tag
{
height
:
24px
;
line-height
:
24px
;
...
...
@@ -870,16 +1023,19 @@ const handleCompClick = item => {
padding
:
0
8px
;
border-radius
:
4px
;
}
.tag1
{
border
:
1px
solid
rgba
(
255
,
204
,
199
,
1
);
background
:
rgba
(
255
,
241
,
240
,
1
);
color
:
rgba
(
255
,
77
,
79
,
1
);
}
.tag2
{
color
:
rgba
(
250
,
173
,
20
,
1
);
border
:
1px
solid
rgba
(
255
,
241
,
184
,
1
);
background
:
rgba
(
255
,
251
,
230
,
1
);
}
.tag3
{
color
:
rgba
(
22
,
119
,
255
,
1
);
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
...
...
@@ -889,10 +1045,12 @@ const handleCompClick = item => {
}
}
}
.main1
{
width
:
913px
;
margin-top
:
36px
;
margin-left
:
240px
;
.item
{
width
:
913px
;
min-height
:
108px
;
...
...
@@ -901,14 +1059,17 @@ const handleCompClick = item => {
padding-top
:
16px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
cursor
:
pointer
;
// &:hover {
// background: var(--color-bg-hover);
// }
&
:hover
{
background
:
var
(
--
color-bg-hover
);
}
.main-header
{
min-height
:
24px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
.title
{
width
:
820px
;
// height: 24px;
...
...
@@ -920,8 +1081,11 @@ const handleCompClick = item => {
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.tag
{
height
:
24px
;
line-height
:
24px
;
...
...
@@ -929,27 +1093,32 @@ const handleCompClick = item => {
padding
:
0
8px
;
border-radius
:
4px
;
}
.tag1
{
border
:
1px
solid
rgba
(
255
,
204
,
199
,
1
);
background
:
rgba
(
255
,
241
,
240
,
1
);
color
:
rgba
(
255
,
77
,
79
,
1
);
}
.tag2
{
color
:
rgba
(
250
,
173
,
20
,
1
);
border
:
1px
solid
rgba
(
255
,
241
,
184
,
1
);
background
:
rgba
(
255
,
251
,
230
,
1
);
}
.tag3
{
color
:
rgba
(
22
,
119
,
255
,
1
);
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
}
}
.entity-box
{
margin-top
:
12px
;
display
:
flex
;
gap
:
8px
;
flex-wrap
:
wrap
;
.entity
{
display
:
flex
;
justify-content
:
space-between
;
...
...
@@ -960,19 +1129,23 @@ const handleCompClick = item => {
border-radius
:
20px
;
background
:
rgba
(
255
,
241
,
240
,
1
);
cursor
:
pointer
;
&
:hover
{
.name
{
&
:hover
{
.name
{
font-weight
:
bold
;
}
}
.icon
{
width
:
12px
;
height
:
12px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.name
{
margin-top
:
4px
;
height
:
24px
;
...
...
@@ -1001,6 +1174,7 @@ const handleCompClick = item => {
text-align
:
left
;
overflow
:
hidden
;
}
.time
{
margin-top
:
10px
;
height
:
24px
;
...
...
@@ -1015,6 +1189,7 @@ const handleCompClick = item => {
}
}
}
.footer
{
width
:
913px
;
margin-left
:
264px
;
...
...
@@ -1025,10 +1200,12 @@ const handleCompClick = item => {
justify-content
:
center
;
}
}
:deep
(
.el-input__wrapper
)
{
box-shadow
:
none
;
height
:
46px
;
}
:deep
(
.el-input__wrapper
:hover
)
{
box-shadow
:
none
!
important
;
}
...
...
@@ -1036,6 +1213,7 @@ const handleCompClick = item => {
:deep
(
.el-input__wrapper.is-focus
)
{
box-shadow
:
none
!
important
;
}
:deep
(
.el-input__inner
)
{
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
...
...
src/views/coopRestriction/components/dataSub/index.vue
浏览文件 @
dc88159f
...
...
@@ -602,9 +602,7 @@ const initRightChart = () => {
const
domains
=
Array
.
from
(
domainsSet
);
const
types
=
Array
.
from
(
typesSet
);
const
legendSplitAt
=
Math
.
ceil
(
types
.
length
/
2
);
const
legendFirstLine
=
types
.
slice
(
0
,
legendSplitAt
);
const
legendSecondLine
=
types
.
slice
(
legendSplitAt
);
const
legendData
=
types
;
const
indicators
=
domains
.
map
((
domain
)
=>
{
const
domainData
=
rawData
.
filter
((
item
)
=>
item
.
AREA
===
domain
);
...
...
@@ -630,36 +628,27 @@ const initRightChart = () => {
const
option
=
{
color
:
colorMap
,
// 避免自动换行导致“第二行不居中”:拆成两行 legend,每行各自居中
legend
:
[
{
// 图例尽量单行居中;放不下则横向滚动(不换行)
legend
:
{
show
:
true
,
type
:
"plain"
,
data
:
legendFirstLine
,
type
:
"scroll"
,
orient
:
"horizontal"
,
data
:
legendData
,
top
:
8
,
left
:
"center"
,
width
:
"90%"
,
height
:
24
,
icon
:
"circle"
,
itemWidth
:
12
,
itemHeight
:
12
,
itemGap
:
24
,
textStyle
:
{
pageButtonPosition
:
"end"
,
pageIconSize
:
12
,
pageTextStyle
:
{
color
:
"rgb(95, 101, 108)"
,
fontSize
:
16
,
fontFamily
:
"Microsoft YaHei"
,
fontWeight
:
400
,
lineHeight
:
24
}
fontSize
:
12
,
fontFamily
:
"Microsoft YaHei"
},
{
show
:
legendSecondLine
.
length
>
0
,
type
:
"plain"
,
data
:
legendSecondLine
,
top
:
32
,
left
:
"center"
,
icon
:
"circle"
,
itemWidth
:
12
,
itemHeight
:
12
,
itemGap
:
24
,
textStyle
:
{
color
:
"rgb(95, 101, 108)"
,
fontSize
:
16
,
...
...
@@ -667,20 +656,28 @@ const initRightChart = () => {
fontWeight
:
400
,
lineHeight
:
24
}
}
],
},
radar
:
{
// 对齐左侧折线图(grid top=34%)的“图例到图形”间距:下移雷达中心并略缩半径
center
:
[
"50%"
,
"
62
%"
],
radius
:
"
60
%"
,
center
:
[
"50%"
,
"
57
%"
],
radius
:
"
58
%"
,
indicator
:
indicators
,
axisName
:
{
color
:
"rgba(132, 136, 142, 1)"
,
fontSize
:
14
,
fontWeight
:
400
fontFamily
:
"Source Han Sans CN"
,
fontWeight
:
700
,
fontSize
:
16
,
lineHeight
:
24
,
letterSpacing
:
1
,
color
:
"rgb(59, 65, 75)"
},
splitLine
:
{
lineStyle
:
{
color
:
[
"#e6e6e6"
]
}
},
splitArea
:
{
show
:
false
}
splitArea
:
{
show
:
true
,
areaStyle
:
{
// 从最内圈白色开始,向外层交替浅灰
color
:
[
"#ffffff"
,
"rgb(247, 248, 249)"
]
}
}
},
series
:
[
{
...
...
src/views/coopRestriction/components/resLib/index.vue
浏览文件 @
dc88159f
...
...
@@ -7,8 +7,7 @@
</div>
</div>
<el-select
v-model=
"sortModel"
placeholder=
"发布时间"
class=
"select"
popper-class=
"coop-select-dropdown"
:teleported=
"true"
placement=
"bottom-start"
:popper-options=
"sortPopperOptions"
@
change=
"handleSortChange"
>
:teleported=
"true"
placement=
"bottom-start"
:popper-options=
"sortPopperOptions"
@
change=
"handleSortChange"
>
<template
#
prefix
>
<img
v-if=
"sortModel !== true"
src=
"@/views/thinkTank/ThinkTankDetail/thinkDynamics/images/image down.png"
class=
"select-prefix-img"
alt=
""
@
click
.
stop=
"toggleSortPrefix"
/>
...
...
@@ -37,12 +36,13 @@
</div>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
:class=
"{ 'right--empty': !(mainDataList && mainDataList.length) }"
>
<div
class=
"right-title"
>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<div>
合作限制历程
</div>
</div>
<div
class=
"right-main"
>
<
template
v-if=
"mainDataList && mainDataList.length"
>
<div
class=
"main-content"
>
<div
v-for=
"item in mainDataList"
:key=
"item.id"
class=
"main-item"
>
<div
class=
"date"
>
{{
formatDateCn
(
item
.
date
)
}}
</div>
...
...
@@ -66,6 +66,12 @@
<el-pagination
v-model:current-page=
"currentPage"
:page-size=
"pageSize"
:total=
"total"
layout=
"prev, pager, next"
background
@
current-change=
"handlePageChange"
/>
</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>
...
...
@@ -533,6 +539,13 @@ watch(currentPage, () => {
border-radius
:
10px
;
background-color
:
#fff
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
display
:
flex
;
flex-direction
:
column
;
&
.right--empty
{
// 与左侧筛选框等高
height
:
432px
;
}
.right-title
{
width
:
1224px
;
...
...
@@ -563,10 +576,28 @@ watch(currentPage, () => {
.right-main
{
width
:
1224px
;
flex
:
1
;
padding
:
12px
0px
80px
0px
;
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
{
width
:
1224px
;
...
...
@@ -594,15 +625,7 @@ watch(currentPage, () => {
}
&
:last-child::after
{
content
:
""
;
position
:
absolute
;
top
:
37px
;
bottom
:
-37px
;
left
:
108px
;
width
:
2px
;
background-color
:
rgb
(
230
,
231
,
232
);
z-index
:
1
;
height
:
calc
(
100%
-
37px
);
content
:
none
;
}
.date
{
...
...
@@ -635,6 +658,7 @@ watch(currentPage, () => {
.title
{
font-size
:
20px
;
width
:
950px
;
font-weight
:
700
;
font-family
:
"Microsoft YaHei"
;
line-height
:
26px
;
...
...
src/views/coopRestriction/detail/index.vue
浏览文件 @
dc88159f
...
...
@@ -5,13 +5,13 @@
<img
:src=
"coopData?.IMAGEURL || defaultImg"
alt=
""
/>
<div
class=
"content"
>
<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>
<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 active"
><img
src=
"./assets/icon03.png"
alt=
""
/>
分析报告
</button>
<button
class=
"btn1 active"
@
click=
"handleOpenWrittingAsstaint"
><img
src=
"./assets/icon03.png"
alt=
""
/>
分析报告
</button>
</div>
</div>
</div>
...
...
@@ -81,7 +81,8 @@
<img
src=
"./assets/打开按钮.png"
alt=
""
>
</div>
<!-- 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"
>
<span
class=
"row-index"
>
{{
i
+
1
}}
.
</span>
<span
class=
"row-text"
>
{{
row
.
CONTENT
}}
</span>
...
...
@@ -117,6 +118,15 @@ import Rubio from "./assets/卢比奥.png";
import
Bondi
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
getlimitClauseData
=
async
()
=>
{
...
...
@@ -474,9 +484,13 @@ const dataList3 = ref([
.btn
{
width
:
376px
;
height
:
36
px
;
height
:
48
px
;
display
:
flex
;
justify-content
:
right
;
position
:
absolute
;
bottom
:
0
;
margin-left
:
1224px
;
.btn1
{
border-radius
:
6px
;
...
...
src/views/coopRestriction/index.vue
浏览文件 @
dc88159f
...
...
@@ -164,6 +164,7 @@ const handleToPosi = id => {
background-size
:
100%
100%
;
position
:
absolute
;
width
:
100%
;
height
:
100%
;
z-index
:
-100
;
top
:
-64px
;
...
...
src/views/dataLibrary/bill/countryBill/index.vue
浏览文件 @
dc88159f
...
...
@@ -124,7 +124,7 @@
<
el
-
table
ref
=
"tableRef"
:
data
=
"tableData"
row
-
key
=
"id"
@
selection
-
change
=
"handleSelectionChange"
@
select
=
"handleSelect"
@
select
-
all
=
"handleSelectAll"
style
=
"width: 100%"
:
row
-
style
=
"{ height: '52px'
}
"
>
<
el
-
table
-
column
type
=
"selection"
width
=
"40"
/>
<
el
-
table
-
column
label
=
"法案名称"
width
=
"
455
"
>
<
el
-
table
-
column
label
=
"法案名称"
width
=
"
600
"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"title-item text-compact-bold"
@
click
=
"handleClickToDetail(scope.row)"
>
{{
scope
.
row
.
originalTitle
...
...
@@ -134,14 +134,14 @@
<
el
-
table
-
column
label
=
"日期"
width
=
"120"
class
-
name
=
"date-column"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
date
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"提案人"
width
=
"
48
0"
>
<
el
-
table
-
column
label
=
"提案人"
width
=
"
30
0"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"person-item text-compact"
@
click
=
"handlePerClick(scope.row)"
>
{{
scope
.
row
.
sponsorPersonName
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
property
=
"affiliation"
label
=
"所属党派"
width
=
"120"
/>
<
el
-
table
-
column
property
=
"originDepart"
label
=
"提出委员会"
width
=
"180"
/>
<
el
-
table
-
column
property
=
"originDepart"
label
=
"提出委员会"
/>
<
el
-
table
-
column
property
=
"status"
label
=
"所处阶段"
width
=
"120"
/>
<
/el-table
>
<
/div
>
...
...
src/views/dataLibrary/components/LineChart/lineChart.js
浏览文件 @
dc88159f
...
...
@@ -23,6 +23,7 @@ const getLineChart = (dataX, dataY) => {
},
yAxis
:
{
type
:
'value'
,
name
:
'数量'
,
splitLine
:
{
show
:
true
,
lineStyle
:
{
...
...
src/views/dataLibrary/components/PieChart/piechart.js
浏览文件 @
dc88159f
...
...
@@ -2,8 +2,8 @@ import { MUTICHARTCOLORS } from "@/common/constant";
const
getPieChart
=
(
data
)
=>
{
const
colorList
=
MUTICHARTCOLORS
let
showData
=
data
if
(
data
.
length
>
1
4
)
{
showData
=
data
.
slice
(
0
,
1
3
)
if
(
data
.
length
>
1
2
)
{
showData
=
data
.
slice
(
0
,
1
1
)
let
num
=
0
data
.
slice
(
13
,).
forEach
(
item
=>
{
num
=
num
+
item
.
value
...
...
@@ -22,8 +22,9 @@ const getPieChart = (data) => {
radius
:
[
150
,
180
],
// height: '96%',
left
:
'center'
,
top
:
24
,
top
:
60
,
width
:
'98%'
,
height
:
'90%'
,
itemStyle
:
{
borderColor
:
'#fff'
,
borderWidth
:
1
...
...
src/views/dataLibrary/index.vue
浏览文件 @
dc88159f
...
...
@@ -134,16 +134,15 @@ const siderList = ref([
active
:
false
},
{
name
:
"
实体清单事件
"
,
path
:
"/dataLibrary/data
EntityListEven
t"
,
name
:
"
商业管制清单
"
,
path
:
"/dataLibrary/data
CommerceControlLis
t"
,
active
:
false
},
{
name
:
"
商业管制清单
"
,
path
:
"/dataLibrary/data
CommerceControlLis
t"
,
name
:
"
实体清单事件
"
,
path
:
"/dataLibrary/data
EntityListEven
t"
,
active
:
false
},
{
name
:
"商业管制清单事件"
,
path
:
"/dataLibrary/dataCommerceControlListEvent"
,
...
...
@@ -257,6 +256,10 @@ const siderList = ref([
]);
const
handleSiderItem
=
item
=>
{
if
(
item
.
name
===
'风险信号'
||
item
.
name
===
'市场准入限制'
)
{
ElMessage
.
warning
(
'当前模块开发中,敬请期待!'
)
return
}
siderList
.
value
.
forEach
(
val
=>
{
val
.
active
=
false
;
val
.
isExpanded
=
false
;
...
...
@@ -282,6 +285,10 @@ const handleSiderItem = item => {
};
const
handleSiderSecondItem
=
item
=>
{
if
(
item
.
name
===
'州法案'
||
item
.
name
===
'研究型大学'
||
item
.
name
===
'重点实验室'
)
{
ElMessage
.
warning
(
'当前模块开发中,敬请期待!'
)
return
}
siderList
.
value
.
forEach
(
item
=>
{
if
(
item
.
children
.
length
)
{
item
.
children
.
forEach
(
val
=>
{
...
...
@@ -437,17 +444,16 @@ onMounted(() => {
siderList
.
value
[
3
].
isExpanded
=
true
;
siderList
.
value
[
3
].
children
[
0
].
active
=
true
;
break
;
case
"/dataLibrary/data
EntityListEven
t"
:
case
"/dataLibrary/data
CommerceControlLis
t"
:
siderList
.
value
[
3
].
active
=
true
;
siderList
.
value
[
3
].
isExpanded
=
true
;
siderList
.
value
[
3
].
children
[
1
].
active
=
true
;
break
;
case
"/dataLibrary/data
CommerceControlLis
t"
:
case
"/dataLibrary/data
EntityListEven
t"
:
siderList
.
value
[
3
].
active
=
true
;
siderList
.
value
[
3
].
isExpanded
=
true
;
siderList
.
value
[
3
].
children
[
2
].
active
=
true
;
break
;
case
"/dataLibrary/dataCommerceControlListEvent"
:
siderList
.
value
[
3
].
active
=
true
;
siderList
.
value
[
3
].
isExpanded
=
true
;
...
...
@@ -559,6 +565,7 @@ onBeforeUnmount(() => {
height
:
100%
;
}
}
.title
{
color
:
var
(
--
color-primary-100
);
}
...
...
@@ -737,6 +744,7 @@ onBeforeUnmount(() => {
.tab-item-active
{
border-bottom
:
2px
solid
var
(
--
color-primary-100
)
!
important
;
background
:
var
(
--
color-primary-2
);
}
}
...
...
src/views/dataLibrary/news/index.vue
浏览文件 @
dc88159f
...
...
@@ -105,7 +105,7 @@
<
el
-
table
ref
=
"tableRef"
:
data
=
"tableData"
row
-
key
=
"id"
@
selection
-
change
=
"handleSelectionChange"
@
select
=
"handleSelect"
@
select
-
all
=
"handleSelectAll"
style
=
"width: 100%"
:
row
-
style
=
"{ height: '52px'
}
"
>
<
el
-
table
-
column
type
=
"selection"
width
=
"40"
/>
<
el
-
table
-
column
label
=
"新闻标题"
width
=
"
60
0"
>
<
el
-
table
-
column
label
=
"新闻标题"
width
=
"
42
0"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"title-item text-compact-bold"
@
click
=
"handleClickToDetail(scope.row)"
>
{{
scope
.
row
.
originalTitle
...
...
src/views/decree/institution/index.vue
浏览文件 @
dc88159f
...
...
@@ -9,7 +9,7 @@
<div
class=
"en-title"
>
{{
institutionInfo
.
enName
}}
</div>
<div
class=
"desc"
>
{{
institutionInfo
.
desc
}}
</div>
<div
class=
"tag-box"
>
<div
class=
"tag"
v-for=
"(tag, index) in
institutionInfo.t
agList"
:key=
"index"
>
<div
class=
"tag"
v-for=
"(tag, index) in
showT
agList"
:key=
"index"
>
{{
tag
}}
</div>
</div>
...
...
@@ -22,13 +22,8 @@
</div>
-->
</div>
<div
class=
"tab-box"
>
<div
class=
"tab"
@
click=
"handleClickTab(item)"
:class=
"
{ tabActive: activeTabName == item.name }"
v-for="(item, index) in tabList"
:key="index"
>
<div
class=
"tab"
@
click=
"handleClickTab(item)"
:class=
"
{ tabActive: activeTabName == item.name }"
v-for="(item, index) in tabList" :key="index">
{{
item
.
name
}}
</div>
</div>
...
...
@@ -61,6 +56,14 @@ const institutionInfo = ref({
logo
:
""
});
const
showTagList
=
computed
(()
=>
{
if
(
institutionInfo
.
value
.
tagList
.
length
>
10
)
{
return
institutionInfo
.
value
.
tagList
.
slice
(
0
,
10
)
}
else
{
return
institutionInfo
.
value
.
tagList
}
})
const
handleGetInfo
=
async
()
=>
{
const
params
=
{
id
:
route
.
query
.
id
...
...
@@ -75,7 +78,7 @@ const handleGetInfo = async () => {
institutionInfo
.
value
.
desc
=
res
.
data
.
orgIntroduction
;
institutionInfo
.
value
.
name
=
res
.
data
.
orgName
;
}
}
catch
(
error
)
{}
}
catch
(
error
)
{
}
};
handleGetInfo
();
...
...
@@ -95,7 +98,7 @@ const tabList = ref([
]);
const
handleClickTab
=
val
=>
{
if
(
val
.
name
===
'深度挖掘'
||
val
.
name
===
'对华制裁'
)
{
if
(
val
.
name
===
'深度挖掘'
||
val
.
name
===
'对华制裁'
)
{
ElMessage
.
warning
(
'当前功能开发中,敬请期待!'
)
return
}
...
...
@@ -125,6 +128,7 @@ onUnmounted(() => {
background-repeat
:
no-repeat
;
background-size
:
100%
100%
;
padding-top
:
16px
;
.header
{
width
:
1600px
;
height
:
200px
;
...
...
@@ -136,20 +140,23 @@ onUnmounted(() => {
background
:
rgba
(
255
,
255
,
255
,
0
.8
);
display
:
flex
;
position
:
relative
;
.header-left
{
width
:
160px
;
height
:
160px
;
margin
:
20px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.header-right
{
margin-left
:
24px
;
width
:
1350px
;
overflow
:
hidden
;
overflow-y
:
auto
;
.title
{
margin-top
:
26px
;
height
:
42px
;
...
...
@@ -164,6 +171,7 @@ onUnmounted(() => {
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.en-title
{
margin-top
:
8px
;
height
:
24px
;
...
...
@@ -178,7 +186,9 @@ onUnmounted(() => {
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.desc
{
height
:
48px
;
margin-top
:
6px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
...
...
@@ -187,11 +197,25 @@ onUnmounted(() => {
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
justify
;
overflow
:
hidden
;
display
:
-
webkit-box
;
/* 3. 限制显示的行数(修改数字即可改变行数) */
-webkit-line-clamp
:
2
;
/* 4. 设置文字垂直排列方向 */
-webkit-box-orient
:
vertical
;
/* 5. 隐藏超出部分 */
overflow
:
hidden
;
/* 6. 显示省略号 */
text-overflow
:
ellipsis
;
/* 可选:修复文字间距/换行问题 */
word-break
:
break-all
;
}
.tag-box
{
margin-top
:
14px
;
display
:
flex
;
gap
:
8px
;
.tag
{
height
:
24px
;
padding
:
0px
8px
;
...
...
@@ -206,6 +230,7 @@ onUnmounted(() => {
}
}
}
.header-btn
{
position
:
absolute
;
top
:
26px
;
...
...
@@ -219,14 +244,17 @@ onUnmounted(() => {
justify-content
:
center
;
align-items
:
center
;
cursor
:
pointer
;
.icon
{
width
:
16px
;
height
:
16px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.text
{
height
:
22px
;
color
:
rgba
(
255
,
255
,
255
,
1
);
...
...
@@ -237,6 +265,7 @@ onUnmounted(() => {
}
}
}
.tab-box
{
width
:
1600px
;
height
:
64px
;
...
...
@@ -249,6 +278,7 @@ onUnmounted(() => {
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.tab
{
width
:
526px
;
height
:
54px
;
...
...
@@ -263,10 +293,12 @@ onUnmounted(() => {
font-weight
:
400
;
letter-spacing
:
0px
;
cursor
:
pointer
;
&
:hover
{
background
:
rgba
(
231
,
243
,
255
,
1
);
}
}
.tabActive
{
border
:
2px
solid
rgba
(
174
,
214
,
255
,
1
);
background
:
rgba
(
231
,
243
,
255
,
1
);
...
...
@@ -275,6 +307,7 @@ onUnmounted(() => {
font-weight
:
700
;
}
}
.main
{
height
:
800px
;
width
:
1600px
;
...
...
src/views/ruleRestriction/detail/index.vue
浏览文件 @
dc88159f
...
...
@@ -132,10 +132,7 @@
<img
:src=
"item.IMAGEURL"
alt
/>
<div
class=
"name"
>
{{
item
.
RELATIONNAME
}}
</div>
<div
class=
"time"
>
{{
getTime
(
item
.
RELATIONDATE
)
}}
</div>
<div
class=
"type"
:class=
"
{ type1: item.TYPE === '行政令', type2: item.TYPE === '法案' }"
>
{{
item
.
TYPE
}}
</div>
<div
class=
"type"
:class=
"
{ type1: item.TYPE === '行政令', type2: item.TYPE === '法案' }">
{{
item
.
TYPE
}}
</div>
<div
class=
"content"
>
{{
item
.
RELATIONCONTENT
}}
</div>
</div>
</div>
...
...
@@ -261,8 +258,8 @@ const dataList3 = ref([
const
overviewInfo
=
ref
({})
const
sanRecordId
=
ref
(
''
)
const
backgroundInfo
=
ref
([])
const
limitClauseInfo
=
ref
([])
const
backgroundInfo
=
ref
([])
const
limitClauseInfo
=
ref
([])
const
relevantMeasureInfo
=
ref
([])
const
getUrlParams
=
()
=>
{
...
...
@@ -386,12 +383,14 @@ onMounted(async () => {
margin
:
0
;
padding
:
0
;
}
.cooperation-restrictions-detail
{
width
:
100%
;
height
:
100%
;
background
:
rgba
(
243
,
243
,
244
,
1
);
overflow
:
auto
;
padding-bottom
:
50px
;
// 领域样式
// 人工智能
.ai
{
...
...
@@ -399,42 +398,49 @@ onMounted(async () => {
background
:
rgba
(
255
,
241
,
240
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
}
// 新材料
.material
{
border
:
1px
solid
rgba
(
135
,
232
,
222
,
1
);
background
:
rgba
(
230
,
255
,
251
,
1
);
color
:
rgba
(
19
,
168
,
168
,
1
);
}
// 量子科技
.technology
{
border
:
1px
solid
rgba
(
211
,
173
,
247
,
1
);
background
:
rgba
(
249
,
240
,
255
,
1
);
color
:
rgba
(
114
,
46
,
209
,
1
);
}
// 生物科技
.organism
{
border
:
1px
solid
rgba
(
145
,
202
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
}
// 航空航天
.aerospace
{
border
:
1px
solid
rgba
(
173
,
198
,
255
,
1
);
background
:
rgba
(
240
,
245
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
}
// 能源
.energy
{
border
:
1px
solid
rgba
(
217
,
247
,
190
,
1
);
background
:
rgba
(
246
,
255
,
237
,
1
);
color
:
rgba
(
56
,
158
,
13
,
1
);
}
// 集成电路
.integrated
{
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
color
:
rgba
(
9
,
88
,
217
,
1
);
}
// 其他
.other
{
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
...
...
@@ -447,6 +453,7 @@ onMounted(async () => {
background
:
transparent
;
border
:
none
;
}
.nav
{
width
:
100%
;
height
:
120px
;
...
...
@@ -456,6 +463,7 @@ onMounted(async () => {
position
:
sticky
;
top
:
0
;
z-index
:
99999999
;
.nav-main
{
width
:
1600px
;
height
:
81px
;
...
...
@@ -463,14 +471,17 @@ onMounted(async () => {
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
img
{
width
:
72px
;
height
:
72px
;
margin-right
:
16px
;
}
.content
{
// width: 758px;
height
:
81px
;
// margin-right: 378px;
.cl1
{
font-size
:
24px
;
...
...
@@ -480,6 +491,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
margin-bottom
:
1px
;
}
.cl2
{
font-size
:
16px
;
font-weight
:
400
;
...
...
@@ -488,6 +500,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
margin-bottom
:
1px
;
}
.cl3
{
font-size
:
16px
;
font-weight
:
400
;
...
...
@@ -496,10 +509,12 @@ onMounted(async () => {
color
:
rgb
(
95
,
101
,
108
);
}
}
.btn
{
width
:
376px
;
height
:
36px
;
display
:
flex
;
.btn1
{
border-radius
:
6px
;
border
:
1px
solid
rgb
(
230
,
231
,
232
);
...
...
@@ -511,17 +526,20 @@ onMounted(async () => {
align-items
:
center
;
justify-content
:
center
;
cursor
:
pointer
;
img
{
width
:
16px
;
height
:
16px
;
margin-right
:
8px
;
}
font-size
:
16px
;
font-weight
:
400
;
line-height
:
22px
;
font-family
:
"Microsoft YaHei"
;
color
:
rgb
(
95
,
101
,
108
);
}
.active
{
background-color
:
rgb
(
5
,
95
,
194
);
color
:
#fff
;
...
...
@@ -529,6 +547,7 @@ onMounted(async () => {
}
}
}
.title
{
width
:
1600px
;
height
:
50px
;
...
...
@@ -540,6 +559,7 @@ onMounted(async () => {
display
:
flex
;
align-items
:
center
;
position
:
relative
;
.title-one
{
margin-left
:
23px
;
font-size
:
16px
;
...
...
@@ -548,6 +568,7 @@ onMounted(async () => {
font-family
:
"Microsoft YaHei"
;
color
:
rgb
(
59
,
65
,
75
);
}
.title-two
{
font-size
:
16px
;
font-weight
:
700
;
...
...
@@ -556,6 +577,7 @@ onMounted(async () => {
color
:
rgb
(
5
,
95
,
194
);
cursor
:
pointer
;
}
img
{
width
:
24px
;
height
:
24px
;
...
...
@@ -565,15 +587,18 @@ onMounted(async () => {
cursor
:
pointer
;
}
}
.main
{
width
:
1600px
;
height
:
1373px
;
margin
:
0
auto
;
display
:
flex
;
.left
{
width
:
520px
;
height
:
1157px
;
margin-right
:
17px
;
.left-top
{
margin-bottom
:
16px
;
width
:
520px
;
...
...
@@ -582,6 +607,7 @@ onMounted(async () => {
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
.left-top-title
{
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -592,6 +618,7 @@ onMounted(async () => {
top
:
14px
;
left
:
22px
;
}
.img1
{
width
:
8px
;
height
:
20px
;
...
...
@@ -599,6 +626,7 @@ onMounted(async () => {
left
:
0px
;
top
:
18px
;
}
.img2
{
width
:
28px
;
height
:
28px
;
...
...
@@ -607,6 +635,7 @@ onMounted(async () => {
right
:
44px
;
cursor
:
pointer
;
}
.img3
{
width
:
28px
;
height
:
28px
;
...
...
@@ -615,6 +644,7 @@ onMounted(async () => {
right
:
12px
;
cursor
:
pointer
;
}
.left-top-content
{
width
:
470px
;
height
:
122px
;
...
...
@@ -628,6 +658,7 @@ onMounted(async () => {
justify-content
:
center
;
align-items
:
center
;
padding
:
16px
24px
;
span
{
font-size
:
16px
;
font-weight
:
700
;
...
...
@@ -636,15 +667,18 @@ onMounted(async () => {
color
:
rgb
(
5
,
95
,
194
);
}
}
.left-top-bottom
{
width
:
460px
;
height
:
144px
;
position
:
absolute
;
top
:
200px
;
left
:
26px
;
div
{
height
:
24px
;
margin-bottom
:
16px
;
.tit
{
display
:
inline-block
;
width
:
120px
;
...
...
@@ -654,6 +688,7 @@ onMounted(async () => {
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
}
.tit1
{
font-size
:
16px
;
font-weight
:
400
;
...
...
@@ -661,10 +696,12 @@ onMounted(async () => {
line-height
:
30px
;
color
:
rgb
(
59
,
65
,
75
);
}
.tit2
{
color
:
rgb
(
5
,
95
,
194
);
cursor
:
pointer
;
}
.tit3
{
display
:
inline-block
;
border-radius
:
4px
;
...
...
@@ -677,6 +714,7 @@ onMounted(async () => {
}
}
}
.left-bottom
{
width
:
520px
;
height
:
190px
;
...
...
@@ -685,6 +723,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
margin-bottom
:
16px
;
.left-bottom-title
{
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -695,6 +734,7 @@ onMounted(async () => {
top
:
14px
;
left
:
22px
;
}
.img1
{
width
:
8px
;
height
:
20px
;
...
...
@@ -702,6 +742,7 @@ onMounted(async () => {
left
:
0px
;
top
:
18px
;
}
.img2
{
width
:
28px
;
height
:
28px
;
...
...
@@ -710,6 +751,7 @@ onMounted(async () => {
right
:
44px
;
cursor
:
pointer
;
}
.img3
{
width
:
28px
;
height
:
28px
;
...
...
@@ -718,17 +760,20 @@ onMounted(async () => {
right
:
12px
;
cursor
:
pointer
;
}
.left-bottom-main
{
width
:
478px
;
height
:
108px
;
position
:
absolute
;
top
:
60px
;
left
:
21px
;
img
{
position
:
absolute
;
top
:
12px
;
right
:
12px
;
}
.main-box
{
width
:
480px
;
height
:
48px
;
...
...
@@ -737,6 +782,7 @@ onMounted(async () => {
margin-bottom
:
12px
;
position
:
relative
;
cursor
:
pointer
;
img
{
width
:
24px
;
height
:
24px
;
...
...
@@ -744,6 +790,7 @@ onMounted(async () => {
top
:
12px
;
left
:
16px
;
}
.name
{
position
:
absolute
;
top
:
12px
;
...
...
@@ -754,6 +801,7 @@ onMounted(async () => {
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
}
.type
{
position
:
absolute
;
top
:
12px
;
...
...
@@ -767,6 +815,7 @@ onMounted(async () => {
}
}
}
.left-bottom-B
{
width
:
520px
;
height
:
567px
;
...
...
@@ -774,6 +823,7 @@ onMounted(async () => {
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
.left-bottom-title
{
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -784,6 +834,7 @@ onMounted(async () => {
top
:
14px
;
left
:
22px
;
}
.img1
{
width
:
8px
;
height
:
20px
;
...
...
@@ -791,6 +842,7 @@ onMounted(async () => {
left
:
0px
;
top
:
18px
;
}
.img2
{
width
:
28px
;
height
:
28px
;
...
...
@@ -799,6 +851,7 @@ onMounted(async () => {
right
:
44px
;
cursor
:
pointer
;
}
.img3
{
width
:
28px
;
height
:
28px
;
...
...
@@ -807,17 +860,20 @@ onMounted(async () => {
right
:
12px
;
cursor
:
pointer
;
}
.left-bottom-main
{
width
:
478px
;
height
:
446px
;
position
:
absolute
;
top
:
60px
;
left
:
24px
;
.main-box
{
width
:
495px
;
margin-bottom
:
16px
;
padding
:
0
22px
0
0px
;
position
:
relative
;
img
{
width
:
10px
;
height
:
10px
;
...
...
@@ -826,6 +882,7 @@ onMounted(async () => {
left
:
0
;
z-index
:
100
;
}
.time
{
margin-left
:
21px
;
margin-bottom
:
4px
;
...
...
@@ -835,6 +892,7 @@ onMounted(async () => {
line-height
:
24px
;
color
:
rgb
(
5
,
95
,
194
);
}
.name
{
margin-left
:
21px
;
font-size
:
16px
;
...
...
@@ -844,6 +902,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
}
}
.btn
{
cursor
:
pointer
;
width
:
100%
;
...
...
@@ -854,11 +913,13 @@ onMounted(async () => {
font-family
:
"Microsoft YaHei"
;
line-height
:
22px
;
color
:
rgb
(
5
,
95
,
194
);
img
{
width
:
16px
;
height
:
16px
;
}
}
.line
{
position
:
absolute
;
height
:
360px
;
...
...
@@ -869,9 +930,11 @@ onMounted(async () => {
}
}
}
.right
{
width
:
1063px
;
height
:
1800px
;
.right-top
{
margin-bottom
:
16px
;
width
:
1063px
;
...
...
@@ -881,6 +944,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
padding
:
60px
19px
24px
22px
;
.right-top-title
{
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -891,6 +955,7 @@ onMounted(async () => {
top
:
14px
;
left
:
22px
;
}
.img1
{
width
:
8px
;
height
:
20px
;
...
...
@@ -898,11 +963,13 @@ onMounted(async () => {
left
:
0px
;
top
:
18px
;
}
.right-top-content
{
width
:
1022px
;
height
:
312px
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
.right-top-item
{
width
:
1022px
;
padding
:
12px
0px
;
...
...
@@ -912,6 +979,7 @@ onMounted(async () => {
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
}
// .right-top-item:nth-child(odd) {
// background-color: rgb(247, 248, 249);
// border-top: 1px solid rgb(234, 236, 238);
...
...
@@ -933,6 +1001,7 @@ onMounted(async () => {
top
:
16px
;
left
:
24px
;
}
.right-top-item
.name
{
display
:
inline-block
;
width
:
902px
;
...
...
@@ -943,6 +1012,7 @@ onMounted(async () => {
color
:
rgb
(
59
,
65
,
75
);
margin-left
:
64px
;
}
.right-top-item
img
{
width
:
16px
;
height
:
31px
;
...
...
@@ -952,6 +1022,7 @@ onMounted(async () => {
cursor
:
pointer
;
}
}
.btn
{
padding
:
2px
8px
;
font-size
:
16px
;
...
...
@@ -966,20 +1037,24 @@ onMounted(async () => {
position
:
absolute
;
z-index
:
100
;
}
.cl1
{
top
:
14px
;
right
:
107px
;
}
.cl2
{
top
:
14px
;
right
:
19px
;
}
.active
{
color
:
rgb
(
5
,
95
,
194
);
background-color
:
rgba
(
246
,
250
,
255
,
1
);
border-color
:
rgb
(
5
,
95
,
194
);
}
}
.right-bottom
{
width
:
1063px
;
height
:
817px
;
...
...
@@ -988,6 +1063,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
margin-bottom
:
16px
;
.right-bottom-title
{
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -998,6 +1074,7 @@ onMounted(async () => {
top
:
14px
;
left
:
22px
;
}
.img1
{
width
:
8px
;
height
:
20px
;
...
...
@@ -1005,6 +1082,7 @@ onMounted(async () => {
left
:
0px
;
top
:
18px
;
}
.img2
{
width
:
28px
;
height
:
28px
;
...
...
@@ -1013,6 +1091,7 @@ onMounted(async () => {
right
:
12px
;
cursor
:
pointer
;
}
.btn
{
padding
:
2px
8px
;
font-size
:
16px
;
...
...
@@ -1027,19 +1106,23 @@ onMounted(async () => {
position
:
absolute
;
z-index
:
100
;
}
.cl1
{
top
:
14px
;
right
:
107px
;
}
.cl2
{
top
:
14px
;
right
:
19px
;
}
.active
{
color
:
rgb
(
5
,
95
,
194
);
background-color
:
rgba
(
246
,
250
,
255
,
1
);
border-color
:
rgb
(
5
,
95
,
194
);
}
.right-bottom-content1
{
width
:
1022px
;
height
:
auto
;
...
...
@@ -1047,6 +1130,7 @@ onMounted(async () => {
// top: 60px;
// left: 22px;
margin-bottom
:
16px
;
.right-bottom-content1-title
{
width
:
1022px
;
height
:
55px
;
...
...
@@ -1057,6 +1141,7 @@ onMounted(async () => {
background-color
:
rgb
(
247
,
248
,
249
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
span
{
font-size
:
18px
;
font-weight
:
700
;
...
...
@@ -1064,6 +1149,7 @@ onMounted(async () => {
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
}
img
{
width
:
16px
;
height
:
31px
;
...
...
@@ -1073,6 +1159,7 @@ onMounted(async () => {
cursor
:
pointer
;
}
}
.right-bottom-content1-content
{
width
:
1022px
;
// height: 144px;
...
...
@@ -1085,6 +1172,7 @@ onMounted(async () => {
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
}
}
.right-bottom-content2
{
width
:
1022px
;
height
:
229px
;
...
...
@@ -1092,6 +1180,7 @@ onMounted(async () => {
top
:
283px
;
left
:
22px
;
margin-bottom
:
24px
;
.right-bottom-content2-title
{
width
:
1022px
;
height
:
55px
;
...
...
@@ -1102,6 +1191,7 @@ onMounted(async () => {
background-color
:
rgb
(
247
,
248
,
249
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
span
{
font-size
:
18px
;
font-weight
:
700
;
...
...
@@ -1109,6 +1199,7 @@ onMounted(async () => {
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
}
img
{
width
:
16px
;
height
:
31px
;
...
...
@@ -1118,6 +1209,7 @@ onMounted(async () => {
cursor
:
pointer
;
}
}
.right-bottom-content2-content
{
width
:
1022px
;
height
:
174px
;
...
...
@@ -1130,6 +1222,7 @@ onMounted(async () => {
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
}
}
.right-bottom-content3
{
width
:
1022px
;
height
:
169px
;
...
...
@@ -1137,6 +1230,7 @@ onMounted(async () => {
top
:
536px
;
left
:
22px
;
margin-bottom
:
24px
;
.right-bottom-content3-title
{
width
:
1022px
;
height
:
55px
;
...
...
@@ -1147,6 +1241,7 @@ onMounted(async () => {
background-color
:
rgb
(
247
,
248
,
249
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
span
{
font-size
:
18px
;
font-weight
:
700
;
...
...
@@ -1154,6 +1249,7 @@ onMounted(async () => {
line-height
:
24px
;
color
:
rgb
(
59
,
65
,
75
);
}
img
{
width
:
16px
;
height
:
31px
;
...
...
@@ -1163,6 +1259,7 @@ onMounted(async () => {
cursor
:
pointer
;
}
}
.right-bottom-content3-content
{
width
:
1022px
;
height
:
114px
;
...
...
@@ -1176,6 +1273,7 @@ onMounted(async () => {
}
}
}
.right-top-b
{
margin-bottom
:
50px
;
width
:
1063px
;
...
...
@@ -1185,6 +1283,7 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
padding
:
60px
19px
28px
22px
;
.right-top-title
{
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -1195,6 +1294,7 @@ onMounted(async () => {
top
:
14px
;
left
:
22px
;
}
.img1
{
width
:
8px
;
height
:
20px
;
...
...
@@ -1202,11 +1302,13 @@ onMounted(async () => {
left
:
0px
;
top
:
18px
;
}
.right-top-content
{
width
:
1022px
;
height
:
421px
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
.right-top-item
{
width
:
1022px
;
height
:
104px
;
...
...
@@ -1214,6 +1316,7 @@ onMounted(async () => {
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
padding
:
12px
0
;
position
:
relative
;
img
{
width
:
24px
;
height
:
24px
;
...
...
@@ -1221,6 +1324,7 @@ onMounted(async () => {
left
:
26px
;
top
:
12px
;
}
.type
{
position
:
absolute
;
right
:
48px
;
...
...
@@ -1232,14 +1336,17 @@ onMounted(async () => {
font-family
:
"Microsoft YaHei"
;
line-height
:
24px
;
}
.type1
{
background-color
:
rgba
(
232
,
189
,
11
,
0
.1
);
color
:
rgb
(
232
,
189
,
11
);
}
.type2
{
background-color
:
rgba
(
231
,
243
,
255
,
1
);
color
:
rgb
(
5
,
95
,
194
);
}
.name
{
font-size
:
16px
;
font-weight
:
700
;
...
...
@@ -1249,6 +1356,7 @@ onMounted(async () => {
margin-left
:
65px
;
margin-bottom
:
4px
;
}
.time
{
font-size
:
16px
;
font-weight
:
400
;
...
...
@@ -1257,6 +1365,7 @@ onMounted(async () => {
color
:
rgb
(
95
,
101
,
108
);
margin-left
:
65px
;
}
.content
{
font-size
:
16px
;
font-weight
:
400
;
...
...
src/views/thinkTank/index.vue
浏览文件 @
dc88159f
...
...
@@ -14,7 +14,7 @@
<div
class=
"home-main-header-center"
>
<SearchContainer
class=
"think-tank-search"
style=
"margin-bottom: 0; margin-top: 51px; height: fit-content;"
v-if=
"containerRef"
placeholder=
"搜索智库、报告或政策建议"
:containerRef=
"containerRef"
areaName=
"智库"
/>
v-if=
"containerRef"
placeholder=
"搜索智库、报告或政策建议"
:containerRef=
"containerRef"
areaName=
"智库
报告
"
/>
<!--
<el-input
v-model=
"searchThinktankText"
@
keyup
.
enter=
"handleSearch"
style=
"width: 838px; height: 100%"
placeholder=
"搜索智库报告"
/>
<div
class=
"search"
>
...
...
src/views/viewRiskSignal/assets/images/danger.svg
0 → 100644
浏览文件 @
dc88159f
<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
浏览文件 @
dc88159f
<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
浏览文件 @
dc88159f
...
...
@@ -5,11 +5,11 @@
<div
class=
"center-center"
>
<div
class=
"center-header"
>
<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>
<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>
</div>
...
...
@@ -22,7 +22,7 @@
<div
class=
"text1"
>
本年新增风险
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(95, 101, 108, 1)"
>
{{
basicInfo
.
yearAdded
+
" 项"
}}
<span
class=
"text2-inner"
>
{{
basicInfo
.
yearAdded
+
" 项"
}}
</span>
</div>
</div>
<div
class=
"item"
>
...
...
@@ -31,7 +31,7 @@
<div
class=
"text1"
>
本月新增风险
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(95, 101, 108, 1)"
>
{{
basicInfo
.
monthAdded
+
" 项"
}}
<span
class=
"text2-inner"
>
{{
basicInfo
.
monthAdded
+
" 项"
}}
</span>
</div>
</div>
</div>
...
...
@@ -41,7 +41,8 @@
<div
class=
"dot"
style=
"background-color: rgba(5, 95, 194, 1)"
></div>
<div
class=
"text1"
>
已处理风险
</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
class=
"item"
>
<div
class=
"top"
>
...
...
@@ -49,7 +50,7 @@
<div
class=
"text1"
>
待处理风险
</div>
</div>
<div
class=
"text2"
style=
"color: rgba(206, 79, 81, 1)"
>
{{
basicInfo
.
pendingCount
+
" 项"
}}
<span
class=
"text2-inner"
>
{{
basicInfo
.
pendingCount
+
" 项"
}}
</span>
</div>
</div>
</div>
...
...
@@ -125,7 +126,7 @@
<div
class=
"title"
>
{{
"风险类型"
}}
</div>
</div>
<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"
>
<el-checkbox
class=
"filter-checkbox all-checkbox"
:label=
"RISK_FILTER_ALL_TYPE"
>
{{
RISK_FILTER_ALL_TYPE
}}
...
...
@@ -188,12 +189,14 @@
</div>
</div>
</div>
<
template
v-if=
"riskList && riskList.length"
>
<div
class=
"right-main"
>
<div
class=
"itemlist itemlist--clickable"
v-for=
"(val, idx) in riskList"
:key=
"val.rowKey"
@
click=
"handleOpenRiskDetail(val)"
>
<div
class=
"box-title"
>
<div
class=
"risktitle"
v-html=
"highlightRiskText(val.title)"
/>
<div
class=
"risktype"
:class=
"'risktype--' + getRiskListItemLevelKey(val.risktype)"
>
<div
v-if=
"!isRiskLevelNoData(val.risktype)"
class=
"risktype"
:class=
"'risktype--' + getRiskListItemLevelKey(val.risktype)"
>
<div
class=
"icon"
:class=
"'icon--' + getRiskListItemLevelKey(val.risktype)"
/>
<div
class=
"text"
>
{{
getRiskListItemLevelLabel
(
val
.
risktype
)
}}
</div>
</div>
...
...
@@ -217,6 +220,12 @@
:
total
=
"totalNum"
background
layout
=
"prev, pager, next"
/>
<
/div
>
<
/div
>
<
/template
>
<
template
v
-
else
>
<
div
class
=
"right-empty"
>
<
el
-
empty
class
=
"right-el-empty"
description
=
"暂无数据"
:
image
-
size
=
"100"
/>
<
/div
>
<
/template
>
<
/div
>
<
/div
>
<
/div
>
...
...
@@ -606,6 +615,11 @@ const getRiskListItemLevelLabel = (level) => {
return
t
;
}
;
const
isRiskLevelNoData
=
(
level
)
=>
{
const
t
=
String
(
level
??
""
).
trim
();
return
!
t
||
t
===
"暂无数值"
||
t
===
"暂无数据"
;
}
;
const
route
=
useRoute
();
const
router
=
useRouter
();
...
...
@@ -935,6 +949,15 @@ onMounted(async () => {
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
{
width
:
100
%
;
height
:
100
%
;
...
...
@@ -997,8 +1020,8 @@ onMounted(async () => {
cursor
:
pointer
;
.
img
{
width
:
1
6
px
;
height
:
1
5
px
;
width
:
1
4
px
;
height
:
1
4
px
;
}
.
text
{
...
...
@@ -1051,6 +1074,7 @@ onMounted(async () => {
line
-
height
:
24
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
text
-
align
:
right
;
white
-
space
:
nowrap
;
}
}
...
...
@@ -1061,6 +1085,14 @@ onMounted(async () => {
text
-
align
:
right
;
/* 强制不换行 */
white
-
space
:
nowrap
;
// 让右边界固定在块内,超长只会向左溢出(且不省略、完整显示)
width
:
100
%
;
direction
:
rtl
;
}
.
text2
-
inner
{
direction
:
ltr
;
unicode
-
bidi
:
isolate
;
}
}
}
...
...
@@ -1188,6 +1220,8 @@ onMounted(async () => {
margin
-
bottom
:
24
px
;
width
:
1224
px
;
position
:
relative
;
display
:
flex
;
flex
-
direction
:
column
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
...
...
@@ -1277,6 +1311,7 @@ onMounted(async () => {
.
right
-
main
{
width
:
1224
px
;
flex
:
1
;
padding
-
left
:
24
px
;
padding
-
top
:
6
px
;
...
...
@@ -1451,6 +1486,24 @@ onMounted(async () => {
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 () => {
.
risk
-
signal
-
detail
-
dialog
.
risk
-
signal
-
detail
-
dialog__header
-
badge
-
close
{
position
:
absolute
;
right
:
115
px
;
right
:
61
px
;
top
:
50
%
;
transform
:
translateY
(
-
50
%
);
width
:
16
px
;
...
...
@@ -1864,7 +1917,7 @@ onMounted(async () => {
.
risk
-
signal
-
detail
-
dialog
.
risk
-
signal
-
detail
-
dialog__read
-
indicator
{
position
:
absolute
;
right
:
115
px
;
right
:
61
px
;
top
:
50
%
;
transform
:
translateY
(
-
50
%
);
display
:
inline
-
flex
;
...
...
src/views/viewRiskSignal/utils/cleandarHeat.js
浏览文件 @
dc88159f
...
...
@@ -206,7 +206,7 @@ const getCalendarHeatChart = (rawData) => {
return
""
;
}
const
v
=
p
.
data
?.[
3
]
??
0
;
return
`
${
dateStr
}
<br/>
数值
:
${
v
}
`
;
return
`
${
dateStr
}
<br/>
风险数量
:
${
v
}
`
;
}
}
};
...
...
vite.config.js
浏览文件 @
dc88159f
...
...
@@ -19,26 +19,8 @@ export default defineConfig({
resolvers
:
[
ElementPlusResolver
()],
}),
],
// build: {
// minify: 'terser',
// terserOptions: {
// compress: {
// drop_console: true,
// drop_debugger: true
// }
// }
// },
// build: {
// // minify: 'terser',
// terserOptions: {
// compress: {
// drop_console: true, // 移除所有 console.*
// drop_debugger: true, // 移除 debugger
// },
// },
// },
esbuild
:
{
drop
:
process
.
env
.
NODE_ENV
===
'production'
?
[
'console'
,
'debugger'
]
:
[]
drop
:
process
.
env
.
NODE_ENV
===
'production'
?
[
'console'
,
'debugger'
]
:
[]
// 正式环境去除掉console
},
resolve
:
{
alias
:
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论