Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
62f3793f
提交
62f3793f
authored
3月 25, 2026
作者:
张烨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:对接政令机构列表接口
上级
b61fb2b0
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
55 行增加
和
50 行删除
+55
-50
home.js
src/api/decree/home.js
+9
-0
index.vue
src/views/decree/allOrganization/index.vue
+31
-22
index.vue
src/views/decree/decreeHome/index.vue
+11
-18
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+4
-10
没有找到文件。
src/api/decree/home.js
浏览文件 @
62f3793f
...
...
@@ -99,6 +99,15 @@ export function getKeyOrganization(params) {
})
}
// 所有机构
export
function
getAllOrganization
(
params
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/administrativeOrderOverview/orderCount`
,
data
:
params
})
}
// AI智能总结
export
function
getChartInterpretation
(
params
)
{
return
request
({
...
...
src/views/decree/allOrganization/index.vue
浏览文件 @
62f3793f
...
...
@@ -3,13 +3,13 @@
<div
class=
"container-box"
>
<div
class=
"hard-box"
>
<div
class=
"hard-name text-title-0-show"
>
美国政府机构
</div>
<div
class=
"hard-num text-title-2-show"
>
304
家
</div>
<div
class=
"hard-num text-title-2-show"
>
{{
organizationInfo
.
total
}}
家
</div>
<div
style=
"width: 0px; flex: auto;"
></div>
<div
class=
"hard-input"
>
<el-input
v-model=
"organizationInfo.keyWord"
@
keyup
.
enter=
"
handleGetDepartmentList
()"
style=
"width:100%; height:100%;"
:suffix-icon=
"Search"
placeholder=
"搜索机构"
/>
<el-input
v-model=
"organizationInfo.keyWord"
@
keyup
.
enter=
"
onAllOrganization
()"
style=
"width:100%; height:100%;"
:suffix-icon=
"Search"
placeholder=
"搜索机构"
/>
</div>
<div
class=
"hard-time"
>
<el-select
v-model=
"organizationInfo.isSort"
placeholder=
"发布时间"
style=
"width:160px; margin-left:8px;"
>
<el-select
v-model=
"organizationInfo.isSort"
@
change=
"onAllOrganization()"
placeholder=
"发布时间"
style=
"width:160px; margin-left:8px;"
>
<template
#
prefix
>
<div
class=
"icon1"
>
<img
v-if=
"isSort"
src=
"@/assets/icons/shengxu1.png"
alt=
""
/>
...
...
@@ -25,7 +25,7 @@
<img
:src=
"tipsTcon"
alt=
""
>
</div>
<div
class=
"date-text"
>
近期美国各联邦政府机构发布涉华政令数量汇总
</div>
<TimeTabPane
@
time-click=
"handle
GetDepartmentList
"
/>
<TimeTabPane
@
time-click=
"handle
DateChange
"
/>
</div>
<div
class=
"organization-list"
ref=
"refOrganization"
>
<div
class=
"organization-item"
v-for=
"(item, index) in organizationInfo.list"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
...
...
@@ -39,7 +39,7 @@
</div>
</div>
<div
class=
"pagination-box"
>
<el-pagination
@
current-change=
"
handleCurrentChange
"
:pageSize=
"organizationInfo.pageSize"
:current-page=
"organizationInfo.pageNum"
background
layout=
"prev, pager, next"
:total=
"organizationInfo.total"
/>
<el-pagination
@
current-change=
"
onAllOrganization
"
:pageSize=
"organizationInfo.pageSize"
:current-page=
"organizationInfo.pageNum"
background
layout=
"prev, pager, next"
:total=
"organizationInfo.total"
/>
</div>
</div>
<div
class=
"back-bnt"
@
click=
"router.back()"
>
...
...
@@ -56,36 +56,43 @@ import { Search } from '@element-plus/icons-vue'
import
router
from
"@/router"
;
import
TimeTabPane
from
'@/components/base/TimeTabPane/index.vue'
;
import
{
getAllOrganization
}
from
"@/api/decree/home"
;
import
tipsTcon
from
"./assets/icons/tips-icon.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
const
organizationInfo
=
reactive
({
pageNum
:
1
,
pageSize
:
8
,
total
:
10
0
,
total
:
0
,
isSort
:
1
,
keyWord
:
""
,
day
:
7
,
list
:
[]
})
organizationInfo
.
list
=
Array
.
from
({
length
:
20
},
(
_
,
i
)
=>
({
orgId
:
'221'
,
orgImage
:
"http://8.140.26.4:10010/kjb-files/images/org/round/HHS美国卫生与公众服务部.png"
,
orgName
:
"卫生与公众服务部"
,
total
:
94654
,
totalRecent
:
999
,
}))
const
handleCurrentChange
=
(
currentPage
)
=>
{
organizationInfo
.
pageNum
=
currentPage
;
const
onAllOrganization
=
async
(
num
)
=>
{
organizationInfo
.
pageNum
=
num
||
1
try
{
let
{
keyWord
,
pageNum
,
pageSize
,
day
}
=
organizationInfo
const
res
=
await
getAllOrganization
({
day
,
pageNum
:
pageNum
-
1
,
pageSize
,
keyWord
:
keyWord
||
undefined
});
console
.
log
(
"机构列表"
,
res
);
if
(
res
.
code
===
200
)
{
}
}
catch
(
error
)
{
console
.
error
(
"获取机构列表数据失败"
,
error
);
organizationInfo
.
list
=
[];
organizationInfo
.
total
=
0
;
}
}
const
handleGetDepartmentList
=
async
(
event
)
=>
{
let
day
=
7
if
(
event
?.
time
===
'近一周'
)
day
=
7
if
(
event
?.
time
===
'近一月'
)
day
=
30
if
(
event
?.
time
===
'近一年'
)
day
=
365
console
.
log
(
day
)
};
const
handleDateChange
=
(
event
)
=>
{
if
(
event
?.
time
===
'近一周'
)
organizationInfo
.
day
=
7
if
(
event
?.
time
===
'近一月'
)
organizationInfo
.
day
=
30
if
(
event
?.
time
===
'近一年'
)
organizationInfo
.
day
=
365
onAllOrganization
()
}
// 跳转行政机构主页
const
handleToInstitution
=
item
=>
{
...
...
@@ -107,6 +114,8 @@ onMounted(() => {
height
=
Math
.
floor
(
refOrganization
.
value
?.
clientHeight
/
120
)
}
organizationInfo
.
pageSize
=
height
*
4
onAllOrganization
()
})
</
script
>
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
62f3793f
...
...
@@ -39,12 +39,12 @@
<div
class=
"home-main-header-item-box"
v-if=
"keyOrganizationList.length"
>
<div
class=
"organization-item"
v-for=
"(item, index) in keyOrganizationList"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
<div
class=
"item-left"
>
<img
:src=
"item.
orgImage
|| DefaultIcon2"
alt=
""
/>
<img
:src=
"item.
imgUrl
|| DefaultIcon2"
alt=
""
/>
</div>
<div
class=
"item-right one-line-ellipsis"
>
{{
item
.
orgName
}}
</div>
<div
class=
"item-total"
>
{{
item
.
total
}}
项
</div>
<div
class=
"item-total"
>
{{
item
.
total
OrderNum
}}
项
</div>
<el-icon
color=
"var(--color-primary-100)"
><ArrowRightBold
/></el-icon>
<div
class=
"item-dot"
v-if=
"item.
totalRecent"
>
+
{{
item
.
totalRecent
}}
</div>
<div
class=
"item-dot"
v-if=
"item.
recentOrderNum"
>
+
{{
item
.
recentOrderNum
}}
</div>
</div>
<div
class=
"organization-item"
@
click=
"onNavigateTo()"
>
<div
class=
"item-more"
>
查看全部机构 (
{{
govInsList
.
length
+
1
}}
家)
</div>
...
...
@@ -164,7 +164,6 @@
<DivideHeader
id=
"position2"
class=
"divide2"
:titleText=
"'资讯要闻'"
></DivideHeader>
<div
class=
"center-center"
>
<NewsList
:newsList=
"newsList"
@
item-click=
"handleToNewsAnalysis"
@
more-click=
"handleToMoreNews"
/>
<!--
<NewsList
:newsList=
"newsList"
/>
-->
<MessageBubble
:messageList=
"messageList"
@
person-click=
"handleClickPerson"
@
info-click=
"handleGetMessage"
imageUrl=
"img"
@
more-click=
"handleToSocialDetail"
/>
</div>
...
...
@@ -485,6 +484,8 @@ import DefaultIcon2 from "@/assets/icons/default-icon2.png";
import
tipsTcon
from
"./assets/images/tips-icon.png"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
useGotoNewsDetail
}
from
'@/router/modules/news'
;
const
containerRef
=
ref
(
null
);
const
{
isShow
}
=
useContainerScroll
(
containerRef
);
const
currentPage
=
ref
(
1
);
...
...
@@ -656,7 +657,6 @@ const handleGetNews = async () => {
const
res
=
await
getNews
({
moduleId
:
"0101"
});
console
.
log
(
"新闻资讯"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
// newsList.value = res.data || []
newsList
.
value
=
(
res
.
data
??
[]).
map
(
item
=>
{
return
{
newsId
:
item
.
newsId
,
...
...
@@ -672,14 +672,9 @@ const handleGetNews = async () => {
}
};
// 点击新闻条目,跳转到新闻分析页
const
gotoNewsDetail
=
useGotoNewsDetail
()
const
handleToNewsAnalysis
=
news
=>
{
const
route
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
query
:
{
newsId
:
news
.
newsId
}
});
window
.
open
(
route
.
href
,
"_blank"
);
gotoNewsDetail
(
news
.
newsId
)
};
// 社交媒体
...
...
@@ -1217,7 +1212,7 @@ const onKeyOrganization = async (event) => {
const
res
=
await
getKeyOrganization
({
day
});
console
.
log
(
"关键机构"
,
res
);
if
(
res
.
code
===
200
)
{
keyOrganizationList
.
value
=
res
.
data
.
map
(
item
=>
({
orgName
:
item
.
orgName
,
orgId
:
item
.
id
}))
;
keyOrganizationList
.
value
=
res
.
data
;
}
}
catch
(
error
)
{
}
}
...
...
@@ -1438,15 +1433,13 @@ onMounted(async () => {
.home-main-header-item-box
{
margin
:
20px
0
64px
;
width
:
1600px
;
display
:
flex
;
flex-wrap
:
wrap
;
display
:
grid
;
grid-template-columns
:
repeat
(
4
,
1fr
);
grid-auto-rows
:
80px
;
gap
:
16px
;
font-family
:
Microsoft
YaHei
;
.organization-item
{
width
:
20%
;
flex
:
auto
;
height
:
80px
;
padding
:
0
16px
;
display
:
flex
;
box-sizing
:
border-box
;
...
...
src/views/decree/decreeLayout/overview/introduction/index.vue
浏览文件 @
62f3793f
...
...
@@ -83,7 +83,7 @@
<img
:src=
"item.imageUrl || DefaultIconNews"
alt=
""
/>
</div>
<div
class=
"item-center"
>
<div
class=
"bubble-header"
@
click=
"
handleClickToNewsDetail(item
)"
>
<div
class=
"bubble-header"
@
click=
"
gotoNewsDetail(item.id
)"
>
<span
class=
"name"
>
{{ item.sjbt }}
</span>
<span
class=
"meta"
>
{{ item.sjsj }} · {{ item.source }}
</span>
</div>
...
...
@@ -177,6 +177,9 @@ import DefaultIcon1 from "@/assets/icons/default-icon1.png";
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
DefaultIconNews
from
"@/assets/icons/default-icon-news.png"
;
import
{
useGotoNewsDetail
}
from
'@/router/modules/news'
;
const
gotoNewsDetail
=
useGotoNewsDetail
()
const
route
=
useRoute
();
const
decreeId
=
ref
(
route
.
query
.
id
);
...
...
@@ -271,15 +274,6 @@ const handleGetRelateEvents = async () => {
console
.
error
(
"获取相关事件数据失败"
,
error
);
}
};
const
handleClickToNewsDetail
=
news
=>
{
const
route
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
query
:
{
newsId
:
news
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 发布机构
const
box3TopTopData
=
ref
({
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论