Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
87899162
提交
87899162
authored
4月 15, 2026
作者:
付康
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'fk-dev' 到 'pre'
Fk dev 查看合并请求
!347
上级
86617244
6d19a446
流水线
#489
已通过 于阶段
in 4 分 47 秒
变更
21
流水线
1
显示空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
735 行增加
和
585 行删除
+735
-585
index.vue
src/components/base/moduleHeader/index.vue
+3
-3
ResourceLibrarySection.vue
src/views/bill/billHome/ResourceLibrarySection.vue
+37
-6
index.vue
src/views/bill/billHome/index.vue
+32
-14
index.vue
src/views/comprehensiveSearch/chat/index.vue
+0
-15
index.vue
src/views/dataLibrary/bill/countryBill/index.vue
+45
-23
index.vue
src/views/dataLibrary/components/SelectBox/index.vue
+6
-2
index.vue
src/views/dataLibrary/exportControl/entityList/index.vue
+26
-8
index.vue
src/views/dataLibrary/financeControl/mREList/index.vue
+129
-293
index.vue
src/views/dataLibrary/financeControl/sDNList/index.vue
+51
-13
index.vue
src/views/dataLibrary/technologyFigures/index.vue
+3
-2
info.vue
src/views/exportControl/components/info.vue
+25
-1
index.vue
src/views/exportControl/index.vue
+23
-8
index.vue
...ontrol/v2.0EntityList/components/dataStatistics/index.vue
+53
-5
index.vue
...s/sanctionsOverview/components/introductionPage/index.vue
+36
-34
index.vue
...omponents/sanctionsOverview/components/listPage/index.vue
+70
-96
index.vue
...ol/v2.0SingleSanction/components/dataStatistics/index.vue
+47
-4
index.vue
...v2.0SingleSanction/components/sanctionsOverview/index.vue
+42
-49
index.vue
src/views/exportControl/v2.0SingleSanction/index.vue
+5
-2
info.vue
src/views/finance/components/info.vue
+20
-1
index.vue
src/views/finance/index.vue
+81
-5
charts.js
src/views/finance/utils/charts.js
+1
-1
没有找到文件。
src/components/base/moduleHeader/index.vue
浏览文件 @
87899162
...
...
@@ -383,9 +383,9 @@ const handleToModule = (item, index) => {
}
else
{
const
curRoute
=
router
.
resolve
({
path
:
item
.
path
,
query
:
{
titleIndex
:
2
}
//
query: {
//
titleIndex: 2
//
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
}
...
...
src/views/bill/billHome/ResourceLibrarySection.vue
浏览文件 @
87899162
...
...
@@ -859,11 +859,42 @@ const handleCommitteeCurrentChange = page => {
// 议员合作关系跳转至数据资源库
const
handleCooperationToDataLibrary
=
(
item
)
=>
{
console
.
log
(
'item'
,
item
);
console
.
log
(
'activeAreaList'
,
activeAreaList
.
value
);
console
.
log
(
'areaOptions'
,
areaOptions
.
value
);
// console.log('item', item);
// console.log('activeAreaList', activeAreaList.value);
// console.log('areaOptions', areaOptions.value);
// console.log('footerSelect1', footerSelect1.value);
// console.log('委员会列表', postOrgList.value);
const
postOrgStr
=
postOrgList
.
value
.
filter
(
item
=>
item
.
departmentId
===
footerSelect1
.
value
)[
0
].
departmentName
const
areaList
=
activeAreaList
.
value
.
map
(
item
=>
{
return
areaOptions
.
value
.
filter
(
val
=>
val
.
id
===
item
)[
0
].
name
}
)
const
memberList
=
[
item
.
left
.
name
,
item
.
right
.
name
]
console
.
log
(
postOrgStr
,
areaList
,
memberList
);
let
param
if
(
areaList
.
length
>
2
)
{
param
=
{
selectedOrg
:
postOrgStr
,
selectedmember
:
JSON
.
stringify
(
memberList
),
selectedAreaList
:
JSON
.
stringify
(
areaList
)
}
}
else
{
param
=
{
selectedOrg
:
postOrgStr
,
selectedmember
:
JSON
.
stringify
(
memberList
),
domains
:
areaList
[
0
]
}
}
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/countryBill"
,
query
:
param
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
...
...
@@ -872,10 +903,10 @@ const handleToDataLibrary = (item) => {
let
congressStr
=
'全部议院'
console
.
log
(
'item'
,
item
);
console
.
log
(
'activeYyList'
,
activeYyList
.
value
);
if
(
activeYyList
.
value
&&
activeYyList
.
value
.
length
===
1
)
{
if
(
activeYyList
.
value
[
0
]
===
'S'
)
{
if
(
activeYyList
.
value
&&
activeYyList
.
value
.
length
===
1
)
{
if
(
activeYyList
.
value
[
0
]
===
'S'
)
{
congressStr
=
'参议院'
}
else
if
(
activeYyList
.
value
[
0
]
===
'H'
)
{
}
else
if
(
activeYyList
.
value
[
0
]
===
'H'
)
{
congressStr
=
'众议院'
}
}
...
...
src/views/bill/billHome/index.vue
浏览文件 @
87899162
...
...
@@ -21,7 +21,7 @@
moreText=
"查看全部委员会"
:moreCardMinCount=
"7"
@
time-click=
"handleCommitteeTimeClick"
@
name-click=
"handleTo
DataLibrary
"
@
name-click=
"handleTo
Institution
"
@
count-click=
"handleToDataLibrary"
@
more-click=
"handleToCommitteeMore"
/>
...
...
@@ -1414,28 +1414,46 @@ const handleResize = () => {
box9ChartInstance
&&
box9ChartInstance
.
resize
();
};
// 下钻至资源库
const
handleToDataLibrary
=
(
item
)
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
id
);
// 跳转行政机构主页
const
handleToInstitution
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
orgName
);
const
curRoute
=
router
.
resolve
({
path
:
"/institution"
,
query
:
{
id
:
item
.
i
d
id
:
item
.
orgI
d
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
// router.push({
// path: "/institution",
// query: {
// id: item.orgId
// }
// })
};
// console.log('item', item);
// const selectParam = {
// selectedOrg: item.name,
// selectedCongress: item.chamber
// 下钻至资源库
const
handleToDataLibrary
=
(
item
)
=>
{
// window.sessionStorage.setItem("curTabName", item.id);
// const curRoute = router.resolve({
// path: "/institution",
// query: {
// id: item.id
// }
// const route = router.resolve({
// path: "/dataLibrary/countryBill",
// query: selectParam
// });
// window.open(route.href, "_blank");
// window.open(curRoute.href, "_blank");
// console.log('item', item);
const
selectParam
=
{
selectedOrg
:
item
.
name
,
selectedCongress
:
item
.
chamber
}
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/countryBill"
,
query
:
selectParam
});
window
.
open
(
route
.
href
,
"_blank"
);
}
...
...
src/views/comprehensiveSearch/chat/index.vue
浏览文件 @
87899162
<
template
>
<div
class=
"wrapper"
>
<div
class=
"header"
>
<div
class=
"header-content"
>
<div
class=
"header-item"
>
首页
</div>
<div
class=
"header-item"
>
>
</div>
<div
class=
"header-item back-item"
@
click=
"handleBackHome"
>
综合检索
</div>
<div
class=
"header-item"
>
>
</div>
<div
class=
"header-item"
>
智能问答
</div>
</div>
</div>
<div
class=
"main"
>
<div
class=
"left"
>
<div
class=
"left-header"
>
...
...
@@ -199,12 +190,6 @@ const areaList = ref([
}
]);
// 返回综合检索
const
handleBackHome
=
()
=>
{
router
.
push
({
path
:
"/comprehensiveSearch"
});
};
const
contentContainer
=
ref
(
null
);
...
...
src/views/dataLibrary/bill/countryBill/index.vue
浏览文件 @
87899162
...
...
@@ -3,7 +3,7 @@
<div
class=
"header-box"
>
<div
class=
"header-top"
>
<SelectBox
:placeholder-name=
"areaPlaceHolder"
select-title=
"科技领域"
:select-list=
"areaList"
:select-name=
"selectedArea"
@
update:select-text=
"handleSelectArea"
/>
:select-name=
"selectedArea"
:is-multiple=
"true"
@
update:select-text=
"handleSelectArea"
/>
<SelectBox
:placeholder-name=
"DatePlaceHolder"
select-title=
"提案时间"
:select-list=
"dateList"
:select-name=
"selectedDate"
:custom-time=
"customTime"
@
update:select-text=
"handleSelectDate"
@
update:custom-time=
"handleCustomDate"
/>
...
...
@@ -13,8 +13,11 @@
:select-list=
"congressList"
:select-name=
"selectedCongress"
@
update:select-text=
"handleSelectCongress"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"orgPlaceHolder"
select-title=
"委员会"
:select-list=
"orgList"
:select-name=
"selectedOrg"
@
update:select-text=
"handleSelectOrg"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"memberPlaceHolder"
select-title=
"提案议员"
:select-list=
"memberList"
:select-name=
"selectedPostMan"
@
update:select-text=
"handleSelectPostMan"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"memberPlaceHolder"
select-title=
"提出议员"
:select-list=
"memberList"
:select-name=
"selectedmember"
@
update:select-text=
"handleSelectMember"
/>
:select-list=
"memberList"
:select-name=
"selectedmember"
:is-multiple=
"true"
@
update:select-text=
"handleSelectMember"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"statusPlaceHolder"
select-title=
"所处阶段"
:select-list=
"statusList"
:select-name=
"selectedStatus"
@
update:select-text=
"handleSelectStauts"
/>
<div
class=
"check-box"
>
...
...
@@ -131,7 +134,7 @@
<
el
-
table
-
column
label
=
"日期"
width
=
"120"
class
-
name
=
"date-column"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
date
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"提
出
人"
width
=
"480"
>
<
el
-
table
-
column
label
=
"提
案
人"
width
=
"480"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"person-item text-compact"
@
click
=
"handlePerClick(scope.row)"
>
{{
scope
.
row
.
sponsorPersonName
}}
<
/span
>
...
...
@@ -337,11 +340,11 @@ const handleChangeTime = value => {
// 激活的标签列表
const
activeTagList
=
computed
(()
=>
{
const
arr
=
[]
if
(
selectedArea
.
value
&&
selectedArea
.
value
!==
'全部领域'
)
{
if
(
selectedArea
.
value
&&
selectedArea
.
value
[
0
]
!==
'全部领域'
)
{
arr
.
push
(
{
tag
:
'科技领域'
,
name
:
selectedArea
.
value
name
:
selectedArea
.
value
.
join
(
'、'
)
}
)
}
...
...
@@ -377,11 +380,11 @@ const activeTagList = computed(() => {
}
)
}
if
(
selectedmember
.
value
&&
selectedmember
.
value
!==
'全部议员'
)
{
if
(
selectedmember
.
value
&&
selectedmember
.
value
[
0
]
!==
'全部议员'
)
{
arr
.
push
(
{
tag
:
'提出议员'
,
name
:
selectedmember
.
value
name
:
selectedmember
.
value
.
join
(
'、'
)
}
)
}
...
...
@@ -411,7 +414,7 @@ const activeTagList = computed(() => {
const
handleCloseCurTag
=
(
tag
,
index
)
=>
{
switch
(
tag
.
tag
)
{
case
'科技领域'
:
selectedArea
.
value
=
'全部领域'
selectedArea
.
value
=
[
'全部领域'
]
break
case
'提案时间'
:
selectedDate
.
value
=
''
...
...
@@ -426,7 +429,7 @@ const handleCloseCurTag = (tag, index) => {
selectedOrg
.
value
=
'全部委员会'
break
case
'提出议员'
:
selectedmember
.
value
=
'全部议员'
selectedmember
.
value
=
[
'全部议员'
]
break
case
'所处阶段'
:
selectedStatus
.
value
=
'全部阶段'
...
...
@@ -511,7 +514,7 @@ const operationList = ref([
// 科技领域
const
areaPlaceHolder
=
ref
(
'请选择领域'
)
const
selectedArea
=
ref
(
'全部领域'
)
const
selectedArea
=
ref
(
[
'全部领域'
]
)
const
areaList
=
ref
([
{
name
:
'全部领域'
,
...
...
@@ -579,7 +582,8 @@ const areaList = ref([
}
,
])
const
handleSelectArea
=
(
value
)
=>
{
selectedArea
.
value
=
value
// selectedArea.value = value
selectedArea
.
value
=
value
.
length
>
1
&&
value
.
includes
(
'全部领域'
)
?
value
.
filter
(
item
=>
item
!==
'全部议员'
)
:
value
;
}
// 提案时间
...
...
@@ -697,12 +701,18 @@ const handleGetOrgList = async () => {
}
}
// 提案议员
const
selectedPostMan
=
ref
(
'全部议员'
)
const
handleSelectPostMan
=
value
=>
{
selectedPostMan
.
value
=
value
}
// 提出议员
const
memberList
=
ref
([])
const
selectedmember
=
ref
(
'全部议员'
)
const
selectedmember
=
ref
(
[
'全部议员'
]
)
const
memberPlaceHolder
=
ref
(
'请选择议员'
)
const
handleSelectMember
=
value
=>
{
selectedmember
.
value
=
value
selectedmember
.
value
=
value
.
length
>
1
&&
value
.
includes
(
'全部议员'
)
?
value
.
filter
(
item
=>
item
!==
'全部议员'
)
:
value
;
}
// 获取议员
...
...
@@ -793,12 +803,12 @@ const handleInvolveCnChange = () => {
// 清空条件
const
handleClear
=
()
=>
{
selectedArea
.
value
=
'全部领域'
selectedArea
.
value
=
[
'全部领域'
]
selectedDate
.
value
=
''
selectedParty
.
value
=
'全部党派'
selectedCongress
.
value
=
'全部议院'
selectedOrg
.
value
=
'全部委员会'
selectedmember
.
value
=
'全部议员'
selectedmember
.
value
=
[
'全部议员'
]
selectedStatus
.
value
=
'全部阶段'
isInvolveCn
.
value
=
false
ElMessage
.
success
(
'已清空条件!'
)
...
...
@@ -861,15 +871,15 @@ const fetchTableData = async () => {
const
params
=
{
page
:
currentPage
.
value
,
size
:
pageSize
.
value
,
keyword
:
''
,
type
:
1
,
// type 1= 法案 2= 政令 3 =智库 4=智库报告 5=实体清单【制裁记录】 6= 人物 7= 机构 8=新闻 9= 社媒
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
]
,
domains
:
selectedArea
.
value
[
0
]
===
'全部领域'
?
null
:
selectedArea
.
value
,
proposedDateStart
:
customTime
.
value
[
0
],
proposedDateEnd
:
customTime
.
value
[
1
],
affiliation
:
selectedParty
.
value
===
'全部党派'
?
null
:
selectedParty
.
value
,
originChamber
:
selectedCongress
.
value
===
'全部议院'
?
null
:
selectedCongress
.
value
,
originDepart
:
selectedOrg
.
value
===
'全部委员会'
?
null
:
selectedOrg
.
value
,
sponsorPersonName
:
selectedmember
.
value
===
'全部议员'
?
null
:
selectedmember
.
value
,
proposer
:
handleSelectPostMan
.
value
===
'全部议员'
?
null
:
selectedPostMan
.
value
,
sponsorPersonName
:
selectedmember
.
value
[
0
]
===
'全部议员'
?
null
:
selectedmember
.
value
,
status
:
selectedStatus
.
value
===
'全部阶段'
?
null
:
selectedStatus
.
value
,
isInvolveCn
:
isInvolveCn
.
value
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
...
...
@@ -961,15 +971,15 @@ const fetchAllData = async () => {
const
params
=
{
page
:
1
,
size
:
9999
,
keyword
:
''
,
type
:
1
,
// type 1= 法案 2= 政令 3 =智库 4=智库报告 5=实体清单【制裁记录】 6= 人物 7= 机构 8=新闻 9= 社媒
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
]
,
domains
:
selectedArea
.
value
[
0
]
===
'全部领域'
?
null
:
selectedArea
.
value
,
proposedDateStart
:
customTime
.
value
[
0
],
proposedDateEnd
:
customTime
.
value
[
1
],
affiliation
:
selectedParty
.
value
===
'全部党派'
?
null
:
selectedParty
.
value
,
originChamber
:
selectedCongress
.
value
===
'全部议院'
?
null
:
selectedCongress
.
value
,
originDepart
:
selectedOrg
.
value
===
'全部委员会'
?
null
:
selectedOrg
.
value
,
sponsorPersonName
:
selectedmember
.
value
===
'全部议员'
?
null
:
selectedmember
.
value
,
proposer
:
handleSelectPostMan
.
value
===
'全部议员'
?
null
:
selectedPostMan
.
value
,
sponsorPersonName
:
selectedmember
.
value
[
0
]
===
'全部议员'
?
null
:
selectedmember
.
value
,
status
:
selectedStatus
.
value
===
'全部阶段'
?
null
:
selectedStatus
.
value
,
isInvolveCn
:
isInvolveCn
.
value
?
'Y'
:
'N'
,
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
...
...
@@ -1122,7 +1132,12 @@ const handleDownloadCurChartData = () => {
const
initParam
=
()
=>
{
const
hasQuery
=
Object
.
keys
(
route
.
query
).
length
>
0
;
if
(
hasQuery
)
{
selectedArea
.
value
=
route
.
query
.
domains
?
route
.
query
.
domains
:
'全部领域'
if
(
route
.
query
.
selectedAreaList
)
{
selectedArea
.
value
=
JSON
.
parse
(
route
.
query
.
selectedAreaList
)
}
else
{
selectedArea
.
value
=
route
.
query
.
domains
?
[
route
.
query
.
domains
]
:
[
'全部领域'
]
}
if
(
route
.
query
.
selectedDate
&&
Array
.
isArray
(
JSON
.
parse
(
route
.
query
.
selectedDate
))
&&
JSON
.
parse
(
route
.
query
.
selectedDate
).
length
)
{
selectedDate
.
value
=
'自定义'
...
...
@@ -1139,6 +1154,7 @@ const initParam = () => {
selectedCongress
.
value
=
route
.
query
.
selectedCongress
?
route
.
query
.
selectedCongress
:
'全部议院'
selectedOrg
.
value
=
route
.
query
.
selectedOrg
?
route
.
query
.
selectedOrg
:
'全部委员会'
selectedmember
.
value
=
route
.
query
.
selectedmember
?
JSON
.
parse
(
route
.
query
.
selectedmember
)
:
[
'全部议员'
]
const
query
=
route
.
query
;
if
(
Object
.
keys
(
query
).
length
>
0
)
{
...
...
@@ -1146,7 +1162,12 @@ const initParam = () => {
}
}
else
{
const
savedQuery
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'countryRouteQuery'
)
||
'{
}
'
);
selectedArea
.
value
=
savedQuery
.
domains
?
savedQuery
.
domains
:
'全部领域'
if
(
savedQuery
.
selectedAreaList
)
{
selectedArea
.
value
=
JSON
.
parse
(
savedQuery
.
selectedAreaList
)
}
else
{
selectedArea
.
value
=
savedQuery
.
domains
?
[
savedQuery
.
domains
]
:
[
'全部领域'
]
}
if
(
savedQuery
.
selectedDate
&&
Array
.
isArray
(
JSON
.
parse
(
savedQuery
.
selectedDate
))
&&
JSON
.
parse
(
savedQuery
.
selectedDate
).
length
)
{
selectedDate
.
value
=
'自定义'
customTime
.
value
=
JSON
.
parse
(
savedQuery
.
selectedDate
)
...
...
@@ -1160,6 +1181,7 @@ const initParam = () => {
selectedCongress
.
value
=
savedQuery
.
selectedCongress
?
savedQuery
.
selectedCongress
:
'全部议院'
selectedOrg
.
value
=
savedQuery
.
selectedOrg
?
savedQuery
.
selectedOrg
:
'全部委员会'
selectedmember
.
value
=
savedQuery
.
selectedmember
?
savedQuery
.
selectedmember
:
[
'全部议员'
]
}
}
...
...
src/views/dataLibrary/components/SelectBox/index.vue
浏览文件 @
87899162
...
...
@@ -2,7 +2,7 @@
<div
class=
"select-wrapper"
:class=
"
{ 'select-wrapper-custom': selectValue === '自定义' }">
<div
class=
"select-left text-tip-1"
>
{{
selectTitle
+
':'
}}
</div>
<div
class=
"select-right"
:class=
"
{ 'select-right-custom': selectValue === '自定义' }">
<el-select
v-model=
"selectValue"
:placeholder=
"placeholderName"
filterable
style=
"width: 240px"
>
<el-select
v-model=
"selectValue"
:placeholder=
"placeholderName"
filterable
:multiple=
"isMultiple"
style=
"width: 240px"
>
<!--
<el-option
label=
"全部领域"
value=
"全部领域"
/>
-->
<el-option
v-for=
"item in selectList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
...
...
@@ -37,6 +37,10 @@ const props = defineProps({
customTime
:
{
type
:
String
,
default
:
''
},
isMultiple
:
{
type
:
Boolean
,
default
:
false
}
})
...
...
@@ -58,7 +62,7 @@ const customTimeValue = computed({
<
style
lang=
"scss"
scoped
>
.select-wrapper
{
width
:
348px
;
height
:
28px
;
min-
height
:
28px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
...
...
src/views/dataLibrary/exportControl/entityList/index.vue
浏览文件 @
87899162
...
...
@@ -721,12 +721,12 @@ const handleSelectEntityType = value => {
const
handleGetEntityTypes
=
async
()
=>
{
try
{
const
res
=
await
getEntityTypes
()
console
.
log
(
'获取实体类型列表'
);
console
.
log
(
'获取实体类型列表'
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
entityTypeList
.
value
=
res
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
id
:
item
.
code
id
:
item
.
id
}
}
)
}
...
...
@@ -814,7 +814,6 @@ const fetchTableData = async () => {
provinceName
:
selectedProvince
.
value
===
'全部省份'
?
null
:
selectedProvince
.
value
,
// 实体省份
entityTypeCode
:
selectedEntityType
.
value
===
'全部实体类型'
?
null
:
selectedEntityType
.
value
,
// 实体类别
ratio
:
isHalfRule
.
value
?
'Y'
:
null
,
// 50%规则
isInvolveCn
:
isCnEntityOnly
.
value
?
'Y'
:
null
,
// 是否只看中国实体
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -905,7 +904,6 @@ const fetchAllData = async () => {
provinceName
:
selectedProvince
.
value
===
'全部省份'
?
null
:
selectedProvince
.
value
,
// 实体省份
entityTypeCode
:
selectedEntityType
.
value
===
'全部实体类型'
?
null
:
selectedEntityType
.
value
,
// 实体类别
ratio
:
isHalfRule
.
value
?
'Y'
:
null
,
// 50%规则
isInvolveCn
:
isCnEntityOnly
.
value
?
'Y'
:
null
,
// 是否只看中国实体
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -1064,11 +1062,16 @@ const initParam = () => {
}
selectedProvince
.
value
=
route
.
query
.
selectedProvince
?
provinceList
.
value
.
filter
(
item
=>
item
.
name
.
indexOf
(
route
.
query
.
selectedProvince
)
>
-
1
)[
0
].
name
:
'全部省份'
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
isHalfRule
.
value
=
route
.
query
.
isHalfRule
?
true
:
false
isHalfRule
.
value
=
route
.
query
.
isHalfRule
===
'true'
?
true
:
false
isCnEntityOnly
.
value
=
route
.
query
.
isCnEntityOnly
?
true
:
false
if
(
isCnEntityOnly
.
value
)
{
selectedCountry
.
value
=
'0101'
}
else
{
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
}
selectedEntityType
.
value
=
route
.
query
.
selectedEntityType
?
entityTypeList
.
value
.
filter
(
item
=>
item
.
name
===
route
.
query
.
selectedEntityType
)[
0
].
id
:
'全部实体类型'
...
...
@@ -1083,17 +1086,32 @@ const initParam = () => {
selectedDate
.
value
=
'自定义'
customTime
.
value
=
JSON
.
parse
(
savedQuery
.
selectedDate
)
}
isHalfRule
.
value
=
savedQuery
.
isHalfRule
?
true
:
false
isHalfRule
.
value
=
savedQuery
.
isHalfRule
===
'true'
?
true
:
false
selectedProvince
.
value
=
savedQuery
.
selectedProvince
?
provinceList
.
value
.
filter
(
item
=>
item
.
name
.
indexOf
(
savedQuery
.
selectedProvince
)
>
-
1
)[
0
].
name
:
'全部省份'
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
isCnEntityOnly
.
value
=
savedQuery
.
isCnEntityOnly
?
true
:
false
if
(
isCnEntityOnly
.
value
)
{
selectedCountry
.
value
=
'0101'
}
else
{
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
}
selectedEntityType
.
value
=
savedQuery
.
selectedEntityType
?
entityTypeList
.
value
.
filter
(
item
=>
item
.
name
===
savedQuery
.
selectedEntityType
)[
0
].
id
:
'全部实体类型'
}
}
watch
(
()
=>
isCnEntityOnly
.
value
,
val
=>
{
if
(
val
)
{
selectedCountry
.
value
=
'0101'
}
else
{
selectedCountry
.
value
=
'全部国家'
}
}
)
// 跳转机构详情
const
handleClickToDetail
=
(
curEntity
)
=>
{
console
.
log
(
'curEntity'
,
curEntity
);
...
...
src/views/dataLibrary/financeControl/mREList/index.vue
浏览文件 @
87899162
...
...
@@ -7,33 +7,13 @@
<SelectBox
:placeholder-name=
"DatePlaceHolder"
select-title=
"制裁时间"
:select-list=
"dateList"
:select-name=
"selectedDate"
:custom-time=
"customTime"
@
update:select-text=
"handleSelectDate"
@
update:custom-time=
"handleCustomDate"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"countryPlaceHolder"
select-title=
"国家地区"
:select-list=
"countryList"
:select-name=
"selectedCountry"
@
update:select-text=
"handleSelectCountry"
/>
<SelectBox
v-if=
"isShowProvinceBox"
:placeholder-name=
"provincePlaceHolder"
select-title=
"实体省份"
:select-list=
"provinceList"
:select-name=
"selectedProvince"
@
update:select-text=
"handleSelectProvince"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"entityTypePlaceHolder"
select-title=
"实体类型"
:select-list=
"entityTypeList"
:select-name=
"selectedEntityType"
@
update:select-text=
"handleSelectEntityType"
/>
<div
class=
"check-box"
>
<div
class=
"check-box-left text-tip-1"
>
{{
'50%规则:'
}}
</div>
<div
class=
"check-box-right"
>
<el-checkbox
v-model=
"isHalfRule"
class=
"involve-checkbox"
>
{{
'只看50%规则'
}}
</el-checkbox>
</div>
</div>
<div
class=
"check-box"
>
<div
class=
"check-box-left text-tip-1"
>
{{
'中国实体:'
}}
</div>
<div
class=
"check-box-right"
>
<el-checkbox
v-model=
"isCnEntityOnly"
class=
"involve-checkbox"
>
{{
'只看中国实体'
}}
</el-checkbox>
</div>
</div>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"typePlaceHolder"
select-title=
"物项类别"
:select-list=
"typeList"
:select-name=
"selectedType"
@
update:select-text=
"handleSelectType"
/>
<SelectBox
v-if=
"isFolderAll"
:placeholder-name=
"controlReasonPlaceHolder"
select-title=
"管控原因"
:select-list=
"controlReasonList"
:select-name=
"selectedControlReason"
@
update:select-text=
"handleSelectControlReason"
/>
<InputBox
input-title=
"物项名称"
:input-name=
"categoryName"
@
update:input-text=
"handleInputCategoryName"
placeholder-name=
"请输入物项名称"
/>
</div>
<div
class=
"header-footer"
>
<div
class=
"header-footer-left"
>
...
...
@@ -130,7 +110,7 @@
<
el
-
table
ref
=
"tableRef"
:
data
=
"tableData"
row
-
key
=
"id"
@
selection
-
change
=
"handleSelectionChange"
@
select
=
"handleSelect"
@
select
-
all
=
"handleSelectAll"
style
=
"width: 100%"
:
row
-
style
=
"{ height: '52px'
}
"
>
<
el
-
table
-
column
type
=
"selection"
width
=
"40"
/>
<
el
-
table
-
column
label
=
"
实体名称"
width
=
"620
"
>
<
el
-
table
-
column
label
=
"
物项名称
"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"title-item text-compact-bold"
@
click
=
"handleClickToDetail(scope.row)"
>
{{
scope
.
row
.
originalTitle
...
...
@@ -140,22 +120,15 @@
<
el
-
table
-
column
label
=
"制裁时间"
width
=
"120"
class
-
name
=
"date-column"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
date
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"上市地点"
>
<
template
#
default
=
"scope"
>
<
span
class
=
"person-item text-compact"
@
click
=
"handleOrgClick(scope.row)"
>
{{
scope
.
row
.
organizationName
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"涉及领域"
width
=
"500"
class
-
name
=
"date-column"
>
<
template
#
default
=
"scope"
>
<
div
class
=
"tag-box"
>
<
AreaTag
v
-
for
=
"tag, index in scope.row.domains"
:
key
=
"index"
:
tagName
=
"tag"
/>
<
/div
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
实体类型"
width
=
"10
0"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
typeStr
}}
<
/template
>
<
el
-
table
-
column
label
=
"
物项类别"
width
=
"18
0"
>
<
template
#
default
=
"scope"
>
{{
scope
.
row
.
materialCategory
}}
<
/template
>
<
/el-table-column
>
<
/el-table
>
<
/div
>
...
...
@@ -179,6 +152,7 @@ import PieChart from '../../components/PieChart/index.vue'
import
BarChart
from
'../../components/BarChart/index.vue'
import
RaderChart
from
'../../components/RadarChart/idnex.vue'
import
SelectBox
from
'../../components/SelectBox/index.vue'
import
InputBox
from
'../../components/InputBox/index.vue'
import
DataChartSwitchBox
from
'../../components/dataChartSwitchBox/index.vue'
import
{
useRoute
}
from
"vue-router"
;
import
router
from
'@/router'
...
...
@@ -186,18 +160,10 @@ import router from '@/router'
import
{
search
}
from
'@/api/comprehensiveSearch'
import
{
ElMessage
}
from
'element-plus'
import
getDateRange
from
'@/utils/getDateRange'
import
{
get
ProvinceList
,
getCountryList
,
getEntityTypes
}
from
'@/api/comprehensiveSearch/index'
import
{
get
MaterialCategory
,
getControlReason
}
from
'@/api/comprehensiveSearch/index'
const
route
=
useRoute
();
const
isShowProvinceBox
=
computed
(()
=>
{
let
isShow
=
false
if
(
isFolderAll
.
value
&&
(
selectedCountry
.
value
===
'0101'
||
selectedCountry
.
value
===
'全部国家'
))
{
isShow
=
true
}
return
isShow
}
)
// 图表/数据
const
isShowChart
=
ref
(
false
)
// 点击切换数据/图表
...
...
@@ -233,7 +199,7 @@ const staticsDemensionList = ref([
name
:
'制裁时间'
,
active
:
true
,
chartTypeList
:
[
'折线图'
,
'柱状图'
],
chartTitle
:
'
实体
清单制裁时间变化趋势'
,
chartTitle
:
'
商业管制
清单制裁时间变化趋势'
,
data
:
{
dataX
:
[],
dataY
:
[]
...
...
@@ -251,30 +217,17 @@ const staticsDemensionList = ref([
name
:
'科技领域'
,
active
:
false
,
chartTypeList
:
[
'饼状图'
],
chartTitle
:
'实体清单科技领域分布'
,
data
:
[]
}
,
{
name
:
'实体类型'
,
active
:
false
,
chartTypeList
:
[
'饼状图'
],
chartTitle
:
'实体类型分布'
,
chartTitle
:
'商业管制清单科技领域分布'
,
data
:
[]
}
,
{
name
:
'
实体国家地区
'
,
name
:
'
物项类别
'
,
active
:
false
,
chartTypeList
:
[
'饼状图'
],
chartTitle
:
'实体国家地区分布'
,
data
:
[]
}
,
{
name
:
'实体省份'
,
active
:
false
,
chartTypeList
:
[
'饼状图'
],
chartTitle
:
'实体省份分布'
,
chartTitle
:
'商业管制清单物项类别分布'
,
data
:
[]
}
])
// 当前维度下的图表列表
...
...
@@ -370,60 +323,38 @@ const activeTagList = computed(() => {
}
)
}
if
(
selected
Country
.
value
&&
selectedCountry
.
value
!==
'全部国家
'
)
{
const
countryArr
=
countryList
.
value
.
filter
(
item
=>
item
.
id
===
selectedCountry
.
value
)
let
countryStr
=
'全部
国家
'
if
(
selected
Type
.
value
&&
selectedType
.
value
!==
'全部类别
'
)
{
const
countryArr
=
typeList
.
value
.
filter
(
item
=>
item
.
id
===
selectedType
.
value
)
let
countryStr
=
'全部
类别
'
if
(
countryArr
&&
countryArr
.
length
)
{
countryStr
=
countryArr
[
0
].
name
}
arr
.
push
(
{
tag
:
'
实体国家地区
'
,
tag
:
'
物项类别
'
,
name
:
countryStr
}
)
}
if
(
selectedProvince
.
value
&&
selectedProvince
.
value
!==
'全部省份'
&&
(
selectedCountry
.
value
===
'0101'
||
selectedCountry
.
value
===
'全部国家'
))
{
arr
.
push
(
{
tag
:
'实体省份'
,
name
:
selectedProvince
.
value
}
)
}
if
(
selectedEntityType
.
value
&&
selectedEntityType
.
value
!==
'全部实体类型'
)
{
const
entityTypeArr
=
entityTypeList
.
value
.
filter
(
item
=>
item
.
id
===
selectedEntityType
.
value
)
let
entityTypeStr
=
'全部类型'
if
(
entityTypeArr
&&
entityTypeArr
.
length
)
{
entityTypeStr
=
entityTypeArr
[
0
].
name
}
if
(
selectedControlReason
.
value
&&
selectedControlReason
.
value
!==
'全部管控原因'
)
{
arr
.
push
(
{
tag
:
'
实体类型
'
,
name
:
entityTypeStr
tag
:
'
管控原因
'
,
name
:
selectedControlReason
.
value
}
)
}
if
(
isHalfRule
.
value
)
{
const
halfRuleStr
=
'50%规则'
if
(
categoryName
.
value
)
{
arr
.
push
(
{
tag
:
'
50%规则
'
,
name
:
halfRuleStr
tag
:
'
物项名称
'
,
name
:
categoryName
.
value
}
)
}
if
(
isCnEntityOnly
.
value
)
{
const
involveStr
=
'只看中国实体'
arr
.
push
(
{
tag
:
'只看中国实体'
,
name
:
involveStr
}
)
}
return
arr
...
...
@@ -439,21 +370,16 @@ const handleCloseCurTag = (tag, index) => {
selectedDate
.
value
=
''
customTime
.
value
=
[]
break
case
'实体国家地区'
:
selectedCountry
.
value
=
'全部国家'
break
case
'实体省份'
:
selectedProvince
.
value
=
'全部省份'
break
case
'实体类型'
:
selectedEntityType
.
value
=
'全部实体类型'
case
'物项类别'
:
selectedType
.
value
=
'全部类别'
break
case
'
50%规则
'
:
isHalfRule
.
value
=
false
case
'
管控原因
'
:
selectedControlReason
.
value
=
'全部管控原因'
break
case
'
只看中国实体
'
:
isCnEntityOnly
.
value
=
false
case
'
物项名称
'
:
categoryName
.
value
=
''
break
}
}
...
...
@@ -463,71 +389,13 @@ const activeChart = ref('') // 当前激活的图表
const
handleSwitchActiveChart
=
val
=>
{
activeChart
.
value
=
val
.
name
}
// 雷达图数据
const
radarChartData
=
ref
({
title
:
[
{
name
:
'航空航天'
,
max
:
10
}
,
{
name
:
'先进制造'
,
max
:
10
}
,
{
name
:
'量子科技'
,
max
:
10
}
,
{
name
:
'人工智能'
,
max
:
10
}
,
{
name
:
'新材料'
,
max
:
10
}
,
{
name
:
'集成电路'
,
max
:
10
}
,
],
data
:
[
{
name
:
"337调查"
,
value
:
[
10
,
5
,
2
,
8
,
5
,
7
]
}
,
{
name
:
"232调查"
,
value
:
[
2
,
5
,
3
,
8
,
10
,
2
]
}
,
{
name
:
"301调查"
,
value
:
[
5
,
8
,
2
,
9
,
1
,
5
]
}
]
}
)
// 数据- 是否全选
const
isSelectedAll
=
ref
(
false
)
// 批量操作-当前操作
const
curOperation
=
ref
(
''
)
const
operationList
=
ref
([
{
name
:
'aaa'
,
id
:
'aaa'
}
,
{
name
:
'bbb'
,
id
:
'bbb'
}
,
{
name
:
'ccc'
,
id
:
'ccc'
}
,
])
// 科技领域
...
...
@@ -639,28 +507,28 @@ const handleSelectDate = (value) => {
}
}
//
实体国家地区
const
country
List
=
ref
([
//
物项类别
const
type
List
=
ref
([
{
name
:
'全部
国家
'
,
id
:
'全部
国家
'
name
:
'全部
类别
'
,
id
:
'全部
类别
'
}
,
])
const
selected
Country
=
ref
(
'全部国家
'
)
const
countryPlaceHolder
=
ref
(
'请选择实体国家
'
)
const
handleSelect
Country
=
value
=>
{
selected
Country
.
value
=
value
const
selected
Type
=
ref
(
'全部类别
'
)
const
typePlaceHolder
=
ref
(
'请选择物项类别
'
)
const
handleSelect
Type
=
value
=>
{
selected
Type
.
value
=
value
}
// 获取国家地区列表
const
handleGet
CountryList
=
async
()
=>
{
const
handleGet
MaterialCategory
=
async
()
=>
{
try
{
const
res
=
await
get
CountryList
()
console
.
log
(
'获取
国家列表
'
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
countryList
.
value
=
res
.
data
.
map
(
item
=>
{
const
res
=
await
get
MaterialCategory
()
console
.
log
(
'获取
物项类别
'
,
res
);
if
(
res
&&
res
.
length
)
{
typeList
.
value
=
res
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
id
:
item
.
id
name
:
item
,
id
:
item
}
}
)
}
...
...
@@ -670,86 +538,50 @@ const handleGetCountryList = async () => {
}
//
实体省份(仅支持中国省份)
const
province
List
=
ref
([
//
管控原因
const
controlReason
List
=
ref
([
{
name
:
'全部
省份
'
,
id
:
'全部
省份
'
,
name
:
'全部
管控原因
'
,
id
:
'全部
管控原因
'
,
}
])
const
selected
Province
=
ref
(
'全部省份
'
)
const
provincePlaceHolder
=
ref
(
'请选择发布机构
'
)
const
handleSelect
Province
=
value
=>
{
selected
Province
.
value
=
value
const
selected
ControlReason
=
ref
(
'全部管控原因
'
)
const
controlReasonPlaceHolder
=
ref
(
'请选择管控原因
'
)
const
handleSelect
ControlReason
=
value
=>
{
selected
ControlReason
.
value
=
value
}
// 获取
全部省份
列表
const
handleGet
ProvinceList
=
async
()
=>
{
// 获取
管控原因
列表
const
handleGet
ControlReason
=
async
()
=>
{
try
{
const
res
=
await
get
ProvinceList
()
console
.
log
(
'获取
省份列表
'
,
res
);
const
res
=
await
get
ControlReason
()
console
.
log
(
'获取
管控原因
'
,
res
);
if
(
res
&&
res
.
length
)
{
province
List
.
value
=
res
.
map
(
item
=>
{
controlReason
List
.
value
=
res
.
map
(
item
=>
{
return
{
name
:
item
,
id
:
item
}
}
)
}
}
catch
(
error
)
{
console
.
error
(
error
);
}
finally
{
}
}
// 实体类型列表
const
entityTypeList
=
ref
([
{
name
:
'全部实体类型'
,
id
:
'全部实体类型'
}
])
const
selectedEntityType
=
ref
(
'全部实体类型'
)
const
entityTypePlaceHolder
=
ref
(
'请选择实体类型'
)
const
handleSelectEntityType
=
value
=>
{
selectedEntityType
.
value
=
value
}
// 获取实体类型列表
const
handleGetEntityTypes
=
async
()
=>
{
try
{
const
res
=
await
getEntityTypes
()
console
.
log
(
'获取实体类型列表'
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
entityTypeList
.
value
=
res
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
id
:
item
.
code
}
}
)
}
}
catch
(
error
)
{
}
// 物项名称
const
categoryName
=
ref
(
''
)
const
handleInputCategoryName
=
value
=>
{
categoryName
.
value
=
value
}
// 是否50%规则
const
isHalfRule
=
ref
(
false
)
// 是否只看中国实体
const
isCnEntityOnly
=
ref
(
false
)
// 清空条件
const
handleClear
=
()
=>
{
selectedArea
.
value
=
'全部领域'
selectedDate
.
value
=
''
customTime
.
value
=
[]
selectedCountry
.
value
=
'全部国家'
selectedProvince
.
value
=
'全部省份'
selectedEntityType
.
value
=
'全部实体类型'
isHalfRule
.
value
=
false
isCnEntityOnly
.
value
=
false
selectedType
.
value
=
'全部类别'
selectedControlReason
.
value
=
'全部管控原因'
categoryName
.
value
=
''
ElMessage
.
success
(
'已清空条件!'
)
}
...
...
@@ -804,16 +636,13 @@ const fetchTableData = async () => {
const
params
=
{
page
:
currentPage
.
value
,
size
:
pageSize
.
value
,
// keyword: '',
type
:
10
,
// 实体清单
type
:
13
,
// 商业管制清单
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
],
// 科技领域
proposedDateStart
:
customTime
.
value
[
0
]
?
customTime
.
value
[
0
]
:
null
,
proposedDateEnd
:
customTime
.
value
[
1
]
?
customTime
.
value
[
1
]
:
null
,
countryId
:
selectedCountry
.
value
===
'全部国家'
?
null
:
selectedCountry
.
value
,
// 国家地区
provinceName
:
selectedProvince
.
value
===
'全部省份'
?
null
:
selectedProvince
.
value
,
// 实体省份
entityTypeCode
:
selectedEntityType
.
value
===
'全部实体类型'
?
null
:
selectedEntityType
.
value
,
// 实体类别
ratio
:
isHalfRule
.
value
?
'Y'
:
null
,
// 50%规则
isInvolveCn
:
isCnEntityOnly
.
value
?
'Y'
:
null
,
// 是否只看中国实体
materialCategory
:
selectedType
.
value
===
'全部类别'
?
null
:
selectedType
.
value
,
// 物项类别
controlReason
:
selectedControlReason
.
value
===
'全部管控原因'
?
null
:
selectedControlReason
.
value
,
// 管控原因
materialNameZh
:
categoryName
.
value
?
categoryName
.
value
:
null
,
// 物项名称
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -838,19 +667,12 @@ const fetchTableData = async () => {
name
:
key
,
value
:
Number
(
value
)
}
))
staticsDemensionList
.
value
[
2
].
data
=
Object
.
entries
(
res
.
data
.
aggregationSentityTypeCode
).
map
(([
key
,
value
])
=>
({
name
:
key
,
value
:
Number
(
value
)
}
))
staticsDemensionList
.
value
[
3
].
data
=
Object
.
entries
(
res
.
data
.
aggregationCountryId
).
map
(([
key
,
value
])
=>
({
name
:
key
,
value
:
Number
(
value
)
}
))
staticsDemensionList
.
value
[
4
].
data
=
Object
.
entries
(
res
.
data
.
aggregationProvinceName
).
map
(([
key
,
value
])
=>
({
staticsDemensionList
.
value
[
2
].
data
=
Object
.
entries
(
res
.
data
.
aggregationMaterialCategory
).
map
(([
key
,
value
])
=>
({
name
:
key
,
value
:
Number
(
value
)
}
))
}
const
curDemensionItem
=
staticsDemensionList
.
value
.
filter
(
item
=>
{
...
...
@@ -861,7 +683,17 @@ const fetchTableData = async () => {
setTimeout
(()
=>
{
activeChart
.
value
=
curDemensionItem
.
chartTypeList
[
0
]
if
(
curDemension
.
value
===
'制裁时间'
)
{
if
(
selectedTime
.
value
===
'按月度统计'
)
{
curChartData
.
value
=
curDemensionItem
.
data
}
else
if
(
selectedTime
.
value
===
'按季度统计'
)
{
curChartData
.
value
=
curDemensionItem
.
quatarData
}
else
{
curChartData
.
value
=
curDemensionItem
.
yearData
}
}
else
{
curChartData
.
value
=
curDemensionItem
.
data
}
}
)
loading
.
value
=
false
}
catch
(
error
)
{
...
...
@@ -886,15 +718,13 @@ const fetchAllData = async () => {
const
params
=
{
page
:
1
,
size
:
9999
,
type
:
1
0
,
// 实体
清单
type
:
1
3
,
// 商业管制
清单
domains
:
selectedArea
.
value
===
'全部领域'
?
null
:
[
selectedArea
.
value
],
// 科技领域
proposedDateStart
:
customTime
.
value
[
0
]
?
customTime
.
value
[
0
]
:
null
,
proposedDateEnd
:
customTime
.
value
[
1
]
?
customTime
.
value
[
1
]
:
null
,
countryId
:
selectedCountry
.
value
===
'全部国家'
?
null
:
selectedCountry
.
value
,
// 国家地区
provinceName
:
selectedProvince
.
value
===
'全部省份'
?
null
:
selectedProvince
.
value
,
// 实体省份
entityTypeCode
:
selectedEntityType
.
value
===
'全部实体类型'
?
null
:
selectedEntityType
.
value
,
// 实体类别
ratio
:
isHalfRule
.
value
?
'Y'
:
null
,
// 50%规则
isInvolveCn
:
isCnEntityOnly
.
value
?
'Y'
:
null
,
// 是否只看中国实体
materialCategory
:
selectedType
.
value
===
'全部类别'
?
null
:
selectedType
.
value
,
// 物项类别
controlReason
:
selectedControlReason
.
value
===
'全部管控原因'
?
null
:
selectedControlReason
.
value
,
// 管控原因
materialNameZh
:
categoryName
.
value
?
categoryName
.
value
:
null
,
// 物项名称
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -1052,47 +882,36 @@ const initParam = () => {
customTime
.
value
=
JSON
.
parse
(
route
.
query
.
selectedDate
)
}
selectedProvince
.
value
=
route
.
query
.
selectedProvince
?
provinceList
.
value
.
filter
(
item
=>
item
.
name
.
indexOf
(
route
.
query
.
selectedProvince
)
>
-
1
)[
0
].
name
:
'全部省份'
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
isHalfRule
.
value
=
route
.
query
.
isHalfRule
?
true
:
false
selectedType
.
value
=
route
.
query
.
orgnizationName
?
route
.
query
.
orgnizationName
:
'全部类别'
isCnEntityOnly
.
value
=
route
.
query
.
isCnEntityOnly
?
true
:
false
selectedEntityType
.
value
=
route
.
query
.
selectedEntityType
?
entityTypeList
.
value
.
filter
(
item
=>
item
.
name
===
route
.
query
.
selectedEntityType
)[
0
].
id
:
'全部实体类型'
const
query
=
route
.
query
;
if
(
Object
.
keys
(
query
).
length
>
0
)
{
sessionStorage
.
setItem
(
'
entity
RouteQuery'
,
JSON
.
stringify
(
query
));
sessionStorage
.
setItem
(
'
commerce
RouteQuery'
,
JSON
.
stringify
(
query
));
}
}
else
{
const
savedQuery
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'
entity
RouteQuery'
)
||
'{
}
'
);
const
savedQuery
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'
commerce
RouteQuery'
)
||
'{
}
'
);
selectedArea
.
value
=
savedQuery
.
domains
?
savedQuery
.
domains
:
'全部领域'
if
(
savedQuery
.
selectedDate
&&
Array
.
isArray
(
JSON
.
parse
(
savedQuery
.
selectedDate
))
&&
JSON
.
parse
(
savedQuery
.
selectedDate
).
length
)
{
selectedDate
.
value
=
'自定义'
customTime
.
value
=
JSON
.
parse
(
savedQuery
.
selectedDate
)
}
isHalfRule
.
value
=
savedQuery
.
isHalfRule
?
true
:
false
selectedProvince
.
value
=
savedQuery
.
selectedProvince
?
provinceList
.
value
.
filter
(
item
=>
item
.
name
.
indexOf
(
savedQuery
.
selectedProvince
)
>
-
1
)[
0
].
name
:
'全部省份'
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
isCnEntityOnly
.
value
=
savedQuery
.
isCnEntityOnly
?
true
:
false
selectedEntityType
.
value
=
savedQuery
.
selectedEntityType
?
entityTypeList
.
value
.
filter
(
item
=>
item
.
name
===
savedQuery
.
selectedEntityType
)[
0
].
id
:
'全部实体类型'
}
}
// 跳转
机构
详情
const
handleClickToDetail
=
(
cur
Entity
)
=>
{
console
.
log
(
'cur
Entity'
,
curEntity
);
// 跳转
政令
详情
const
handleClickToDetail
=
(
cur
Decree
)
=>
{
console
.
log
(
'cur
Decree'
,
curDecree
);
window
.
sessionStorage
.
setItem
(
"decreeId"
,
cur
Entity
.
id
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
cur
Entity
.
title
);
window
.
sessionStorage
.
setItem
(
"decreeId"
,
cur
Decree
.
id
);
window
.
sessionStorage
.
setItem
(
"curTabName"
,
cur
Decree
.
title
);
const
route
=
router
.
resolve
({
name
:
"companyPages
"
,
params
:
{
id
:
curEntity
.
id
path
:
"/decreeLayout
"
,
query
:
{
id
:
curDecree
.
id
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
...
...
@@ -1133,9 +952,9 @@ const handleExport = () => {
}
;
onMounted
(
async
()
=>
{
await
handleGetProvinceList
()
// 获取省份列表
await
handleGetCountryList
()
// 获取国家列表
await
handleGetEntityTypes
()
// 获取实体类型列表
handleGetMaterialCategory
()
// 获取物项类别列表
handleGetControlReason
()
// 获取管控原因
initParam
()
// 初始化
await
fetchTableData
()
...
...
@@ -1207,9 +1026,17 @@ onMounted(async () => {
}
.
chart
-
main
-
box
{
width
:
1568
px
;
height
:
809
px
;
margin
:
0
auto
;
background
:
rgba
(
255
,
255
,
255
);
border
:
1
px
solid
var
(
--
bg
-
black
-
5
);
border
-
radius
:
10
px
;
.
info
-
box
{
margin
:
0
auto
;
width
:
1568
px
;
margin
-
top
:
16
px
;
width
:
1520
px
;
height
:
30
px
;
display
:
flex
;
justify
-
content
:
space
-
between
;
...
...
@@ -1219,6 +1046,11 @@ onMounted(async () => {
height
:
28
px
;
border
:
none
;
cursor
:
pointer
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
.
num
-
box
{
...
...
@@ -1229,14 +1061,13 @@ onMounted(async () => {
.
content
-
box
{
margin
:
0
auto
;
margin
-
top
:
16
px
;
width
:
1568
px
;
height
:
766
px
;
border
-
radius
:
10
px
;
background
:
rgba
(
255
,
255
,
255
);
border
:
1
px
solid
var
(
--
bg
-
black
-
5
);
width
:
1520
px
;
height
:
726
px
;
border
:
none
;
.
content
-
header
{
margin
:
16
px
24
px
;
margin
:
16
px
0
;
width
:
1520
px
;
height
:
28
px
;
}
...
...
@@ -1269,6 +1100,11 @@ onMounted(async () => {
height
:
28
px
;
border
:
none
;
cursor
:
pointer
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
.
num
-
box
{
...
...
src/views/dataLibrary/financeControl/sDNList/index.vue
浏览文件 @
87899162
...
...
@@ -180,6 +180,7 @@ import BarChart from '../../components/BarChart/index.vue'
import
RaderChart
from
'../../components/RadarChart/idnex.vue'
import
SelectBox
from
'../../components/SelectBox/index.vue'
import
DataChartSwitchBox
from
'../../components/dataChartSwitchBox/index.vue'
import
{
useRoute
}
from
"vue-router"
;
import
router
from
'@/router'
...
...
@@ -813,7 +814,7 @@ const fetchTableData = async () => {
provinceName
:
selectedProvince
.
value
===
'全部省份'
?
null
:
selectedProvince
.
value
,
// 实体省份
entityTypeCode
:
selectedEntityType
.
value
===
'全部实体类型'
?
null
:
selectedEntityType
.
value
,
// 实体类别
ratio
:
isHalfRule
.
value
?
'Y'
:
null
,
// 50%规则
isInvolveCn
:
isCnEntityOnly
.
value
?
'Y'
:
null
,
// 是否只看中国实体
//
isInvolveCn: isCnEntityOnly.value ? 'Y' : null, // 是否只看中国实体
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -861,7 +862,17 @@ const fetchTableData = async () => {
setTimeout
(()
=>
{
activeChart
.
value
=
curDemensionItem
.
chartTypeList
[
0
]
if
(
curDemension
.
value
===
'制裁时间'
)
{
if
(
selectedTime
.
value
===
'按月度统计'
)
{
curChartData
.
value
=
curDemensionItem
.
data
}
else
if
(
selectedTime
.
value
===
'按季度统计'
)
{
curChartData
.
value
=
curDemensionItem
.
quatarData
}
else
{
curChartData
.
value
=
curDemensionItem
.
yearData
}
}
else
{
curChartData
.
value
=
curDemensionItem
.
data
}
}
)
loading
.
value
=
false
}
catch
(
error
)
{
...
...
@@ -894,7 +905,7 @@ const fetchAllData = async () => {
provinceName
:
selectedProvince
.
value
===
'全部省份'
?
null
:
selectedProvince
.
value
,
// 实体省份
entityTypeCode
:
selectedEntityType
.
value
===
'全部实体类型'
?
null
:
selectedEntityType
.
value
,
// 实体类别
ratio
:
isHalfRule
.
value
?
'Y'
:
null
,
// 50%规则
isInvolveCn
:
isCnEntityOnly
.
value
?
'Y'
:
null
,
// 是否只看中国实体
//
isInvolveCn: isCnEntityOnly.value ? 'Y' : null, // 是否只看中国实体
sort
:
isSort
.
value
?
0
:
1
// 0 先按分数降序 后按时间降序 1 先按分数降序,再按时间升序
}
try
{
...
...
@@ -1053,11 +1064,16 @@ const initParam = () => {
}
selectedProvince
.
value
=
route
.
query
.
selectedProvince
?
provinceList
.
value
.
filter
(
item
=>
item
.
name
.
indexOf
(
route
.
query
.
selectedProvince
)
>
-
1
)[
0
].
name
:
'全部省份'
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
isHalfRule
.
value
=
route
.
query
.
isHalfRule
?
true
:
false
isHalfRule
.
value
=
route
.
query
.
isHalfRule
===
'true'
?
true
:
false
isCnEntityOnly
.
value
=
route
.
query
.
isCnEntityOnly
?
true
:
false
if
(
isCnEntityOnly
.
value
)
{
selectedCountry
.
value
=
'0101'
}
else
{
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
}
selectedEntityType
.
value
=
route
.
query
.
selectedEntityType
?
entityTypeList
.
value
.
filter
(
item
=>
item
.
name
===
route
.
query
.
selectedEntityType
)[
0
].
id
:
'全部实体类型'
...
...
@@ -1072,17 +1088,32 @@ const initParam = () => {
selectedDate
.
value
=
'自定义'
customTime
.
value
=
JSON
.
parse
(
savedQuery
.
selectedDate
)
}
isHalfRule
.
value
=
savedQuery
.
isHalfRule
?
true
:
false
isHalfRule
.
value
=
savedQuery
.
isHalfRule
===
'true'
?
true
:
false
selectedProvince
.
value
=
savedQuery
.
selectedProvince
?
provinceList
.
value
.
filter
(
item
=>
item
.
name
.
indexOf
(
savedQuery
.
selectedProvince
)
>
-
1
)[
0
].
name
:
'全部省份'
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
isCnEntityOnly
.
value
=
savedQuery
.
isCnEntityOnly
?
true
:
false
if
(
isCnEntityOnly
.
value
)
{
selectedCountry
.
value
=
'0101'
}
else
{
selectedCountry
.
value
=
route
.
query
.
selectedCountryId
?
route
.
query
.
selectedCountryId
:
'全部国家'
}
selectedEntityType
.
value
=
savedQuery
.
selectedEntityType
?
entityTypeList
.
value
.
filter
(
item
=>
item
.
name
===
savedQuery
.
selectedEntityType
)[
0
].
id
:
'全部实体类型'
}
}
watch
(
()
=>
isCnEntityOnly
.
value
,
val
=>
{
if
(
val
)
{
selectedCountry
.
value
=
'0101'
}
else
{
selectedCountry
.
value
=
'全部国家'
}
}
)
// 跳转机构详情
const
handleClickToDetail
=
(
curEntity
)
=>
{
console
.
log
(
'curEntity'
,
curEntity
);
...
...
@@ -1207,9 +1238,17 @@ onMounted(async () => {
}
.
chart
-
main
-
box
{
width
:
1568
px
;
height
:
809
px
;
margin
:
0
auto
;
background
:
rgba
(
255
,
255
,
255
);
border
:
1
px
solid
var
(
--
bg
-
black
-
5
);
border
-
radius
:
10
px
;
.
info
-
box
{
margin
:
0
auto
;
width
:
1568
px
;
margin
-
top
:
16
px
;
width
:
1520
px
;
height
:
30
px
;
display
:
flex
;
justify
-
content
:
space
-
between
;
...
...
@@ -1229,14 +1268,13 @@ onMounted(async () => {
.
content
-
box
{
margin
:
0
auto
;
margin
-
top
:
16
px
;
width
:
1568
px
;
height
:
766
px
;
border
-
radius
:
10
px
;
background
:
rgba
(
255
,
255
,
255
);
border
:
1
px
solid
var
(
--
bg
-
black
-
5
);
width
:
1520
px
;
height
:
726
px
;
border
:
none
;
.
content
-
header
{
margin
:
16
px
24
px
;
margin
:
16
px
0
;
width
:
1520
px
;
height
:
28
px
;
}
...
...
src/views/dataLibrary/technologyFigures/index.vue
浏览文件 @
87899162
...
...
@@ -1213,4 +1213,6 @@ onMounted(async () => {
// :deep(.el-table__header th:first-child)
{
// background-color: #e6f7ff;
// color: #1890ff;
//
}
<
/style>
\ No newline at end of file
//
}
<
/style
>
src/views/exportControl/components/info.vue
浏览文件 @
87899162
...
...
@@ -7,7 +7,7 @@
<div
class=
"sub-title"
>
{{
subtitle
}}
</div>
</div>
<div
class=
"description"
>
{{
description
}}
</div>
<div
v-if=
"quantity > 0"
class=
"quantity"
:style=
"
{ color: color }">
<div
v-if=
"quantity > 0"
class=
"quantity"
:style=
"
{ color: color }"
@click.stop="handleClickNum(title)"
>
{{
quantity
}}{{
unit
||
"个"
}}
<div
class=
"quantity-title-des"
v-if=
"desMap[title]"
>
<img
class=
"info-icon"
:src=
"infoIcon"
alt=
""
/>
...
...
@@ -20,6 +20,28 @@
<
script
setup
>
import
infoIcon
from
"../assets/icons/info-icon.png"
;
import
{
useRouter
}
from
"vue-router"
;
const
router
=
useRouter
()
const
emits
=
defineEmits
([
'num-click'
])
const
handleClickNum
=
(
item
)
=>
{
if
(
item
===
'实体清单'
)
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
{
isCnEntityOnly
:
true
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
else
if
(
item
===
'商业管制清单'
)
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataCommerceControlList"
,
});
window
.
open
(
route
.
href
,
"_blank"
);
}
}
defineProps
({
title
:
{
type
:
String
,
...
...
@@ -135,6 +157,7 @@ const desMap = {
display
:
flex
;
flex-direction
:
column
;
align-items
:
flex-end
;
.quantity-title-des
{
display
:
flex
;
align-items
:
center
;
...
...
@@ -143,6 +166,7 @@ const desMap = {
font-weight
:
400
;
color
:
rgba
(
95
,
101
,
108
,
1
);
line-height
:
1
.4
;
.info-icon
{
width
:
16px
;
height
:
16px
;
...
...
src/views/exportControl/index.vue
浏览文件 @
87899162
...
...
@@ -116,7 +116,7 @@
</div>
</div>
</div>
<div
class=
"box1-absolute"
>
<div
class=
"box1-absolute"
@
click=
"handleToDataLibrary(item)"
>
<div
class=
"box1-absolute-des"
>
<el-icon>
<Warning
color=
"rgba(206, 79, 81, 1)"
/>
...
...
@@ -867,7 +867,8 @@ const handleTitleClick = item => {
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
item
.
sanTypeId
sanTypeId
:
item
.
sanTypeId
,
date
:
`
${
item
.
year
}
-
${
item
.
dateStr
}
`
}
});
window
.
open
(
route
.
href
,
"_blank"
);
...
...
@@ -1765,7 +1766,8 @@ const handleSanc = item => {
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
activeResourceTabItem
.
value
.
id
sanTypeId
:
activeResourceTabItem
.
value
.
id
,
date
:
item
.
postDate
}
});
window
.
open
(
route
.
href
,
"_blank"
);
...
...
@@ -1821,7 +1823,7 @@ const handleSearch = () => {
const
handleEntityRowClick
=
row
=>
{
console
.
log
(
"row"
,
row
);
const
params
=
{
domains
:
row
.
tags
[
0
],
//
domains: row.tags[0],
selectedDate
:
JSON
.
stringify
([
row
.
year
+
"-01-01"
,
row
.
year
+
"-12-31"
])
};
const
route
=
router
.
resolve
({
...
...
@@ -1835,7 +1837,7 @@ const handleEntityRowClick = row => {
const
handleCommercialRowClick
=
row
=>
{
console
.
log
(
"row"
,
row
);
const
params
=
{
domains
:
row
.
tags
[
0
],
//
domains: row.tags[0],
selectedDate
:
JSON
.
stringify
([
row
.
year
+
"-01-01"
,
row
.
year
+
"-12-31"
])
};
const
route
=
router
.
resolve
({
...
...
@@ -1861,18 +1863,31 @@ const handleRadarChartClick = value => {
// 点击制裁清单数量增长趋势
const
handleMultiBarChartClick
=
val
=>
{
// console.log('value', val);
const
params
=
{
isHalfRule
:
trendChecked
.
value
,
domains
:
val
.
seriesName
,
isCnEntityOnly
:
true
,
selectedDate
:
JSON
.
stringify
([
val
.
name
+
"-01-01"
,
val
.
name
+
"-12-31"
])
};
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityListEven
t"
,
path
:
selectedEntityId
.
value
===
1
?
"/dataLibrary/dataEntityList"
:
"/dataLibrary/dataCommerceControlLis
t"
,
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 跳转到数据资源库
const
handleToDataLibrary
=
(
item
)
=>
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
{
isCnEntityOnly
:
true
,
selectedDate
:
JSON
.
stringify
([
item
.
postDate
,
item
.
postDate
])
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
onMounted
(
async
()
=>
{
handleGetHylyList
();
let
chart1
=
getMultiLineChart
(
chart1Data
.
value
.
title
,
chart1Data
.
value
.
data
[
0
].
value
,
chart1Data
.
value
.
data
[
1
].
value
);
...
...
@@ -1986,7 +2001,7 @@ const handleMediaClick = item => {
padding-right
:
50px
;
box-sizing
:
border-box
;
background
:
linear-gradient
(
to
right
,
rgba
(
206
,
79
,
81
,
0
)
,
rgba
(
206
,
79
,
81
,
0
.3
));
cursor
:
pointer
;
&
-des
{
display
:
flex
;
gap
:
5px
;
...
...
src/views/exportControl/v2.0EntityList/components/dataStatistics/index.vue
浏览文件 @
87899162
<
template
>
<div
class=
"data-statistics"
>
<div
class=
"nav"
>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -13,7 +13,7 @@
</div>
</div>
</div>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary1"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -26,7 +26,7 @@
</div>
</div>
</div>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary2"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -38,7 +38,7 @@
</div>
</div>
</div>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary3(totalCount.latestTime)"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -412,6 +412,8 @@ const totalCount = ref(0);
const
getTotalCountData
=
async
()
=>
{
try
{
const
res
=
await
getTotalCount
(
sanTypeId
.
value
);
console
.
log
(
'统计'
,
res
);
totalCount
.
value
=
res
.
data
||
0
;
}
catch
(
error
)
{
console
.
error
(
"获取实体清单-数据统计-总量统计失败:"
,
error
);
...
...
@@ -1193,7 +1195,49 @@ const handlePieChartClick1 = val => {
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
};
}
// 跳转到数据资源库
const
handleToDataLibrary
=
()
=>
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:{
isCnEntityOnly
:
true
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
const
handleToDataLibrary1
=
()
=>
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:{
isCnEntityOnly
:
true
,
isHalfRule
:
true
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
const
handleToDataLibrary2
=
()
=>
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:{
selectedDate
:
JSON
.
stringify
([
currentYear
+
'01-01'
,
currentYear
+
'12-31'
])
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
const
handleToDataLibrary3
=
(
time
)
=>
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:{
selectedDate
:
JSON
.
stringify
([
time
,
time
])
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
onMounted
(()
=>
{
sanTypeId
.
value
=
route
.
query
.
sanTypeId
||
""
;
...
...
@@ -1235,6 +1279,10 @@ onMounted(() => {
background-color
:
#fff
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-primary-2
);
}
.item-position
{
position
:
absolute
;
...
...
src/views/exportControl/v2.0EntityList/components/sanctionsOverview/components/introductionPage/index.vue
浏览文件 @
87899162
...
...
@@ -75,17 +75,9 @@
<
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
>
...
...
@@ -99,20 +91,15 @@
<
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"
>
<
div
v
-
for
=
"tag in item.techDomainList"
:
key
=
"tag"
class
=
"tag-item"
>
{{
tag
}}
<
/div
>
<
/div
>
<
div
:
class
=
"{ 'count-tag': item.cnEntityCount
}
"
>
<
div
:
class
=
"{ 'count-tag': item.cnEntityCount
}
"
@
click
=
"handleToDataLibrary"
>
{{
item
.
cnEntityCount
?
`${item.cnEntityCount
}
家中国实体`
:
""
}}
<
/div
>
<
/div
>
...
...
@@ -120,14 +107,8 @@
<
/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
>
...
...
@@ -149,12 +130,8 @@
<
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"
>
...
...
@@ -242,7 +219,8 @@ const handleClick = item => {
path
:
"/exportControl/singleSanction"
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
item
.
sanTypeId
||
1
sanTypeId
:
item
.
sanTypeId
||
1
,
date
:
`${item.year
}
-${item.date
}
`
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
...
...
@@ -421,6 +399,30 @@ const getEntityInfoFn = async id => {
}
;
const
sanTypeId
=
ref
(
""
);
// 跳转到数据资源库
const
handleToDataLibrary
=
()
=>
{
let
domainStr
=
domainOptions
.
filter
(
item
=>
item
.
value
===
selectedDomain
.
value
)[
0
].
label
let
params
if
(
domainStr
===
'全部领域'
)
{
params
=
{
isCnEntityOnly
:
true
,
}
}
else
{
params
=
{
isCnEntityOnly
:
true
,
domains
:
domainStr
}
;
}
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
params
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
onMounted
(()
=>
{
sanTypeId
.
value
=
route
.
query
.
sanTypeId
;
// 获取实体清单基本信息
...
...
src/views/exportControl/v2.0EntityList/components/sanctionsOverview/components/listPage/index.vue
浏览文件 @
87899162
...
...
@@ -17,47 +17,27 @@
<div
class=
"text"
>
科技领域
</div>
</div>
<div
class=
"checkbox-group"
>
<el-checkbox
v-for=
"(item, index) in techFields"
:key=
"index"
v-model=
"item.checked"
:label=
"item.label"
@
change=
"handleFilterChange(item, techFields, 'tech')"
/>
<el-checkbox
v-for=
"(item, index) in techFields"
:key=
"index"
v-model=
"item.checked"
:label=
"item.label"
@
change=
"handleFilterChange(item, techFields, 'tech')"
/>
</div>
<div
class=
"title"
>
<div
class=
"box"
></div>
<div
class=
"text"
>
实体类型
</div>
</div>
<div
class=
"checkbox-group"
>
<el-checkbox
v-for=
"(item, index) in entityTypes"
:key=
"index"
v-model=
"item.checked"
:label=
"item.label"
@
change=
"handleFilterChange(item, entityTypes, 'type')"
/>
<el-checkbox
v-for=
"(item, index) in entityTypes"
:key=
"index"
v-model=
"item.checked"
:label=
"item.label"
@
change=
"handleFilterChange(item, entityTypes, 'type')"
/>
</div>
<div
class=
"title"
>
<div
class=
"box"
></div>
<div
class=
"text"
>
制裁时间
</div>
</div>
<div
class=
"checkbox-group"
>
<el-checkbox
v-for=
"(item, index) in sanctionTimes"
:key=
"index"
v-model=
"item.checked"
:label=
"item.label"
@
change=
"handleFilterChange(item, sanctionTimes, 'time')"
/>
<el-checkbox
v-for=
"(item, index) in sanctionTimes"
:key=
"index"
v-model=
"item.checked"
:label=
"item.label"
@
change=
"handleFilterChange(item, sanctionTimes, 'time')"
/>
<div
v-if=
"sanctionTimes.find(i => i.value === 'custom' && i.checked)"
class=
"custom-date-picker"
>
<el-date-picker
v-model=
"customDateRange"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
<el-date-picker
v-model=
"customDateRange"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
</div>
</div>
</div>
...
...
@@ -96,8 +76,8 @@
<CommonPrompt
:content=
"row.entityNameZh || row.entityName"
style=
"flex: 1; overflow: hidden"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"涉及领域"
min-width=
"150"
>
</el-table-column>
<el-table-column
label=
"涉及领域"
min-width=
"150"
>
<
template
#
default=
"{ row }"
>
<div
class=
"domain-cell"
>
<el-tag
v-for=
"tag in row.techDomains"
:key=
"tag"
class=
"domain-tag"
effect=
"plain"
...
...
@@ -106,9 +86,9 @@
</el-tag>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"startTime"
label=
"制裁时间"
width=
"140"
show-overflow-tooltip
align=
"center"
/>
<el-table-column
label=
"50%规则子企业"
min-width=
"280"
show-overflow-tooltip
align=
"right"
>
</el-table-column>
<el-table-column
prop=
"startTime"
label=
"制裁时间"
width=
"140"
show-overflow-tooltip
align=
"center"
/>
<el-table-column
label=
"50%规则子企业"
min-width=
"280"
show-overflow-tooltip
align=
"right"
>
<
template
#
default=
"{ row }"
>
<div
class=
"rule-cell"
v-if=
"row.ruleOrgCount > 0"
>
<div
class=
"rule-text"
:title=
"row.ruleOrgList?.[0]?.orgName || ''"
>
...
...
@@ -118,34 +98,29 @@
row
.
ruleOrgCount
}}
家 >
</el-link>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
<div
class=
"tight-footer"
>
</el-table-column>
</el-table>
</div>
<div
class=
"tight-footer"
>
<div
class=
"total-text"
>
共 {{ total }} 项
</div>
<el-pagination
:current-page=
"currentPage"
v-model:page-size=
"pageSize"
:total=
"total"
layout=
"prev, pager, next"
prev-text=
"<"
next-text=
">"
@
current-change=
"handleCurrentChange"
/>
</div>
-->
</div>
-->
<AnalysisBox
title=
"实体清单"
:showAllBtn=
"false"
>
<
template
#
header-btn
>
<div
class=
"stats"
>
<div
class=
"dot"
></div>
<div
class=
"count-text"
>
共
<span
class=
"highlight"
>
{{
ruleCount
.
totalCount
}}
</span>
家
共
<span
class=
"highlight"
@
click=
"handlToDataLibrary"
>
{{
ruleCount
.
totalCount
}}
</span>
家
</div>
<div
class=
"rule-text"
>
(50%规则涉及
<span
class=
"highlight"
>
{{
ruleCount
.
ruleCount
}}
</span
>
家)
(50%规则涉及
<span
class=
"highlight"
@
click=
"handlToDataLibrary1"
>
{{
ruleCount
.
ruleCount
}}
</span>
家)
</div>
</div>
</
template
>
<div
class=
"right-table"
>
<el-table
:data=
"entityRows"
table-layout=
"fixed"
:row-class-name=
"tableRowClassName"
:header-cell-style=
"{ background: '#fff' }"
>
<el-table
:data=
"entityRows"
table-layout=
"fixed"
:row-class-name=
"tableRowClassName"
:header-cell-style=
"{ background: '#fff' }"
>
<el-table-column
label=
"实体名称"
min-width=
"200"
>
<
template
#
default=
"{ row }"
>
<div
class=
"entity-name-cell"
@
click=
"handleCompClick(row)"
>
...
...
@@ -153,56 +128,30 @@
<div
v-else
class=
"avatar-undefined"
>
{{
(
row
.
entityNameZh
||
row
.
entityName
)?.
match
(
/
[\u
4e00-
\u
9fa5a-zA-Z0-9
]
/
)?.[
0
]
}}
</div>
<CommonPrompt
:content=
"row.entityNameZh || row.entityName"
style=
"flex: 1; overflow: hidden"
/>
<CommonPrompt
:content=
"row.entityNameZh || row.entityName"
style=
"flex: 1; overflow: hidden"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"涉及领域"
min-width=
"150"
>
<
template
#
default=
"{ row }"
>
<div
class=
"domain-cell"
>
<el-tag
v-for=
"tag in row.techDomains"
:key=
"tag"
class=
"domain-tag"
effect=
"plain"
:disable-transitions=
"true"
:style=
"getTagStyle(tag)"
>
<el-tag
v-for=
"tag in row.techDomains"
:key=
"tag"
class=
"domain-tag"
effect=
"plain"
:disable-transitions=
"true"
:style=
"getTagStyle(tag)"
>
{{
tag
}}
</el-tag>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"listingLocation"
label=
"上市地点"
width=
"140"
show-overflow-tooltip
align=
"center"
/>
<el-table-column
prop=
"startTime"
label=
"制裁时间"
width=
"140"
show-overflow-tooltip
align=
"center"
/>
<el-table-column
prop=
"listingLocation"
label=
"上市地点"
width=
"140"
show-overflow-tooltip
align=
"center"
/>
<el-table-column
prop=
"startTime"
label=
"制裁时间"
width=
"140"
show-overflow-tooltip
align=
"center"
/>
<el-table-column
label=
"50%规则子企业"
min-width=
"280"
show-overflow-tooltip
align=
"right"
>
<
template
#
default=
"{ row }"
>
<div
class=
"rule-cell"
v-if=
"row.ruleOrgCount > 0"
>
<div
class=
"rule-text"
:title=
"row.ruleOrgList?.[0]?.orgName || ''"
>
{{
row
.
ruleOrgList
?.[
0
]?.
orgName
||
""
}}
...等
</div>
<el-link
class=
"rule-link"
type=
"primary"
:underline=
"false"
@
click=
"handleRuleClick(row)"
>
{{
row
.
ruleOrgCount
}}
家 >
</el-link
>
<el-link
class=
"rule-link"
type=
"primary"
:underline=
"false"
@
click=
"handleRuleClick(row)"
>
{{
row
.
ruleOrgCount
}}
家 >
</el-link>
</div>
</
template
>
</el-table-column>
...
...
@@ -210,26 +159,15 @@
</div>
<div
class=
"tight-footer"
>
<div
class=
"total-text"
>
共 {{ total }} 项
</div>
<el-pagination
:current-page=
"currentPage"
v-model:page-size=
"pageSize"
:total=
"total"
layout=
"prev, pager, next"
prev-text=
"<"
next-text=
">"
@
current-change=
"handleCurrentChange"
/>
<el-pagination
:current-page=
"currentPage"
v-model:page-size=
"pageSize"
:total=
"total"
layout=
"prev, pager, next"
prev-text=
"<"
next-text=
">"
@
current-change=
"handleCurrentChange"
/>
</div>
</AnalysisBox>
</div>
</div>
</div>
<RuleSubsidiaryDialog
v-model=
"ruleDialogVisible"
:company-name=
"currentRuleCompany"
:total-count=
"currentRuleCount"
:data-list=
"currentRuleList"
/>
<RuleSubsidiaryDialog
v-model=
"ruleDialogVisible"
:company-name=
"currentRuleCompany"
:total-count=
"currentRuleCount"
:data-list=
"currentRuleList"
/>
</div>
</template>
...
...
@@ -414,7 +352,7 @@ const getExportControlListApi = async () => {
if
(
abortController
)
{
try
{
abortController
.
abort
();
}
catch
{}
}
catch
{
}
}
abortController
=
new
AbortController
();
isFetching
.
value
=
true
;
...
...
@@ -526,6 +464,30 @@ watch(customDateRange, () => {
getExportControlListApi
();
}
});
// 跳转到数据资源库
const
handlToDataLibrary
=
()
=>
{
const
params
=
{
isCnEntityOnly
:
true
,
};
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
}
const
handlToDataLibrary1
=
()
=>
{
const
params
=
{
isCnEntityOnly
:
true
,
isHalfRule
:
true
,
};
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
}
</
script
>
<
style
scoped
lang=
"scss"
>
...
...
@@ -577,6 +539,7 @@ watch(customDateRange, () => {
width
:
160px
;
height
:
32px
;
}
:deep
(
.el-checkbox__label
)
{
font-size
:
14px
;
color
:
rgb
(
95
,
101
,
108
);
...
...
@@ -729,6 +692,7 @@ watch(customDateRange, () => {
.highlight
{
color
:
#cd4246
;
margin
:
0
4px
;
}
}
...
...
@@ -1001,6 +965,11 @@ watch(customDateRange, () => {
.highlight
{
color
:
#cd4246
;
margin
:
0
4px
;
cursor
:
pointer
;
&
:hover
{
text-decoration
:
underline
;
}
}
}
...
...
@@ -1011,6 +980,11 @@ watch(customDateRange, () => {
.highlight
{
color
:
#cd4246
;
cursor
:
pointer
;
&
:hover
{
text-decoration
:
underline
;
}
}
}
}
...
...
src/views/exportControl/v2.0SingleSanction/components/dataStatistics/index.vue
浏览文件 @
87899162
<
template
>
<div
class=
"data-statistics"
>
<div
class=
"nav"
>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -13,7 +13,7 @@
</div>
</div>
</div>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary1"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -26,7 +26,7 @@
</div>
</div>
</div>
<div
class=
"nav-item"
>
<div
class=
"nav-item"
@
click=
"handleToDataLibrary2"
>
<div
class=
"item-position"
></div>
<div
class=
"content"
>
<div
class=
"info"
>
...
...
@@ -351,6 +351,8 @@ const getTotalCount = async () => {
if
(
!
sanRecordId
.
value
)
return
;
try
{
const
res
=
await
getSingleSanctionTotalCount
(
route
.
query
.
sanTypeId
,
sanRecordId
.
value
);
console
.
log
(
'统计'
,
res
);
if
(
res
.
code
===
200
)
{
totalCount
.
value
=
res
.
data
||
{};
}
...
...
@@ -882,7 +884,6 @@ const handlePieChartClick1 = (val) => {
// 制裁实体国家地区分布情况
const
handleClickRankChart
=
(
item
)
=>
{
// console.log('item', item);
const
params
=
{
selectedCountryId
:
item
.
id
,
selectedDate
:
JSON
.
stringify
([
route
.
query
.
date
,
route
.
query
.
date
])
...
...
@@ -908,6 +909,43 @@ const handleRankChartClick = (item) => {
window
.
open
(
curRoute
.
href
,
"_blank"
);
}
// 跳转到数据资源库
const
handleToDataLibrary
=
()
=>
{
const
dateStr
=
route
.
query
.
date
?
route
.
query
.
date
:
''
const
curRoute
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
{
isCnEntityOnly
:
true
,
selectedDate
:
JSON
.
stringify
([
dateStr
,
dateStr
])
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
}
const
handleToDataLibrary1
=
()
=>
{
const
dateStr
=
route
.
query
.
date
?
route
.
query
.
date
:
''
const
curRoute
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
{
isCnEntityOnly
:
true
,
isHalfRule
:
true
,
selectedDate
:
JSON
.
stringify
([
dateStr
,
dateStr
])
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
}
const
handleToDataLibrary2
=
()
=>
{
const
dateStr
=
route
.
query
.
date
?
route
.
query
.
date
:
''
const
curRoute
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:
{
selectedDate
:
JSON
.
stringify
([
dateStr
,
dateStr
])
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
}
onMounted
(()
=>
{
// 获取路由参数id
...
...
@@ -957,6 +995,11 @@ onMounted(() => {
background-color
:
#fff
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
position
:
relative
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-primary-2
);
}
.item-position
{
position
:
absolute
;
...
...
src/views/exportControl/v2.0SingleSanction/components/sanctionsOverview/index.vue
浏览文件 @
87899162
...
...
@@ -45,17 +45,15 @@
<div
class=
"left-top-content"
>
<div
class=
"content-title"
>
制裁实体分布:
</div>
<div
class=
"distribution-list"
>
<div
class=
"list-item"
v-for=
"(item, index) in entityDistribution"
:key=
"index"
>
<div
class=
"list-item"
v-for=
"(item, index) in entityDistribution"
:key=
"index"
@
click=
"handleToDataLibrary(item)"
>
<img
:src=
"item.imageUrl || flag"
alt=
""
class=
"flag"
/>
<div
class=
"country-name"
>
{{
item
.
name
}}
</div>
<div
class=
"progress-bar-container"
>
<div
class=
"progress-bar"
:style=
"
{
<div
class=
"progress-bar"
:style=
"
{
width: item.width,
background: item.gradient
}"
>
</div>
}">
</div>
</div>
<div
class=
"count"
:class=
"
{ highlight: index === 0 }">
{{
item
.
count
}}
家
</div>
</div>
...
...
@@ -98,25 +96,13 @@
</div>
<div
class=
"filter-right"
>
<el-checkbox
v-model=
"onlyChina"
label=
"只看中国实体"
/>
<el-select
v-model=
"filterField"
placeholder=
"选择领域"
style=
"width: 150px; margin: 0 12px 0 16px"
>
<el-select
v-model=
"filterField"
placeholder=
"选择领域"
style=
"width: 150px; margin: 0 12px 0 16px"
>
<!--
<el-option
label=
"全部领域"
value=
""
/>
-->
<el-option
v-for=
"item in domainOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
<el-option
v-for=
"item in domainOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
<el-input
v-model=
"searchKeyword"
placeholder=
"搜索实体"
<el-input
v-model=
"searchKeyword"
placeholder=
"搜索实体"
style=
"width: 150px; border: 1px solid rgba(170, 173, 177, 0.4); border-radius: 5px"
:suffix-icon=
"Search"
/>
:suffix-icon=
"Search"
/>
</div>
</div>
<div
class=
"stats-row"
>
...
...
@@ -131,21 +117,14 @@
<div
class=
"stats-info"
>
<div
class=
"stat-item"
>
<span
class=
"dot red"
></span>
<span
class=
"text"
>
新增
<span
class=
"num red"
>
{{
addCount
}}
</span>
家 (50%规则涉及
<span
class=
"num red"
>
{{
<span
class=
"text"
>
新增
<span
class=
"num red"
>
{{
addCount
}}
</span>
家 (50%规则涉及
<span
class=
"num red"
>
{{
addRuleCount
}}
</span
>
家)
</span
>
}}
</span>
家)
</span>
</div>
<div
class=
"stat-item"
>
<span
class=
"dot green"
></span>
<span
class=
"text"
>
移除
<span
class=
"num green"
>
{{
removeCount
}}
</span>
家 (50%规则涉及
<span
class=
"num green"
>
{{
removeRuleCount
}}
</span
>
家)
</span
>
<span
class=
"text"
>
移除
<span
class=
"num green"
>
{{
removeCount
}}
</span>
家 (50%规则涉及
<span
class=
"num green"
>
{{
removeRuleCount
}}
</span>
家)
</span>
</div>
</div>
</div>
...
...
@@ -177,11 +156,7 @@
>
{{
item
}}
</span
>
-->
<div
class=
"domain-box"
>
<AreaTag
v-for=
"(domain, index) in scope.row.fields"
:key=
"index"
:tagName=
"domain"
/>
<AreaTag
v-for=
"(domain, index) in scope.row.fields"
:key=
"index"
:tagName=
"domain"
/>
</div>
</
template
>
</el-table-column>
...
...
@@ -190,11 +165,8 @@
<el-table-column
prop=
"revenue"
label=
"营收(亿元)"
width=
"110"
align=
"center"
/>
<el-table-column
label=
"50%规则子企业"
width=
"180"
align=
"center"
>
<
template
#
default=
"scope"
>
<span
v-if=
"scope.row.subsidiaryCount"
class=
"subsidiary-link"
@
click=
"handleSubsidiaryClick(scope.row)"
>
<span
v-if=
"scope.row.subsidiaryCount"
class=
"subsidiary-link"
@
click=
"handleSubsidiaryClick(scope.row)"
>
{{
scope
.
row
.
subsidiaryText
}}
<span
class=
"blue-text"
>
{{
scope
.
row
.
subsidiaryCount
}}
家 >
</span>
</span>
...
...
@@ -212,12 +184,8 @@
</div>
</div>
<!-- 50%规则子企业弹框 -->
<RuleSubsidiaryDialog
v-model=
"subsidiaryDialogVisible"
:company-name=
"currentSubsidiaryCompanyName"
:total-count=
"currentSubsidiaryCount"
:data-list=
"currentSubsidiaryList"
/>
<RuleSubsidiaryDialog
v-model=
"subsidiaryDialogVisible"
:company-name=
"currentSubsidiaryCompanyName"
:total-count=
"currentSubsidiaryCount"
:data-list=
"currentSubsidiaryList"
/>
</div>
</template>
...
...
@@ -555,6 +523,26 @@ const entityDistribution = ref([
}
]);
const
sanTypeId
=
ref
(
""
);
// 跳转到数据资源库
const
handleToDataLibrary
=
(
item
)
=>
{
console
.
log
(
'item'
,
item
);
const
dateStr
=
formattedData
.
value
.
postDate
.
replace
(
/
(\d{4})
年
(\d{1,2})
月
(\d{1,2})
日/
,
(
_
,
y
,
m
,
d
)
=>
`
${
y
}
-
${
m
.
padStart
(
2
,
'0'
)}
-
${
d
.
padStart
(
2
,
'0'
)}
`
);
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/dataEntityList"
,
query
:{
selectedDate
:
JSON
.
stringify
([
dateStr
,
dateStr
]),
selectedCountryId
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
onMounted
(()
=>
{
// 获取路由参数中的sanTypeId
console
.
log
(
"route.query.sanTypeId --:"
,
route
.
query
.
sanTypeId
);
...
...
@@ -696,6 +684,11 @@ onMounted(() => {
display
:
flex
;
align-items
:
center
;
height
:
24px
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-primary-2
);
}
.flag
{
width
:
24px
;
...
...
src/views/exportControl/v2.0SingleSanction/index.vue
浏览文件 @
87899162
...
...
@@ -247,12 +247,15 @@ const handlePageChange = async newPage => {
// ========== 选择某项 ==========
const
selectSanction
=
async
item
=>
{
// console.log('item', item);
selectedSanctionId
.
value
=
item
.
id
;
router
.
replace
({
path
:
window
.
location
.
pathname
,
query
:
{
id
:
item
.
id
,
sanTypeId
:
item
.
sanTypeId
sanTypeId
:
item
.
sanTypeId
,
date
:
item
.
postDate
}
});
sanctionModalVisible
.
value
=
false
;
...
...
@@ -260,7 +263,7 @@ const selectSanction = async item => {
// 根据最新URL参数刷新当前页面
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
postDate
+
" 《实体清单新增条目》"
);
window
.
open
(
`
${
window
.
location
.
pathname
}
?id=
${
item
.
id
}
&sanTypeId=
${
item
.
sanTypeId
}
`
,
"_self"
);
window
.
open
(
`
${
window
.
location
.
pathname
}
?id=
${
item
.
id
}
&sanTypeId=
${
item
.
sanTypeId
}
&date=
${
item
.
postDate
}
`
,
"_self"
);
};
// ========== 关闭弹窗时重置 ==========
...
...
src/views/finance/components/info.vue
浏览文件 @
87899162
...
...
@@ -7,7 +7,7 @@
<div
class=
"sub-title"
>
{{
subtitle
}}
</div>
</div>
<div
class=
"description"
>
{{
description
}}
</div>
<div
v-if=
"quantity > 0"
class=
"quantity"
:style=
"
{ color: color }">
<div
v-if=
"quantity > 0"
class=
"quantity"
:style=
"
{ color: color }"
@click.stop="handleClickNum(title)"
>
{{
quantity
}}{{
unit
||
"个"
}}
<div
class=
"quantity-title-des"
v-if=
"desMap[title]"
>
<img
class=
"info-icon"
:src=
"infoIcon"
alt=
""
/>
...
...
@@ -20,6 +20,25 @@
<
script
setup
>
import
infoIcon
from
"../assets/icons/info-icon.png"
;
import
{
useRouter
}
from
"vue-router"
;
const
router
=
useRouter
()
const
handleClickNum
=
(
item
)
=>
{
if
(
item
===
'特别指定国民清单'
)
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/sDNList"
,
// query: {
// isCnEntityOnly: true
// }
});
window
.
open
(
route
.
href
,
"_blank"
);
}
else
if
(
item
===
'涉军企业清单'
)
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/mREList"
,
});
window
.
open
(
route
.
href
,
"_blank"
);
}
}
defineProps
({
title
:
{
type
:
String
,
...
...
src/views/finance/index.vue
浏览文件 @
87899162
...
...
@@ -84,7 +84,7 @@
</div>
</div>
</div>
<div
class=
"box1-absolute"
>
<div
class=
"box1-absolute"
@
click=
"handleToDataLibrary(item)"
>
<div
class=
"box1-absolute-des"
>
<el-icon>
<Warning
color=
"rgba(206, 79, 81, 1)"
/>
...
...
@@ -149,7 +149,7 @@
<div
class=
"box3"
>
<div
class=
"box3-content"
>
<div
class=
"box3-content-title"
>
特别指定国民清单(SDN)发布频度
</div>
<el-table
:data=
"entityListReleaseFreq"
stripe
style=
"width: 100%"
>
<el-table
:data=
"entityListReleaseFreq"
stripe
style=
"width: 100%"
@
row-click=
"handleEntityRowClick"
>
<el-table-column
prop=
"year"
label=
"年份"
width=
"200"
/>
<el-table-column
label=
"发布次数"
width=
"300"
>
<template
#
default=
"scope"
>
...
...
@@ -186,7 +186,7 @@
</div>
<div
class=
"box3-content"
>
<div
class=
"box3-content-title"
>
中国军事工业复合体企业清单(CMIC)更新频度
</div>
<el-table
:data=
"commerceControlListReleaseFreq"
stripe
style=
"width: 100%; margin-bottom: auto"
>
<el-table
:data=
"commerceControlListReleaseFreq"
stripe
style=
"width: 100%; margin-bottom: auto"
@
row-click=
"handleCommercialRowClick"
>
<el-table-column
prop=
"year"
label=
"年份"
width=
"200"
/>
<el-table-column
label=
"发布次数"
width=
"300"
>
<
template
#
default=
"scope"
>
...
...
@@ -257,7 +257,8 @@
<el-checkbox
v-model=
"domainChecked"
label=
"50%规则"
size=
"large"
/>
</
template
>
<
template
#
default
>
<EChart
:option=
"radarOption"
autoresize
:style=
"
{ height: '420px' }" />
<EChart
:option=
"radarOption"
autoresize
:style=
"
{ height: '420px' }"
@chart-click="handleRadarChartClick" />
<div
class=
"data-origin-box"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsIcon"
alt=
""
/>
...
...
@@ -284,7 +285,8 @@
</div>
</
template
>
<
template
#
default
>
<EChart
:option=
"trendOption"
autoresize
:style=
"
{ height: '420px' }" />
<EChart
:option=
"trendOption"
autoresize
:style=
"
{ height: '420px' }"
@chart-click="handleMultiBarChartClick" />
<div
class=
"data-origin-box"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsIcon"
alt=
""
/>
...
...
@@ -1593,6 +1595,80 @@ const handleSearch = () => {
window
.
open
(
curRoute
.
href
,
"_blank"
);
};
// 点击特别指定国民清单(SDN)发布频度
const
handleEntityRowClick
=
row
=>
{
// console.log("row", row);
const
params
=
{
// domains: row.tags[0],
selectedDate
:
JSON
.
stringify
([
row
.
year
+
"-01-01"
,
row
.
year
+
"-12-31"
])
};
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/sDNListEvent"
,
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 点击中国军事工业复合体企业清单(CMIC)更新频度
const
handleCommercialRowClick
=
row
=>
{
console
.
log
(
"row"
,
row
);
const
params
=
{
selectedDate
:
JSON
.
stringify
([
row
.
year
+
"-01-01"
,
row
.
year
+
"-12-31"
])
};
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/mREListEvent"
,
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 点击制裁领域分布
const
handleRadarChartClick
=
value
=>
{
const
params
=
{
isHalfRule
:
domainChecked
.
value
};
let
route
if
(
domainChecked
.
value
)
{
route
=
router
.
resolve
({
path
:
"/dataLibrary/sDNList"
,
query
:
params
});
}
else
{
route
=
router
.
resolve
({
path
:
"/dataLibrary/sDNList"
,
});
}
window
.
open
(
route
.
href
,
"_blank"
);
};
// 点击制裁清单数量增长趋势
const
handleMultiBarChartClick
=
val
=>
{
const
params
=
{
isHalfRule
:
trendChecked
.
value
,
domains
:
val
.
seriesName
,
isCnEntityOnly
:
true
,
selectedDate
:
JSON
.
stringify
([
val
.
name
+
"-01-01"
,
val
.
name
+
"-12-31"
])
};
const
route
=
router
.
resolve
({
path
:
selectedEntityId
.
value
===
2
?
"/dataLibrary/sDNList"
:
"/dataLibrary/mREList"
,
query
:
params
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 跳转到数据资源库
const
handleToDataLibrary
=
(
item
)
=>
{
const
route
=
router
.
resolve
({
path
:
"/dataLibrary/sDNList"
,
query
:
{
isCnEntityOnly
:
true
,
selectedDate
:
JSON
.
stringify
([
item
.
postDate
,
item
.
postDate
])
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
onMounted
(
async
()
=>
{
console
.
log
(
"finance 页面 mounted"
);
try
{
...
...
src/views/finance/utils/charts.js
浏览文件 @
87899162
...
...
@@ -973,7 +973,7 @@ export const getMultipleBarChart_m = object => {
const
option
=
{
tooltip
:
{
trigger
:
"
axis
"
,
trigger
:
"
item
"
,
axisPointer
:
{
type
:
"shadow"
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论