Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
87771247
提交
87771247
authored
3月 04, 2026
作者:
张烨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
科技政令-资料库样式修改
上级
ebc89c2c
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
57 行增加
和
69 行删除
+57
-69
index.vue
src/views/decree/decreeHome/index.vue
+54
-61
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+3
-8
没有找到文件。
src/views/decree/decreeHome/index.vue
浏览文件 @
87771247
...
@@ -192,7 +192,7 @@
...
@@ -192,7 +192,7 @@
<div
class=
"text"
>
{{
"查看更多"
}}
</div>
<div
class=
"text"
>
{{
"查看更多"
}}
</div>
</div>
</div>
</div>
-->
</div>
-->
<RiskSignal
:list=
"warningList"
@
item-click=
"handleClickToDetail"
@
more-click=
"handleToMoreRiskSignal"
>
<RiskSignal
:list=
"warningList"
name=
"signalTitle"
postDate=
"signalTime"
riskLevel=
"signalLevel"
@
item-click=
"handleClickToDetail"
@
more-click=
"handleToMoreRiskSignal"
>
</RiskSignal>
</RiskSignal>
</div>
</div>
<DivideHeader
id=
"position2"
class=
"divide2"
:titleText=
"'资讯要闻'"
></DivideHeader>
<DivideHeader
id=
"position2"
class=
"divide2"
:titleText=
"'资讯要闻'"
></DivideHeader>
...
@@ -228,7 +228,7 @@
...
@@ -228,7 +228,7 @@
<div
class=
"header-icon"
>
<div
class=
"header-icon"
>
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{
"政令
涉及
领域"
}}
</div>
<div
class=
"header-title"
>
{{
"政令
科技
领域"
}}
</div>
<div
class=
"box6-selectbox"
>
<div
class=
"box6-selectbox"
>
<el-select
@
change=
"handleBox6YearChange"
v-model=
"box6SelectedYear"
placeholder=
"选择时间"
<el-select
@
change=
"handleBox6YearChange"
v-model=
"box6SelectedYear"
placeholder=
"选择时间"
style=
"width: 120px"
>
style=
"width: 120px"
>
...
@@ -281,6 +281,14 @@
...
@@ -281,6 +281,14 @@
<div
class=
"home-main-footer"
>
<div
class=
"home-main-footer"
>
<DivideHeader
id=
"position4"
class=
"divide4"
:titleText=
"'资源库'"
></DivideHeader>
<DivideHeader
id=
"position4"
class=
"divide4"
:titleText=
"'资源库'"
></DivideHeader>
<div
class=
"home-main-footer-header"
>
<div
class=
"home-main-footer-header"
>
<div
class=
"search-box"
>
<el-select
v-model=
"searchType"
style=
"width: 100%"
>
<el-option
label=
"全部政府部门"
value=
" "
/>
<el-option
v-for=
"item in govInsList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</div>
<div
style=
"flex: auto;"
></div>
<el-checkbox
v-model=
"isChina"
@
change=
"handleChina"
>
只看涉华政令
</el-checkbox>
<div
class=
"select-box"
>
<div
class=
"select-box"
>
<div
class=
"paixu-btn"
@
click=
"handleSwithSort"
>
<div
class=
"paixu-btn"
@
click=
"handleSwithSort"
>
<div
class=
"icon1"
>
<div
class=
"icon1"
>
...
@@ -297,7 +305,7 @@
...
@@ -297,7 +305,7 @@
</div>
</div>
<div
class=
"home-main-footer-main"
>
<div
class=
"home-main-footer-main"
>
<div
class=
"left"
>
<div
class=
"left"
>
<div
class=
"select-box"
>
<
!-- <
div class="select-box">
<div class="select-box-header">
<div class="select-box-header">
<div class="icon"></div>
<div class="icon"></div>
<div class="title">{{ "政令类型" }}</div>
<div class="title">{{ "政令类型" }}</div>
...
@@ -311,8 +319,8 @@
...
@@ -311,8 +319,8 @@
</el-checkbox>
</el-checkbox>
</div>
</div>
</div>
</div>
</div>
</div>
-->
<div
class=
"select-box"
>
<
!-- <
div class="select-box">
<div class="select-box-header">
<div class="select-box-header">
<div class="icon"></div>
<div class="icon"></div>
<div class="title">{{ "发布机构" }}</div>
<div class="title">{{ "发布机构" }}</div>
...
@@ -325,18 +333,17 @@
...
@@ -325,18 +333,17 @@
</el-checkbox>
</el-checkbox>
</div>
</div>
</div>
</div>
</div>
</div>
-->
<div
class=
"select-box"
>
<div
class=
"select-box"
>
<div
class=
"select-box-header"
>
<div
class=
"select-box-header"
>
<div
class=
"icon"
></div>
<div
class=
"icon"
></div>
<div
class=
"title"
>
{{ "
发布时间
" }}
</div>
<div
class=
"title"
>
{{ "
科技领域
" }}
</div>
</div>
</div>
<div
class=
"select-main"
>
<div
class=
"select-main
select-main1
"
>
<div
class=
"checkbox-group"
>
<div
class=
"checkbox-group"
>
<el-checkbox
v-for=
"time in pubTime"
:key=
"time.id"
v-model=
"activePubTime"
:label=
"time.id"
<el-checkbox
v-for=
"area in areaList"
:key=
"area.id"
v-model=
"activeAreaList"
:label=
"area.id"
style=
"width: 100px"
class=
"filter-checkbox"
style=
"width: 100px"
@
change=
"checked => handleAreaChange(area.id, checked)"
>
@
change=
"checked => handlePubTimeChange(time.id, checked)"
>
{{ area.name }}
{{ time.name }}
</el-checkbox>
</el-checkbox>
</div>
</div>
</div>
</div>
...
@@ -344,13 +351,14 @@
...
@@ -344,13 +351,14 @@
<div
class=
"select-box"
>
<div
class=
"select-box"
>
<div
class=
"select-box-header"
>
<div
class=
"select-box-header"
>
<div
class=
"icon"
></div>
<div
class=
"icon"
></div>
<div
class=
"title"
>
{{ "
涉及领域
" }}
</div>
<div
class=
"title"
>
{{ "
发布时间
" }}
</div>
</div>
</div>
<div
class=
"select-main
select-main1
"
>
<div
class=
"select-main"
>
<div
class=
"checkbox-group"
>
<div
class=
"checkbox-group"
>
<el-checkbox
v-for=
"area in areaList"
:key=
"area.id"
v-model=
"activeAreaList"
:label=
"area.id"
<el-checkbox
v-for=
"time in pubTime"
:key=
"time.id"
v-model=
"activePubTime"
:label=
"time.id"
style=
"width: 100px"
@
change=
"checked => handleAreaChange(area.id, checked)"
>
style=
"width: 100px"
class=
"filter-checkbox"
{{ area.name }}
@
change=
"checked => handlePubTimeChange(time.id, checked)"
>
{{ time.name }}
</el-checkbox>
</el-checkbox>
</div>
</div>
</div>
</div>
...
@@ -367,13 +375,13 @@
...
@@ -367,13 +375,13 @@
<div
class=
"main-item"
v-for=
"(item, index) in decreeList"
:key=
"index"
@
click=
"handleClickDecree(item)"
>
<div
class=
"main-item"
v-for=
"(item, index) in decreeList"
:key=
"index"
@
click=
"handleClickDecree(item)"
>
<div
class=
"main-item-left"
>
<div
class=
"main-item-left"
>
<div
class=
"left-left"
>
<div
class=
"left-left"
>
{{ item.time
.split("-")[0] }}
<br
/>
{{ item.time
.split("-")[1] }}月{{
{{ item.time
?.split("-")[0] }}
<br
/>
{{ item.time?
.split("-")[1] }}月{{
item.time.split("-")[2]
item.time
?
.split("-")[2]
}}日
}}日
</div>
</div>
<div
class=
"left-right"
>
<div
class=
"left-right"
>
<div
class=
"icon"
>
<div
class=
"icon"
>
<img
:src=
"item.
orgImage ? item.orgImage
: DefaultIcon2"
alt=
""
/>
<img
:src=
"item.
img ? item.img
: DefaultIcon2"
alt=
""
/>
</div>
</div>
<div
class=
"line"
v-if=
"index !== 9 && index !== totalDecreesNum - 1"
></div>
<div
class=
"line"
v-if=
"index !== 9 && index !== totalDecreesNum - 1"
></div>
</div>
</div>
...
@@ -437,7 +445,7 @@ import {
...
@@ -437,7 +445,7 @@ import {
}
from
"@/api/decree/home"
;
}
from
"@/api/decree/home"
;
import
RiskSignal
from
"@/components/RiskSignal/RiskSignal.vue"
;
import
RiskSignal
from
"@/components/RiskSignal/RiskSignal.vue"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
{
getNews
,
getSocialMedia
}
from
"@/api/general/index"
;
import
{
getNews
,
getSocialMedia
,
getRiskSignal
}
from
"@/api/general/index"
;
import
MessageBubble
from
"@/components/dialog/dialog.vue"
;
import
MessageBubble
from
"@/components/dialog/dialog.vue"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
{
useContainerScroll
}
from
"@/hooks/useScrollShow"
;
import
{
useContainerScroll
}
from
"@/hooks/useScrollShow"
;
...
@@ -649,10 +657,10 @@ const warningList = ref([
...
@@ -649,10 +657,10 @@ const warningList = ref([
]);
]);
const
handlegetDecreeRiskSignal
=
async
()
=>
{
const
handlegetDecreeRiskSignal
=
async
()
=>
{
try
{
try
{
const
res
=
await
get
DecreeRiskSignal
(
);
const
res
=
await
get
RiskSignal
({
moduleId
:
"0101"
}
);
console
.
log
(
"风险信号"
,
res
);
console
.
log
(
"风险信号"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
warningList
.
value
=
res
.
data
;
warningList
.
value
=
res
.
data
.
map
(
item
=>
({...
item
,
id
:
item
.
orderId
}))
;
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"风险信号error"
,
error
);
console
.
error
(
"风险信号error"
,
error
);
...
@@ -869,7 +877,7 @@ const handleBox5 = async () => {
...
@@ -869,7 +877,7 @@ const handleBox5 = async () => {
setChart
(
chart1
,
"chart1"
);
setChart
(
chart1
,
"chart1"
);
};
};
// 政令
涉及
领域
// 政令
科技
领域
const
chart2Data
=
ref
([
const
chart2Data
=
ref
([
// {
// {
// name: "集成电路",
// name: "集成电路",
...
@@ -916,7 +924,7 @@ const handleGetDecreeArea = async () => {
...
@@ -916,7 +924,7 @@ const handleGetDecreeArea = async () => {
};
};
try
{
try
{
const
res
=
await
getDecreeArea
(
params
);
const
res
=
await
getDecreeArea
(
params
);
console
.
log
(
"政令
涉及
领域"
,
res
);
console
.
log
(
"政令
科技
领域"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
chart2Data
.
value
=
res
.
data
.
map
(
item
=>
{
chart2Data
.
value
=
res
.
data
.
map
(
item
=>
{
return
{
return
{
...
@@ -926,7 +934,7 @@ const handleGetDecreeArea = async () => {
...
@@ -926,7 +934,7 @@ const handleGetDecreeArea = async () => {
});
});
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"政令
涉及
领域error"
,
error
);
console
.
error
(
"政令
科技
领域error"
,
error
);
}
}
};
};
const
handleBox6
=
async
()
=>
{
const
handleBox6
=
async
()
=>
{
...
@@ -995,6 +1003,8 @@ const handleBox8 = async () => {
...
@@ -995,6 +1003,8 @@ const handleBox8 = async () => {
};
};
// 资源库
// 资源库
const
searchType
=
ref
(
" "
);
const
isChina
=
ref
(
false
);
const
isSort
=
ref
(
false
);
// true 升序 false 倒序
const
isSort
=
ref
(
false
);
// true 升序 false 倒序
const
handleSwithSort
=
()
=>
{
const
handleSwithSort
=
()
=>
{
isSort
.
value
=
!
isSort
.
value
;
isSort
.
value
=
!
isSort
.
value
;
...
@@ -1074,7 +1084,7 @@ const handleChangeCheckedDecreeType = () => {
...
@@ -1074,7 +1084,7 @@ const handleChangeCheckedDecreeType = () => {
};
};
const
pubTime
=
ref
([
const
pubTime
=
ref
([
{
id
:
"all"
,
name
:
"全选"
},
{
id
:
"all"
,
name
:
"全选
时间
"
},
{
id
:
"2026"
,
name
:
"2026年"
},
{
id
:
"2026"
,
name
:
"2026年"
},
{
id
:
"2025"
,
name
:
"2025年"
},
{
id
:
"2025"
,
name
:
"2025年"
},
{
id
:
"2024"
,
name
:
"2024年"
},
{
id
:
"2024"
,
name
:
"2024年"
},
...
@@ -1122,7 +1132,7 @@ const handleAreaChange = (id, checked) => {
...
@@ -1122,7 +1132,7 @@ const handleAreaChange = (id, checked) => {
}
}
};
};
// 修改获取
涉及
领域列表,添加全选选项
// 修改获取
科技
领域列表,添加全选选项
const
handleGetAreaList
=
async
()
=>
{
const
handleGetAreaList
=
async
()
=>
{
try
{
try
{
const
res
=
await
getDecreehylyList
();
const
res
=
await
getDecreehylyList
();
...
@@ -1154,7 +1164,7 @@ const decreeList = ref([]);
...
@@ -1154,7 +1164,7 @@ const decreeList = ref([]);
const
handleGetDecreeOrderList
=
async
()
=>
{
const
handleGetDecreeOrderList
=
async
()
=>
{
const
p0
=
checkedGovIns
.
value
.
join
(
","
);
const
p0
=
checkedGovIns
.
value
.
join
(
","
);
// 处理
涉及
领域:如果包含 all 或全选,则 researchTypeIds 为空(不传)
// 处理
科技
领域:如果包含 all 或全选,则 researchTypeIds 为空(不传)
let
p1
=
""
;
let
p1
=
""
;
const
allAreaIds
=
areaList
.
value
.
filter
(
item
=>
item
.
id
!==
"all"
).
map
(
item
=>
item
.
id
);
const
allAreaIds
=
areaList
.
value
.
filter
(
item
=>
item
.
id
!==
"all"
).
map
(
item
=>
item
.
id
);
const
selectedAreaIds
=
activeAreaList
.
value
.
filter
(
id
=>
id
!==
"all"
);
const
selectedAreaIds
=
activeAreaList
.
value
.
filter
(
id
=>
id
!==
"all"
);
...
@@ -1184,6 +1194,8 @@ const handleGetDecreeOrderList = async () => {
...
@@ -1184,6 +1194,8 @@ const handleGetDecreeOrderList = async () => {
proposeName
:
p0
,
proposeName
:
p0
,
researchTypeIds
:
p1
,
// 全选时不传(为空)
researchTypeIds
:
p1
,
// 全选时不传(为空)
sortFun
:
isSort
.
value
,
sortFun
:
isSort
.
value
,
isCN
:
isChina
.
value
?
1
:
0
,
proposeName
:
[
searchType
.
value
.
trim
()],
years
:
p2
,
// 全选时不传(为空)
years
:
p2
,
// 全选时不传(为空)
typeIds
:
checkedDecreeType
.
value
.
toString
()
typeIds
:
checkedDecreeType
.
value
.
toString
()
};
};
...
@@ -1214,33 +1226,9 @@ const handleGetDecreeOrderList = async () => {
...
@@ -1214,33 +1226,9 @@ const handleGetDecreeOrderList = async () => {
}
}
};
};
watch
(
watch
([
activePubTime
,
activeAreaList
,
checkedGovIns
,
isSort
,
isChina
,
searchType
],
val
=>
{
()
=>
activePubTime
.
value
,
handleGetDecreeOrderList
();
val
=>
{
});
handleGetDecreeOrderList
();
}
);
watch
(
()
=>
activeAreaList
.
value
,
val
=>
{
handleGetDecreeOrderList
();
}
);
watch
(
()
=>
isSort
.
value
,
val
=>
{
handleGetDecreeOrderList
();
}
);
watch
(
()
=>
checkedGovIns
.
value
,
val
=>
{
handleGetDecreeOrderList
();
}
);
// 切换当前政令
// 切换当前政令
const
handleSwithCurDecree
=
name
=>
{
const
handleSwithCurDecree
=
name
=>
{
...
@@ -3104,7 +3092,7 @@ onMounted(async () => {
...
@@ -3104,7 +3092,7 @@ onMounted(async () => {
height
:
50px
;
height
:
50px
;
margin
:
0
auto
16px
;
margin
:
0
auto
16px
;
display
:
flex
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
.btn-box
{
.btn-box
{
margin-top
:
10px
;
margin-top
:
10px
;
...
@@ -3145,8 +3133,12 @@ onMounted(async () => {
...
@@ -3145,8 +3133,12 @@ onMounted(async () => {
}
}
}
}
.search-box
{
width
:
20%
;
}
.select-box
{
.select-box
{
margin-
top
:
5
px
;
margin-
left
:
20
px
;
height
:
42px
;
height
:
42px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding
:
5px
0
;
padding
:
5px
0
;
...
@@ -3213,8 +3205,7 @@ onMounted(async () => {
...
@@ -3213,8 +3205,7 @@ onMounted(async () => {
gap
:
16px
;
gap
:
16px
;
.left
{
.left
{
width
:
360px
;
width
:
20%
;
// height: 666px;
box-shadow
:
0px
0px
15px
0px
rgba
(
60
,
87
,
126
,
0
.2
);
box-shadow
:
0px
0px
15px
0px
rgba
(
60
,
87
,
126
,
0
.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
box-sizing
:
border-box
;
box-sizing
:
border-box
;
...
@@ -3258,7 +3249,8 @@ onMounted(async () => {
...
@@ -3258,7 +3249,8 @@ onMounted(async () => {
}
}
.right
{
.right
{
width
:
1284px
;
width
:
20px
;
flex
:
auto
;
max-height
:
1489px
;
max-height
:
1489px
;
box-shadow
:
0px
0px
15px
0px
rgba
(
60
,
87
,
126
,
0
.2
);
box-shadow
:
0px
0px
15px
0px
rgba
(
60
,
87
,
126
,
0
.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
...
@@ -3343,6 +3335,7 @@ onMounted(async () => {
...
@@ -3343,6 +3335,7 @@ onMounted(async () => {
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
object-fit
:
contain
;
}
}
}
}
...
...
src/views/decree/decreeLayout/overview/introduction/index.vue
浏览文件 @
87771247
...
@@ -143,25 +143,20 @@
...
@@ -143,25 +143,20 @@
</div>
</div>
<div
class=
"box2"
>
<div
class=
"box2"
>
<AnalysisBox
title=
"主要指令"
:showAllBtn=
"false"
>
<AnalysisBox
title=
"主要指令"
:showAllBtn=
"false"
>
<div
v-if=
"curmajorList.length"
class=
"box2-main"
>
<div
class=
"box2-main"
>
<el-empty
v-if=
"!curmajorList.length"
description=
"暂无数据"
:image-size=
"100"
/>
<div
class=
"box2-item"
v-for=
"(item, index) in curmajorList"
:key=
"index"
>
<div
class=
"box2-item"
v-for=
"(item, index) in curmajorList"
:key=
"index"
>
<div
class=
"id"
>
{{ index + 1 }}
</div>
<div
class=
"id"
>
{{ index + 1 }}
</div>
<div
class=
"title"
>
{{ item.content }}
</div>
<div
class=
"title"
>
{{ item.content }}
</div>
<!-- <div class="open">
<img src="./assets/images/open-icon.png" alt="" />
</div> -->
</div>
</div>
</div>
</div>
<div
class=
"box2-footer"
>
<div
v-if=
"curmajorList.length"
class=
"box2-footer"
>
<div
class=
"box2-footer-left"
>
{{ `共 ${majorListNum} 项` }}
</div>
<div
class=
"box2-footer-left"
>
{{ `共 ${majorListNum} 项` }}
</div>
<div
class=
"box2-footer-right"
>
<div
class=
"box2-footer-right"
>
<el-pagination
@
current-change=
"handleCurrentChange"
:page-size=
"5"
background
layout=
"prev, pager, next"
<el-pagination
@
current-change=
"handleCurrentChange"
:page-size=
"5"
background
layout=
"prev, pager, next"
:total=
"majorListNum"
/>
:total=
"majorListNum"
/>
</div>
</div>
</div>
</div>
<el-empty
v-else
description=
"暂无数据"
:image-size=
"100"
/>
</AnalysisBox>
</AnalysisBox>
<!-- <div class="box-header">
<!-- <div class="box-header">
<div class="header-left"></div>
<div class="header-left"></div>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论