Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
6db3f5e1
提交
6db3f5e1
authored
12月 19, 2025
作者:
闫鹏
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'yp-dev' 到 'master'
Yp dev 查看合并请求
!46
上级
ea5dc781
f0612c8b
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
130 行增加
和
29 行删除
+130
-29
exportControl.js
src/api/exportControl.js
+28
-3
buttonList.vue
src/components/buttonList/buttonList.vue
+1
-0
fishbone-mock.json
...iews/exportControl/analysis/components/fishbone-mock.json
+0
-0
influencePanel2.vue
...ews/exportControl/analysis/components/influencePanel2.vue
+16
-3
panel1.vue
src/views/exportControl/analysis/components/panel1.vue
+17
-3
panel2.vue
src/views/exportControl/analysis/components/panel2.vue
+21
-7
panel3.vue
src/views/exportControl/analysis/components/panel3.vue
+1
-1
panel4.vue
src/views/exportControl/analysis/components/panel4.vue
+2
-2
overview.vue
src/views/exportControl/analysis/content/overview.vue
+32
-8
dialog.vue
src/views/exportControl/components/dialog.vue
+12
-2
index.vue
src/views/exportControl/index.vue
+0
-0
没有找到文件。
src/api/exportControl.js
浏览文件 @
6db3f5e1
...
@@ -88,7 +88,7 @@ export function getIndustryCountByYear(sanTypeId) {
...
@@ -88,7 +88,7 @@ export function getIndustryCountByYear(sanTypeId) {
* domains: string[]
* domains: string[]
* }>}
* }>}
*/
*/
export
function
getCountDomainByYear
(
isRule
,
startYear
=
"2020"
,
endYear
=
new
Date
().
getFullYear
(
))
{
export
function
getCountDomainByYear
(
isRule
,
startYear
=
"2020"
,
endYear
=
String
(
new
Date
().
getFullYear
()
))
{
return
request200
(
return
request200
(
request
({
request
({
method
:
"POST"
,
method
:
"POST"
,
...
@@ -162,6 +162,30 @@ export function getOrganizationInfo(sanTypeId = 1) {
...
@@ -162,6 +162,30 @@ export function getOrganizationInfo(sanTypeId = 1) {
);
);
}
}
/**
* 风险信号
*/
export
function
getRiskSignal
(
moduleId
=
"0103"
)
{
return
request200
(
request
({
method
:
"GET"
,
url
:
`/api/commonFeature/riskSignal/
${
moduleId
}
`
})
);
}
/**
* 社交媒体
*/
export
function
getSocialMediaInfo
(
moduleId
=
"0103"
)
{
return
request200
(
request
({
method
:
"GET"
,
url
:
`/api/commonFeature/remarks/
${
moduleId
}
`
})
);
}
/**
/**
* 查询重点人物
* 查询重点人物
* @returns {Promise<{
* @returns {Promise<{
...
@@ -527,9 +551,10 @@ export function getCountSanTypeByTime(startTime) {
...
@@ -527,9 +551,10 @@ export function getCountSanTypeByTime(startTime) {
return
request200
(
return
request200
(
request
({
request
({
method
:
"GET"
,
method
:
"GET"
,
url
:
"/api/entitiesDataCount/countSanTypeByTime"
,
// url: "/api/entitiesDataCount/countSanTypeByTime",
url
:
"/api/entitiesDataInfo/getTypeDistribution"
,
params
:
{
params
:
{
s
tartTime
s
anctionDate
:
startTime
||
"2025-11-11"
}
}
})
})
);
);
...
...
src/components/buttonList/buttonList.vue
浏览文件 @
6db3f5e1
...
@@ -62,5 +62,6 @@ function setActiveIndex(item) {
...
@@ -62,5 +62,6 @@ function setActiveIndex(item) {
display
:
flex
;
display
:
flex
;
gap
:
8px
;
gap
:
8px
;
overflow-x
:
auto
;
overflow-x
:
auto
;
flex-wrap
:
wrap
;
}
}
</
style
>
</
style
>
src/views/exportControl/analysis/components/fishbone-mock.json
浏览文件 @
6db3f5e1
差异被折叠。
点击展开。
src/views/exportControl/analysis/components/influencePanel2.vue
浏览文件 @
6db3f5e1
<
template
>
<
template
>
<div
class=
"influencePanel2"
>
<div
class=
"influencePanel2"
>
<CardCustom
title=
"涉及行业"
:style=
"
{ width: '
48
0px', height: '860px' }">
<CardCustom
title=
"涉及行业"
:style=
"
{ width: '
50
0px', height: '860px' }">
<div
class=
"subPanel1"
>
<div
class=
"subPanel1"
>
<div
class=
"chartsWrap"
>
<div
class=
"chartsWrap"
>
<Echarts
:option=
"horizontalBarOptions"
height=
"100%"
></Echarts>
<Echarts
:option=
"horizontalBarOptions"
height=
"100%"
></Echarts>
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<ButtonList
:list=
"buttonList"
:active-id=
"activeButtonId"
@
click=
"setActiveButtonId"
></ButtonList>
<ButtonList
:list=
"buttonList"
:active-id=
"activeButtonId"
@
click=
"setActiveButtonId"
></ButtonList>
</div>
</div>
<div
class=
"listWrap"
>
<div
class=
"listWrap"
>
<div
class=
"item"
v-for=
"(item, index) in listData"
:key=
"index"
>
<div
class=
"item"
v-for=
"(item, index) in listData"
:key=
"index"
@
click=
"handleEttClick(item)"
>
<div
class=
"index"
:class=
"
{ isTopTen: index
<
10
}"
>
{{
index
+
1
}}
</div>
<div
class=
"index"
:class=
"
{ isTopTen: index
<
10
}"
>
{{
index
+
1
}}
</div>
<div
class=
"name"
>
{{
item
.
name
}}
</div>
<div
class=
"name"
>
{{
item
.
name
}}
</div>
<div
class=
"icon"
:class=
"
{ iconUp: item.isUp, iconDown: !item.isUp }">
</div>
<div
class=
"icon"
:class=
"
{ iconUp: item.isUp, iconDown: !item.isUp }">
</div>
...
@@ -78,8 +78,9 @@ import ButtonList from "@/components/buttonList/buttonList.vue";
...
@@ -78,8 +78,9 @@ import ButtonList from "@/components/buttonList/buttonList.vue";
import
Fishbone
from
"./fishbone.vue"
;
import
Fishbone
from
"./fishbone.vue"
;
import
{
getHorizontalBarChart2
}
from
"../../utils/charts"
;
import
{
getHorizontalBarChart2
}
from
"../../utils/charts"
;
import
{
getDomainDistribution
,
getChainEntities
}
from
"@/api/exportControl"
;
import
{
getDomainDistribution
,
getChainEntities
}
from
"@/api/exportControl"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
,
useRouter
}
from
"vue-router"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
buttonList
=
ref
([]);
const
buttonList
=
ref
([]);
const
activeButtonId
=
ref
(
buttonList
.
value
[
0
]?.
id
||
1
);
const
activeButtonId
=
ref
(
buttonList
.
value
[
0
]?.
id
||
1
);
const
setActiveButtonId
=
id
=>
{
const
setActiveButtonId
=
id
=>
{
...
@@ -141,6 +142,15 @@ const listData = ref([
...
@@ -141,6 +142,15 @@ const listData = ref([
]);
]);
const
horizontalBarOptions
=
shallowRef
({});
const
horizontalBarOptions
=
shallowRef
({});
const
handleEttClick
=
item
=>
{
const
route
=
router
.
resolve
({
path
:
"/companyPages"
,
query
:
{
id
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
// 获取领域分布数据并更新图表
// 获取领域分布数据并更新图表
const
fetchDomainDistribution
=
async
()
=>
{
const
fetchDomainDistribution
=
async
()
=>
{
try
{
try
{
...
@@ -181,6 +191,7 @@ const fetchChainEntities = async () => {
...
@@ -181,6 +191,7 @@ const fetchChainEntities = async () => {
console
.
log
(
"data data"
,
data
);
console
.
log
(
"data data"
,
data
);
// 更新 listData
// 更新 listData
listData
.
value
=
data
.
map
(
item
=>
({
listData
.
value
=
data
.
map
(
item
=>
({
...
item
,
name
:
item
.
orgNameZh
,
name
:
item
.
orgNameZh
,
isUp
:
item
.
isUp
isUp
:
item
.
isUp
}));
}));
...
@@ -367,6 +378,8 @@ watch(() => activeButtonId.value, fetchChainEntities);
...
@@ -367,6 +378,8 @@ watch(() => activeButtonId.value, fetchChainEntities);
flex-direction
:
column
;
flex-direction
:
column
;
.chartsWrap
{
.chartsWrap
{
height
:
200px
;
height
:
200px
;
display
:
flex
;
// flex: 1;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
4px
;
border-radius
:
4px
;
background
:
rgba
(
247
,
248
,
249
,
1
);
background
:
rgba
(
247
,
248
,
249
,
1
);
...
...
src/views/exportControl/analysis/components/panel1.vue
浏览文件 @
6db3f5e1
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
<div
class=
"subPanel4"
>
<div
class=
"subPanel4"
>
<div
class=
"listWrap"
>
<div
class=
"listWrap"
>
<div
class=
"item"
v-for=
"(item, index) in subPanel4"
:key=
"index"
>
<div
class=
"item"
v-for=
"(item, index) in subPanel4"
:key=
"index"
>
<div
class=
"name"
>
{{ item.name }}
</div>
<div
class=
"name"
@
click=
"handleOrgClick(item)"
>
{{ item.name }}
</div>
<div
class=
"tags"
>
<div
class=
"tags"
>
<div
<div
class=
"tagItem"
class=
"tagItem"
...
@@ -94,8 +94,9 @@ import { getBarChart, getLineChart } from "../../utils/charts";
...
@@ -94,8 +94,9 @@ import { getBarChart, getLineChart } from "../../utils/charts";
import
Hint
from
"./hint.vue"
;
import
Hint
from
"./hint.vue"
;
import
{
getEntitiesChangeCount
,
getEntitiesGrowthTrend
,
getEntitiesUpdateCount
,
getKeyEntityList
}
from
"@/api/exportControl"
;
import
{
getEntitiesChangeCount
,
getEntitiesGrowthTrend
,
getEntitiesUpdateCount
,
getKeyEntityList
}
from
"@/api/exportControl"
;
import
_
from
"lodash"
;
import
_
from
"lodash"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
,
useRouter
}
from
"vue-router"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
line1Option
=
shallowRef
({});
const
line1Option
=
shallowRef
({});
const
bar2Option
=
shallowRef
({});
const
bar2Option
=
shallowRef
({});
...
@@ -111,6 +112,7 @@ const fetchKeyEntityList = async (date = "2025-11-11", keyword = "") => {
...
@@ -111,6 +112,7 @@ const fetchKeyEntityList = async (date = "2025-11-11", keyword = "") => {
const
name
=
item
.
orgNameZh
||
item
.
orgName
||
"未知实体"
;
const
name
=
item
.
orgNameZh
||
item
.
orgName
||
"未知实体"
;
return
{
return
{
...
item
,
name
,
name
,
tags
:
item
.
domainList
||
[]
tags
:
item
.
domainList
||
[]
};
};
...
@@ -261,7 +263,7 @@ const typeOptions = [
...
@@ -261,7 +263,7 @@ const typeOptions = [
}
}
];
];
const
domainValue
=
ref
(
domainOptions
[
0
].
value
);
const
domainValue
=
ref
(
domainOptions
[
0
].
value
);
const
typeValue
=
ref
(
typeOptions
[
0
].
value
);
const
typeValue
=
ref
(
typeOptions
[
1
].
value
);
const
bar1Option
=
shallowRef
({});
const
bar1Option
=
shallowRef
({});
const
bar1DataIsEmpty
=
ref
(
false
);
const
bar1DataIsEmpty
=
ref
(
false
);
watch
(
watch
(
...
@@ -338,6 +340,17 @@ watch(
...
@@ -338,6 +340,17 @@ watch(
const
handleDomainChange
=
async
domain
=>
{
const
handleDomainChange
=
async
domain
=>
{
await
fetchKeyEntityList
(
route
.
query
.
startTime
,
value3
.
value
,
domain
);
await
fetchKeyEntityList
(
route
.
query
.
startTime
,
value3
.
value
,
domain
);
};
};
const
handleOrgClick
=
item
=>
{
console
.
log
(
item
);
const
route
=
router
.
resolve
({
path
:
"/companyPages"
,
query
:
{
id
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -389,6 +402,7 @@ const handleDomainChange = async domain => {
...
@@ -389,6 +402,7 @@ const handleDomainChange = async domain => {
overflow
:
hidden
;
overflow
:
hidden
;
margin-right
:
11px
;
margin-right
:
11px
;
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
cursor
:
pointer
;
}
}
.tags
{
.tags
{
display
:
flex
;
display
:
flex
;
...
...
src/views/exportControl/analysis/components/panel2.vue
浏览文件 @
6db3f5e1
...
@@ -45,13 +45,13 @@
...
@@ -45,13 +45,13 @@
<div
class=
"subPanel4"
>
<div
class=
"subPanel4"
>
<div
class=
"listWrap"
>
<div
class=
"listWrap"
>
<div
class=
"item"
v-for=
"(item, index) in subPanel4"
:key=
"index"
>
<div
class=
"item"
v-for=
"(item, index) in subPanel4"
:key=
"index"
>
<div
class=
"name"
>
{{ item.name }}
</div>
<div
class=
"name"
@
click=
"handleOrgClick(item)"
>
{{ item.name }}
</div>
<div
class=
"infoWrap"
>
<div
class=
"infoWrap"
>
<div
class=
"shizhi"
>
{{ item.shizhi }}
</div>
<div
class=
"shizhi"
>
{{ item.shizhi }}
</div>
<div
class=
"address"
>
{{ item.address }}
</div>
<div
class=
"address"
>
{{ item.address }}
</div>
<div
class=
"hangye"
>
{{ item.hangye }}
</div>
<div
class=
"hangye"
>
{{ item.hangye }}
</div>
<div
class=
"type"
>
{{ item.type }}
</div>
<div
class=
"type"
>
{{ item.type }}
</div>
<div
class=
"detail"
>
查看详情
</div>
<div
class=
"detail"
@
click=
"handleOrgClick(item)"
>
查看详情
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -73,8 +73,9 @@ import { getBarChart, getLineChart } from "../../utils/charts";
...
@@ -73,8 +73,9 @@ import { getBarChart, getLineChart } from "../../utils/charts";
import
_
from
"lodash"
;
import
_
from
"lodash"
;
import
Hint
from
"./hint.vue"
;
import
Hint
from
"./hint.vue"
;
import
{
getEntityFinancing
,
getEntityMarketValue
,
getKeyListedEntityList
,
getSanStrength
}
from
"@/api/exportControl"
;
import
{
getEntityFinancing
,
getEntityMarketValue
,
getKeyListedEntityList
,
getSanStrength
}
from
"@/api/exportControl"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
,
useRouter
}
from
"vue-router"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
options
=
[
const
options
=
[
{
{
value
:
"1"
,
value
:
"1"
,
...
@@ -147,6 +148,7 @@ const fetchKeyListedEntityList = async (keyword = "") => {
...
@@ -147,6 +148,7 @@ const fetchKeyListedEntityList = async (keyword = "") => {
const
type
=
item
.
orgType
||
"企业"
;
const
type
=
item
.
orgType
||
"企业"
;
return
{
return
{
...
item
,
name
,
name
,
shizhi
:
`市值:
${
marketValue
}
`
,
shizhi
:
`市值:
${
marketValue
}
`
,
address
:
`地址:
${
address
}
`
,
address
:
`地址:
${
address
}
`
,
...
@@ -229,12 +231,12 @@ const fetchEntityMarketValue = async () => {
...
@@ -229,12 +231,12 @@ const fetchEntityMarketValue = async () => {
// 按日期排序
// 按日期排序
const
sortedData
=
data
const
sortedData
=
data
.
sort
((
a
,
b
)
=>
{
.
sort
((
a
,
b
)
=>
{
return
new
Date
(
a
.
name
)
-
new
Date
(
b
.
name
);
return
new
Date
(
a
.
year
)
-
new
Date
(
b
.
year
);
})
})
.
filter
((
item
,
idx
)
=>
idx
%
3
===
0
);
.
filter
((
item
,
idx
)
=>
idx
%
3
===
0
);
// 提取 x 轴数据(日期)
// 提取 x 轴数据(日期)
const
xAxisData
=
sortedData
.
map
(
item
=>
item
.
name
);
const
xAxisData
=
sortedData
.
map
(
item
=>
item
.
year
);
// 提取 y 轴数据(市值数据)
// 提取 y 轴数据(市值数据)
const
seriesData
=
sortedData
.
map
(
item
=>
item
.
count
);
const
seriesData
=
sortedData
.
map
(
item
=>
item
.
count
);
...
@@ -258,12 +260,12 @@ const fetchSanStrength = async () => {
...
@@ -258,12 +260,12 @@ const fetchSanStrength = async () => {
// 按日期排序
// 按日期排序
const
sortedData
=
data
const
sortedData
=
data
.
sort
((
a
,
b
)
=>
{
.
sort
((
a
,
b
)
=>
{
return
new
Date
(
a
.
name
)
-
new
Date
(
b
.
name
);
return
new
Date
(
a
.
year
)
-
new
Date
(
b
.
year
);
})
})
.
filter
((
item
,
idx
)
=>
idx
%
3
===
0
);
.
filter
((
item
,
idx
)
=>
idx
%
3
===
0
);
// 提取 x 轴数据(日期)
// 提取 x 轴数据(日期)
const
xAxisData
=
sortedData
.
map
(
item
=>
item
.
name
);
const
xAxisData
=
sortedData
.
map
(
item
=>
item
.
year
);
// 提取 y 轴数据(市值数据)
// 提取 y 轴数据(市值数据)
const
seriesData
=
sortedData
.
map
(
item
=>
item
.
count
);
const
seriesData
=
sortedData
.
map
(
item
=>
item
.
count
);
...
@@ -310,6 +312,17 @@ watch(
...
@@ -310,6 +312,17 @@ watch(
await
fetchKeyListedEntityList
(
newVal
);
await
fetchKeyListedEntityList
(
newVal
);
},
300
)
},
300
)
);
);
const
handleOrgClick
=
item
=>
{
console
.
log
(
item
);
const
route
=
router
.
resolve
({
path
:
"/companyPages"
,
query
:
{
id
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -359,6 +372,7 @@ watch(
...
@@ -359,6 +372,7 @@ watch(
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
line-height
:
24px
;
line-height
:
24px
;
cursor
:
pointer
;
}
}
.infoWrap
{
.infoWrap
{
display
:
flex
;
display
:
flex
;
...
...
src/views/exportControl/analysis/components/panel3.vue
浏览文件 @
6db3f5e1
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
</CardCustom>
</CardCustom>
</div>
</div>
<div
class=
"row"
>
<div
class=
"row"
>
<CardCustom
title=
"历
年
制裁涉及领域数"
:style=
"
{ width: '798px', height: '422px' }">
<CardCustom
title=
"历
次
制裁涉及领域数"
:style=
"
{ width: '798px', height: '422px' }">
<div
class=
"subPanel3"
>
<div
class=
"subPanel3"
>
<div
class=
"chartsWrap"
:style=
"
{ paddingBottom: '10px' }">
<div
class=
"chartsWrap"
:style=
"
{ paddingBottom: '10px' }">
<Echarts
:option=
"bar2Option"
height=
"100%"
></Echarts>
<Echarts
:option=
"bar2Option"
height=
"100%"
></Echarts>
...
...
src/views/exportControl/analysis/components/panel4.vue
浏览文件 @
6db3f5e1
<
template
>
<
template
>
<div
class=
"panel4Wrap"
>
<div
class=
"panel4Wrap"
>
<div
class=
"row"
>
<div
class=
"row"
>
<CardCustom
title=
"新增实体
领域
分布情况"
:style=
"
{ width: '798px', height: '422px' }">
<CardCustom
title=
"新增实体
类别
分布情况"
:style=
"
{ width: '798px', height: '422px' }">
<div
class=
"subPanel1"
>
<div
class=
"subPanel1"
>
<div
class=
"chartsWrap"
:style=
"
{ paddingBottom: '10px' }">
<div
class=
"chartsWrap"
:style=
"
{ paddingBottom: '10px' }">
<Echarts
:option=
"pie1Option"
height=
"100%"
></Echarts>
<Echarts
:option=
"pie1Option"
height=
"100%"
></Echarts>
...
@@ -66,7 +66,7 @@ onMounted(async () => {
...
@@ -66,7 +66,7 @@ onMounted(async () => {
pie1Option
.
value
=
getPieOption1
(
pie1Option
.
value
=
getPieOption1
(
_
.
map
(
countSanTypeByTimeData
??
[],
item
=>
{
_
.
map
(
countSanTypeByTimeData
??
[],
item
=>
{
return
{
return
{
name
:
item
?.
typ
e
,
name
:
item
?.
nam
e
,
value
:
item
?.
count
value
:
item
?.
count
};
};
})
})
...
...
src/views/exportControl/analysis/content/overview.vue
浏览文件 @
6db3f5e1
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
</CardCustom>
</CardCustom>
<CardCustom
title=
"重点人物"
:style=
"
{ width: '600px', height: '284px' }">
<CardCustom
title=
"重点人物"
:style=
"
{ width: '600px', height: '284px' }">
<div
class=
"panel2"
>
<div
class=
"panel2"
>
<div
class=
"item"
v-for=
"(item, index) in personLis"
:key=
"index"
>
<div
class=
"item"
v-for=
"(item, index) in personLis"
:key=
"index"
@
click=
"handlePerClick(item)"
>
<img
:src=
"item.img"
alt=
""
class=
"img"
/>
<img
:src=
"item.img"
alt=
""
class=
"img"
/>
<div
class=
"infoWrap"
>
<div
class=
"infoWrap"
>
<div
class=
"name"
>
{{
item
.
name
}}
</div>
<div
class=
"name"
>
{{
item
.
name
}}
</div>
...
@@ -76,13 +76,13 @@
...
@@ -76,13 +76,13 @@
<CardCustom
title=
"实体清单列表"
:style=
"{ width: '984px', height: '678px' }"
>
<CardCustom
title=
"实体清单列表"
:style=
"{ width: '984px', height: '678px' }"
>
<
template
#
right
>
<
template
#
right
>
<el-checkbox
v-model=
"panel5IsChecked"
label=
"只看中国实体"
size=
"large"
:style=
"
{ marginRight: '15px' }" />
<el-checkbox
v-model=
"panel5IsChecked"
label=
"只看中国实体"
size=
"large"
:style=
"
{ marginRight: '15px' }" />
<ButtonList
<
!--
<
ButtonList
:list=
"panel5ButtonList"
:list=
"panel5ButtonList"
:gap=
"8"
:gap=
"8"
:active-id=
"panel5ButtonAcitveID"
:active-id=
"panel5ButtonAcitveID"
@
click=
"panel5SetButtonAcitveID"
@
click=
"panel5SetButtonAcitveID"
:style=
"
{ marginRight: '15px' }"
:style=
"
{ marginRight: '15px' }"
>
</ButtonList>
>
</ButtonList>
-->
</
template
>
</
template
>
<div
class=
"panel5"
>
<div
class=
"panel5"
>
<div
class=
"hintWrap"
>
<div
class=
"hintWrap"
>
...
@@ -105,7 +105,7 @@
...
@@ -105,7 +105,7 @@
>
>
<el-table-column
prop=
"name"
label=
"实体清单"
min-width=
"180"
>
<el-table-column
prop=
"name"
label=
"实体清单"
min-width=
"180"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<div
style=
"font-weight: 500"
class=
"name"
>
<div
style=
"font-weight: 500"
class=
"name"
@
click=
"handleOrgClick(row)"
>
<img
v-if=
"row.img"
:src=
"row.img"
alt=
""
class=
"img"
/>
<img
v-if=
"row.img"
:src=
"row.img"
alt=
""
class=
"img"
/>
<div
v-else
class=
"imgUndefined"
>
<div
v-else
class=
"imgUndefined"
>
{{
row
.
name
?.
match
(
/
[\u
4e00-
\u
9fa5a-zA-Z0-9
]
/
)?.[
0
]
}}
{{
row
.
name
?.
match
(
/
[\u
4e00-
\u
9fa5a-zA-Z0-9
]
/
)?.[
0
]
}}
...
@@ -131,7 +131,7 @@
...
@@ -131,7 +131,7 @@
</template>
</template>
</el-table-column> -->
</el-table-column> -->
<el-table-column
prop=
"time"
label=
"制裁时间"
width=
"1
2
0"
align=
"center"
>
<el-table-column
prop=
"time"
label=
"制裁时间"
width=
"1
5
0"
align=
"center"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
{{
row
.
time
}}
{{
row
.
time
}}
</
template
>
</
template
>
...
@@ -143,7 +143,7 @@
...
@@ -143,7 +143,7 @@
</template>
</template>
</el-table-column> -->
</el-table-column> -->
<el-table-column
prop=
"subCompany"
label=
"50%规则子企业"
min-width=
"140"
align=
"
left
"
>
<el-table-column
prop=
"subCompany"
label=
"50%规则子企业"
min-width=
"140"
align=
"
center
"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<span
class=
"subCompany"
>
<span
class=
"subCompany"
>
{{
row
.
subCompany
}}
{{
row
.
subCompany
}}
...
@@ -206,9 +206,10 @@ import {
...
@@ -206,9 +206,10 @@ import {
}
from
"@/api/exportControl"
;
}
from
"@/api/exportControl"
;
import
_
from
"lodash"
;
import
_
from
"lodash"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
,
useRouter
}
from
"vue-router"
;
import
{
formatAnyDateToChinese
}
from
"../../utils"
;
import
{
formatAnyDateToChinese
}
from
"../../utils"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
organizationInfo
=
shallowRef
({});
const
organizationInfo
=
shallowRef
({});
const
personLis
=
shallowRef
([
const
personLis
=
shallowRef
([
// {
// {
...
@@ -254,6 +255,17 @@ const sanReasonSelect = shallowRef([
...
@@ -254,6 +255,17 @@ const sanReasonSelect = shallowRef([
}
}
]);
]);
const
handlePerClick
=
item
=>
{
console
.
log
(
item
);
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
:
item
.
type
||
[
1
,
2
,
3
][
Math
.
floor
(
Math
.
random
()
*
3
)]
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
const
panel5IsChecked
=
ref
(
true
);
const
panel5IsChecked
=
ref
(
true
);
const
selectEntitiesList
=
shallowRef
([]);
const
selectEntitiesList
=
shallowRef
([]);
...
@@ -285,7 +297,7 @@ onMounted(async () => {
...
@@ -285,7 +297,7 @@ onMounted(async () => {
enName
:
item
.
enName
,
enName
:
item
.
enName
,
position
:
item
.
position
,
position
:
item
.
position
,
party
:
item
.
party
,
party
:
item
.
party
,
img
:
item
.
avatar
Url
img
:
item
.
image
Url
};
};
});
});
sanReasonSelect
.
value
=
_
.
map
(
sanReasonSelectData
,
item
=>
{
sanReasonSelect
.
value
=
_
.
map
(
sanReasonSelectData
,
item
=>
{
...
@@ -509,6 +521,16 @@ const panel6 = ref([
...
@@ -509,6 +521,16 @@ const panel6 = ref([
desc
:
'美国将对华关税从34%提升至84%(总税率104%),中方同步对美商品加征同等税率,并暂停进口美国影片、限制留学合作。特朗普政府通过"基准关税+对等关税+额外加征"策略施压,引发全球供应链震荡。'
desc
:
'美国将对华关税从34%提升至84%(总税率104%),中方同步对美商品加征同等税率,并暂停进口美国影片、限制留学合作。特朗普政府通过"基准关税+对等关税+额外加征"策略施压,引发全球供应链震荡。'
}
}
]);
]);
const
handleOrgClick
=
item
=>
{
console
.
log
(
item
);
const
route
=
router
.
resolve
({
path
:
"/companyPages"
,
query
:
{
id
:
item
.
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -585,6 +607,7 @@ const panel6 = ref([
...
@@ -585,6 +607,7 @@ const panel6 = ref([
background
:
rgba
(
231
,
243
,
255
,
0
.5
);
background
:
rgba
(
231
,
243
,
255
,
0
.5
);
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
cursor
:
pointer
;
.img
{
.img
{
width
:
70px
;
width
:
70px
;
height
:
70px
;
height
:
70px
;
...
@@ -769,6 +792,7 @@ const panel6 = ref([
...
@@ -769,6 +792,7 @@ const panel6 = ref([
.name
{
.name
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
cursor
:
pointer
;
.img
{
.img
{
width
:
40px
;
width
:
40px
;
height
:
40px
;
height
:
40px
;
...
...
src/views/exportControl/components/dialog.vue
浏览文件 @
6db3f5e1
<
template
>
<
template
>
<div
class=
"message-bubble"
>
<div
class=
"message-bubble"
>
<div
class=
"avatar-container"
>
<div
class=
"avatar-container"
@
click=
"handleClick"
>
<img
:src=
"avatar"
:alt=
"name"
class=
"avatar"
/>
<img
:src=
"avatar"
:alt=
"name"
class=
"avatar"
/>
</div>
</div>
<div
class=
"bubble-container"
>
<div
class=
"bubble-container"
>
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<span
class=
"name"
>
{{
name
}}
</span>
<span
class=
"name"
>
{{
name
}}
</span>
<span
class=
"meta"
>
{{
time
}}
·
{{
source
}}
</span>
<span
class=
"meta"
>
{{
time
}}
·
{{
source
}}
</span>
</div>
</div>
<div
class=
"bubble-content"
>
<div
class=
"bubble-content"
@
click=
"handleInfoClick"
>
{{
content
}}
{{
content
}}
</div>
</div>
<div
class=
"triangle"
></div>
<div
class=
"triangle"
></div>
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
const
emit
=
defineEmits
([
"click"
]);
defineProps
({
defineProps
({
avatar
:
{
avatar
:
{
type
:
String
,
type
:
String
,
...
@@ -42,6 +43,13 @@ defineProps({
...
@@ -42,6 +43,13 @@ defineProps({
"埃隆·马斯克在强力支持我竞选总统之前,早就知道我强烈反对‘电动汽车强制令’。这太荒谬了,这一直是我竞选活动的主要部分。电动汽车没问题,但不应该强迫每个人都拥有一辆。埃隆获得的补贴可能远远超过历史上任何一个人。如果没有补贴,埃隆可能不得不关门大吉,回到南非老家。"
"埃隆·马斯克在强力支持我竞选总统之前,早就知道我强烈反对‘电动汽车强制令’。这太荒谬了,这一直是我竞选活动的主要部分。电动汽车没问题,但不应该强迫每个人都拥有一辆。埃隆获得的补贴可能远远超过历史上任何一个人。如果没有补贴,埃隆可能不得不关门大吉,回到南非老家。"
}
}
});
});
const
handleClick
=
()
=>
{
emit
(
"click"
);
};
const
handleInfoClick
=
()
=>
{
emit
(
"info-click"
);
};
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
...
@@ -54,6 +62,8 @@ defineProps({
...
@@ -54,6 +62,8 @@ defineProps({
.avatar-container
{
.avatar-container
{
flex-shrink
:
0
;
flex-shrink
:
0
;
flex-grow
:
0
;
flex
:
0
;
margin-right
:
12px
;
margin-right
:
12px
;
}
}
...
...
src/views/exportControl/index.vue
浏览文件 @
6db3f5e1
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论