Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
56cf0ae3
提交
56cf0ae3
authored
1月 15, 2026
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
差异文件
update
上级
4fe8aaf0
47cc3016
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
266 行增加
和
58 行删除
+266
-58
index.js
src/api/ruleRestriction/index.js
+143
-0
index.vue
src/views/coopRestriction/components/resLib/index.vue
+2
-1
index.vue
...s/sanctionsOverview/components/introductionPage/index.vue
+21
-21
index.vue
src/views/ruleRestriction/components/askPage/index.vue
+0
-0
index.vue
src/views/ruleRestriction/components/dataNew/index.vue
+0
-0
index.vue
src/views/ruleRestriction/components/dataSub/index.vue
+0
-0
index.vue
src/views/ruleRestriction/components/resLib/index.vue
+0
-0
index.vue
src/views/ruleRestriction/detail/index.vue
+0
-0
index.vue
src/views/ruleRestriction/index.vue
+100
-36
没有找到文件。
src/api/ruleRestriction/index.js
0 → 100644
浏览文件 @
56cf0ae3
import
request
from
"@/api/request.js"
;
// 规则限制-首页统计接口
export
function
getStatCount
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/statCount`
})
}
// 规则限制-查询最新动态接口
export
function
getLatestUpdates
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getLatestUpdates`
})
}
// 规则限制-风险信号
export
function
getRiskSignal
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonFeature/riskSignal/
${
params
}
`
})
}
// 规则限制-查询新闻资讯
export
function
getNews
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonFeature/news/
${
params
}
`
})
}
// 规则限制-查询社交媒体
export
function
getRemarks
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonFeature/remarks/
${
params
}
`
})
}
// 规则限制-限制领域分布情况
/**
* @param {Object} params
* @param {string} params.year
* @header token
*/
export
function
getAreaDistribution
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getAreaDistribution`
,
params
})
}
// 规则限制-受限实体数量变化趋势
/**
* @param {Object} params
* @param {Integer} params.year
* @param {String} params.type
* @header token
*/
export
function
getEntityChangeTrend
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getEntityChangeTrend`
,
params
})
}
// 规则限制-规则限制政令列表查询接口
/**
* @param {Object} params
* @param {Integer} params.currentPage
* @param {Integer} params.pageSize
* @param {List<String>} params.years
* @param {List<String>} params.areas
* @param {String} params.keywords
* @param {String} params.sortField
* @param {String} params.sortOrder
* @header token
*/
export
function
getRuleLimitList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getRuleLimitList`
,
params
})
}
// 规则限制-排华科技联盟列表接口
/**
* @param {Object} params
* @param {Integer} params.currentPage
* @param {Integer} params.pageSize
* @param {List<String>} params.years
* @param {List<String>} params.countries
* @param {List<String>} params.areas
* @param {String} params.keywords
* @param {String} params.sortField
* @param {String} params.sortOrder
* @header token
*/
export
function
getACTAList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getACTAList`
,
params
})
}
export
function
getAcTAAllcountry
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getACTAAllCountry/`
})
}
// 规则限制-规则限制基本详情
export
function
getSanctionOverview
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/ruleLimitInfo/getSanctionOverview/
${
params
}
`
})
}
// 实体清单-制裁概况-获取发布机构机构动态
/**
* @param {Object} data
* @param {string} data.orgId
* @header token
*/
export
function
getPublishOrgInfo
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/organization/relate/news`
,
data
,
})
}
\ No newline at end of file
src/views/coopRestriction/components/resLib/index.vue
浏览文件 @
56cf0ae3
...
...
@@ -106,7 +106,8 @@ const getMainDataList = async () => {
params
.
sortOrder
=
value
.
value
;
}
try
{
try
{
console
.
log
(
'----params getMainDataList'
,
params
)
const
res
=
await
getCoopRestrictionList
(
params
);
if
(
res
&&
res
.
code
===
200
)
{
mainDataList
.
value
=
(
res
.
data
.
content
||
[]).
map
(
item
=>
({
...
...
src/views/exportControl/v2.0CommercialControlList/components/sanctionsOverview/components/introductionPage/index.vue
浏览文件 @
56cf0ae3
...
...
@@ -161,26 +161,26 @@
@
click
=
"handlePerClick(item)"
>
<
img
:
src
=
"item.imageUrl"
alt
/>
<
div
class
=
"person-info"
>
<
el
-
tooltip
effect
=
"dark"
:
content
=
"item.name"
popper
-
class
=
"common-prompt-popper"
placement
=
"top"
:
show
-
after
=
"500"
>
<
div
class
=
"name"
>
{{
item
.
name
}}
<
/div>
<
/el-tooltip>
<
el
-
tooltip
effect
=
"dark"
:
content
=
"item.position"
popper
-
class
=
"common-prompt-popper"
placement
=
"top"
:
show
-
after
=
"500"
>
<
div
class
=
"title1"
>
{{
item
.
position
}}
<
/div>
<
/el-tooltip>
<
el
-
tooltip
effect
=
"dark"
:
content
=
"item.name"
popper
-
class
=
"common-prompt-popper"
placement
=
"top"
:
show
-
after
=
"500"
>
<
div
class
=
"name"
>
{{
item
.
name
}}
<
/div>
<
/el-tooltip>
<
el
-
tooltip
effect
=
"dark"
:
content
=
"item.position"
popper
-
class
=
"common-prompt-popper"
placement
=
"top"
:
show
-
after
=
"500"
>
<
div
class
=
"title1"
>
{{
item
.
position
}}
<
/div>
<
/el-tooltip>
<
/div>
<
/div>
<
/div>
...
...
@@ -916,10 +916,10 @@ onMounted(() => {
flex
-
shrink
:
0
;
}
.
person
-
info
{
width
:
calc
(
100
%
-
48
px
-
8
px
);
width
:
calc
(
100
%
-
48
px
-
8
px
);
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
/* 防止文本换行 */
white
-
space
:
nowrap
;
/* 防止文本换行 */
.
name
{
font
-
size
:
16
px
;
font
-
weight
:
700
;
...
...
src/views/ruleRestriction/components/askPage/index.vue
浏览文件 @
56cf0ae3
差异被折叠。
点击展开。
src/views/ruleRestriction/components/dataNew/index.vue
浏览文件 @
56cf0ae3
差异被折叠。
点击展开。
src/views/ruleRestriction/components/dataSub/index.vue
浏览文件 @
56cf0ae3
差异被折叠。
点击展开。
src/views/ruleRestriction/components/resLib/index.vue
浏览文件 @
56cf0ae3
差异被折叠。
点击展开。
src/views/ruleRestriction/detail/index.vue
浏览文件 @
56cf0ae3
差异被折叠。
点击展开。
src/views/ruleRestriction/index.vue
浏览文件 @
56cf0ae3
...
...
@@ -6,7 +6,7 @@
<input
v-model=
"input"
class=
"search-input"
placeholder=
"搜索规则限制"
/>
<div
class=
"search-btn-small"
@
click=
"handleSearch"
>
<div
class=
"search-icon"
>
<img
src=
"./assets/icons/search-icon.png"
alt
=
""
/>
<img
src=
"./assets/icons/search-icon.png"
alt
/>
</div>
<div
class=
"search-text"
>
搜索
</div>
</div>
...
...
@@ -15,25 +15,25 @@
<div
class=
"btn"
@
click=
"handleToPosi('position1')"
>
<div
class=
"btn-text"
>
最新动态
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
<div
class=
"btn"
@
click=
"handleToPosi('position2')"
>
<div
class=
"btn-text"
>
咨询要闻
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
<div
class=
"btn"
@
click=
"handleToPosi('position3')"
>
<div
class=
"btn-text"
>
数据总览
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
<div
class=
"btn"
@
click=
"handleToPosi('position4')"
>
<div
class=
"btn-text"
>
资源库
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
</div>
...
...
@@ -55,51 +55,51 @@
<div
class=
"search-main"
>
<input
v-model=
"input"
placeholder=
"搜索规则限制"
class=
"search-input"
/>
<div
class=
"search-btn"
>
<img
src=
"./assets/icons/search-icon.png"
alt
=
""
/>
<img
src=
"./assets/icons/search-icon.png"
alt
/>
搜索
</div>
</div>
<
!--
<
div
class=
"search-center"
>
<div
class=
"search-center"
>
<div
class=
"search-item"
>
<div
class=
"search-item-num"
>
190
</div>
<div
class=
"search-item-num"
>
{{
statCountInfo
.
AOCOUNT
}}
</div>
<div
class=
"search-item-name"
>
规则限制政令
</div>
</div>
<div
class=
"search-item"
>
<div
class=
"search-item-num"
>
125
</div>
<div
class=
"search-item-num"
>
{{
statCountInfo
.
ENTITYCOUNT
}}
</div>
<div
class=
"search-item-name"
>
规则限制实体
</div>
</div>
<div
class=
"search-item"
>
<div
class=
"search-item-num"
>
18
</div>
<div
class=
"search-item-num"
>
{{
statCountInfo
.
ACTACOUNT
}}
</div>
<div
class=
"search-item-name"
>
排华科技联盟
</div>
</div>
<div
class=
"search-item"
>
<div
class=
"search-item-num"
>
12
</div>
<div
class=
"search-item-num"
>
{{
statCountInfo
.
COUNTRYCOUNT
}}
</div>
<div
class=
"search-item-name"
>
排华国家数量
</div>
</div>
</div>
-->
</div>
<div
class=
"search-bottom"
>
<div
class=
"btn"
@
click=
"handleToPosi('position1')"
>
<div
class=
"btn-text"
>
最新动态
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
<div
class=
"btn"
@
click=
"handleToPosi('position2')"
>
<div
class=
"btn-text"
>
咨询要闻
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
<div
class=
"btn"
@
click=
"handleToPosi('position3')"
>
<div
class=
"btn-text"
>
数据总览
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
<div
class=
"btn"
@
click=
"handleToPosi('position4')"
>
<div
class=
"btn-text"
>
资源库
</div>
<div
class=
"btn-icon"
>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
=
""
/>
<img
src=
"@/assets/icons/arrow-right-icon.png"
alt
/>
</div>
</div>
</div>
...
...
@@ -137,7 +137,7 @@
</
template
>
<
script
setup
>
import
{
ref
,
nextTick
}
from
"vue"
;
import
{
ref
,
nextTick
,
onMounted
}
from
"vue"
;
import
{
useRouter
}
from
"vue-router"
;
import
comTitle
from
"./common/comTitle.vue"
;
import
newData
from
"./components/dataNew/index.vue"
;
...
...
@@ -147,6 +147,7 @@ import resLib from "./components/resLib/index.vue";
import
HeaderMenu
from
"@/components/headerMenu.vue"
;
import
headerInfo
from
"@/components/headerInfo.vue"
;
import
{
useContainerScroll
}
from
"@/hooks/useScrollShow"
;
import
{
getStatCount
}
from
'@/api/ruleRestriction/index.js'
// 搜索框
const
input
=
ref
(
""
);
...
...
@@ -155,35 +156,59 @@ const { isShow } = useContainerScroll(homeMainRef);
const
router
=
useRouter
();
const
statCountInfo
=
ref
({})
const
getStatCountInfo
=
async
()
=>
{
try
{
const
res
=
await
getStatCount
();
if
(
res
&&
res
.
code
===
200
)
{
// console.log('----getStatCountInfo', res.data)
statCountInfo
.
value
=
res
.
data
}
}
catch
(
error
)
{
console
.
error
(
"获取首页统计接口失败:"
,
error
);
}
}
// 搜索功能
const
handleSearch
=
()
=>
{
console
.
log
(
"搜索内容:"
,
input
.
value
);
console
.
log
(
"搜索内容:"
,
input
.
value
);
};
// 锚点跳转
const
handleToPosi
=
id
=>
{
const
element
=
document
.
getElementById
(
id
);
if
(
element
&&
homeMainRef
.
value
)
{
// 如果当前还未显示吸顶搜索栏,先强制切换状态以稳定布局
if
(
!
isShow
.
value
)
{
isShow
.
value
=
true
;
}
const
element
=
document
.
getElementById
(
id
);
if
(
element
&&
homeMainRef
.
value
)
{
// 如果当前还未显示吸顶搜索栏,先强制切换状态以稳定布局
if
(
!
isShow
.
value
)
{
isShow
.
value
=
true
;
}
// 使用 nextTick 确保 DOM 状态更新(高度变化生效)后再计算
nextTick
(()
=>
{
const
containerRect
=
homeMainRef
.
value
.
getBoundingClientRect
();
const
elementRect
=
element
.
getBoundingClientRect
();
// 使用 getBoundingClientRect 计算元素相对于容器顶部的绝对距离,不受嵌套布局影响
const
top
=
elementRect
.
top
-
containerRect
.
top
+
homeMainRef
.
value
.
scrollTop
;
// 使用 nextTick 确保 DOM 状态更新(高度变化生效)后再计算
nextTick
(()
=>
{
const
containerRect
=
homeMainRef
.
value
.
getBoundingClientRect
();
const
elementRect
=
element
.
getBoundingClientRect
();
// 使用 getBoundingClientRect 计算元素相对于容器顶部的绝对距离,不受嵌套布局影响
const
top
=
elementRect
.
top
-
containerRect
.
top
+
homeMainRef
.
value
.
scrollTop
;
homeMainRef
.
value
.
scrollTo
({
top
:
top
,
behavior
:
"smooth"
});
});
}
homeMainRef
.
value
.
scrollTo
({
top
:
top
,
behavior
:
"smooth"
});
});
}
};
// 返回首页
const
handleBackHome
=
()
=>
{
router
.
push
({
path
:
"/overview"
});
};
onMounted
(
async
()
=>
{
await
getStatCountInfo
()
})
</
script
>
<
style
scoped
lang=
"scss"
>
...
...
@@ -220,6 +245,45 @@ const handleToPosi = id => {
width
:
960px
;
height
:
168px
;
margin
:
0
auto
68px
auto
;
.search-center
{
width
:
688px
;
height
:
48px
;
margin
:
0
auto
;
margin-top
:
36px
;
display
:
flex
;
justify-content
:
space-between
;
.search-item
{
width
:
120px
;
height
:
57px
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
space-between
;
.search-item-num
{
font-family
:
Microsoft
YaHei
;
font-style
:
Bold
;
font-size
:
36px
;
font-weight
:
700
;
line-height
:
22px
;
letter-spacing
:
0px
;
text-align
:
center
;
color
:
rgba
(
5
,
95
,
194
,
1
);
}
.search-item-name
{
font-family
:
Microsoft
YaHei
;
font-style
:
Regular
;
font-size
:
16px
;
font-weight
:
400
;
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
center
;
color
:
rgba
(
95
,
101
,
108
,
1
);
}
}
}
.search-main
{
display
:
flex
;
padding-right
:
3px
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论