Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
874dcf6a
提交
874dcf6a
authored
4月 09, 2026
作者:
闫鹏
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'yp-dev' 到 'pre'
Yp dev 查看合并请求
!322
上级
c2783949
b9c11ff5
流水线
#384
已通过 于阶段
in 3 分 25 秒
变更
3
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
27 行增加
和
68 行删除
+27
-68
exportControl.js
src/api/exportControl.js
+1
-1
index.vue
src/views/exportControl/index.vue
+18
-35
index.vue
...omponents/sanctionsOverview/components/listPage/index.vue
+8
-32
没有找到文件。
src/api/exportControl.js
浏览文件 @
874dcf6a
...
...
@@ -123,7 +123,7 @@ export function getSanctionsInfoCount() {
* sanReason: string
* }[]>}
*/
export
function
getSanctionProcess
(
sanTypeIds
=
"1"
,
pageNum
=
1
,
pageSize
=
10
,
isCn
=
false
)
{
export
function
getSanctionProcess
(
sanTypeIds
=
[
"1"
]
,
pageNum
=
1
,
pageSize
=
10
,
isCn
=
false
)
{
return
request200
(
request
({
method
:
"POST"
,
...
...
src/views/exportControl/index.vue
浏览文件 @
874dcf6a
...
...
@@ -649,35 +649,11 @@
</div>
</el-col>
</
template
>
<
template
v-if=
"activeResourceTab === 'commerce'"
>
<listPage
/>
</
template
>
</el-row>
</div>
<!-- <el-dialog v-model="dialogVisible" width="800" :before-close="handleClose">
<template #title>
<div class="dialog-title">50%规则子企业</div>
</template>
<div class="dialog-ett-wrpper">
<div
class="box1-bottom-content-item"
v-for="(ett, index) in currentOrgList"
:key="index"
@click="handleEntityClick(ett)"
>
<el-image v-if="ett.img" class="box1-bottom-content-item-img" :src="ett.img" alt=""></el-image>
<div v-else class="box1-bottom-content-item-imgUndefined">
{{ (ett.orgName || ett.enName)?.match(/[\u4e00-\u9fa5a-zA-Z0-9]/)?.[0] }}
</div>
<div class="box1-bottom-content-item-txt">
{{ ett.orgName || ett.orgNameZh }}
</div>
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="dialogVisible = false"> 确定 </el-button>
</div>
</template>
</el-dialog> -->
<RuleSubsidiaryDialog
v-model=
"dialogVisible"
:company-name=
"currentRuleCompany"
...
...
@@ -709,6 +685,7 @@ const { isShow } = useContainerScroll(homeMainRef);
import
*
as
echarts
from
"echarts"
;
import
setChart
from
"@/utils/setChart"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
listPage
from
"./v2.0CommercialControlList/components/sanctionsOverview/components/listPage/index.vue"
;
import
{
DArrowRight
,
Warning
,
Search
}
from
"@element-plus/icons-vue"
;
import
EChart
from
"@/components/Chart/index.vue"
;
...
...
@@ -963,11 +940,11 @@ onMounted(async () => {
resourceTabs
.
value
=
infoList
.
value
.
map
(
item
=>
({
label
:
item
.
nameZh
,
value
:
tabMap
[
item
.
id
],
id
:
[
item
.
id
]
,
id
:
item
.
id
,
disabled
:
false
}));
resourceTabs
.
value
.
unshift
({
label
:
"全部制裁"
,
value
:
"all"
,
id
:
""
,
disabled
:
false
});
console
.
log
(
"返回的数据结构 infoList =》"
,
infoList
.
value
);
console
.
log
(
"返回的数据结构 infoList =》"
,
resourceTabs
.
value
);
const
entityList
=
_
.
map
(
entitiesDataInfo
?.
sanEntities
??
[],
({
entityNameZh
,
entityName
})
=>
{
return
{
name
:
entityNameZh
,
enName
:
entityName
};
});
...
...
@@ -1488,7 +1465,8 @@ watch(
const
fetchEntitiesList
=
async
(
page
=
1
,
size
=
10
)
=>
{
try
{
console
.
log
(
"activeResourceTabItem.value.id"
,
activeResourceTabItem
.
value
.
id
);
const
res
=
await
getEntitiesList
(
activeResourceTabItem
.
value
.
id
.
join
(
","
),
page
,
size
);
if
(
!
activeResourceTabItem
.
value
.
id
)
return
;
const
res
=
await
getEntitiesList
(
activeResourceTabItem
.
value
.
id
,
page
,
size
);
if
(
res
)
{
entitiesList
.
value
=
res
.
content
.
map
(
item
=>
({
...
item
,
...
...
@@ -1508,7 +1486,7 @@ const fetchEntitiesList = async (page = 1, size = 10) => {
const
handleGetMore
=
async
()
=>
{
sanctionPage
.
value
++
;
try
{
const
sanTypeid
=
activeResourceTabItem
.
value
.
id
?
activeResourceTabItem
.
value
.
id
:
allSanTypeIds
.
value
;
const
sanTypeid
=
activeResourceTabItem
.
value
.
id
?
[
activeResourceTabItem
.
value
.
id
]
:
allSanTypeIds
.
value
;
const
res
=
await
getSanctionProcess
(
sanTypeid
,
sanctionPage
.
value
,
10
);
if
(
res
&&
res
.
content
)
{
// 将新数据合并到现有列表中
...
...
@@ -1535,7 +1513,7 @@ const handleGetMore = async () => {
const
fetchSanctionProcess
=
async
(
page
=
1
,
size
=
10
)
=>
{
try
{
const
res
=
await
getSanctionProcess
(
activeResourceTabItem
.
value
.
id
?
activeResourceTabItem
.
value
.
id
:
allSanTypeIds
.
value
,
activeResourceTabItem
.
value
.
id
?
[
activeResourceTabItem
.
value
.
id
]
:
allSanTypeIds
.
value
,
page
,
size
);
...
...
@@ -1580,12 +1558,13 @@ const tabMap = {
};
const
handleResourceTabClick
=
tab
=>
{
if
(
tab
.
disabled
)
return
;
// if (tab.disabled) return;
console
.
log
(
"选项点击"
,
tab
);
activeResourceTab
.
value
=
tab
.
value
;
activeResourceTabItem
.
value
=
tab
;
fetchSanctionProcess
();
console
.
log
(
"tabMap[tab.id]"
,
tabMap
[
tab
.
id
]);
if
(
tab
Map
[
tab
.
id
]
===
"entity"
)
{
if
(
tab
.
value
===
"entity"
)
{
fetchEntitiesList
();
}
};
...
...
@@ -1752,7 +1731,7 @@ const handleSanc = item => {
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
activeResourceTabItem
.
value
.
id
.
join
(
","
)
sanTypeId
:
activeResourceTabItem
.
value
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
...
...
@@ -1847,6 +1826,10 @@ const handleMediaClick = item => {
// box-shadow: none;
}
.list-page
{
padding-top
:
0
;
}
.home-header
{
height
:
64px
;
background
:
url("@/assets/images/nav-bg.png")
;
...
...
src/views/exportControl/v2.0CommercialControlList/components/sanctionsOverview/components/listPage/index.vue
浏览文件 @
874dcf6a
...
...
@@ -43,7 +43,7 @@
/>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
v-loading=
"loading"
>
<AnalysisBox
title=
"CCL清单列表"
:showAllBtn=
"false"
>
<div
class=
"right-table"
>
<div
class=
"list"
v-for=
"(item, i) in cclList"
:key=
"i"
>
...
...
@@ -212,7 +212,7 @@ const getCclList = async () => {
if
(
!
allReason
||
!
allReason
.
checked
)
{
controls
=
controlReason
.
value
.
filter
(
item
=>
item
.
checked
&&
item
.
id
!==
"all"
).
map
(
item
=>
item
.
id
);
}
loading
.
value
=
true
;
const
params
=
{
categoryCode
:
currentCCLType
.
value
,
techDomainIds
:
techDomains
,
...
...
@@ -252,8 +252,10 @@ const getCclList = async () => {
});
console
.
log
(
"----getCclList 11"
,
cclList
.
value
);
loading
.
value
=
false
;
}
}
catch
(
error
)
{
loading
.
value
=
false
;
console
.
error
(
"获取 ccl 清单列表失败:"
,
error
);
}
};
...
...
@@ -342,35 +344,9 @@ watch(searchKeyword, newValue => {
console
.
log
(
"-----searchKey"
,
newValue
);
getCclList
();
});
const
loading
=
ref
(
false
);
// 模拟清单列表
const
cclList
=
ref
([
{
name
:
"类别 0-核材料、设施和设备、枪支、弹药[以及其他物品]"
,
desc
:
'A."最终产品"、"设备"、"附件"、"附加装置"、"零件"、"组件"和"系统"'
,
isExpand
:
true
,
list
:
[
{
code
:
"0A002"
,
name
:
'发电或推进设备,"专门设计"用于与太空、海洋或移动"核反应堆"一起使用。(这些项目"受 ITAR 管辖。"参见 22 CFR 第 120 至 130 部分。)'
,
isExpand
:
false
,
isDot
:
false
},
{
code
:
"0A501"
,
name
:
"枪支(不包括 0A502 霰弹枪、0A506 半自动步枪、0A507 半自动手枪和 0A508 半自动霰弹枪)及相关商品(不包括在 Eccn 0A509 中列举或以其他方式描述的与半自动相关的商品,用于 Eccn 0A506、0A507 或 0A508)如下(参见受控物品清单)"
,
isExpand
:
true
,
isDot
:
true
},
{
code
:
"0A501"
,
name
:
"枪支(不包括 0A502 霰弹枪、0A506 半自动步枪、0A507 半自动手枪和 0A508 半自动霰弹枪)及相关商品(不包括在 Eccn 0A509 中列举或以其他方式描述的与半自动相关的商品,用于 Eccn 0A506、0A507 或 0A508)如下(参见受控物品清单)"
,
isExpand
:
false
,
isDot
:
true
}
]
}
]);
const
cclList
=
ref
([]);
onMounted
(
async
()
=>
{
// 获取类别字段
...
...
@@ -410,9 +386,9 @@ onMounted(async () => {
:deep
(
.el-input__wrapper
)
{
padding
:
0
11px
;
// border: 1px solid rgba(0, 0, 0, 0.2)
;
border
:
1
.5px
solid
#dcdfe6
;
background-color
:
#fff
;
border-radius
:
3
px
;
border-radius
:
4
px
;
}
:deep
(
.el-input__inner
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论