Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
cf7baa70
提交
cf7baa70
authored
4月 23, 2026
作者:
闫鹏
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'yp-dev' 到 'pre'
Yp dev 查看合并请求
!390
上级
7b398dc9
9688726b
流水线
#630
已通过 于阶段
in 5 分 7 秒
变更
23
流水线
1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
119 行增加
和
76 行删除
+119
-76
index.js
src/api/finance/index.js
+10
-0
request.js
src/api/request.js
+26
-0
index.js
src/router/index.js
+2
-0
index.vue
...omponents/fourSuppress/components/allGovernment/index.vue
+6
-4
index-back.vue
src/views/exportControl/index-back.vue
+0
-0
index.vue
src/views/exportControl/index.vue
+0
-0
index.vue
...ontrol/v2.0EntityList/components/dataStatistics/index.vue
+0
-0
index.vue
...ortControl/v2.0EntityList/components/deepMining/index.vue
+2
-2
index.vue
...s/sanctionsOverview/components/introductionPage/index.vue
+73
-70
index.vue
...omponents/sanctionsOverview/components/listPage/index.vue
+0
-0
index.vue
...ol/v2.0SingleSanction/components/dataStatistics/index.vue
+0
-0
index.vue
...ontrol/v2.0SingleSanction/components/deepMining/index.vue
+0
-0
index.vue
...ents/impactAnalysis/components/industrialImpact/index.vue
+0
-0
icon-pd.png
src/views/finance/assets/icons/icon-pd.png
+0
-0
icon-radar.png
src/views/finance/assets/icons/icon-radar.png
+0
-0
icon-sanction.png
src/views/finance/assets/icons/icon-sanction.png
+0
-0
icon-zc.png
src/views/finance/assets/icons/icon-zc.png
+0
-0
title.vue
src/views/finance/components/title.vue
+0
-0
index.vue
src/views/finance/entityList/components/deepMining/index.vue
+0
-0
index.vue
...s/sanctionsOverview/components/introductionPage/index.vue
+0
-0
index.vue
...omponents/sanctionsOverview/components/listPage/index.vue
+0
-0
index.vue
...finance/entityList/components/sanctionsOverview/index.vue
+0
-0
index.vue
src/views/finance/index.vue
+0
-0
没有找到文件。
src/api/finance/index.js
浏览文件 @
cf7baa70
...
...
@@ -137,6 +137,16 @@ export function getReasonAndSan(sanRecordId) {
return
http
.
get
(
`/api/sanctionList/invFin/getReasonAndSan?sanRecordId=
${
sanRecordId
}
`
);
}
/**
* 分页查询制裁实体清单
* url:/sanctionList/pageQuery
*/
export
function
getEntitiesList
(
params
)
{
return
http
.
post
(
"/api/sanctionList/pageQuery"
,
params
);
}
/**
* 制裁历程
* url:/entitiesDataCount/getSanRecord
...
...
src/api/request.js
浏览文件 @
cf7baa70
...
...
@@ -8,6 +8,28 @@ import {
// Token管理
const
TOKEN_KEY
=
'auth_token'
// 定义全局控制器,以便在取消后重新赋值
let
currentMainAbortController
=
new
AbortController
()
/**
* 获取当前有效的 AbortSignal
* 供 axios 拦截器和 fetch 请求共同使用
*/
export
const
getMainAbortSignal
=
()
=>
{
return
currentMainAbortController
.
signal
}
/**
* 取消所有正在进行的请求
* 路由守卫中调用此方法
*/
export
const
cancelAllMainRequests
=
()
=>
{
// 1. 终止当前控制器的所有请求
currentMainAbortController
.
abort
()
// 2. 创建一个新的控制器,供后续新请求使用
currentMainAbortController
=
new
AbortController
()
}
// ===== 兼容导出(勿删):历史代码仍会 import formatBearerAuthorization =====
// 说明:当前线上版本后端用 `token` 头,不用 Authorization;但为了不影响其它模块编译/运行,这里保留该方法导出。
const
formatBearerAuthorization
=
(
raw
)
=>
{
...
...
@@ -70,6 +92,10 @@ service.interceptors.request.use(config => {
config
.
headers
[
'X-API-Key'
]
=
aiApiKey
}
}
if
(
!
config
.
signal
)
{
config
.
signal
=
getMainAbortSignal
()
}
return
config
},
error
=>
{
console
.
log
(
error
)
...
...
src/router/index.js
浏览文件 @
cf7baa70
...
...
@@ -3,6 +3,7 @@ import { setToken, removeToken, getToken } from "@/api/request.js";
import
{
AUTH_LOGOUT_CHANNEL
}
from
"@/utils/authCrossTabLogout.js"
;
import
{
cancelAllRequests
}
from
"@/api/finance/service.js"
import
{
cancelAllMainRequests
}
from
"@/api/request.js"
/** localStorage:跨标签页记录当前前端的 bootId(与 vite define 的 __APP_BOOT_ID__ 对齐) */
const
VITE_BOOT_STORAGE_KEY
=
"app_vite_boot_id"
;
...
...
@@ -149,6 +150,7 @@ const router = createRouter({
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
// 在每次路由跳转开始前,取消上一个页面所有未完成的请求
// 这能防止旧页面的数据回来覆盖新页面,也能减少服务器压力
cancelAllMainRequests
();
cancelAllRequests
();
if
(
import
.
meta
.
env
.
DEV
)
{
clearTokenIfNewDevBoot
();
...
...
src/views/ZMOverView/components/fourSuppress/components/allGovernment/index.vue
浏览文件 @
cf7baa70
...
...
@@ -117,9 +117,10 @@
</div>
</el-tooltip>
<div
class=
"dynamic-item-tags"
>
<span
v-for=
"(tag, tIndex) in item.tags"
:key=
"tIndex"
class=
"tag"
:class=
"getTagClass(tag)"
>
<
!--
<
span
v-for=
"(tag, tIndex) in item.tags"
:key=
"tIndex"
class=
"tag"
:class=
"getTagClass(tag)"
>
{{
tag
}}
</span>
</span>
-->
<AreaTag
v-for=
"(tag, tIndex) in item.tags"
:key=
"tIndex"
:tagName=
"tag"
/>
</div>
</div>
</div>
...
...
@@ -278,6 +279,7 @@ import { onMounted, ref, computed, inject, watch, onUnmounted } from "vue";
import
{
useRouter
}
from
"vue-router"
;
import
Echarts
from
"@/components/Chart/index.vue"
;
import
SimplePagination
from
"@/components/SimplePagination.vue"
;
import
AreaTag
from
"@/components/base/AreaTag/index.vue"
;
import
*
as
echarts
from
"echarts"
;
import
defaultIcon
from
"../../assets/defaultIcon.png"
;
import
leftBtn
from
"../../assets/left-btn.png"
;
...
...
@@ -510,8 +512,8 @@ const handleNewsClick = item => {
// }
// });
// window.open(href, "_blank");
gotoNewsDetail
(
item
.
id
);
gotoNewsDetail
(
item
.
id
);
};
// 点击联合制裁项-如果是政令则跳转详情
...
...
src/views/exportControl/index-back.vue
0 → 100644
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/exportControl/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/exportControl/v2.0EntityList/components/dataStatistics/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/exportControl/v2.0EntityList/components/deepMining/index.vue
浏览文件 @
cf7baa70
...
...
@@ -49,8 +49,8 @@
:class=
"
{ active: currentSanctionId === item.id }"
@click="handleSanctionSelect(item.id)"
>
<
!--
<div
class=
"item-left"
>
{{
item
.
date
}}
-
{{
item
.
title
}}
</div>
--
>
<
div
class=
"item-left"
>
{{
item
.
date
}}
-实体清单更新
</div
>
<
div
class=
"item-left"
>
{{
item
.
date
}}
-
{{
item
.
title
}}
</div
>
<
!--
<div
class=
"item-left"
>
{{
item
.
date
}}
-实体清单更新
</div>
--
>
<div
class=
"item-right"
>
{{
item
.
count
}}{{
item
.
unit
}}
</div>
</div>
</div>
...
...
src/views/exportControl/v2.0EntityList/components/sanctionsOverview/components/introductionPage/index.vue
浏览文件 @
cf7baa70
...
...
@@ -29,55 +29,20 @@
</AnalysisBox>
</div>
<div
class=
"left-bottom"
>
<!--
<div
class=
"title"
>
<div
class=
"box"
></div>
<div
class=
"text"
>
实体清单更新历史
</div>
<div
class=
"filters"
>
<el-select
v-model=
"selectedDomain"
placeholder=
"Select"
style=
"width: 150px; height: 32px; margin-right: 16px"
>
<el-option
v-for=
"item in domainOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
<el-checkbox
v-model=
"onlyChina"
>
只看涉华动态
</el-checkbox>
</div>
<div
class=
"btn"
>
<img
src=
"../../../../assets/下载按钮.png"
alt=
""
/>
<img
src=
"../../../../assets/收藏按钮.png"
alt=
""
/>
</div>
</div>
<div
class=
"left-bottom-main"
>
<div
class=
"sanction-list"
v-for=
"item in sanctionList"
:key=
"item.id"
>
<div
class=
"time"
>
<div
class=
"year"
>
{{
item
.
year
}}
</div>
<div
class=
"date"
>
{{
item
.
date
}}
</div>
</div>
<img
:src=
"item.icon || title"
alt=
""
/>
<div
class=
"main"
>
<div
class=
"main-title"
@
click=
"handleClick(item)"
>
{{
item
.
name
}}
</div>
<el-tooltip
effect=
"dark"
:content=
"item.summary"
popper-class=
"common-prompt-popper"
placement=
"top"
:show-after=
"500"
>
<div
class=
"main-desc"
>
{{
item
.
summary
}}
</div>
</el-tooltip>
<div
class=
"tag-box"
>
<div
v-for=
"tag in item.techDomainList"
:key=
"tag"
class=
"tag-item"
>
{{
tag
}}
</div>
</div>
<div
:class=
"
{ 'count-tag': item.cnEntityCount }">
{{
item
.
cnEntityCount
?
`${item.cnEntityCount
}
家中国实体`
:
""
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"left-footer"
>
<
div
class
=
"total-count"
>
共
{{
totalAll
}}
项
<
/div
>
<
el
-
pagination
v
-
model
:
current
-
page
=
"currentPageAll"
:
page
-
size
=
"pageSizeAll"
:
total
=
"totalAll"
layout
=
"prev, pager, next"
background
@
current
-
change
=
"handlePageChangeAll"
/>
<
/div> --
>
<AnalysisBox
title=
"实体清单更新历史"
:showAllBtn=
"false"
>
<template
#
header-btn
>
<div
class=
"filters"
>
<
el
-
select
v
-
model
=
"selectedDomain"
placeholder
=
"Select"
style
=
"width: 150px; height: 32px; margin-right: 16px"
>
<
el
-
option
v
-
for
=
"item in domainOptions"
:
key
=
"item.value"
:
label
=
"item.label"
:
value
=
"item.value"
/>
<el-select
v-model=
"selectedDomain"
placeholder=
"Select"
style=
"width: 150px; height: 32px; margin-right: 16px"
>
<el-option
v-for=
"item in domainOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
<el-checkbox
v-model=
"onlyChina"
>
只看涉华动态
</el-checkbox>
</div>
...
...
@@ -91,8 +56,13 @@
<img
:src=
"item.icon || title"
alt=
""
/>
<div
class=
"main"
>
<div
class=
"main-title"
@
click=
"handleClick(item)"
>
{{ item.name }}
</div>
<
el
-
tooltip
effect
=
"dark"
:
content
=
"item.summary"
popper
-
class
=
"common-prompt-popper"
placement
=
"top"
:
show
-
after
=
"500"
>
<el-tooltip
effect=
"dark"
:content=
"item.summary"
popper-class=
"common-prompt-popper"
placement=
"top"
:show-after=
"500"
>
<div
class=
"main-desc"
>
{{ item.summary }}
</div>
</el-tooltip>
<div
class=
"tag-box"
>
...
...
@@ -107,14 +77,20 @@
</div>
<div
class=
"left-footer"
>
<div
class=
"total-count"
>
共 {{ totalAll }} 项
</div>
<
el
-
pagination
v
-
model
:
current
-
page
=
"currentPageAll"
:
page
-
size
=
"pageSizeAll"
:
total
=
"totalAll"
layout
=
"prev, pager, next"
background
@
current
-
change
=
"handlePageChangeAll"
/>
<el-pagination
v-model:current-page=
"currentPageAll"
:page-size=
"pageSizeAll"
:total=
"totalAll"
layout=
"prev, pager, next"
background
@
current-change=
"handlePageChangeAll"
/>
</div>
</AnalysisBox>
</div>
</div>
<div
class=
"right"
>
<
AnalysisBox
title
=
"发布机构"
:
showAllBtn
=
"false"
>
<AnalysisBox
title=
"发布机构"
:showAllBtn=
"false"
:height=
"auto"
>
<div
class=
"right-main"
>
<div
class=
"right-main-title"
@
click=
"handleClickOrg(publishInfo)"
>
<img
:src=
"publishInfo.imageUrl"
alt=
""
/>
...
...
@@ -130,8 +106,12 @@
<span>
关键人物
</span>
</div>
<div
class=
"key-person-list"
>
<
div
class
=
"person-item"
v
-
for
=
"(item, index) in publishInfo.personList"
:
key
=
"index"
@
click
=
"handlePerClick(item)"
>
<div
class=
"person-item"
v-for=
"(item, index) in publishInfo.personList"
:key=
"index"
@
click=
"handlePerClick(item)"
>
<img
:src=
"item.imageUrl"
alt=
""
/>
<div
class=
"person-info"
>
<CommonPrompt
:content=
"item.name"
>
...
...
@@ -160,11 +140,19 @@
</div>
</div>
</div>
<
div
class
=
"more-btn"
v
-
if
=
"publishOrgInfo.length < dynamicTotal"
@
click
=
"handleLoadMoreDynamic"
>
<
!-- <
div class="more-btn" v-if="publishOrgInfo.length < dynamicTotal" @click="handleLoadMoreDynamic">
<span>查看更多</span>
<el-icon>
<ArrowDown />
</el-icon>
</div> -->
<div
class=
"dynamic-footer"
>
<simple-pagination
v-model:current-page=
"dynamicPage"
:page-size=
"dynamicPageSize"
:total=
"dynamicTotal"
@
page-change=
"handleListPageChange"
/>
</div>
</div>
</div>
...
...
@@ -176,6 +164,7 @@
<
script
setup
>
import
{
ref
,
onMounted
,
watch
}
from
"vue"
;
import
router
from
"@/router"
;
import
SimplePagination
from
"@/components/SimplePagination.vue"
;
import
title
from
"../../../../assets/title.png"
;
import
defaultIcon
from
"../../../../../assets/icons/default-avatar.png"
;
import
icon01
from
"../../assets/icon01.png"
;
...
...
@@ -376,7 +365,10 @@ const getPublishOrgInfoFn = async (isLoadMore = false) => {
console
.
error
(
"获取发布机构动态失败:"
,
error
);
}
};
const
handleListPageChange
=
val
=>
{
dynamicPage
.
value
=
val
;
getPublishOrgInfoFn
(
false
);
};
const
handleLoadMoreDynamic
=
()
=>
{
dynamicPage
.
value
++
;
getPublishOrgInfoFn
(
true
);
...
...
@@ -401,17 +393,16 @@ const getEntityInfoFn = async id => {
const
sanTypeId
=
ref
(
""
);
// 跳转到数据资源库
const
handleToDataLibrary
=
(
item
)
=>
{
console
.
log
(
'item'
,
item
);
const
handleToDataLibrary
=
item
=>
{
console
.
log
(
"item"
,
item
);
let
domainStr
=
domainOptions
.
filter
(
item
=>
item
.
value
===
selectedDomain
.
value
)[
0
].
label
let
params
if
(
domainStr
===
'全部领域'
)
{
let
domainStr
=
domainOptions
.
filter
(
item
=>
item
.
value
===
selectedDomain
.
value
)[
0
].
label
;
let
params
;
if
(
domainStr
===
"全部领域"
)
{
params
=
{
isCnEntityOnly
:
true
,
selectedDate
:
JSON
.
stringify
([
item
.
postDate
,
item
.
postDate
])
}
}
;
}
else
{
params
=
{
isCnEntityOnly
:
true
,
...
...
@@ -424,8 +415,7 @@ const handleToDataLibrary = (item) => {
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
}
};
onMounted
(()
=>
{
sanTypeId
.
value
=
route
.
query
.
sanTypeId
;
...
...
@@ -616,7 +606,7 @@ onMounted(() => {
border-radius
:
20px
;
background-color
:
rgba
(
206
,
79
,
81
,
0
.1
);
cursor
:
pointer
;
&
:
hover
{
&
:hover
{
text-decoration
:
underline
;
}
}
...
...
@@ -646,11 +636,13 @@ onMounted(() => {
.right
{
width
:
520px
;
height
:
1020
px
;
height
:
auto
;
// min-height: 900px;
max-height
:
1280px
;
.right-main
{
padding
:
7px
24px
20px
23px
;
height
:
100%
;
.right-main-title
{
cursor
:
pointer
;
width
:
473px
;
...
...
@@ -767,7 +759,12 @@ onMounted(() => {
.right-main-dynamic
{
width
:
100%
;
height
:
900px
;
display
:
flex
;
flex-direction
:
column
;
// justify-content: space-between;
// height: auto;
position
:
relative
;
.dynamic-title
{
display
:
flex
;
align-items
:
center
;
...
...
@@ -788,8 +785,9 @@ onMounted(() => {
}
.dynamic-list
{
max
-
height
:
500
px
;
overflow
-
y
:
auto
;
// max-height: 500px;
height
:
auto
;
// overflow-y: auto;
padding-right
:
10px
;
/* 滚动条样式 */
...
...
@@ -880,6 +878,11 @@ onMounted(() => {
margin-right
:
4px
;
}
}
.dynamic-footer
{
position
:
absolute
;
bottom
:
50px
;
left
:
180px
;
}
}
}
}
...
...
src/views/exportControl/v2.0EntityList/components/sanctionsOverview/components/listPage/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/exportControl/v2.0SingleSanction/components/dataStatistics/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/exportControl/v2.0SingleSanction/components/deepMining/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/exportControl/v2.0SingleSanction/components/impactAnalysis/components/industrialImpact/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/assets/icons/icon-pd.png
0 → 100644
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/assets/icons/icon-radar.png
0 → 100644
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/assets/icons/icon-sanction.png
0 → 100644
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/assets/icons/icon-zc.png
0 → 100644
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/components/title.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/entityList/components/deepMining/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/entityList/components/sanctionsOverview/components/introductionPage/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/entityList/components/sanctionsOverview/components/listPage/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/entityList/components/sanctionsOverview/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
src/views/finance/index.vue
浏览文件 @
cf7baa70
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论