Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
9ca77a28
提交
9ca77a28
authored
12月 30, 2025
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
dbb9d172
隐藏空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
1301 行增加
和
543 行删除
+1301
-543
index.js
src/api/common/index.js
+26
-0
index.js
src/api/marketAccessRestrictions/index.js
+114
-0
index.vue
src/views/comprehensiveSearch/chat/index.vue
+162
-1
index.vue
src/views/decree/decreeLayout/deepdig/index.vue
+4
-4
index.vue
src/views/decree/decreeLayout/index.vue
+4
-2
index.vue
src/views/decree/decreeLayout/influence/index.vue
+2
-1
index.vue
src/views/decree/decreeLayout/overview/background/index.vue
+15
-15
index.vue
src/views/decree/decreeLayout/overview/index.vue
+2
-1
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+4
-3
index.vue
...views/marketAccessRestrictions/marketAccessHome/index.vue
+919
-482
barChart.js
...rketAccessRestrictions/marketAccessHome/utils/barChart.js
+1
-1
multiLineChart.js
...cessRestrictions/marketAccessHome/utils/multiLineChart.js
+12
-10
radarChart.js
...etAccessRestrictions/marketAccessHome/utils/radarChart.js
+21
-15
index.vue
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
+2
-2
piechart.js
...ews/thinkTank/ThinkTankDetail/thinkInfo/utils/piechart.js
+1
-1
piechart.js
src/views/thinkTank/utils/piechart.js
+12
-5
没有找到文件。
src/api/common/index.js
0 → 100644
浏览文件 @
9ca77a28
import
request
from
"@/api/request.js"
;
// 风险信号
export
function
getRiskSignal
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonFeature/riskSignal/
${
params
.
moduleId
}
`
,
})
}
// 新闻资讯
export
function
getNews
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonFeature/news/
${
params
.
moduleId
}
`
,
})
}
// 社交媒体
export
function
getRemarks
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonFeature/remarks/
${
params
.
moduleId
}
`
,
})
}
\ No newline at end of file
src/api/marketAccessRestrictions/index.js
0 → 100644
浏览文件 @
9ca77a28
import
request
from
"@/api/request.js"
;
// 概览页--------------------------------------------------------------------
// 概览统计
export
function
getStatCount
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statCount`
})
}
// 分类接口
export
function
getStatSort
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statSort`
})
}
// 调查进展
export
function
getStatDetails
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statDetails`
})
}
// 调查数量
/**
* @param {byYorM}
*/
export
function
getStatNum
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statNum`
,
params
})
}
// 制裁领域分布
/**
* @param {years}
*/
export
function
getStatArea
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statArea`
,
params
})
}
// 受调查企业地域分布
/**
* @param {years}
*/
export
function
getCompanyPlace
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/getOrgDistribution`
,
params
})
}
// 制裁领域分布-企业接口分布
/**
* @param {years}
*/
export
function
getStatAreaCompanyList
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/getOrgSanctionsDomain`
,
})
}
// 资源库
// 左侧行业领域列表
export
function
getHylyList
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/billImpactAnalysis/industry/hylyList`
,
})
}
// 获取调查列表接口
/**
* @param {currentPage, pageSize, sortCode, publishYear, Area, sortField, sortOrder}
*/
export
function
getSurveyList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statList`
,
params
})
}
// 详情页---------------------------------------------------
// 获取调查列表接口
/**
* @param { sortCode }
*/
export
function
getSurvyInfo
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statSortDetails`
,
params
})
}
\ No newline at end of file
src/views/comprehensiveSearch/chat/index.vue
浏览文件 @
9ca77a28
...
@@ -67,6 +67,48 @@
...
@@ -67,6 +67,48 @@
class=
"content ai-content"
class=
"content ai-content"
v-html=
"renderMarkdown(message.content)"
v-html=
"renderMarkdown(message.content)"
></div>
></div>
<div
v-if=
"message.raw_data"
class=
"answer-title"
>
完整实体列表
</div>
<div
v-if=
"message.raw_data"
class=
"content row-content"
>
<div
class=
"row-header"
>
<div
class=
"row-header-item1"
>
{{
message
.
raw_data
.
columns
.
name_zhs
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
.
date
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
.
industry
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
.
category
}}
</div>
<div
class=
"row-header-item2"
>
{{
message
.
raw_data
.
columns
.
sanction_reason
}}
</div>
</div>
<div
class=
"row-main"
>
<div
class=
"row-main-item"
v-for=
"(item, index) in message.raw_data.rows"
:key=
"index"
>
<el-popover
effect=
"dark"
:width=
"500"
:content=
"item.name_zhs"
placement=
"top-start"
>
<template
#
reference
>
<div
class=
"item-item1"
>
{{
item
.
name_zhs
}}
</div>
</
template
>
</el-popover>
<div
class=
"item-item"
>
{{ item.date }}
</div>
<div
class=
"item-item"
>
{{ item.industry }}
</div>
<div
class=
"item-item"
>
{{ item.category }}
</div>
<el-popover
effect=
"dark"
:width=
"400"
:content=
"item.sanction_reason"
placement=
"top-start"
>
<
template
#
reference
>
<div
class=
"item-item2"
>
{{
item
.
sanction_reason
}}
</div>
</
template
>
</el-popover>
</div>
</div>
</div>
</div>
</div>
<!-- 用户消息 -->
<!-- 用户消息 -->
<div
v-else
class=
"user-item"
>
<div
v-else
class=
"user-item"
>
...
@@ -184,7 +226,39 @@ const messages = ref([
...
@@ -184,7 +226,39 @@ const messages = ref([
// source: [
// source: [
// `完整检索实体名单: \n\n 中国科学院空天信息创新研究院\n\n北京复旦微电子技术有限公司\n\n北京天宜源生物科技有限公司\n\n北京擎科生物科技有限公司\n长沙南飞电子技术有限公司\n常州南飞微电子有限公司\n成都南飞微电子有限公司\n中国科学院国家授时中心\n吉姆西半导体科技(无锡)有限公司\n香港德铭电子有限公司\n华科物流(香港)有限公司\n华科供应链(香港)有限公司\n积村半导体科技(上海)有限公司\n生工生物工程(上海)股份有限公司\n上海复旦微电子集团股份有限公司\n上海复旦微电子(香港)有限公司\n上海富控华龙微电子系统技术有限公司\n上海富维迅捷数字科技有限公司\n上海索辰信息科技有限公司\n深圳复旦微电子有限公司\n深圳南飞微电子有限公司\n深圳新力康供应链管理有限公司\n盛美半导体设备(上海)股份有限公司\n总数量:23`
// `完整检索实体名单: \n\n 中国科学院空天信息创新研究院\n\n北京复旦微电子技术有限公司\n\n北京天宜源生物科技有限公司\n\n北京擎科生物科技有限公司\n长沙南飞电子技术有限公司\n常州南飞微电子有限公司\n成都南飞微电子有限公司\n中国科学院国家授时中心\n吉姆西半导体科技(无锡)有限公司\n香港德铭电子有限公司\n华科物流(香港)有限公司\n华科供应链(香港)有限公司\n积村半导体科技(上海)有限公司\n生工生物工程(上海)股份有限公司\n上海复旦微电子集团股份有限公司\n上海复旦微电子(香港)有限公司\n上海富控华龙微电子系统技术有限公司\n上海富维迅捷数字科技有限公司\n上海索辰信息科技有限公司\n深圳复旦微电子有限公司\n深圳南飞微电子有限公司\n深圳新力康供应链管理有限公司\n盛美半导体设备(上海)股份有限公司\n总数量:23`
// ],
// ],
// content: `2025年9月实体清单的主要制裁实体、制裁原因\n\n 时间范围\n-当前查询的时间范围为:2025年9月16日。`
// content: `2025年9月实体清单的主要制裁实体、制裁原因\n\n 时间范围\n-当前查询的时间范围为:2025年9月16日。`,
// raw_data: {
// columns: {
// category: "实体类别",
// date: "制裁日期",
// industry: "所属行业",
// name_zhs: "实体名称",
// sanction_reason: "制裁理由"
// },
// rows: [
// {
// category: "科研机构",
// date: "2025-09-16",
// industry: "航空航天",
// name_zhs: "中国科学院空天信息创新研究院",
// sanction_reason: "与中国高空气球计划有关联"
// },
// {
// category: "科研机构",
// date: "2025-09-16",
// industry: "航空航天",
// name_zhs: "中国科学院空天信息创新研究院",
// sanction_reason: "与中国高空气球计划有关联"
// },
// {
// category: "科研机构",
// date: "2025-09-16",
// industry: "航空航天",
// name_zhs: "中国科学院空天信息创新研究院",
// sanction_reason: "与中国高空气球计划有关联"
// }
// ]
// }
// }
// }
]);
]);
...
@@ -419,6 +493,13 @@ const connectSSE = async question => {
...
@@ -419,6 +493,13 @@ const connectSSE = async question => {
aiMessage
.
value
+=
content
;
aiMessage
.
value
+=
content
;
updateLastAIMessage
(
aiMessage
.
value
);
updateLastAIMessage
(
aiMessage
.
value
);
}
}
if
(
msgData
.
raw_data
)
{
const
lastMessage
=
messages
.
value
[
messages
.
value
.
length
-
1
];
if
(
lastMessage
&&
lastMessage
.
type
===
"ai"
)
{
lastMessage
.
raw_data
=
msgData
.
raw_data
;
scrollToBottom
();
}
}
// if (res.event === "end_of_workflow") {
// if (res.event === "end_of_workflow") {
// ElMessage.success("问答完成!");
// ElMessage.success("问答完成!");
// abortController.value.abort();
// abortController.value.abort();
...
@@ -703,6 +784,14 @@ const chat = async question => {
...
@@ -703,6 +784,14 @@ const chat = async question => {
}
}
}
}
if
(
data
.
raw_data
)
{
const
lastMessage
=
messages
.
value
[
messages
.
value
.
length
-
1
];
if
(
lastMessage
&&
lastMessage
.
type
===
"ai"
)
{
lastMessage
.
raw_data
=
data
.
raw_data
;
scrollToBottom
();
}
}
if
(
data
.
detail
.
error
)
{
if
(
data
.
detail
.
error
)
{
console
.
log
(
data
.
detail
.
error
.
message
);
console
.
log
(
data
.
detail
.
error
.
message
);
// ElMessage.error(data.detail.error.message);
// ElMessage.error(data.detail.error.message);
...
@@ -1144,6 +1233,78 @@ onUnmounted(() => {
...
@@ -1144,6 +1233,78 @@ onUnmounted(() => {
padding
:
1px
10px
;
padding
:
1px
10px
;
border-radius
:
5px
;
border-radius
:
5px
;
}
}
.row-content
{
margin-top
:
10px
;
width
:
900px
;
margin-left
:
26px
;
background
:
rgba
(
246
,
250
,
255
,
1
);
padding
:
1px
10px
;
border-radius
:
5px
;
.row-header
{
height
:
40px
;
line-height
:
40px
;
font-family
:
Microsoft-YaHei
;
font-size
:
20px
;
color
:
#555
;
font-weight
:
bold
;
display
:
flex
;
border-bottom
:
1px
solid
#999
;
.row-header-item
{
text-align
:
center
;
width
:
150px
;
border-right
:
1px
solid
#999
;
}
.row-header-item1
{
text-align
:
center
;
width
:
250px
;
border-right
:
1px
solid
#999
;
}
.row-header-item2
{
text-align
:
center
;
width
:
200px
;
}
}
.row-main
{
padding-bottom
:
10px
;
.row-main-item
{
height
:
35px
;
line-height
:
35px
;
font-family
:
Microsoft-YaHei
;
font-size
:
14px
;
color
:
#555
;
display
:
flex
;
border-bottom
:
1px
solid
#ccc
;
.item-item
{
width
:
150px
;
text-align
:
center
;
border-right
:
1px
solid
#ccc
;
}
.item-item1
{
width
:
250px
;
text-align
:
center
;
border-right
:
1px
solid
#ccc
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-bg-hover
);
}
}
.item-item2
{
width
:
200px
;
text-align
:
center
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
cursor
:
pointer
;
&
:hover
{
background
:
var
(
--
color-bg-hover
);
}
}
}
}
}
}
}
.user-item
{
.user-item
{
margin-top
:
32px
;
margin-top
:
32px
;
...
...
src/views/decree/decreeLayout/deepdig/index.vue
浏览文件 @
9ca77a28
...
@@ -395,17 +395,17 @@ onMounted(() => {
...
@@ -395,17 +395,17 @@ onMounted(() => {
background
:
rgba
(
246
,
250
,
255
,
1
);
background
:
rgba
(
246
,
250
,
255
,
1
);
display
:
flex
;
display
:
flex
;
.
info
-
left
{
.
info
-
left
{
width
:
97
px
;
width
:
242
px
;
height
:
136
px
;
height
:
136
px
;
margin
-
top
:
25
px
;
margin
-
top
:
25
px
;
margin
-
left
:
28
px
;
margin
-
left
:
28
px
;
img
{
img
{
width
:
100
%
;
width
:
100
%
;
height
:
100
%
;
//
height: 100%;
}
}
}
}
.
info
-
right
{
.
info
-
right
{
margin
-
left
:
35
px
;
margin
-
left
:
20
px
;
margin
-
top
:
22
px
;
margin
-
top
:
22
px
;
.
info
-
item
{
.
info
-
item
{
display
:
flex
;
display
:
flex
;
...
@@ -422,7 +422,7 @@ onMounted(() => {
...
@@ -422,7 +422,7 @@ onMounted(() => {
line
-
height
:
24
px
;
line
-
height
:
24
px
;
}
}
.
item
-
right
{
.
item
-
right
{
width
:
89
9
px
;
width
:
76
9
px
;
height
:
30
px
;
height
:
30
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
...
src/views/decree/decreeLayout/index.vue
浏览文件 @
9ca77a28
...
@@ -224,8 +224,10 @@ onMounted(() => {
...
@@ -224,8 +224,10 @@ onMounted(() => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.layout-container
{
.layout-container
{
width
:
1920px
;
width
:
100vw
;
height
:
1016px
;
height
:
100vh
;
min-width
:
1920px
;
min-height
:
1016px
;
background
:
rgba
(
249
,
250
,
252
,
1
);
background
:
rgba
(
249
,
250
,
252
,
1
);
position
:
relative
;
position
:
relative
;
.layout-main
{
.layout-main
{
...
...
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
9ca77a28
...
@@ -444,8 +444,9 @@ onMounted(() => {
...
@@ -444,8 +444,9 @@ onMounted(() => {
<
style
lang
=
"scss"
scoped
>
<
style
lang
=
"scss"
scoped
>
.
wrapper
{
.
wrapper
{
width
:
100
%
;
width
:
100
%
;
height
:
879
px
;
height
:
100
%
;
display
:
flex
;
display
:
flex
;
justify
-
content
:
center
;
.
box
-
header
{
.
box
-
header
{
display
:
flex
;
display
:
flex
;
height
:
48
px
;
height
:
48
px
;
...
...
src/views/decree/decreeLayout/overview/background/index.vue
浏览文件 @
9ca77a28
...
@@ -328,22 +328,22 @@ onMounted(() => {
...
@@ -328,22 +328,22 @@ onMounted(() => {
}
}
}
}
.
left
{
.
left
{
width
:
1
150
px
;
width
:
1
064
px
;
.
box1
{
.
box1
{
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
1
150
px
;
width
:
1
064
px
;
height
:
414
px
;
height
:
414
px
;
border
-
radius
:
4
px
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.
box1
-
main
{
.
box1
-
main
{
margin
-
left
:
22
px
;
margin
-
left
:
22
px
;
width
:
1
120
px
;
width
:
1
034
px
;
height
:
290
px
;
height
:
290
px
;
overflow
:
hidden
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
overflow
-
y
:
auto
;
.
box1
-
item
{
.
box1
-
item
{
width
:
1
101
px
;
width
:
1
015
px
;
min
-
height
:
48
px
;
min
-
height
:
48
px
;
margin
-
bottom
:
8
px
;
margin
-
bottom
:
8
px
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
...
@@ -364,7 +364,7 @@ onMounted(() => {
...
@@ -364,7 +364,7 @@ onMounted(() => {
color
:
#
0
a57a6
;
color
:
#
0
a57a6
;
}
}
.
title
{
.
title
{
width
:
1000
px
;
width
:
914
px
;
line
-
height
:
24
px
;
line
-
height
:
24
px
;
margin
-
left
:
13
px
;
margin
-
left
:
13
px
;
// overflow: hidden;
// overflow: hidden;
...
@@ -398,16 +398,16 @@ onMounted(() => {
...
@@ -398,16 +398,16 @@ onMounted(() => {
}
}
.
box2
{
.
box2
{
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
1
150
px
;
width
:
1
064
px
;
height
:
415
px
;
height
:
415
px
;
border
-
radius
:
4
px
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.
box2
-
main
{
.
box2
-
main
{
margin
-
top
:
3
px
;
margin
-
top
:
3
px
;
margin
-
left
:
31
px
;
margin
-
left
:
31
px
;
height
:
330
px
;
height
:
330
px
;
width
:
10
90
px
;
width
:
10
04
px
;
overflow
:
hidden
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
overflow
-
y
:
auto
;
.
box2
-
item
{
.
box2
-
item
{
...
@@ -424,7 +424,7 @@ onMounted(() => {
...
@@ -424,7 +424,7 @@ onMounted(() => {
}
}
}
}
.
item
-
center
{
.
item
-
center
{
width
:
8
92
px
;
width
:
8
06
px
;
margin
-
left
:
14
px
;
margin
-
left
:
14
px
;
.
title
{
.
title
{
height
:
30
px
;
height
:
30
px
;
...
@@ -436,7 +436,7 @@ onMounted(() => {
...
@@ -436,7 +436,7 @@ onMounted(() => {
margin
-
top
:
-
5
px
;
margin
-
top
:
-
5
px
;
}
}
.
content
{
.
content
{
width
:
8
92
px
;
width
:
8
06
px
;
height
:
30
px
;
height
:
30
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -477,14 +477,14 @@ onMounted(() => {
...
@@ -477,14 +477,14 @@ onMounted(() => {
margin
-
left
:
16
px
;
margin
-
left
:
16
px
;
.
box3
{
.
box3
{
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
5
76
px
;
width
:
5
20
px
;
height
:
845
px
;
height
:
845
px
;
border
-
radius
:
4
px
;
border
-
radius
:
4
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.
box3
-
main
{
.
box3
-
main
{
margin
-
top
:
9
px
;
margin
-
top
:
9
px
;
width
:
520
px
;
width
:
464
px
;
height
:
720
px
;
height
:
720
px
;
// overflow: hidden;
// overflow: hidden;
overflow
-
y
:
auto
;
overflow
-
y
:
auto
;
...
@@ -509,7 +509,7 @@ onMounted(() => {
...
@@ -509,7 +509,7 @@ onMounted(() => {
color
:
#
0
a57a6
;
color
:
#
0
a57a6
;
}
}
.
item
-
header
{
.
item
-
header
{
width
:
440
px
;
width
:
384
px
;
height
:
35
px
;
height
:
35
px
;
display
:
flex
;
display
:
flex
;
justify
-
content
:
space
-
between
;
justify
-
content
:
space
-
between
;
...
@@ -518,7 +518,7 @@ onMounted(() => {
...
@@ -518,7 +518,7 @@ onMounted(() => {
text
-
overflow
:
ellipsis
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
white
-
space
:
nowrap
;
.
name
{
.
name
{
max
-
width
:
460
px
;
max
-
width
:
384
px
;
overflow
:
hidden
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
white
-
space
:
nowrap
;
...
...
src/views/decree/decreeLayout/overview/index.vue
浏览文件 @
9ca77a28
...
@@ -61,11 +61,12 @@ onMounted(() => {
...
@@ -61,11 +61,12 @@ onMounted(() => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.decree-overview-wrap
{
.decree-overview-wrap
{
width
:
1
920px
;
width
:
1
00%
;
height
:
100%
;
height
:
100%
;
overflow
:
hidden
;
overflow
:
hidden
;
background
:
rgba
(
247
,
248
,
249
,
1
);
background
:
rgba
(
247
,
248
,
249
,
1
);
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
.left
{
.left
{
width
:
160px
;
width
:
160px
;
padding-top
:
16px
;
padding-top
:
16px
;
...
...
src/views/decree/decreeLayout/overview/introduction/index.vue
浏览文件 @
9ca77a28
...
@@ -477,16 +477,17 @@ handleGetOrgnization();
...
@@ -477,16 +477,17 @@ handleGetOrgnization();
.
box1
-
main
{
.
box1
-
main
{
display
:
flex
;
display
:
flex
;
.
box1
-
main
-
left
{
.
box1
-
main
-
left
{
width
:
23
5
px
;
width
:
39
5
px
;
height
:
332
px
;
height
:
332
px
;
margin
-
left
:
42
px
;
margin
-
left
:
42
px
;
img
{
img
{
width
:
100
%
;
width
:
100
%
;
height
:
100
%
;
//
height: 100%;
}
}
}
}
.
box1
-
main
-
right
{
.
box1
-
main
-
right
{
margin
-
left
:
40
px
;
width
:
590
px
;
margin
-
left
:
20
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
16
px
;
font
-
size
:
16
px
;
...
...
src/views/marketAccessRestrictions/marketAccessHome/index.vue
浏览文件 @
9ca77a28
...
@@ -69,39 +69,39 @@
...
@@ -69,39 +69,39 @@
</div>
</div>
</div>
</div>
<div
class=
"home-main-header-card-box"
>
<div
class=
"home-main-header-card-box"
>
<div
class=
"home-main-header-card-box-box1 card"
@
click=
"handleClickToDetail(
'301'
)"
>
<div
class=
"home-main-header-card-box-box1 card"
@
click=
"handleClickToDetail(
sortInfo[1]?.sortCode
)"
>
<div
class=
"header"
>
<div
class=
"header"
>
<div
class=
"header-left"
>
{{
"301调查"
}}
</div>
<div
class=
"header-left"
>
{{
sortInfo
[
1
]?.
sortName
}}
</div>
<div
class=
"header-right"
>
{{
"52项"
}}
</div>
<div
class=
"header-right"
>
{{
`${sortInfo[1]?.sortCount
}
项`
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"content-box"
>
<
div
class
=
"content-box"
>
<div
class=
"item"
>
{{
"可能措施: 加征关税、限制进口"
}}
</div>
<
div
class
=
"item"
>
{{
sortInfo
[
1
]?.
sortMeasure
}}
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
{{
'依据《1974年贸易法》第301条针对"不合理或不公正贸易做法"'
}}
{{
sortInfo
[
1
]?.
sortDescription
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<div
class=
"home-main-header-card-box-box2 card"
@
click=
"handleClickToDetail(
'232'
)"
>
<
div
class
=
"home-main-header-card-box-box2 card"
@
click
=
"handleClickToDetail(
sortInfo[2]?.sortCode
)"
>
<
div
class
=
"header"
>
<
div
class
=
"header"
>
<div
class=
"header-left"
>
{{
"232调查"
}}
</div>
<
div
class
=
"header-left"
>
{{
sortInfo
[
2
]?.
sortName
}}
<
/div
>
<div
class=
"header-right"
>
{{
"3项"
}}
</div>
<
div
class
=
"header-right"
>
{{
`${sortInfo[2]?.sortCount
}
项`
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"content-box"
>
<
div
class
=
"content-box"
>
<div
class=
"item"
>
{{
"可能措施: 加征关税、限制进口"
}}
</div>
<
div
class
=
"item"
>
{{
sortInfo
[
2
]?.
sortMeasure
}}
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
{{
"依据《1962年贸易扩展法》第232条评估进口产品对国家安全影响"
}}
{{
sortInfo
[
2
]?.
sortDescription
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<div
class=
"home-main-header-card-box-box3 card"
@
click=
"handleClickToDetail(
'337'
)"
>
<
div
class
=
"home-main-header-card-box-box3 card"
@
click
=
"handleClickToDetail(
sortInfo[0]?.sortCode
)"
>
<
div
class
=
"header"
>
<
div
class
=
"header"
>
<div
class=
"header-left"
>
{{
"337调查"
}}
</div>
<
div
class
=
"header-left"
>
{{
sortInfo
[
0
]?.
sortName
}}
<
/div
>
<div
class=
"header-right"
>
{{
"87项"
}}
</div>
<
div
class
=
"header-right"
>
{{
`${sortInfo[0]?.sortCount
}
项`
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"content-box"
>
<
div
class
=
"content-box"
>
<div
class=
"item"
>
{{
"可能措施: 排除令、禁止令"
}}
</div>
<
div
class
=
"item"
>
{{
sortInfo
[
0
]?.
sortMeasure
}}
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
{{
"依据《1930年关税法》第337条针对知识产权侵权行为"
}}
{{
sortInfo
[
0
]?.
sortDescription
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -111,10 +111,10 @@
...
@@ -111,10 +111,10 @@
<
DivideHeader
id
=
"position1"
class
=
"divide-header"
:
titleText
=
"'最新动态'"
><
/DivideHeader
>
<
DivideHeader
id
=
"position1"
class
=
"divide-header"
:
titleText
=
"'最新动态'"
><
/DivideHeader
>
<
div
class
=
"center-top"
>
<
div
class
=
"center-top"
>
<
div
class
=
"box1"
>
<
div
class
=
"box1"
>
<div
class=
"box1-left"
>
<
div
class
=
"box1-left"
@
click
=
"handleSwithCurSurvey('left')"
>
<
img
src
=
"./assets/images/box1-left.png"
alt
=
""
/>
<
img
src
=
"./assets/images/box1-left.png"
alt
=
""
/>
<
/div
>
<
/div
>
<div
class=
"box1-right"
>
<
div
class
=
"box1-right"
@
click
=
"handleSwithCurSurvey('right')"
>
<
img
src
=
"./assets/images/box1-right.png"
alt
=
""
/>
<
img
src
=
"./assets/images/box1-right.png"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"box1-header"
>
<
div
class
=
"box1-header"
>
...
@@ -128,68 +128,73 @@
...
@@ -128,68 +128,73 @@
{{
"查看详情 >"
}}
{{
"查看详情 >"
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<div
class=
"box1-main"
>
<
el
-
carousel
<div
class=
"box1-main-header"
>
ref
=
"carouselRef"
<div
class=
"header-left"
>
height
=
"395px"
{{
"美国ITC发布对外国制造的半导体器件及其下游产品和组件的337部分终裁"
}}
:
autoplay
=
"true"
</div>
:
interval
=
"3000"
<div
class=
"header-right"
>
arrow
=
"never"
<div
class=
"tag1"
>
{{
"337"
}}
</div>
indicator
-
position
=
"none"
<div
class=
"tag2"
>
{{
"半导体"
}}
</div>
>
</div>
<
el
-
carousel
-
item
v
-
for
=
"(item, index) in box1DataList"
:
key
=
"index"
>
</div>
<
div
class
=
"box1-main"
>
<div
class=
"info-box"
>
<
div
class
=
"box1-main-header"
>
<div
class=
"info-header"
>
<
div
class
=
"header-left"
>
<div
class=
"icon"
></div>
{{
item
.
SEARCHNAME
}}
<div
class=
"time"
>
{{
"2025-08-15"
}}
</div>
<
/div
>
<div
class=
"title"
>
{{
"部分终裁"
}}
</div>
<
div
class
=
"header-right"
>
</div>
<
div
class
=
"tag1"
>
{{
item
.
SEARCHSORT
}}
<
/div
>
<div
class=
"info-content"
>
<
div
class
=
"tag2"
v
-
for
=
"(val, idx) in item.searchArea"
:
key
=
"idx"
>
{{
val
}}
<
/div
>
{{
<
/div
>
"对本案行政法官于2025年7月31日作出的初裁(No.36)不予复审,即基于申请方撤回,终止本案对美国注册专利号9,093,473第4项申诉的调查。"
}}
</div>
</div>
<div
class=
"list-box"
>
<div
class=
"list-item"
>
<div
class=
"icon"
></div>
<div
class=
"list-left"
>
{{
"调查案号:"
}}
</div>
<div
class=
"list-right"
>
{{
"337-TA-1443"
}}
</div>
</div>
<div
class=
"list-item"
>
<div
class=
"icon"
></div>
<div
class=
"list-left"
>
{{
"涉及产品:"
}}
</div>
<div
class=
"list-right"
>
{{
"对美出口、在美进口及销售的特定外国制造的半导体器件及其下游产品和组件(Certain Foreign-Fabricated ..."
}}
</div>
</div>
<div
class=
"list-item"
>
<div
class=
"icon"
></div>
<div
class=
"list-left"
>
{{
"原告:"
}}
</div>
<div
class=
"list-right"
>
{{
"爱尔兰Longitude Licensing Ltd.、爱尔兰Marlin Semiconductor Limited"
}}
<
/div
>
<
/div
>
</div>
<
div
class
=
"info-box"
>
<div
class=
"list-item"
>
<
div
class
=
"info-header"
>
<div
class=
"icon"
></div>
<
div
class
=
"icon"
><
/div
>
<div
class=
"list-left"
>
{{
"被告:"
}}
</div>
<
div
class
=
"time"
>
{{
item
.
PROGRESSDATE
}}
<
/div
>
<div
class=
"list-right"
>
<
div
class
=
"title"
>
{{
item
.
PROGRESSRESULT
}}
<
/div
>
{{
<
/div
>
"中国台湾地区Taiwan Semiconductor Manufacturing Company Limited of Taiwan、美国Apple Inc. of ...."
<
div
class
=
"info-content"
>
}}
{{
item
.
PROGRESSDETAILS
}}
<
/div
>
<
/div
>
<
/div
>
</div>
<
div
class
=
"list-box"
>
<div
class=
"list-item"
>
<
div
class
=
"list-item"
>
<div
class=
"icon"
></div>
<
div
class
=
"icon"
><
/div
>
<div
class=
"list-left"
>
{{
"涉案专利"
}}
</div>
<
div
class
=
"list-left"
>
{{
"调查案号:"
}}
<
/div
>
<div
class=
"list-right"
>
<
div
class
=
"list-right"
>
{{
item
.
SEARCHNUM
}}
<
/div
>
{{
"美国注册专利号7745847、9093473、9147747、9184292"
}}
<
/div
>
<
div
class
=
"list-item"
>
<
div
class
=
"icon"
><
/div
>
<
div
class
=
"list-left"
>
{{
"涉及产品:"
}}
<
/div
>
<
div
class
=
"list-right"
>
{{
item
.
PRODUCT
}}
<
/div
>
<
/div
>
<
div
class
=
"list-item"
>
<
div
class
=
"icon"
><
/div
>
<
div
class
=
"list-left"
>
{{
"原告:"
}}
<
/div
>
<
div
class
=
"list-right"
>
{{
item
.
PLAINTIFF
}}
<
/div
>
<
/div
>
<
div
class
=
"list-item"
>
<
div
class
=
"icon"
><
/div
>
<
div
class
=
"list-left"
>
{{
"被告:"
}}
<
/div
>
<
div
class
=
"list-right"
>
{{
item
.
DEFENDANT
}}
<
/div
>
<
/div
>
<
div
class
=
"list-item"
>
<
div
class
=
"icon"
><
/div
>
<
div
class
=
"list-left"
>
{{
"涉案专利"
}}
<
/div
>
<
div
class
=
"list-right"
>
{{
item
.
PATENT
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
</
div
>
<
/
el-carousel-item
>
</
div
>
<
/
el-carousel
>
<
/div
>
<
/div
>
<
div
class
=
"box2"
>
<
div
class
=
"box2"
>
<
div
class
=
"box2-header"
>
<
div
class
=
"box2-header"
>
...
@@ -198,25 +203,39 @@
...
@@ -198,25 +203,39 @@
<
/div
>
<
/div
>
<
div
class
=
"title"
>
<
div
class
=
"title"
>
<
div
class
=
"text"
>
{{
"风险信号"
}}
<
/div
>
<
div
class
=
"text"
>
{{
"风险信号"
}}
<
/div
>
<div
class=
"num"
>
{{
warningList
.
length
}}
</div>
<
div
class
=
"num"
>
{{
box2Data
.
length
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box2-main"
>
<
div
class
=
"box2-main"
>
<div
class=
"box2-main-item"
v-for=
"(item, index) in
warningList
"
:key=
"index"
>
<
div
class
=
"box2-main-item"
v
-
for
=
"(item, index) in
box2Data
"
:
key
=
"index"
>
<
div
<
div
class
=
"item-left"
class
=
"item-left"
:
class
=
"{
:
class
=
"{
itemLeftStatus
1: item.status === '一般风险
',
itemLeftStatus
3: item.signalLevel === '特别重大
',
itemLeftStatus2: item.s
tatus
=== '重大风险'
itemLeftStatus2: item.s
ignalLevel
=== '重大风险'
}
"
}
"
>
>
{{
item
.
s
tatus
}}
{{
item
.
s
ignalLevel
}}
<
/div
>
<
/div
>
<
div
class
=
"item-right"
>
<
div
class
=
"item-right"
>
<div
class=
"text"
>
<
el
-
popover
{{
item
.
title
}}
v
-
if
=
"item.signalTitle?.length > 20"
effect
=
"dark"
:
width
=
"480"
:
content
=
"item.signalTitle"
placement
=
"top"
>
<
template
#
reference
>
<
div
class
=
"text"
>
{{
item
.
signalTitle
}}
<
/div
>
<
/template
>
<
/el-popover
>
<
div
v
-
else
class
=
"text"
>
{{
item
.
signalTitle
}}
<
/div
>
<
/div
>
<div
class=
"time"
>
{{
item
.
time
}}
</div>
<
div
class
=
"time"
>
{{
item
.
signalTime
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -241,16 +260,25 @@
...
@@ -241,16 +260,25 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box3-main"
>
<
div
class
=
"box3-main"
>
<div
class=
"box3-item"
v-for=
"(news, index) in newsList"
:key=
"index"
>
<
div
class
=
"box3-item"
v
-
for
=
"(news, index) in newsList"
:
key
=
"index"
@
click
=
"handleToNewsAnalysis(news)"
>
<
div
class
=
"left"
>
<
div
class
=
"left"
>
<img
:src=
"news.
img
"
alt=
""
/>
<
img
:
src
=
"news.
newsImage ? news.newsImage : DefaultNewsIcon
"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"right"
>
<
div
class
=
"right"
>
<
div
class
=
"right-top"
>
<
div
class
=
"right-top"
>
<div
class=
"title"
>
{{
news
.
t
itle
}}
</div>
<
div
class
=
"title"
>
{{
news
.
newsT
itle
}}
<
/div
>
<div
class=
"time"
>
{{
news
.
from
}}
</div>
<
div
class
=
"time"
>
{{
news
.
newsDate
+
" · "
+
news
.
newsOrg
}}
<
/div
>
<
/div
>
<
/div
>
<div
class=
"right-footer"
>
{{
news
.
content
}}
</div>
<
el
-
popover
effect
=
"dark"
:
width
=
"1000"
:
content
=
"news.newsContent"
placement
=
"top-start"
>
<
template
#
reference
>
<
div
class
=
"right-footer"
>
{{
news
.
newsContent
}}
<
/div
>
<
/template
>
<
/el-popover
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -264,15 +292,15 @@
...
@@ -264,15 +292,15 @@
<
/div
>
<
/div
>
<
div
class
=
"box4-main"
>
<
div
class
=
"box4-main"
>
<
div
class
=
"box4-main-item"
v
-
for
=
"(item, index) in messageList"
:
key
=
"index"
>
<
div
class
=
"box4-main-item"
v
-
for
=
"(item, index) in messageList"
:
key
=
"index"
>
<div
class=
"left"
>
<
div
class
=
"left"
@
click
=
"handleClickPerson()"
>
<img
:src=
"item.
img
"
alt=
""
/>
<
img
:
src
=
"item.
personImage ? item.personImage : DefaultUserIcon
"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"right"
>
<
div
class
=
"right"
>
<
div
class
=
"right-top"
>
<
div
class
=
"right-top"
>
<div
class=
"name"
>
{{
item
.
n
ame
}}
</div>
<
div
class
=
"name"
>
{{
item
.
personN
ame
}}
<
/div
>
<div
class=
"time"
>
{{
item
.
time
}}
</div>
<
div
class
=
"time"
>
{{
item
.
time
+
" · "
+
item
.
orgName
}}
<
/div
>
<
/div
>
<
/div
>
<div
class=
"content"
>
{{
item
.
content
}}
</div>
<
div
class
=
"content"
>
{{
item
.
remarks
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -298,11 +326,14 @@
...
@@ -298,11 +326,14 @@
<
div
class
=
"box5-main"
>
<
div
class
=
"box5-main"
>
<
div
class
=
"box5-main-chart"
id
=
"chart1"
><
/div
>
<
div
class
=
"box5-main-chart"
id
=
"chart1"
><
/div
>
<
div
class
=
"box5-main-btn-box"
>
<
div
class
=
"box5-main-btn-box"
>
<div
class=
"right-box rightBoxActive"
>
<
div
{{
"按月度"
}}
class
=
"right-box"
</div>
:
class
=
"{ rightBoxActive: box5BtnActive === item.value
}
"
<div
class=
"right-box"
>
v
-
for
=
"(item, index) in box5BtnList"
{{
"按年度"
}}
:
key
=
"index"
@
click
=
"handleChangeBox5Btn(item.value)"
>
{{
item
.
name
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -322,7 +353,12 @@
...
@@ -322,7 +353,12 @@
<
/div
>
<
/div
>
<
div
class
=
"box6-main"
>
<
div
class
=
"box6-main"
>
<
div
class
=
"box6-main-select-box"
>
<
div
class
=
"box6-main-select-box"
>
<el-select
v-model=
"box6SelectedYear"
placeholder=
"选择时间"
style=
"width: 120px"
>
<
el
-
select
v
-
model
=
"box6SelectedYear"
@
change
=
"handleChangeBox6Year"
placeholder
=
"选择时间"
style
=
"width: 120px"
>
<
el
-
option
<
el
-
option
v
-
for
=
"item in box6YearList"
v
-
for
=
"item in box6YearList"
:
key
=
"item.value"
:
key
=
"item.value"
...
@@ -355,7 +391,12 @@
...
@@ -355,7 +391,12 @@
<
div
class
=
"box7-main-left"
id
=
"box7Chart1"
><
/div
>
<
div
class
=
"box7-main-left"
id
=
"box7Chart1"
><
/div
>
<
div
class
=
"box7-main-right"
>
<
div
class
=
"box7-main-right"
>
<
div
class
=
"box7-main-right-top"
>
<
div
class
=
"box7-main-right-top"
>
<el-select
v-model=
"box7SelectedYear"
placeholder=
"选择时间"
style=
"width: 120px"
>
<
el
-
select
v
-
model
=
"box7SelectedYear"
@
change
=
"handleChangeBox7Year"
placeholder
=
"选择时间"
style
=
"width: 120px"
>
<
el
-
option
<
el
-
option
v
-
for
=
"item in box7YearList"
v
-
for
=
"item in box7YearList"
:
key
=
"item.value"
:
key
=
"item.value"
...
@@ -406,7 +447,7 @@
...
@@ -406,7 +447,7 @@
<
div
class
=
"box8-main-item"
v
-
for
=
"(item, index) in box8Data"
:
key
=
"index"
>
<
div
class
=
"box8-main-item"
v
-
for
=
"(item, index) in box8Data"
:
key
=
"index"
>
<
div
class
=
"item-1"
>
<
div
class
=
"item-1"
>
<
div
class
=
"icon"
>
<
div
class
=
"icon"
>
<img
:src=
"item.logo"
alt=
""
/>
<
img
:
src
=
"item.logo
? item.logo : DefaultCompanyIcon
"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"text"
>
<
div
class
=
"text"
>
{{
item
.
name
}}
{{
item
.
name
}}
...
@@ -428,35 +469,34 @@
...
@@ -428,35 +469,34 @@
<
div
class
=
"btn-box"
>
<
div
class
=
"btn-box"
>
<
div
<
div
class
=
"btn"
class
=
"btn"
:class=
"
{ btnActive: activeCate
=== cate
}"
:
class
=
"{ btnActive: activeCate
Id === cate.id
}
"
v
-
for
=
"(cate, index) in categoryList"
v
-
for
=
"(cate, index) in categoryList"
:
key
=
"index"
:
key
=
"index"
@
click
=
"handleClickCate(cate)"
@
click
=
"handleClickCate(cate)"
>
>
{{
cate
}}
{{
cate
.
name
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"select-box"
>
<
div
class
=
"select-box"
>
<el-select
v-model=
"releaseTime"
placeholder=
"选择发布时间"
style=
"width: 120px"
>
<
div
class
=
"paixu-btn"
@
click
=
"handleSwithSort"
>
<
div
class
=
"icon1"
>
<
img
v
-
if
=
"isSort"
src
=
"@/assets/icons/shengxu1.png"
alt
=
""
/>
<
img
v
-
else
src
=
"@/assets/icons/jiangxu1.png"
alt
=
""
/>
<
/div
>
<
div
class
=
"text"
>
{{
"发布时间"
}}
<
/div
>
<
div
class
=
"icon2"
>
<
img
v
-
if
=
"isSort"
src
=
"@/assets/icons/shengxu2.png"
alt
=
""
/>
<
img
v
-
else
src
=
"@/assets/icons/jiangxu2.png"
alt
=
""
/>
<
/div
>
<
/div
>
<!--
<
el
-
select
v
-
model
=
"releaseTime"
placeholder
=
"选择发布时间"
style
=
"width: 120px"
>
<
el
-
option
<
el
-
option
v
-
for
=
"item in releaseTimeList"
v
-
for
=
"item in releaseTimeList"
:
key
=
"item.value"
:
key
=
"item.value"
:
label
=
"item.label"
:
label
=
"item.label"
:
value
=
"item.value"
:
value
=
"item.value"
/>
/>
</el-select>
<
/el-select> --
>
<!--
<el-select
v-model=
"releaseTime"
placeholder=
"选择发布时间"
style=
"width: 120px"
>
<el-option
v-for=
"item in releaseTimeList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
-->
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"home-main-footer-main"
>
<
div
class
=
"home-main-footer-main"
>
...
@@ -467,8 +507,18 @@
...
@@ -467,8 +507,18 @@
<
div
class
=
"title"
>
{{
"发布时间"
}}
<
/div
>
<
div
class
=
"title"
>
{{
"发布时间"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"left-box1-main"
>
<
div
class
=
"left-box1-main"
>
<div
class=
"time-label"
v-for=
"(item, index) in surveyYearList"
:key=
"index"
>
<
div
class
=
"checkbox-group"
>
<el-checkbox
v-model=
"item.selected"
:label=
"item.name"
size=
"large"
/>
<
el
-
checkbox
v
-
for
=
"year in surveyYearList"
:
key
=
"year.id"
v
-
model
=
"checkedSurveyYears"
:
label
=
"year.id"
style
=
"width: 180px"
class
=
"filter-checkbox"
@
change
=
"handleChangeCheckedSurveyYears"
>
{{
year
.
name
}}
<
/el-checkbox
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -478,8 +528,18 @@
...
@@ -478,8 +528,18 @@
<
div
class
=
"title"
>
{{
"涉及领域"
}}
<
/div
>
<
div
class
=
"title"
>
{{
"涉及领域"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"left-box2-main"
>
<
div
class
=
"left-box2-main"
>
<div
class=
"area-label"
v-for=
"(item, index) in surveyAreaList"
:key=
"index"
>
<
div
class
=
"checkbox-group"
>
<el-checkbox
v-model=
"item.selected"
:label=
"item.name"
size=
"large"
/>
<
el
-
checkbox
v
-
for
=
"area in areaList"
:
key
=
"area.id"
v
-
model
=
"checkedAreaList"
:
label
=
"area.id"
style
=
"width: 110px"
class
=
"filter-checkbox"
@
change
=
"handleChangeCheckedAreas"
>
{{
area
.
name
}}
<
/el-checkbox
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -493,32 +553,39 @@
...
@@ -493,32 +553,39 @@
<
div
class
=
"header-item5"
>
{{
"发布日期"
}}
<
/div
>
<
div
class
=
"header-item5"
>
{{
"发布日期"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"right-main"
>
<
div
class
=
"right-main"
>
<div
class=
"item"
v-for=
"(val, idx) in surveyInfoList"
:key=
"idx"
>
<
div
class
=
"item"
v
-
for
=
"(val, idx) in surveyInfoList"
:
key
=
"idx"
@
click
=
"handleClickToSurveyDetail(val.SORTCODE)"
>
<
div
class
=
"item-box1"
>
<
div
class
=
"item-box1"
>
<
div
<
div
class
=
"name"
class
=
"name"
:
class
=
"{
:
class
=
"{
name1: val.
name
=== '301',
name1: val.
SORTCODE
=== '301',
name2: val.
name
=== '337',
name2: val.
SORTCODE
=== '337',
name3: val.
name
=== '232'
name3: val.
SORTCODE
=== '232'
}
"
}
"
>
>
{{
val
.
name
}}
{{
val
.
SORTCODE
}}
<
/div
>
<
/div
>
<div
class=
"title"
>
{{
val
.
title
}}
</div>
<
div
class
=
"title"
>
{{
val
.
SEARCHNAME
}}
<
/div
>
<
/div
>
<
/div
>
<div
class=
"item-box2"
>
{{
val
.
num
}}
</div>
<
div
class
=
"item-box2"
>
{{
val
.
SEARCHID
}}
<
/div
>
<div
class=
"item-box3"
>
{{
val
.
area
}}
</div>
<
div
class
=
"item-box3"
>
{{
val
.
searchArea
?.
toString
()
}}
<
/div
>
<div
class=
"item-box4"
>
{{
val
.
status
}}
</div>
<
div
class
=
"item-box4"
>
{{
val
.
CASESTATUS
}}
<
/div
>
<div
class=
"item-box5"
>
{{
val
.
releaseDate
}}
</div>
<
div
class
=
"item-box5"
>
{{
val
.
SEARCHDATEZH
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"right-footer"
>
<
div
class
=
"right-footer"
>
<
div
class
=
"footer-left"
>
<
div
class
=
"footer-left"
>
{{
"共105项调查"
}}
{{
`共${totalDiscussNum
}
项调查`
}}
<
/div
>
<
/div
>
<
div
class
=
"footer-right"
>
<
div
class
=
"footer-right"
>
<el-pagination
background
layout=
"prev, pager, next"
:total=
"105"
/>
<
el
-
pagination
@
current
-
change
=
"handleCurrentChange"
:
pageSize
=
"pageSize"
:
current
-
page
=
"currentPage"
background
layout
=
"prev, pager, next"
:
total
=
"totalDiscussNum"
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -530,8 +597,8 @@
...
@@ -530,8 +597,8 @@
<
script
setup
>
<
script
setup
>
import
{
onMounted
,
ref
}
from
"vue"
;
import
{
onMounted
,
ref
}
from
"vue"
;
import
setChart
from
"@/utils/setChart"
;
import
scrollToTop
from
"@/utils/scrollToTop"
;
import
scrollToTop
from
"@/utils/scrollToTop"
;
import
*
as
echarts
from
"echarts"
;
import
router
from
"@/router"
;
import
router
from
"@/router"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
...
@@ -556,15 +623,57 @@ import Logo2 from "./assets/images/logo2.png";
...
@@ -556,15 +623,57 @@ import Logo2 from "./assets/images/logo2.png";
import
Logo3
from
"./assets/images/logo3.png"
;
import
Logo3
from
"./assets/images/logo3.png"
;
import
Logo4
from
"./assets/images/logo4.png"
;
import
Logo4
from
"./assets/images/logo4.png"
;
import
Logo5
from
"./assets/images/logo5.png"
;
import
Logo5
from
"./assets/images/logo5.png"
;
import
{
getStatSort
,
getStatNum
,
getStatDetails
,
getStatArea
,
getHylyList
,
getSurveyList
,
getStatAreaCompanyList
,
getCompanyPlace
}
from
"@/api/marketAccessRestrictions/index"
;
import
{
getRiskSignal
,
getNews
,
getRemarks
}
from
"@/api/common/index"
;
import
{
ElMessage
}
from
"element-plus"
;
// 返回首页
import
DefaultUserIcon
from
"@/assets/icons/default-icon1.png"
;
const
handleBackHome
=
()
=>
{
import
DefaultCompanyIcon
from
"@/assets/icons/default-icon2.png"
;
router
.
push
({
import
DefaultNewsIcon
from
"@/assets/icons/default-icon-news.png"
;
path
:
"/overview"
});
// 首页分类
const
sortInfo
=
ref
([{
}
]);
const
handleGetStatSort
=
async
()
=>
{
try
{
const
res
=
await
getStatSort
();
console
.
log
(
"首页分类"
,
res
);
sortInfo
.
value
=
res
.
data
;
}
catch
(
error
)
{
}
}
;
// 调查进展
const
box1DataList
=
ref
([]);
const
handleGetBox1Data
=
async
()
=>
{
try
{
const
res
=
await
getStatDetails
();
console
.
log
(
"调查进展"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box1DataList
.
value
=
res
.
data
;
}
}
catch
(
error
)
{
}
}
;
}
;
const
handleClickToDetail
=
id
=>
{
const
carouselRef
=
ref
(
null
);
// 点击查看详情
const
handleClickToDetail
=
()
=>
{
let
activeIndex
=
0
;
if
(
carouselRef
.
value
)
{
activeIndex
=
carouselRef
.
value
.
activeIndex
;
}
console
.
log
(
"当前 Carousel 激活索引:"
,
activeIndex
);
const
id
=
box1DataList
.
value
[
activeIndex
].
SEARCHSORT
;
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
path
:
"/marketAccessLayout"
,
path
:
"/marketAccessLayout"
,
query
:
{
query
:
{
...
@@ -574,8 +683,17 @@ const handleClickToDetail = id => {
...
@@ -574,8 +683,17 @@ const handleClickToDetail = id => {
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
}
;
// 切换当前调查
const
handleSwithCurSurvey
=
name
=>
{
if
(
name
===
"left"
)
{
carouselRef
.
value
.
prev
();
}
else
{
carouselRef
.
value
.
next
();
}
}
;
// 风险信号
// 风险信号
const
warningList
=
ref
([
const
box2Data
=
ref
([
{
{
title
:
"关于对中华人民共和国合成阿片类药物供应链..."
,
title
:
"关于对中华人民共和国合成阿片类药物供应链..."
,
time
:
"一天前"
,
time
:
"一天前"
,
...
@@ -585,70 +703,210 @@ const warningList = ref([
...
@@ -585,70 +703,210 @@ const warningList = ref([
title
:
"关于调整汽车及汽车零部件进口的公告"
,
title
:
"关于调整汽车及汽车零部件进口的公告"
,
time
:
"一天前"
,
time
:
"一天前"
,
status
:
"特别重大"
status
:
"特别重大"
}
]);
const
handleGetBox2Data
=
async
()
=>
{
const
params
=
{
moduleId
:
"0104"
}
;
try
{
const
res
=
await
getRiskSignal
(
params
);
console
.
log
(
"风险信号"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box2Data
.
value
=
res
.
data
;
}
}
catch
(
error
)
{
}
}
;
// 新闻资讯
const
newsList
=
ref
([
{
img
:
News1
,
title
:
"美政府停摆仍持续,拨款法案存缺陷,但两党磋商露曙光"
,
content
:
`美国政府停摆已持续34天,距离历史上最长的停摆纪录仅差一天,参议院已先后13次尝试...`
,
from
:
"11-4 · 华盛顿邮报"
}
,
}
,
{
{
title
:
"关于调整钢铁进口的公告"
,
img
:
News2
,
time
:
"一天前"
,
title
:
"美参议院通过决议,要求终止特朗普全球关税政策"
,
status
:
"重大风险"
content
:
`参议院以51票赞成、47票反对通过一项决议,旨在终止特朗普实施的全面关税政策,四名......`
,
from
:
"11-4 · 纽约时报"
}
,
}
,
{
{
title
:
"关于使用互惠关税规范进口以纠正导致大规模..."
,
img
:
News3
,
time
:
"一天前"
,
title
:
"美众院通过950亿美元对外援助法案,包含对台军援"
,
status
:
"重大风险"
content
:
`国会众议院在4月通过了大规模对外援助法案,其中包括为“印太安全”提供资金的条款,......`
,
from
:
"11-3 · 洛杉矶时报"
}
,
}
,
{
{
title
:
"关于修订对中华人民共和国低价值进口商品适..."
,
img
:
News4
,
time
:
"一天前"
,
title
:
"“大而美”法案在激烈争议中通过"
,
status
:
"一般风险"
content
:
`特朗普力推的大规模税收与支出法案在国会以微弱优势通过。该法案因大幅削减医疗补助和......`
,
from
:
"11-3 · 今日美国"
}
,
{
img
:
News5
,
title
:
"美政府“停摆”追平历史最长纪录,民生多领域受重创"
,
content
:
`联邦政府“停摆”进入第35天,追平历史纪录。食品救济项目资金中断,数百万低收入民......`
,
from
:
"11-2 · 福克斯新闻网"
}
}
]);
]);
// 获取新闻资讯列表
const
handleGetBox3Data
=
async
()
=>
{
const
params
=
{
moduleId
:
"0104"
}
;
try
{
const
res
=
await
getNews
(
params
);
console
.
log
(
"新闻资讯"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
newsList
.
value
=
res
.
data
;
}
}
catch
(
error
)
{
}
}
;
// 点击新闻条目,跳转到新闻分析页
const
handleToNewsAnalysis
=
news
=>
{
const
route
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
query
:
{
newsId
:
news
.
newsId
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
const
releaseTime
=
ref
(
"近一年发布"
);
// 社交媒体
const
messageList
=
ref
([]);
const
releaseTimeList
=
ref
([
const
handleGetBox4Data
=
async
()
=>
{
{
const
params
=
{
label
:
"近半年发布"
,
moduleId
:
"0104"
value
:
"近半年发布"
}
;
},
try
{
{
const
res
=
await
getRemarks
(
params
);
label
:
"近一年发布"
,
console
.
log
(
"社交媒体"
,
res
);
value
:
"近一年发布"
if
(
res
.
code
===
200
&&
res
.
data
)
{
},
messageList
.
value
=
res
.
data
;
{
}
label
:
"近两年发布"
,
}
catch
(
error
)
{
}
value
:
"近两年发布"
}
;
},
// 点击人物头像,跳转到人物主页
const
handleClickPerson
=
()
=>
{
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
:
3
// 1 2 3
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
// 调查数量
const
box5BtnList
=
ref
([
{
{
label
:
"近三年发布
"
,
name
:
"按月度
"
,
value
:
"近三年发布"
value
:
1
}
,
}
,
{
{
label
:
"近五年发布
"
,
name
:
"按年度
"
,
value
:
"近五年发布"
value
:
12
}
}
]);
]);
const
box5BtnActive
=
ref
(
1
);
const
handleChangeBox5Btn
=
val
=>
{
box5BtnActive
.
value
=
val
;
handleBox5
();
}
;
function
transformAllData
(
originalData
)
{
// 1. 提取所有年份并去重,排除null和undefined,然后按数字升序排序
const
allYears
=
[
...
new
Set
(
originalData
.
filter
(
item
=>
item
.
searchYorM
!=
null
&&
item
.
searchYorM
!==
""
).
map
(
item
=>
String
(
item
.
searchYorM
))
)
].
sort
((
a
,
b
)
=>
Number
(
a
)
-
Number
(
b
));
const
categoryList
=
ref
([
"全部调查"
,
"301调查"
,
"232调查"
,
"337调查"
]);
// 2. 获取所有调查类型并去重
const
allCategories
=
[...
new
Set
(
originalData
.
map
(
item
=>
item
.
sortName
))];
const
activeCate
=
ref
(
"全部调查"
);
// 3. 为每个类别创建值数组
const
activeHylyId
=
ref
(
""
);
const
categoryData
=
allCategories
.
map
(
category
=>
{
// 对于每个年份,查找对应的数据
const
values
=
allYears
.
map
(
year
=>
{
// 查找匹配当前类别和年份的数据
const
matchingItem
=
originalData
.
find
(
item
=>
item
.
sortName
===
category
&&
String
(
item
.
searchYorM
)
===
year
);
const
handleClickCate
=
cate
=>
{
// 如果找到则返回searchCount,否则返回0
console
.
log
(
cate
);
return
matchingItem
?
matchingItem
.
searchCount
:
0
;
}
);
activeCate
.
value
=
cate
.
hylymc
;
return
{
activeHylyId
.
value
=
cate
.
hylyid
;
name
:
category
,
handleGetBillsByType
();
value
:
values
};
}
;
}
);
// 绘制echarts图表
// 4. 构建最终结果
const
setChart
=
(
option
,
chartId
)
=>
{
return
{
let
chartDom
=
document
.
getElementById
(
chartId
);
title
:
allYears
,
chartDom
.
removeAttribute
(
"_echarts_instance_"
);
data
:
categoryData
let
chart
=
echarts
.
init
(
chartDom
);
}
;
chart
.
setOption
(
option
);
}
return
chart
;
};
function
transformAllData1
(
originalData
)
{
// 1. 提取所有年月并去重,排除null和undefined,然后按时间顺序排序
const
allDates
=
[
...
new
Set
(
originalData
.
filter
(
item
=>
item
.
searchYorM
!=
null
&&
item
.
searchYorM
!==
""
).
map
(
item
=>
String
(
item
.
searchYorM
))
)
].
sort
((
a
,
b
)
=>
{
// 自定义排序函数,处理年月格式
const
parseDate
=
dateStr
=>
{
if
(
dateStr
.
includes
(
"-"
))
{
// 处理 "YYYY-MM" 格式
const
[
year
,
month
]
=
dateStr
.
split
(
"-"
).
map
(
Number
);
return
{
year
,
month
:
month
||
0
}
;
}
else
{
// 处理纯年份格式
return
{
year
:
Number
(
dateStr
),
month
:
0
}
;
}
}
;
const
dateA
=
parseDate
(
a
);
const
dateB
=
parseDate
(
b
);
// 先比较年份,再比较月份
if
(
dateA
.
year
!==
dateB
.
year
)
{
return
dateA
.
year
-
dateB
.
year
;
}
return
dateA
.
month
-
dateB
.
month
;
}
);
// 2. 获取所有调查类型并去重
const
allCategories
=
[...
new
Set
(
originalData
.
map
(
item
=>
item
.
sortName
))];
// 3. 为每个类别创建值数组
const
categoryData
=
allCategories
.
map
(
category
=>
{
// 对于每个日期,查找对应的数据
const
values
=
allDates
.
map
(
date
=>
{
// 查找匹配当前类别和日期的数据
const
matchingItem
=
originalData
.
find
(
item
=>
item
.
sortName
===
category
&&
String
(
item
.
searchYorM
)
===
date
);
// 如果找到则返回searchCount,否则返回0
return
matchingItem
?
matchingItem
.
searchCount
:
0
;
}
);
return
{
name
:
category
,
value
:
values
}
;
}
);
// 4. 构建最终结果
return
{
title
:
allDates
,
data
:
categoryData
}
;
}
const
chart1Data
=
ref
({
const
chart1Data
=
ref
({
title
:
[
"2014"
,
"2015"
,
"2016"
,
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
],
title
:
[
"2014"
,
"2015"
,
"2016"
,
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
],
...
@@ -667,8 +925,32 @@ const chart1Data = ref({
...
@@ -667,8 +925,32 @@ const chart1Data = ref({
}
}
]
]
}
);
}
);
const
hadleGetStatNum
=
async
()
=>
{
const
params
=
{
byYorM
:
box5BtnActive
.
value
// 月度:1 年度:12
}
;
try
{
const
res
=
await
getStatNum
(
params
);
console
.
log
(
"调查数量"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
box5BtnActive
.
value
===
1
)
{
chart1Data
.
value
=
transformAllData1
(
res
.
data
);
}
else
{
chart1Data
.
value
=
transformAllData
(
res
.
data
);
}
}
}
catch
(
error
)
{
}
}
;
const
box7YearList
=
ref
([
const
handleBox5
=
async
()
=>
{
await
hadleGetStatNum
();
let
chart1
=
getMultiLineChart
(
chart1Data
.
value
);
setChart
(
chart1
,
"chart1"
);
}
;
// 制裁领域分布
const
box6SelectedYear
=
ref
(
"2025"
);
const
box6YearList
=
ref
([
{
{
label
:
"2025"
,
label
:
"2025"
,
value
:
"2025"
value
:
"2025"
...
@@ -694,216 +976,101 @@ const box7YearList = ref([
...
@@ -694,216 +976,101 @@ const box7YearList = ref([
value
:
"2020"
value
:
"2020"
}
}
]);
]);
const
handleChangeBox6Year
=
()
=>
{
handleBox6
();
}
;
const
box6Data
=
ref
({
title
:
[],
data
:
[
{
name
:
"337调查"
,
value
:
[]
}
,
{
name
:
"232调查"
,
value
:
[]
}
,
{
name
:
"301调查"
,
value
:
[]
}
],
maxNum
:
0
}
);
const
handleGetStatArea
=
async
()
=>
{
const
params
=
{
years
:
box6SelectedYear
.
value
}
;
try
{
const
res
=
await
getStatArea
(
params
);
console
.
log
(
"制裁领域分布"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
arr
=
res
.
data
.
map
(
item
=>
{
return
item
.
AREANAME
;
}
);
box6Data
.
value
.
title
=
[...
new
Set
(
arr
)];
const
box7SelectedYear
=
ref
(
"2025"
);
const
arr1
=
res
.
data
.
filter
(
item
=>
{
return
item
.
SORTNAME
===
"337调查"
;
const
surveyYearList
=
ref
([
}
);
{
const
arr1Name
=
arr1
.
map
(
item
=>
{
name
:
"全部时间"
,
return
item
.
AREANAME
;
selected
:
false
}
);
},
box6Data
.
value
.
title
.
forEach
((
item
,
index
)
=>
{
{
if
(
arr1Name
.
indexOf
(
item
)
>
-
1
)
{
name
:
"2025年"
,
const
idx
=
arr1Name
.
indexOf
(
item
);
selected
:
false
box6Data
.
value
.
data
[
0
].
value
[
index
]
=
arr1
[
idx
].
AREACOUNT
;
},
}
else
{
{
box6Data
.
value
.
data
[
0
].
value
[
index
]
=
0
;
name
:
"2024年"
,
}
selected
:
false
}
);
},
{
name
:
"2023年"
,
selected
:
false
},
{
name
:
"2022年"
,
selected
:
false
},
{
name
:
"2021年"
,
selected
:
false
}
]);
const
surveyAreaList
=
ref
([
{
name
:
"人工智能"
,
selected
:
false
},
{
name
:
"半导体/芯片"
,
selected
:
false
},
{
name
:
"电子设备"
,
selected
:
false
},
{
name
:
"显示技术"
,
selected
:
false
},
{
name
:
"新能源"
,
selected
:
false
},
{
name
:
"通信设备"
,
selected
:
false
}
]);
const
surveyInfoList
=
ref
([
const
arr2
=
res
.
data
.
filter
(
item
=>
{
{
return
item
.
SORTNAME
===
"232调查"
;
name
:
"301"
,
}
);
title
:
"某些车辆远程信息处理、车队管理以及基于视频的安全系统、设备和组件12"
,
const
arr2Name
=
arr2
.
map
(
item
=>
{
num
:
"337-TA-1393"
,
return
item
.
AREANAME
;
area
:
"半导体"
,
}
);
status
:
"正在调查"
,
box6Data
.
value
.
title
.
forEach
((
item
,
index
)
=>
{
releaseDate
:
"2025年9月1日"
if
(
arr2Name
.
indexOf
(
item
)
>
-
1
)
{
},
const
idx
=
arr2Name
.
indexOf
(
item
);
{
box6Data
.
value
.
data
[
1
].
value
[
index
]
=
arr2
[
idx
].
AREACOUNT
;
name
:
"337"
,
}
else
{
title
:
"某些蒸发器设备,其中使用的墨盒及其组件(II)"
,
box6Data
.
value
.
data
[
1
].
value
[
index
]
=
0
;
num
:
"337-TA-1392"
,
}
area
:
"制造业"
,
}
);
status
:
"正在调查"
,
releaseDate
:
"2025年8月15日"
},
{
name
:
"301"
,
title
:
"某些Topcon太阳能电池,模块,面板,组件及其组件和包含相同产品"
,
num
:
"337-TA-1422和337-TA-1425(合并)"
,
area
:
"半导体"
,
status
:
"正在调查"
,
releaseDate
:
"2025年8月10日"
},
{
name
:
"337"
,
title
:
"某些光伏干线总线电缆组件及其组件"
,
num
:
"337-TA-1438"
,
area
:
"光伏"
,
status
:
"正在调查"
,
releaseDate
:
"2025年7月29日"
},
{
name
:
"337"
,
title
:
"某些外国制造的半导体器件、包含相同产品及其组件的组件"
,
num
:
"337-TA-1443"
,
area
:
"半导体"
,
status
:
"正在调查"
,
releaseDate
:
"2025年7月18日"
},
{
name
:
"301"
,
title
:
"某些车辆远程信息处理、车队管理以及基于视频的安全系统、设备及其组件"
,
num
:
"337-TA-1441"
,
area
:
"半导体"
,
status
:
"终止调查"
,
releaseDate
:
"2025年7月1日"
},
{
name
:
"337"
,
title
:
"某些包含相同功能的无线前端模块和设备"
,
num
:
"337-TA-1435"
,
area
:
"半导体"
,
status
:
"正在调查"
,
releaseDate
:
"2025年6月14日"
},
{
name
:
"337"
,
title
:
"用于液晶显示器的某些玻璃基板,含有相同产品的产品以及制造相同方法的玻璃基板"
,
num
:
"337-TA-1433"
,
area
:
"显示技术"
,
status
:
"正在调查"
,
releaseDate
:
"2025年6月5日"
},
{
name
:
"337"
,
title
:
"某些Topcon太阳能电池,模块,面板,组件及其组件和包含相同产品"
,
num
:
"337-TA-1422和337-TA-1425(合并)"
,
area
:
"光伏"
,
status
:
"终止调查"
,
releaseDate
:
"2025年8月10日"
},
{
name
:
"232"
,
title
:
"某些蒸发器设备,其中使用的墨盒及其组件(II)"
,
num
:
"337-TA-1392"
,
area
:
"制造业"
,
status
:
"终止调查"
,
releaseDate
:
"2025年8月15日"
}
]);
// 新闻资讯
const
arr3
=
res
.
data
.
filter
(
item
=>
{
const
newsList
=
ref
([
return
item
.
SORTNAME
===
"301调查"
;
{
}
);
img
:
News1
,
const
arr3Name
=
arr3
.
map
(
item
=>
{
title
:
"美政府停摆仍持续,拨款法案存缺陷,但两党磋商露曙光"
,
return
item
.
AREANAME
;
content
:
`美国政府停摆已持续34天,距离历史上最长的停摆纪录仅差一天,参议院已先后13次尝试...`
,
}
);
from
:
"11-4 · 华盛顿邮报"
box6Data
.
value
.
title
.
forEach
((
item
,
index
)
=>
{
},
if
(
arr3Name
.
indexOf
(
item
)
>
-
1
)
{
{
const
idx
=
arr3Name
.
indexOf
(
item
);
img
:
News2
,
box6Data
.
value
.
data
[
2
].
value
[
index
]
=
arr3
[
idx
].
AREACOUNT
;
title
:
"美参议院通过决议,要求终止特朗普全球关税政策"
,
}
else
{
content
:
`参议院以51票赞成、47票反对通过一项决议,旨在终止特朗普实施的全面关税政策,四名......`
,
box6Data
.
value
.
data
[
2
].
value
[
index
]
=
0
;
from
:
"11-4 · 纽约时报"
}
},
}
);
{
img
:
News3
,
title
:
"美众院通过950亿美元对外援助法案,包含对台军援"
,
content
:
`国会众议院在4月通过了大规模对外援助法案,其中包括为“印太安全”提供资金的条款,......`
,
from
:
"11-3 · 洛杉矶时报"
},
{
img
:
News4
,
title
:
"“大而美”法案在激烈争议中通过"
,
content
:
`特朗普力推的大规模税收与支出法案在国会以微弱优势通过。该法案因大幅削减医疗补助和......`
,
from
:
"11-3 · 今日美国"
},
{
img
:
News5
,
title
:
"美政府“停摆”追平历史最长纪录,民生多领域受重创"
,
content
:
`联邦政府“停摆”进入第35天,追平历史纪录。食品救济项目资金中断,数百万低收入民......`
,
from
:
"11-2 · 福克斯新闻网"
}
]);
// 社交媒体
const
numArr
=
res
.
data
.
map
(
item
=>
{
const
messageList
=
ref
([
return
item
.
AREACOUNT
;
{
}
);
img
:
Message1
,
name
:
"唐纳德·特朗普"
,
time
:
"15:23 · 发布于真实社交"
,
content
:
`埃隆·马斯克在强力支持我竞选总统之前,早就知道我强烈反对‘电动汽车强制令’。这太荒谬了,这一直是我竞选活动的主要部分。电动汽车没问题,但不应该强迫每个人都拥有一辆。埃隆获得的补贴可能远远超过历史上任何一个人。如果没有补贴,埃隆可能不得不关门大吉,回到南非老家。`
},
{
img
:
Message2
,
name
:
"埃隆·马斯克"
,
time
:
"14:49 · 发布于X"
,
content
:
`如果这个疯狂的支出法案获得通过,‘美国党’将在第二天成立。`
},
{
img
:
Message3
,
name
:
"塞巴斯蒂安·马拉比"
,
time
:
"11:05 · 发布于X"
,
content
:
`提出特朗普政府的AI政策强调技术开放与快速应用,但可能以牺牲安全防范为代价,开启了“潘多拉魔盒”。`
}
]);
// 查看更多风险信号
box6Data
.
value
.
maxNum
=
Math
.
max
(...
numArr
);
const
handleToMoreRiskSignal
=
()
=>
{
}
const
route
=
router
.
resolve
(
"/riskSignal"
);
}
catch
(
error
)
{
}
window
.
open
(
route
.
href
,
"_blank"
);
}
;
}
;
// 查看更多新闻资讯
const
handleBox6
=
async
()
=>
{
const
handleToMoreNews
=
()
=>
{
await
handleGetStatArea
();
const
route
=
router
.
resolve
(
"/newsBrief"
);
let
chart2
=
getRadarChart
(
box6Data
.
value
);
window
.
open
(
route
.
href
,
"_blank
"
);
setChart
(
chart2
,
"chart2
"
);
}
;
}
;
// 制裁领域分布
const
box7YearList
=
ref
([
const
box6SelectedYear
=
ref
(
"2025"
);
const
box6YearList
=
ref
([
{
{
label
:
"2025"
,
label
:
"2025"
,
value
:
"2025"
value
:
"2025"
...
@@ -930,6 +1097,12 @@ const box6YearList = ref([
...
@@ -930,6 +1097,12 @@ const box6YearList = ref([
}
}
]);
]);
const
box7SelectedYear
=
ref
(
"2025"
);
const
handleChangeBox7Year
=
()
=>
{
handleGetBox7Data2
();
}
;
const
box7Chart1Data
=
ref
([
const
box7Chart1Data
=
ref
([
{
{
name
:
"337调查"
,
name
:
"337调查"
,
...
@@ -972,96 +1145,282 @@ const box7Chart1Data = ref([
...
@@ -972,96 +1145,282 @@ const box7Chart1Data = ref([
}
}
]);
]);
const
box7Chart2Data
=
ref
([
const
box7Chart2Data
=
ref
([]);
{
const
handleGetBox7Data2
=
async
()
=>
{
name
:
"广东省"
,
const
params
=
{
value
:
42
years
:
box7SelectedYear
.
value
},
}
;
{
try
{
name
:
"上海市"
,
const
res
=
await
getCompanyPlace
(
params
);
value
:
35
console
.
log
(
"企业地域分布"
,
res
);
},
if
(
res
.
code
===
200
&&
res
.
data
)
{
{
box7Chart2Data
.
value
=
res
.
data
name
:
"浙江省"
,
.
filter
(
item
=>
{
value
:
28
return
item
.
ORGPROVINCE
;
},
}
)
{
.
map
(
item
=>
{
name
:
"江苏省"
,
return
{
value
:
19
name
:
item
.
ORGPROVINCE
,
},
value
:
item
.
PROVINCECOUNT
}
;
}
);
let
box7Chart2
=
getBarChart
(
box7Chart2Data
.
value
);
setChart
(
box7Chart2
,
"box7Chart2"
);
}
else
{
box7Chart2Data
.
value
=
[];
}
}
catch
(
error
)
{
}
}
;
handleGetBox7Data2
();
// 制裁领域分布企业分布
const
box8Data
=
ref
([
//
{
// logo: Logo1,
// name: "华为技术有限公司",
// data337: 12,
// data301: 2,
// data232: 1
//
}
,
//
{
// logo: Logo2,
// name: "大疆创新科技有限公司",
// data337: 7,
// data301: 1,
// data232: null
//
}
,
//
{
// logo: Logo3,
// name: "TCL科技集团股份有限公司",
// data337: 6,
// data301: 1,
// data232: null
//
}
,
//
{
// logo: Logo4,
// name: "中兴通讯股份有限公司",
// data337: 6,
// data301: null,
// data232: null
//
}
,
//
{
// logo: Logo5,
// name: "联想集团",
// data337: 6,
// data301: null,
// data232: null
//
}
]);
const
handleGetBox8Data
=
async
()
=>
{
try
{
const
res
=
await
getStatAreaCompanyList
();
console
.
log
(
"制裁领域分布-企业分布"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
arr
=
res
.
data
.
map
(
item
=>
{
return
item
.
ORGNAME
;
}
);
const
nameArr
=
[...
new
Set
(
arr
)];
console
.
log
(
"nameArr"
,
nameArr
);
box8Data
.
value
=
Array
.
from
({
length
:
nameArr
.
length
}
,
()
=>
({
name
:
""
,
data337
:
null
,
data232
:
null
,
data301
:
null
,
logo
:
null
}
));
nameArr
.
forEach
((
item
,
index
)
=>
{
box8Data
.
value
[
index
].
name
=
item
;
box8Data
.
value
[
index
].
data337
=
null
;
box8Data
.
value
[
index
].
data301
=
null
;
box8Data
.
value
[
index
].
data232
=
null
;
box8Data
.
value
[
index
].
logo
=
null
;
}
);
box8Data
.
value
.
forEach
(
item
=>
{
res
.
data
.
forEach
(
val
=>
{
if
(
val
.
ORGNAME
===
item
.
name
&&
val
.
SORTCODE
===
"337"
)
{
item
.
data337
=
val
.
ORGCOUNT
;
}
if
(
val
.
ORGNAME
===
item
.
name
&&
val
.
SORTCODE
===
"232"
)
{
item
.
data232
=
val
.
ORGCOUNT
;
}
if
(
val
.
ORGNAME
===
item
.
name
&&
val
.
SORTCODE
===
"302"
)
{
item
.
data301
=
val
.
ORGCOUNT
;
}
}
);
}
);
console
.
log
(
"box8Data"
,
box8Data
.
value
);
}
}
catch
(
error
)
{
console
.
error
(
error
);
}
}
;
// 资源库
const
pageSize
=
ref
(
10
);
const
currentPage
=
ref
(
1
);
const
totalDiscussNum
=
ref
(
0
);
const
handleCurrentChange
=
page
=>
{
currentPage
.
value
=
page
;
handleGetSurveyList
();
}
;
const
categoryList
=
ref
([
{
{
name
:
"
北京市
"
,
name
:
"
全部调查
"
,
value
:
15
id
:
""
}
,
}
,
{
{
name
:
"
四川省
"
,
name
:
"
301调查
"
,
value
:
12
id
:
"301"
}
,
}
,
{
{
name
:
"
山东省
"
,
name
:
"
232调查
"
,
value
:
11
id
:
"232"
}
,
}
,
{
{
name
:
"
福建省
"
,
name
:
"
337调查
"
,
value
:
8
id
:
"337"
}
}
]);
]);
const
box8Data
=
ref
([
const
activeCateId
=
ref
(
""
);
const
handleClickCate
=
cate
=>
{
activeCateId
.
value
=
cate
.
id
;
handleGetSurveyList
();
}
;
const
isSort
=
ref
(
true
);
// true 升序 false 倒序
const
handleSwithSort
=
()
=>
{
isSort
.
value
=
!
isSort
.
value
;
}
;
const
surveyYearList
=
ref
([
{
{
logo
:
Logo1
,
name
:
"2025年"
,
name
:
"华为技术有限公司"
,
id
:
"2025"
data337
:
12
,
data301
:
2
,
data232
:
1
}
,
}
,
{
{
logo
:
Logo2
,
name
:
"2024年"
,
name
:
"大疆创新科技有限公司"
,
id
:
"2024"
data337
:
7
,
data301
:
1
,
data232
:
null
}
,
}
,
{
{
logo
:
Logo3
,
name
:
"2023年"
,
name
:
"TCL科技集团股份有限公司"
,
id
:
"2023"
data337
:
6
,
data301
:
1
,
data232
:
null
}
,
}
,
{
{
logo
:
Logo4
,
name
:
"2022年"
,
name
:
"中兴通讯股份有限公司"
,
id
:
"2022"
data337
:
6
,
data301
:
null
,
data232
:
null
}
,
}
,
{
{
logo
:
Logo5
,
name
:
"2021年"
,
name
:
"联想集团"
,
id
:
"2021"
data337
:
6
,
data301
:
null
,
data232
:
null
}
}
]);
]);
onMounted
(
async
()
=>
{
const
checkedSurveyYears
=
ref
([
"2025"
]);
let
chart1
=
getMultiLineChart
(
const
handleChangeCheckedSurveyYears
=
()
=>
{
chart1Data
.
value
.
title
,
// console.log(checkedSurveyYears.value);
chart1Data
.
value
.
data
[
0
].
value
,
handleGetSurveyList
();
chart1Data
.
value
.
data
[
1
].
value
,
}
;
chart1Data
.
value
.
data
[
2
].
value
);
setChart
(
chart1
,
"chart1"
);
let
chart2
=
getRadarChart
();
const
areaList
=
ref
([
setChart
(
chart2
,
"chart2"
);
//
{
id
:
"人工智能"
,
name
:
"人工智能"
}
,
]);
const
checkedAreaList
=
ref
([
"1"
]);
const
handleGetAreaList
=
async
()
=>
{
try
{
const
res
=
await
getHylyList
();
console
.
log
(
"行业领域列表"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
areaList
.
value
=
res
.
data
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
id
:
item
.
id
}
;
}
);
console
.
log
(
"areaList"
,
areaList
.
value
);
}
}
catch
(
error
)
{
}
}
;
const
handleChangeCheckedAreas
=
()
=>
{
// console.log(checkedAreaList.value);
handleGetSurveyList
();
}
;
const
surveyInfoList
=
ref
([
]);
const
handleGetSurveyList
=
async
()
=>
{
const
params
=
{
currentPage
:
currentPage
.
value
-
1
,
pageSize
:
pageSize
.
value
,
sortCode
:
activeCateId
.
value
,
publishYear
:
checkedSurveyYears
.
value
.
toString
(),
Area
:
checkedAreaList
.
value
.
toString
(),
sortField
:
"date"
,
sortOrder
:
isSort
.
value
?
"asc"
:
"desc"
}
;
try
{
const
res
=
await
getSurveyList
(
params
);
console
.
log
(
"调查列表"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
totalDiscussNum
.
value
=
res
.
data
.
totalElements
;
surveyInfoList
.
value
=
res
.
data
.
content
;
}
else
{
surveyInfoList
.
value
=
[];
ElMessage
.
warning
(
"当前条件下无调查列表数据!"
);
}
}
catch
(
error
)
{
}
}
;
const
handleClickToSurveyDetail
=
(
id
)
=>
{
const
route
=
router
.
resolve
({
path
:
"/marketAccessLayout"
,
query
:
{
id
:
id
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
// 查看更多风险信号
const
handleToMoreRiskSignal
=
()
=>
{
const
route
=
router
.
resolve
(
"/riskSignal"
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
// 查看更多新闻资讯
const
handleToMoreNews
=
()
=>
{
const
route
=
router
.
resolve
(
"/newsBrief"
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
// 返回首页
const
handleBackHome
=
()
=>
{
router
.
push
({
path
:
"/overview"
}
);
}
;
onMounted
(
async
()
=>
{
handleGetBox1Data
();
handleGetStatSort
();
handleGetBox2Data
();
handleGetBox3Data
();
handleGetBox4Data
();
handleBox5
();
handleBox6
();
handleGetBox8Data
();
let
box7Chart1
=
getMapChart
(
box7Chart1Data
.
value
);
let
box7Chart1
=
getMapChart
(
box7Chart1Data
.
value
);
setChart
(
box7Chart1
,
"box7Chart1"
);
setChart
(
box7Chart1
,
"box7Chart1"
);
let
box7Chart2
=
getBarChart
(
box7Chart2Data
.
value
);
await
handleGetAreaList
(
);
setChart
(
box7Chart2
,
"box7Chart2"
);
handleGetSurveyList
(
);
}
);
}
);
<
/script
>
<
/script
>
...
@@ -1288,6 +1647,7 @@ onMounted(async () => {
...
@@ -1288,6 +1647,7 @@ onMounted(async () => {
.
content
-
box
{
.
content
-
box
{
margin
-
left
:
30
px
;
margin
-
left
:
30
px
;
.
item
{
.
item
{
width
:
485
px
;
height
:
24
px
;
height
:
24
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -1295,6 +1655,9 @@ onMounted(async () => {
...
@@ -1295,6 +1655,9 @@ onMounted(async () => {
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
line
-
height
:
24
px
;
margin
-
top
:
8
px
;
margin
-
top
:
8
px
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
}
}
}
}
}
}
...
@@ -1346,6 +1709,7 @@ onMounted(async () => {
...
@@ -1346,6 +1709,7 @@ onMounted(async () => {
.
content
-
box
{
.
content
-
box
{
margin
-
left
:
30
px
;
margin
-
left
:
30
px
;
.
item
{
.
item
{
width
:
485
px
;
height
:
24
px
;
height
:
24
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -1353,6 +1717,9 @@ onMounted(async () => {
...
@@ -1353,6 +1717,9 @@ onMounted(async () => {
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
line
-
height
:
24
px
;
margin
-
top
:
8
px
;
margin
-
top
:
8
px
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
}
}
}
}
}
}
...
@@ -1405,6 +1772,7 @@ onMounted(async () => {
...
@@ -1405,6 +1772,7 @@ onMounted(async () => {
.
content
-
box
{
.
content
-
box
{
margin
-
left
:
30
px
;
margin
-
left
:
30
px
;
.
item
{
.
item
{
width
:
485
px
;
height
:
24
px
;
height
:
24
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -1412,6 +1780,9 @@ onMounted(async () => {
...
@@ -1412,6 +1780,9 @@ onMounted(async () => {
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
line
-
height
:
24
px
;
margin
-
top
:
8
px
;
margin
-
top
:
8
px
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
}
}
}
}
}
}
...
@@ -1436,6 +1807,7 @@ onMounted(async () => {
...
@@ -1436,6 +1807,7 @@ onMounted(async () => {
.
box1
-
left
{
.
box1
-
left
{
position
:
absolute
;
position
:
absolute
;
left
:
0
;
left
:
0
;
z
-
index
:
9999
;
top
:
220
px
;
top
:
220
px
;
width
:
24
px
;
width
:
24
px
;
height
:
48
px
;
height
:
48
px
;
...
@@ -1449,6 +1821,7 @@ onMounted(async () => {
...
@@ -1449,6 +1821,7 @@ onMounted(async () => {
position
:
absolute
;
position
:
absolute
;
right
:
0
;
right
:
0
;
top
:
220
px
;
top
:
220
px
;
z
-
index
:
9999
;
width
:
24
px
;
width
:
24
px
;
height
:
48
px
;
height
:
48
px
;
cursor
:
pointer
;
cursor
:
pointer
;
...
@@ -1519,8 +1892,9 @@ onMounted(async () => {
...
@@ -1519,8 +1892,9 @@ onMounted(async () => {
}
}
.
header
-
right
{
.
header
-
right
{
display
:
flex
;
display
:
flex
;
width
:
2
00px
;
width
:
3
00
px
;
justify
-
content
:
flex
-
end
;
justify
-
content
:
flex
-
end
;
flex
-
wrap
:
wrap
;
.
tag1
{
.
tag1
{
height
:
24
px
;
height
:
24
px
;
line
-
height
:
24
px
;
line
-
height
:
24
px
;
...
@@ -1575,6 +1949,7 @@ onMounted(async () => {
...
@@ -1575,6 +1949,7 @@ onMounted(async () => {
line
-
height
:
24
px
;
line
-
height
:
24
px
;
}
}
.
title
{
.
title
{
width
:
200
px
;
margin
-
left
:
11
px
;
margin
-
left
:
11
px
;
margin
-
top
:
10
px
;
margin
-
top
:
10
px
;
height
:
24
px
;
height
:
24
px
;
...
@@ -1588,6 +1963,8 @@ onMounted(async () => {
...
@@ -1588,6 +1963,8 @@ onMounted(async () => {
.
info
-
content
{
.
info
-
content
{
width
:
909
px
;
width
:
909
px
;
height
:
60
px
;
height
:
60
px
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
16
px
;
font
-
size
:
16
px
;
...
@@ -1602,8 +1979,10 @@ onMounted(async () => {
...
@@ -1602,8 +1979,10 @@ onMounted(async () => {
margin
-
left
:
28
px
;
margin
-
left
:
28
px
;
width
:
940
px
;
width
:
940
px
;
height
:
185
px
;
height
:
185
px
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
.
list
-
item
{
.
list
-
item
{
height
:
37px
;
min
-
height
:
37
px
;
display
:
flex
;
display
:
flex
;
.
icon
{
.
icon
{
width
:
4
px
;
width
:
4
px
;
...
@@ -1708,9 +2087,9 @@ onMounted(async () => {
...
@@ -1708,9 +2087,9 @@ onMounted(async () => {
&
:
hover
{
&
:
hover
{
background
:
var
(
--
color
-
bg
-
hover
);
background
:
var
(
--
color
-
bg
-
hover
);
}
}
.itemLeftStatus
1
{
.
itemLeftStatus
3
{
color
:
rgba
(
82
,
196
,
26
,
1
)
!
important
;
background
:
rgba
(
255
,
241
,
240
)
!
important
;
background
:
rgba
(
246
,
255
,
237
,
1
)
!
important
;
color
:
rgba
(
245
,
34
,
45
,
1
)
!
important
;
}
}
.
itemLeftStatus2
{
.
itemLeftStatus2
{
color
:
rgba
(
250
,
140
,
22
,
1
)
!
important
;
color
:
rgba
(
250
,
140
,
22
,
1
)
!
important
;
...
@@ -1722,8 +2101,8 @@ onMounted(async () => {
...
@@ -1722,8 +2101,8 @@ onMounted(async () => {
width
:
40
px
;
width
:
40
px
;
height
:
40
px
;
height
:
40
px
;
border
-
radius
:
20
px
;
border
-
radius
:
20
px
;
background
:
rgba
(
255
,
241
,
240
);
color
:
rgba
(
82
,
196
,
26
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
background
:
rgba
(
246
,
255
,
237
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
12
px
;
font
-
size
:
12
px
;
font
-
weight
:
400
;
font
-
weight
:
400
;
...
@@ -1739,15 +2118,18 @@ onMounted(async () => {
...
@@ -1739,15 +2118,18 @@ onMounted(async () => {
border
-
bottom
:
1
px
solid
rgba
(
240
,
242
,
244
,
1
);
border
-
bottom
:
1
px
solid
rgba
(
240
,
242
,
244
,
1
);
display
:
flex
;
display
:
flex
;
.
text
{
.
text
{
width
:
3
4
8px
;
width
:
3
2
8
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
16
px
;
font
-
size
:
16
px
;
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
47
px
;
line
-
height
:
47
px
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
}
}
.
time
{
.
time
{
margin-left
:
10
px
;
margin
-
left
:
2
px
;
line
-
height
:
47
px
;
line
-
height
:
47
px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
color
:
rgba
(
132
,
136
,
142
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -1855,6 +2237,10 @@ onMounted(async () => {
...
@@ -1855,6 +2237,10 @@ onMounted(async () => {
width
:
749
px
;
width
:
749
px
;
margin
-
left
:
21
px
;
margin
-
left
:
21
px
;
border
-
bottom
:
1
px
solid
rgba
(
240
,
242
,
244
,
1
);
border
-
bottom
:
1
px
solid
rgba
(
240
,
242
,
244
,
1
);
cursor
:
pointer
;
&
:
hover
{
background
:
var
(
--
color
-
bg
-
hover
);
}
.
left
{
.
left
{
width
:
72
px
;
width
:
72
px
;
height
:
48
px
;
height
:
48
px
;
...
@@ -1873,7 +2259,7 @@ onMounted(async () => {
...
@@ -1873,7 +2259,7 @@ onMounted(async () => {
justify
-
content
:
space
-
between
;
justify
-
content
:
space
-
between
;
.
title
{
.
title
{
margin
-
top
:
13
px
;
margin
-
top
:
13
px
;
width
:
52
0px
;
width
:
47
0
px
;
height
:
24
px
;
height
:
24
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -1885,15 +2271,18 @@ onMounted(async () => {
...
@@ -1885,15 +2271,18 @@ onMounted(async () => {
white
-
space
:
nowrap
;
white
-
space
:
nowrap
;
}
}
.
time
{
.
time
{
flex
:
1
;
width
:
187
px
;
text
-
align
:
right
;
text
-
align
:
right
;
height
:
22
px
;
height
:
22
px
;
margin-top
:
1
9
px
;
margin
-
top
:
1
5
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
14
px
;
font
-
size
:
14
px
;
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
22
px
;
line
-
height
:
22
px
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
}
}
}
}
.
right
-
footer
{
.
right
-
footer
{
...
@@ -1962,6 +2351,7 @@ onMounted(async () => {
...
@@ -1962,6 +2351,7 @@ onMounted(async () => {
}
}
.
box4
-
main
{
.
box4
-
main
{
height
:
402
px
;
height
:
402
px
;
overflow
:
hidden
;
overflow
-
y
:
auto
;
overflow
-
y
:
auto
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
padding
-
top
:
8
px
;
padding
-
top
:
8
px
;
...
@@ -1973,6 +2363,9 @@ onMounted(async () => {
...
@@ -1973,6 +2363,9 @@ onMounted(async () => {
margin
-
top
:
5
px
;
margin
-
top
:
5
px
;
width
:
36
px
;
width
:
36
px
;
height
:
36
px
;
height
:
36
px
;
border
-
radius
:
18
px
;
overflow
:
hidden
;
cursor
:
pointer
;
img
{
img
{
width
:
100
%
;
width
:
100
%
;
height
:
100
%
;
height
:
100
%
;
...
@@ -2512,7 +2905,8 @@ onMounted(async () => {
...
@@ -2512,7 +2905,8 @@ onMounted(async () => {
}
}
.
home
-
main
-
footer
{
.
home
-
main
-
footer
{
// width: 100%;
// width: 100%;
height
:
1149px
;
// height: 1149px;
padding
-
bottom
:
20
px
;
background
:
rgba
(
248
,
249
,
250
,
1
);
background
:
rgba
(
248
,
249
,
250
,
1
);
overflow
:
hidden
;
overflow
:
hidden
;
.
home
-
main
-
footer
-
header
{
.
home
-
main
-
footer
-
header
{
...
@@ -2555,27 +2949,70 @@ onMounted(async () => {
...
@@ -2555,27 +2949,70 @@ onMounted(async () => {
height
:
42
px
;
height
:
42
px
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
padding
:
5
px
0
;
padding
:
5
px
0
;
.
paixu
-
btn
{
display
:
flex
;
width
:
120
px
;
height
:
32
px
;
box
-
sizing
:
border
-
box
;
border
:
1
px
solid
rgba
(
230
,
231
,
232
,
1
);
border
-
radius
:
4
px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
&
:
hover
{
background
:
var
(
--
color
-
bg
-
hover
);
}
cursor
:
pointer
;
.
icon1
{
width
:
11
px
;
height
:
14
px
;
margin
-
top
:
10
px
;
margin
-
left
:
9
px
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
.
text
{
height
:
19
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
14
px
;
font
-
weight
:
400
;
line
-
height
:
18
px
;
letter
-
spacing
:
0
px
;
text
-
align
:
left
;
margin
-
top
:
7
px
;
margin
-
left
:
9
px
;
}
.
icon2
{
width
:
10
px
;
height
:
5
px
;
margin
-
top
:
5
px
;
margin
-
left
:
13
px
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
}
}
}
}
}
.
home
-
main
-
footer
-
main
{
.
home
-
main
-
footer
-
main
{
width
:
1600
px
;
width
:
1600
px
;
margin
-
bottom
:
20
px
;
margin
-
bottom
:
20
px
;
height
:
985px
;
// height: 985px;
// box-shadow: 0px 0px 15px 0px rgba(60, 87, 126, 0.2);
// background: rgba(255, 255, 255, 1);
margin
:
0
auto
;
margin
:
0
auto
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
// padding: 20px;
// padding: 20px;
display
:
flex
;
display
:
flex
;
.
left
{
.
left
{
width
:
300
px
;
width
:
300
px
;
height
:
56
0px
;
height
:
70
0
px
;
border
-
radius
:
10
px
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.
left
-
box1
{
.
left
-
box1
{
margin
-
top
:
17
px
;
margin
-
top
:
17
px
;
height
:
2
6
0px
;
height
:
2
2
0
px
;
.
left
-
box1
-
header
{
.
left
-
box1
-
header
{
display
:
flex
;
display
:
flex
;
.
icon
{
.
icon
{
...
@@ -2597,10 +3034,7 @@ onMounted(async () => {
...
@@ -2597,10 +3034,7 @@ onMounted(async () => {
}
}
.
left
-
box1
-
main
{
.
left
-
box1
-
main
{
margin
-
top
:
10
px
;
margin
-
top
:
10
px
;
.time-label
{
padding
-
left
:
20
px
;
height
:
35px
;
margin-left
:
25px
;
}
}
}
}
}
.
left
-
box2
{
.
left
-
box2
{
...
@@ -2627,17 +3061,15 @@ onMounted(async () => {
...
@@ -2627,17 +3061,15 @@ onMounted(async () => {
}
}
.
left
-
box2
-
main
{
.
left
-
box2
-
main
{
margin
-
top
:
10
px
;
margin
-
top
:
10
px
;
.area-label
{
padding
-
left
:
20
px
;
height
:
35px
;
margin-left
:
25px
;
}
}
}
}
}
}
}
.
right
{
.
right
{
margin
-
left
:
16
px
;
margin
-
left
:
16
px
;
width
:
1284
px
;
width
:
1284
px
;
height
:
899px
;
min
-
height
:
700
px
;
// height: 899px;
border
-
radius
:
10
px
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
box
-
shadow
:
0
px
0
px
15
px
0
px
rgba
(
60
,
87
,
126
,
0.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
...
@@ -2698,12 +3130,16 @@ onMounted(async () => {
...
@@ -2698,12 +3130,16 @@ onMounted(async () => {
}
}
}
}
.
right
-
main
{
.
right
-
main
{
height
:
780px
;
min
-
height
:
586
px
;
// background: orange;
border
-
bottom
:
1
px
solid
rgba
(
230
,
231
,
232
,
1
);
// height: 780px;
.
item
{
.
item
{
display
:
flex
;
display
:
flex
;
padding
:
16
px
0
;
padding
:
16
px
0
;
// height: 56px;
cursor
:
pointer
;
&
:
hover
{
background
:
var
(
--
color
-
bg
-
hover
)
!
important
;
}
&
:
nth
-
child
(
2
n
)
{
&
:
nth
-
child
(
2
n
)
{
background
:
rgba
(
247
,
248
,
249
,
1
);
background
:
rgba
(
247
,
248
,
249
,
1
);
}
}
...
@@ -2797,9 +3233,10 @@ onMounted(async () => {
...
@@ -2797,9 +3233,10 @@ onMounted(async () => {
}
}
}
}
.
right
-
footer
{
.
right
-
footer
{
box
-
sizing
:
border
-
box
;
padding
-
top
:
15
px
;
height
:
60
px
;
display
:
flex
;
display
:
flex
;
// height: 60px;
// background: orange;
justify
-
content
:
space
-
between
;
justify
-
content
:
space
-
between
;
.
footer
-
left
{
.
footer
-
left
{
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
...
...
src/views/marketAccessRestrictions/marketAccessHome/utils/barChart.js
浏览文件 @
9ca77a28
...
@@ -8,7 +8,7 @@ const getBarChart = (originalData) => {
...
@@ -8,7 +8,7 @@ const getBarChart = (originalData) => {
tooltip
:
{},
tooltip
:
{},
grid
:
{
grid
:
{
top
:
'3%'
,
top
:
'3%'
,
right
:
'3%'
,
right
:
66
,
bottom
:
'1%'
,
bottom
:
'1%'
,
left
:
'1%'
,
left
:
'1%'
,
containLabel
:
true
containLabel
:
true
...
...
src/views/marketAccessRestrictions/marketAccessHome/utils/multiLineChart.js
浏览文件 @
9ca77a28
import
*
as
echarts
from
'echarts'
import
*
as
echarts
from
'echarts'
const
getMultiLineChart
=
(
dataX
,
dataY1
,
dataY2
,
dataY3
)
=>
{
const
getMultiLineChart
=
(
data
)
=>
{
console
.
log
(
'dataaaa'
,
data
);
return
{
return
{
tooltip
:
{
tooltip
:
{
trigger
:
'axis'
,
trigger
:
'axis'
,
...
@@ -13,9 +15,9 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -13,9 +15,9 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
},
},
grid
:
{
grid
:
{
top
:
'15%'
,
top
:
'15%'
,
right
:
'
5
%'
,
right
:
'
3
%'
,
bottom
:
'5%'
,
bottom
:
'5%'
,
left
:
'
5
%'
,
left
:
'
3
%'
,
containLabel
:
true
containLabel
:
true
},
},
legend
:
{
legend
:
{
...
@@ -28,7 +30,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -28,7 +30,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
{
{
type
:
'category'
,
type
:
'category'
,
boundaryGap
:
false
,
boundaryGap
:
false
,
data
:
data
X
data
:
data
.
title
}
}
],
],
yAxis
:
[
yAxis
:
[
...
@@ -38,7 +40,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -38,7 +40,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
],
],
series
:
[
series
:
[
{
{
name
:
'337调查'
,
name
:
data
.
data
[
0
].
name
,
type
:
'line'
,
type
:
'line'
,
areaStyle
:
{
areaStyle
:
{
...
@@ -53,10 +55,10 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -53,10 +55,10 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
emphasis
:
{
emphasis
:
{
focus
:
'series'
focus
:
'series'
},
},
data
:
data
Y1
data
:
data
.
data
[
0
].
value
},
},
{
{
name
:
'301调查'
,
name
:
data
.
data
[
1
].
name
,
type
:
'line'
,
type
:
'line'
,
areaStyle
:
{
areaStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[{
...
@@ -70,10 +72,10 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -70,10 +72,10 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
emphasis
:
{
emphasis
:
{
focus
:
'series'
focus
:
'series'
},
},
data
:
data
Y2
data
:
data
.
data
[
1
].
value
,
},
},
{
{
name
:
'232调查'
,
name
:
data
.
data
[
2
].
name
,
type
:
'line'
,
type
:
'line'
,
areaStyle
:
{
areaStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[{
...
@@ -87,7 +89,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
...
@@ -87,7 +89,7 @@ const getMultiLineChart = (dataX, dataY1, dataY2, dataY3) => {
emphasis
:
{
emphasis
:
{
focus
:
'series'
focus
:
'series'
},
},
data
:
data
Y3
data
:
data
.
data
[
2
].
value
,
}
}
]
]
}
}
...
...
src/views/marketAccessRestrictions/marketAccessHome/utils/radarChart.js
浏览文件 @
9ca77a28
const
getRadarChart
=
()
=>
{
const
getRadarChart
=
(
data
)
=>
{
const
indicators
=
[
// const indicators = [
{
name
:
"集成电路"
,
max
:
10
},
// { name: "集成电路", max: 10 },
{
name
:
"能源领域"
,
max
:
10
},
// { name: "能源领域", max: 10 },
{
name
:
"量子科技"
,
max
:
10
},
// { name: "量子科技", max: 10 },
{
name
:
"通信网络"
,
max
:
10
},
// { name: "通信网络", max: 10 },
{
name
:
"人工智能"
,
max
:
10
},
// { name: "人工智能", max: 10 },
{
name
:
"生物科技"
,
max
:
10
}
// { name: "生物科技", max: 10 }
];
// ];
const
indicators
=
data
.
title
.
map
(
item
=>
{
return
{
name
:
item
,
max
:
data
.
maxNum
}
})
const
data337
=
[
9
,
6
,
6
,
6
,
9
,
7
];
const
data337
=
[
9
,
6
,
6
,
6
,
9
,
7
];
const
data301
=
[
5
,
3
,
7
,
8
,
7
,
9
];
const
data301
=
[
5
,
3
,
7
,
8
,
7
,
9
];
const
data232
=
[
4
,
10
,
3
,
4
,
2
,
5
];
const
data232
=
[
4
,
10
,
3
,
4
,
2
,
5
];
...
@@ -67,9 +72,10 @@ const getRadarChart = () => {
...
@@ -67,9 +72,10 @@ const getRadarChart = () => {
},
},
series
:
[
series
:
[
{
{
name
:
"337调查"
,
// name: "337调查",
name
:
data
.
data
[
0
].
name
,
type
:
"radar"
,
type
:
"radar"
,
data
:
[{
value
:
data
337
}],
data
:
[{
value
:
data
.
data
[
0
].
value
}],
lineStyle
:
{
lineStyle
:
{
width
:
2
,
width
:
2
,
color
:
"rgba(5, 95, 194,1)"
color
:
"rgba(5, 95, 194,1)"
...
@@ -80,9 +86,9 @@ const getRadarChart = () => {
...
@@ -80,9 +86,9 @@ const getRadarChart = () => {
}
}
},
},
{
{
name
:
"301调查"
,
name
:
data
.
data
[
1
].
name
,
type
:
"radar"
,
type
:
"radar"
,
data
:
[{
value
:
data
301
}],
data
:
[{
value
:
data
.
data
[
1
].
value
}],
lineStyle
:
{
lineStyle
:
{
width
:
2
,
width
:
2
,
color
:
"rgba(250, 140, 22, 1)"
color
:
"rgba(250, 140, 22, 1)"
...
@@ -93,9 +99,9 @@ const getRadarChart = () => {
...
@@ -93,9 +99,9 @@ const getRadarChart = () => {
}
}
},
},
{
{
name
:
"232调查"
,
name
:
data
.
data
[
2
].
name
,
type
:
"radar"
,
type
:
"radar"
,
data
:
[{
value
:
data
232
}],
data
:
[{
value
:
data
.
data
[
2
].
value
}],
lineStyle
:
{
lineStyle
:
{
width
:
2
,
width
:
2
,
color
:
"rgba(146, 84, 222, 1)"
color
:
"rgba(146, 84, 222, 1)"
...
...
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
浏览文件 @
9ca77a28
...
@@ -801,9 +801,9 @@ onMounted(() => {
...
@@ -801,9 +801,9 @@ onMounted(() => {
.box1-main-right
{
.box1-main-right
{
margin-left
:
38px
;
margin-left
:
38px
;
margin-top
:
2
6px
;
margin-top
:
6px
;
width
:
800px
;
width
:
800px
;
height
:
27
0px
;
height
:
30
0px
;
}
}
}
}
...
...
src/views/thinkTank/ThinkTankDetail/thinkInfo/utils/piechart.js
浏览文件 @
9ca77a28
...
@@ -3,7 +3,7 @@ const getPieChart = (data) => {
...
@@ -3,7 +3,7 @@ const getPieChart = (data) => {
series
:
[
series
:
[
{
{
type
:
'pie'
,
type
:
'pie'
,
radius
:
[
70
,
10
0
],
radius
:
[
80
,
11
0
],
height
:
'100%'
,
height
:
'100%'
,
left
:
'center'
,
left
:
'center'
,
width
:
'100%'
,
width
:
'100%'
,
...
...
src/views/thinkTank/utils/piechart.js
浏览文件 @
9ca77a28
...
@@ -16,12 +16,19 @@ const getPieChart = (data) => {
...
@@ -16,12 +16,19 @@ const getPieChart = (data) => {
formatter
:
'{name|{b}}
\
n{time|{c} 条 {d}%}'
,
formatter
:
'{name|{b}}
\
n{time|{c} 条 {d}%}'
,
minMargin
:
5
,
minMargin
:
5
,
edgeDistance
:
10
,
edgeDistance
:
10
,
lineHeight
:
15
,
lineHeight
:
24
,
rich
:
{
rich
:
{
time
:
{
name
:
{
fontSize
:
10
,
fontSize
:
16
,
color
:
'#999'
color
:
'rgba(59, 65, 75, 1)'
,
}
fontFamily
:
'Microsoft YaHei'
,
fontWeight
:
700
},
time
:
{
fontSize
:
16
,
color
:
'rgba(95, 101, 108, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
}
}
}
},
},
labelLine
:
{
labelLine
:
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论