Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
c367ed1f
提交
c367ed1f
authored
3月 31, 2026
作者:
张伊明
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'zy-dev' 到 'pre'
从 zy-dev 合并到 pre 查看合并请求
!285
上级
0c40bb2d
f0a54767
流水线
#244
已取消 于阶段
变更
33
流水线
1
全部展开
显示空白字符变更
内嵌
并排
正在显示
33 个修改的文件
包含
647 行增加
和
247 行删除
+647
-247
graphChart.js
src/components/base/GraphChart/graphChart.js
+1
-0
index.vue
src/components/base/TimeTabPane/index.vue
+12
-1
index.vue
src/views/decree/allOrganization/index.vue
+2
-2
index.vue
src/views/decree/decreeHome/index.vue
+21
-7
index.vue
src/views/decree/decreeLayout/influence/index.vue
+4
-2
open.png
src/views/marketAccessRestrictions/assets/icons/open.png
+0
-0
AiTips.vue
src/views/marketAccessRestrictions/com/AiTips.vue
+62
-0
RelatedEvent.vue
src/views/marketAccessRestrictions/com/RelatedEvent.vue
+81
-0
SurveyConclusion.vue
src/views/marketAccessRestrictions/com/SurveyConclusion.vue
+108
-0
SurveyHistory.vue
src/views/marketAccessRestrictions/com/SurveyHistory.vue
+240
-0
icon_1599.png
...sRestrictions/marketAccessHome/assets/icons/icon_1599.png
+0
-0
index.vue
...views/marketAccessRestrictions/marketAccessHome/index.vue
+0
-0
index.vue
...tAccessRestrictions/marketAccessLayout/case/232/index.vue
+0
-0
index.vue
...tAccessRestrictions/marketAccessLayout/case/301/index.vue
+0
-0
index.vue
...tAccessRestrictions/marketAccessLayout/case/337/index.vue
+0
-0
index.vue
...arketAccessRestrictions/marketAccessLayout/case/index.vue
+6
-1
index.vue
...ews/marketAccessRestrictions/marketAccessLayout/index.vue
+77
-93
index.vue
...essRestrictions/marketAccessLayout/overview/232/index.vue
+7
-6
index.vue
...essRestrictions/marketAccessLayout/overview/301/index.vue
+6
-37
index.vue
...essRestrictions/marketAccessLayout/overview/337/index.vue
+6
-90
index.vue
...tAccessRestrictions/marketAccessLayout/overview/index.vue
+4
-2
232.png
...AccessRestrictions/singleCaseLayout/assets/images/232.png
+0
-0
301.png
...AccessRestrictions/singleCaseLayout/assets/images/301.png
+0
-0
337.png
...AccessRestrictions/singleCaseLayout/assets/images/337.png
+0
-0
icon_affiche.png
...trictions/singleCaseLayout/assets/images/icon_affiche.png
+0
-0
index.vue
...AccessRestrictions/singleCaseLayout/deepdig/232/index.vue
+0
-0
index.vue
...AccessRestrictions/singleCaseLayout/deepdig/337/index.vue
+8
-6
index.vue
...rketAccessRestrictions/singleCaseLayout/deepdig/index.vue
+2
-0
index.vue
...views/marketAccessRestrictions/singleCaseLayout/index.vue
+0
-0
index.vue
...ccessRestrictions/singleCaseLayout/overview/232/index.vue
+0
-0
index.vue
...ccessRestrictions/singleCaseLayout/overview/301/index.vue
+0
-0
index.vue
...ccessRestrictions/singleCaseLayout/overview/337/index.vue
+0
-0
index.vue
...ketAccessRestrictions/singleCaseLayout/overview/index.vue
+0
-0
没有找到文件。
src/components/base/GraphChart/graphChart.js
浏览文件 @
c367ed1f
...
@@ -82,6 +82,7 @@ const getGraphChart = (nodes, links, layoutType) => {
...
@@ -82,6 +82,7 @@ const getGraphChart = (nodes, links, layoutType) => {
}
}
},
},
force
:
{
force
:
{
layoutAnimation
:
false
,
// 关闭初始化晃来晃去的动画
repulsion
:
300
,
repulsion
:
300
,
gravity
:
0
,
gravity
:
0
,
edgeLength
:
300
edgeLength
:
300
...
...
src/components/base/TimeTabPane/index.vue
浏览文件 @
c367ed1f
...
@@ -17,7 +17,14 @@
...
@@ -17,7 +17,14 @@
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
import
{
ref
}
from
'vue'
import
{
onMounted
,
ref
}
from
'vue'
const
props
=
defineProps
({
activeTime
:
{
typeof
:
String
,
default
:
'近一周'
}
})
const
timeList
=
ref
([
const
timeList
=
ref
([
{
{
...
@@ -34,6 +41,10 @@ const timeList = ref([
...
@@ -34,6 +41,10 @@ const timeList = ref([
},
},
])
])
onMounted
(()
=>
{
timeList
.
value
.
forEach
(
item
=>
{
item
.
active
=
item
.
time
===
props
.
activeTime
})
})
const
handleTimeClick
=
(
item
,
index
)
=>
{
const
handleTimeClick
=
(
item
,
index
)
=>
{
timeList
.
value
.
forEach
(
time
=>
{
timeList
.
value
.
forEach
(
time
=>
{
time
.
active
=
false
time
.
active
=
false
...
...
src/views/decree/allOrganization/index.vue
浏览文件 @
c367ed1f
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
<img
:src=
"tipsTcon"
alt=
""
>
<img
:src=
"tipsTcon"
alt=
""
>
</div>
</div>
<div
class=
"date-text"
>
近期美国各联邦政府机构发布涉华政令数量汇总
</div>
<div
class=
"date-text"
>
近期美国各联邦政府机构发布涉华政令数量汇总
</div>
<TimeTabPane
@
time-click=
"handleDateChange"
/>
<TimeTabPane
@
time-click=
"handleDateChange"
activeTime=
"近一年"
/>
</div>
</div>
<div
class=
"organization-list"
ref=
"refOrganization"
v-loading=
"organizationInfo.loading"
>
<div
class=
"organization-list"
ref=
"refOrganization"
v-loading=
"organizationInfo.loading"
>
<div
class=
"organization-item"
v-for=
"(item, index) in organizationInfo.list"
:key=
"index"
<div
class=
"organization-item"
v-for=
"(item, index) in organizationInfo.list"
:key=
"index"
...
@@ -77,7 +77,7 @@ const organizationInfo = reactive({
...
@@ -77,7 +77,7 @@ const organizationInfo = reactive({
total
:
0
,
total
:
0
,
isSort
:
1
,
isSort
:
1
,
keyWord
:
""
,
keyWord
:
""
,
day
:
7
,
day
:
365
,
list
:
[]
list
:
[]
})
})
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
c367ed1f
...
@@ -34,7 +34,7 @@
...
@@ -34,7 +34,7 @@
<img
:src=
"tipsTcon"
alt=
""
>
<img
:src=
"tipsTcon"
alt=
""
>
</div>
</div>
<div
class=
"date-text"
>
近期美国各联邦政府机构发布涉华政令数量汇总
</div>
<div
class=
"date-text"
>
近期美国各联邦政府机构发布涉华政令数量汇总
</div>
<TimeTabPane
@
time-click=
"onKeyOrganization"
/>
<TimeTabPane
@
time-click=
"onKeyOrganization"
activeTime=
"近一年"
/>
</div>
</div>
<div
class=
"home-main-header-item-box"
v-if=
"keyOrganizationList.length"
>
<div
class=
"home-main-header-item-box"
v-if=
"keyOrganizationList.length"
>
<div
class=
"organization-item"
v-for=
"(item, index) in keyOrganizationList"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
<div
class=
"organization-item"
v-for=
"(item, index) in keyOrganizationList"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
...
@@ -767,7 +767,7 @@ const handleGetDecreeYearOrder = async () => {
...
@@ -767,7 +767,7 @@ const handleGetDecreeYearOrder = async () => {
chart1Data
.
value
.
dataY
=
res
.
data
.
map
(
item
=>
{
chart1Data
.
value
.
dataY
=
res
.
data
.
map
(
item
=>
{
return
item
.
count
;
return
item
.
count
;
});
});
summarize1
.
value
=
await
onChartInterpretation
({
type
:
"柱状图"
,
name
:
"数量变化趋势"
,
data
:
res
.
data
}
)
onChartInterpretation
({
type
:
"柱状图"
,
name
:
"数量变化趋势"
,
data
:
res
.
data
},
summarize1
)
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"行政令发布频度error"
,
error
);
console
.
error
(
"行政令发布频度error"
,
error
);
...
@@ -775,15 +775,26 @@ const handleGetDecreeYearOrder = async () => {
...
@@ -775,15 +775,26 @@ const handleGetDecreeYearOrder = async () => {
box5Params
.
loading
=
false
box5Params
.
loading
=
false
};
};
// AI智能总结
// AI智能总结
const
onChartInterpretation
=
async
(
text
)
=>
{
const
onChartInterpretation
=
async
(
text
,
param
)
=>
{
param
.
value
=
"正在生成..."
// 👇 新增:超时 + 终止请求(只加这一段)
const
controller
=
new
AbortController
();
const
timeout
=
setTimeout
(()
=>
controller
.
abort
(),
10000
);
// 10秒超时
try
{
const
response
=
await
fetch
(
'/aiAnalysis/chart_interpretation'
,
{
const
response
=
await
fetch
(
'/aiAnalysis/chart_interpretation'
,
{
method
:
'POST'
,
method
:
'POST'
,
headers
:
{
headers
:
{
"X-API-Key"
:
"aircasKEY19491001"
,
"X-API-Key"
:
"aircasKEY19491001"
,
'Content-Type'
:
'application/json'
,
'Content-Type'
:
'application/json'
,
},
},
body
:
JSON
.
stringify
({
text
})
// 把参数转为JSON字符串
body
:
JSON
.
stringify
({
text
}),
signal
:
controller
.
signal
// 👇 新增:绑定中断信号
});
});
clearTimeout
(
timeout
);
// 👇 新增:请求成功清除定时器
if
(
!
response
.
ok
)
throw
new
Error
(
`HTTP 错误
${
response
.
status
}
`
);
const
reader
=
response
.
body
.
getReader
();
const
reader
=
response
.
body
.
getReader
();
const
decoder
=
new
TextDecoder
();
const
decoder
=
new
TextDecoder
();
...
@@ -806,7 +817,10 @@ const onChartInterpretation = async (text) => {
...
@@ -806,7 +817,10 @@ const onChartInterpretation = async (text) => {
}
}
}
}
}
}
return
summarize
param
.
value
=
summarize
}
catch
(
err
)
{
param
.
value
=
"系统异常,生成失败"
;
}
}
}
const
handleBox5
=
async
()
=>
{
const
handleBox5
=
async
()
=>
{
...
@@ -870,7 +884,7 @@ const handleGetDecreeArea = async () => {
...
@@ -870,7 +884,7 @@ const handleGetDecreeArea = async () => {
value
:
item
.
count
value
:
item
.
count
};
};
});
});
summarize2
.
value
=
await
onChartInterpretation
({
type
:
"环形图"
,
name
:
"领域分布情况"
,
data
:
res
.
data
}
)
onChartInterpretation
({
type
:
"环形图"
,
name
:
"领域分布情况"
,
data
:
res
.
data
},
summarize2
)
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"政令科技领域error"
,
error
);
console
.
error
(
"政令科技领域error"
,
error
);
...
@@ -1194,7 +1208,7 @@ const handleSearch = () => {
...
@@ -1194,7 +1208,7 @@ const handleSearch = () => {
// 关键机构
// 关键机构
const
keyOrganizationList
=
ref
([]);
const
keyOrganizationList
=
ref
([]);
const
onKeyOrganization
=
async
(
event
)
=>
{
const
onKeyOrganization
=
async
(
event
)
=>
{
let
day
=
7
let
day
=
365
if
(
event
?.
time
===
'近一周'
)
day
=
7
if
(
event
?.
time
===
'近一周'
)
day
=
7
if
(
event
?.
time
===
'近一月'
)
day
=
30
if
(
event
?.
time
===
'近一月'
)
day
=
30
if
(
event
?.
time
===
'近一年'
)
day
=
365
if
(
event
?.
time
===
'近一年'
)
day
=
365
...
...
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
c367ed1f
...
@@ -79,8 +79,9 @@
...
@@ -79,8 +79,9 @@
<
div
class
=
"graph-box"
v
-
if
=
"contentType==1"
>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==1"
>
<
ChartChain
:
listData
=
"fishbone.list"
:
baseData
=
"fishbone.base"
/>
<
ChartChain
:
listData
=
"fishbone.list"
:
baseData
=
"fishbone.base"
/>
<
/div
>
<
/div
>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==2 && graphInfo.nodes.length"
>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==2"
>
<
GraphChart
:
nodes
=
"graphInfo.nodes"
:
links
=
"graphInfo.links"
layoutType
=
"force"
/>
<
GraphChart
v
-
if
=
"graphInfo.nodes?.length"
:
nodes
=
"graphInfo.nodes"
:
links
=
"graphInfo.links"
layoutType
=
"force"
/>
<
el
-
empty
v
-
else
style
=
"padding: 60px 0"
description
=
"暂无数据"
:
image
-
size
=
"100"
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/AnalysisBox
>
<
/AnalysisBox
>
...
@@ -168,6 +169,7 @@ const onDecreeEntities = async (page=1) => {
...
@@ -168,6 +169,7 @@ const onDecreeEntities = async (page=1) => {
const
contentType
=
ref
(
1
);
const
contentType
=
ref
(
1
);
const
headerContentType
=
(
type
)
=>
{
const
headerContentType
=
(
type
)
=>
{
contentType
.
value
=
type
;
contentType
.
value
=
type
;
if
(
!
entityInfo
.
total
)
return
;
headerChartData
(
entityInfo
.
node
)
headerChartData
(
entityInfo
.
node
)
}
;
}
;
const
headerChartData
=
(
row
)
=>
{
const
headerChartData
=
(
row
)
=>
{
...
...
src/views/marketAccessRestrictions/assets/icons/open.png
0 → 100644
浏览文件 @
c367ed1f
1.2 KB
src/views/marketAccessRestrictions/com/AiTips.vue
0 → 100644
浏览文件 @
c367ed1f
<
template
>
<div
class=
"view-box"
>
<div
class=
"icon-left"
>
<img
src=
"@/assets/icons/box-footer-left-icon.png"
alt=
""
>
</div>
<div
class=
"tips-content"
>
{{
props
.
tips
}}
</div>
<div
class=
"icon-right"
>
<img
src=
"@/assets/icons/box-footer-right-icon.png"
alt=
""
>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
name=
"AiTips"
>
const
props
=
defineProps
({
tips
:
{
type
:
String
,
default
:
''
}
});
</
script
>
<
style
scoped
lang=
"scss"
>
.view-box
{
width
:
100%
;
display
:
flex
;
align-items
:
center
;
padding
:
7px
12px
;
border
:
1px
solid
rgba
(
231
,
243
,
255
,
1
);
border-radius
:
4px
;
background
:
rgba
(
246
,
250
,
255
,
1
);
.icon-left
{
width
:
20px
;
height
:
20px
;
img
{
width
:
100%
;
height
:
100%
;
object-fit
:
contain
;
}
}
.tips-content
{
color
:
rgb
(
5
,
95
,
194
);
font-size
:
16px
;
font-weight
:
400
;
line-height
:
24px
;
margin-left
:
13px
;
flex
:
1
;
}
.icon-right
{
width
:
24px
;
height
:
24px
;
img
{
width
:
100%
;
height
:
100%
;
object-fit
:
contain
;
}
}
}
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/com/RelatedEvent.vue
0 → 100644
浏览文件 @
c367ed1f
<
template
>
<AnalysisBox
:title=
"props.title"
:showAllBtn=
"false"
height=
"auto"
>
<div
class=
"box-main"
>
<div
v-for=
"(item, index) in props.listData"
:key=
"index"
class=
"box-item"
>
<div
class=
"item-tag"
>
行政令
</div>
<div
class=
"item-right"
>
<div
class=
"item-head"
>
<div
class=
"item-name one-line-ellipsis"
>
{{
item
.
name
}}
</div>
<div
class=
"item-time"
>
{{
item
.
time
}}
</div>
</div>
<div
class=
"item-text one-line-ellipsis"
>
{{
item
.
text
}}
</div>
</div>
</div>
</div>
</AnalysisBox>
</
template
>
<
script
setup
lang=
"ts"
name=
"RelatedEvent"
>
const
props
=
defineProps
({
listData
:
{
type
:
Array
as
any
,
default
:
()
=>
([])
},
title
:
{
type
:
String
,
default
:
""
}
})
</
script
>
<
style
scoped
lang=
"scss"
>
.box-main
{
padding
:
0
16px
16px
;
.box-item
{
border-top
:
1px
solid
var
(
--
bg-black-5
);
padding
:
6px
;
display
:
flex
;
font-size
:
16px
;
font-family
:
Source
Han
Sans
CN
;
.item-tag
{
width
:
80px
;
height
:
28px
;
line-height
:
28px
;
border-radius
:
14px
;
text-align
:
center
;
margin-right
:
16px
;
margin-top
:
7px
;
color
:
var
(
--
color-yellow-100
);
background-color
:
var
(
--
color-yellow-10
);
}
.item-right
{
width
:
20px
;
flex
:
auto
;
line-height
:
30px
;
.item-head
{
display
:
flex
;
.item-name
{
width
:
20px
;
flex
:
auto
;
font-weight
:
bold
;
color
:
var
(
--
text-primary-80-color
);
}
.item-time
{
margin-left
:
100px
;
flex
:
none
;
color
:
var
(
--
text-primary-65-color
);
}
}
.item-text
{
color
:
var
(
--
text-primary-65-color
);
}
}
}
.box-item
:last-child
{
border-bottom
:
1px
solid
var
(
--
bg-black-5
);
}
}
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/com/SurveyConclusion.vue
0 → 100644
浏览文件 @
c367ed1f
<
template
>
<AnalysisBox
:title=
"title"
:showAllBtn=
"false"
height=
"auto"
>
<el-empty
v-if=
"!props.listData?.length"
description=
"暂无数据"
:image-size=
"200"
/>
<div
v-else
class=
"box-main"
>
<div
class=
"data-list"
>
<div
class=
"data-item"
v-for=
"(item, index) in props.listData"
:key=
"index"
>
<div
class=
"item-head"
>
<div
class=
"item-name"
>
{{
item
.
title
}}
</div>
<div
class=
"button-box"
>
<div
class=
"button-icon"
>
<img
src=
"../assets/icons/open.png"
alt=
""
/>
</div>
<div
class=
"button-text"
>
跳转原文
</div>
</div>
</div>
<div
class=
"item-down"
>
<div
class=
"item-text"
v-for=
"(text, num) in item.data"
:key=
"num"
>
{{
text
}}
</div>
</div>
</div>
</div>
<AiTips
:tips=
"tips"
></AiTips>
</div>
</AnalysisBox>
</
template
>
<
script
setup
lang=
"ts"
name=
"SurveyConclusion"
>
import
AiTips
from
"@/views/marketAccessRestrictions/com/AiTips.vue"
;
const
props
=
defineProps
({
listData
:
{
type
:
Array
as
any
,
default
:
()
=>
([])
},
title
:
{
type
:
String
,
default
:
""
},
tips
:
{
type
:
String
,
default
:
""
}
})
</
script
>
<
style
scoped
lang=
"scss"
>
.box-main
{
padding
:
0
22px
20px
;
.data-list
{
margin-bottom
:
16px
;
border-top
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
.data-item
{
.item-head
{
padding
:
0
20px
;
height
:
48px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
background
:
rgba
(
247
,
248
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
.item-name
{
width
:
20px
;
flex
:
auto
;
font-family
:
Source
Han
Sans
CN
;
font-size
:
18px
;
font-weight
:
bold
;
line-height
:
30px
;
color
:
var
(
--
text-primary-80-color
);
}
.button-box
{
display
:
flex
;
align-items
:
center
;
margin-left
:
50px
;
.button-icon
{
width
:
16px
;
height
:
16px
;
font-size
:
0
;
margin-right
:
4px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.button-text
{
color
:
var
(
--
color-primary-100
);
font-family
:
Microsoft
YaHei
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
12px
;
}
}
}
.item-text
{
letter-spacing
:
1px
;
padding
:
12px
20px
12px
40px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Source
Han
Sans
CN
;
font-size
:
16px
;
font-weight
:
400
;
line-height
:
30px
;
letter-spacing
:
0px
;
text-align
:
justify
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
}
}
}
}
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/com/SurveyHistory.vue
0 → 100644
浏览文件 @
c367ed1f
<
template
>
<div
class=
"view-box"
>
<el-empty
v-if=
"!props.surveyList?.length"
description=
"当前条件下暂无数据"
:image-size=
"200"
/>
<div
class=
"timeline-item"
v-for=
"(item, index) in props.surveyList"
:key=
"item.searchid"
@
click=
"onNavigateToDetail(item)"
>
<div
class=
"timeline-date"
>
<div
class=
"date-text"
>
{{
item
.
searchdatezh
.
slice
(
0
,
4
)
}}
</div>
<div
class=
"date-text"
>
{{
item
.
searchdatezh
.
slice
(
5
)
}}
</div>
</div>
<div
class=
"timeline-line-box"
>
<div
class=
"timeline-icon"
>
<img
v-if=
"item.sortimageurl"
:src=
"item.sortimageurl"
alt=
""
/>
<div
v-else
class=
"default-dot"
></div>
</div>
<div
class=
"timeline-line"
v-if=
"index !== props.surveyList.length - 1"
></div>
</div>
<div
class=
"timeline-content-card"
>
<div
class=
"item-head"
>
<div
:class=
"`item-tag tag-$
{item.sortcode}`">
{{
item
.
sortcode
}}
</div>
<div
class=
"item-name"
>
{{
item
.
searchname
}}
</div>
<div
class=
"item-state"
>
<span
class=
"dot"
>
•
</span>
{{
item
.
casestatus
}}
</div>
</div>
<div
class=
"card-body"
>
{{
item
.
content
}}
</div>
<div
class=
"card-footer"
>
<div
class=
"footer-left-tags"
>
<AreaTag
v-for=
"(name, num) in item.searchArea"
:key=
"num"
:tagName=
"name"
></AreaTag>
</div>
<div
class=
"footer-right-flags"
>
<div
class=
"flag-icon"
v-for=
"(name, num) in item.countryImage"
:key=
"num"
>
<img
:src=
"name"
alt=
""
/>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
setup
name=
"SurveyHistory"
>
import
router
from
"@/router"
;
const
props
=
defineProps
({
surveyList
:
{
type
:
Array
,
default
:
()
=>
([]),
},
})
const
onNavigateToDetail
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
searchname
);
const
curRoute
=
router
.
resolve
({
path
:
"/marketSingleCaseLayout/overview"
,
query
:
{
id
:
item
.
sortcode
,
searchId
:
item
.
searchid
}
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
};
</
script
>
<
style
scoped
lang=
"scss"
>
.view-box
{
min-height
:
600px
;
width
:
100%
;
padding
:
18px
27px
0
24px
;
border-top
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
}
.timeline-item
{
display
:
flex
;
cursor
:
pointer
;
.timeline-date
{
width
:
80px
;
text-align
:
right
;
margin-right
:
16px
;
.date-text
{
height
:
24px
;
font-size
:
16px
;
font-weight
:
700
;
color
:
var
(
--
color-main-active
);
line-height
:
24px
;
letter-spacing
:
1px
;
}
}
.timeline-line-box
{
width
:
40px
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
position
:
relative
;
.timeline-icon
{
width
:
32px
;
height
:
32px
;
z-index
:
2
;
background
:
#fff
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
font-size
:
0
;
img
{
width
:
100%
;
height
:
100%
;
}
.default-dot
{
width
:
12px
;
height
:
12px
;
border-radius
:
50%
;
background
:
orange
;
}
}
.timeline-line
{
width
:
2px
;
flex
:
1
;
background
:
#eaeeef
;
margin
:
4px
0
;
}
}
.timeline-content-card
{
width
:
20px
;
flex
:
auto
;
padding
:
2px
16px
0
;
margin-bottom
:
30px
;
&
:hover
.item-head
.item-name
{
color
:
var
(
--
color-main-active
);
text-decoration
:
underline
;
}
.item-head
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
10px
;
.item-tag
{
width
:
48px
;
height
:
24px
;
line-height
:
24px
;
text-align
:
center
;
border-radius
:
4px
;
font-weight
:
bold
;
font-size
:
16px
;
margin-right
:
12px
;
}
.tag-337
{
border
:
1px
solid
#91caff
;
background
:
#e6f4ff
;
color
:
#055fc2
;
}
.tag-232
{
border
:
1px
solid
#b37feb
;
background
:
#f9f0ff
;
color
:
#722ed1
;
}
.tag-301
{
border
:
1px
solid
#ffd591
;
background
:
#fff7e6
;
color
:
#fa8c16
;
}
.item-name
{
font-size
:
18px
;
line-height
:
18px
;
font-weight
:
bold
;
color
:
#3b414b
;
width
:
20px
;
flex
:
auto
;
}
.item-state
{
font-size
:
16px
;
color
:
#84888e
;
color
:
var
(
--
color-main-active
);
margin-left
:
100px
;
}
}
.card-body
{
font-size
:
16px
;
color
:
#5f656c
;
line-height
:
30px
;
margin-bottom
:
8px
;
display
:
-
webkit-box
;
-webkit-box-orient
:
vertical
;
-webkit-line-clamp
:
2
;
line-clamp
:
2
;
overflow
:
hidden
;
}
.card-footer
{
display
:
flex
;
gap
:
8px
;
align-items
:
center
;
.footer-left-tags
{
display
:
flex
;
gap
:
8px
;
.area-tag
{
padding
:
2px
12px
;
background
:
#e6f7ff
;
border
:
1px
solid
#91d5ff
;
color
:
#1890ff
;
border-radius
:
4px
;
font-size
:
14px
;
}
}
.footer-right-flags
{
display
:
flex
;
gap
:
4px
;
.flag-icon
{
width
:
12px
;
height
:
24px
;
img
{
border-radius
:
50%
;
border
:
1px
solid
#eee
;
width
:
24px
;
height
:
100%
;
object-fit
:
cover
;
}
}
}
}
}
}
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/marketAccessHome/assets/icons/icon_1599.png
0 → 100644
浏览文件 @
c367ed1f
581 Bytes
src/views/marketAccessRestrictions/marketAccessHome/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/case/232/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/case/301/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/case/337/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/case/index.vue
浏览文件 @
c367ed1f
...
@@ -25,5 +25,9 @@ onMounted(() => {
...
@@ -25,5 +25,9 @@ onMounted(() => {
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.case-wrap
{
width
:
100%
;
height
:
100%
;
overflow-y
:
auto
;
}
</
style
>
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/marketAccessLayout/index.vue
浏览文件 @
c367ed1f
<
template
>
<
template
>
<div
class=
"wrap"
>
<div
class=
"page-box"
>
<div
class=
"header"
>
<div
class=
"page-top"
>
<div
class=
"header-top"
>
<div
class=
"head-box"
>
<div
class=
"left"
>
<div
class=
"head-icon"
>
<div
class=
"icon"
>
<img
:src=
"curSurvey.image"
alt=
""
/>
<img
:src=
"curSurvey.image"
alt=
""
/>
</div>
</div>
<div
class=
"info"
>
<div
class=
"head-info"
>
<div
class=
"title"
>
{{
curSurvey
.
title
}}
</div>
<div
class=
"head-name one-line-ellipsis"
>
{{
curSurvey
.
title
}}
</div>
<div
class=
"content"
>
<div
class=
"head-text one-line-ellipsis"
>
{{
curSurvey
.
desc
}}
</div>
{{
curSurvey
.
desc
}}
</div>
</div>
</div>
</div>
<!--
<div
class=
"
right
"
>
<!--
<div
class=
"
head-button
"
>
<div
class=
"icon"
>
<div
class=
"
button-
icon"
>
<img
src=
"./assets/images/button-icon.png"
alt=
""
/>
<img
src=
"./assets/images/button-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"text"
>
{{
"查看官网"
}}
</div>
<div
class=
"
button-
text"
>
{{
"查看官网"
}}
</div>
</div>
-->
</div>
-->
</div>
</div>
<div
class=
"header-footer"
>
<div
class=
"page-tabs"
>
<div
<div
:class=
"['tab-item',
{'tab-active': activeName==item.name}]" v-for="(item, index) in tabList" :key="index" @click="handleClickBtn(item)">
class=
"btn-item"
:class=
"
{ btnItemActive: activeBtnName === item.name }"
v-for="(item, index) in btnList"
:key="index"
@click="handleClickBtn(item)"
>
<div
class=
"icon"
>
<div
class=
"icon"
>
<img
:src=
"item.ac
itveIcon"
alt=
""
v-if=
"activeBtnName ===
item.name"
/>
<img
:src=
"item.ac
tiveIcon"
alt=
""
v-if=
"activeName==
item.name"
/>
<img
:src=
"item.icon"
alt=
""
v-else
/>
<img
:src=
"item.icon"
alt=
""
v-else
/>
</div>
</div>
<div
class=
"text"
:class=
"
{ textActive: active
BtnName ===
item.name }">
<div
class=
"text"
:class=
"
{ textActive: active
Name==
item.name }">
{{
item
.
name
}}
{{
item
.
name
}}
</div>
</div>
</div>
</div>
...
@@ -58,17 +48,17 @@ import Img301 from "./assets/images/301.png";
...
@@ -58,17 +48,17 @@ import Img301 from "./assets/images/301.png";
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
btn
List
=
ref
([
const
tab
List
=
ref
([
{
{
name
:
"调查案件"
,
name
:
"调查案件"
,
icon
:
icon2
,
icon
:
icon2
,
ac
it
veIcon
:
icon2Active
,
ac
ti
veIcon
:
icon2Active
,
path
:
"/marketAccessLayout/case"
path
:
"/marketAccessLayout/case"
},
},
{
{
name
:
"数据统计"
,
name
:
"数据统计"
,
icon
:
icon1
,
icon
:
icon1
,
ac
it
veIcon
:
icon1Active
,
ac
ti
veIcon
:
icon1Active
,
path
:
"/marketAccessLayout/overview"
path
:
"/marketAccessLayout/overview"
}
}
]);
]);
...
@@ -78,89 +68,80 @@ const curSurvey = computed(() => {
...
@@ -78,89 +68,80 @@ const curSurvey = computed(() => {
return
{
return
{
title
:
"301调查"
,
title
:
"301调查"
,
desc
:
'由美国贸易代表办公室依据《1974年贸易法》第301条针对"不合理或不公正贸易做法"发起的调查'
,
desc
:
'由美国贸易代表办公室依据《1974年贸易法》第301条针对"不合理或不公正贸易做法"发起的调查'
,
image
:
Img301
image
:
Img301
,
};
};
}
else
if
(
route
.
query
.
id
===
"232"
)
{
}
else
if
(
route
.
query
.
id
===
"232"
)
{
return
{
return
{
title
:
"232调查"
,
title
:
"232调查"
,
desc
:
"依据《1962年贸易扩展法》第232条款,授权美国商务部对“特定进口产品是否威胁或损害美国国家安全”而开展的全面调查。"
,
desc
:
"依据《1962年贸易扩展法》第232条款,授权美国商务部对“特定进口产品是否威胁或损害美国国家安全”而开展的全面调查。"
,
image
:
Img232
image
:
Img232
,
};
};
}
else
{
}
else
{
return
{
return
{
title
:
"337调查"
,
title
:
"337调查"
,
desc
:
'美国国际贸易委员会根据《1930年关税法》第337节及相关修正案进行的调查,主要针对进口贸易中的知识产权侵权行为以及其他不公平竞争行为'
,
desc
:
'美国国际贸易委员会根据《1930年关税法》第337节及相关修正案进行的调查,主要针对进口贸易中的知识产权侵权行为以及其他不公平竞争行为'
,
image
:
Img337
image
:
Img337
,
};
};
}
}
});
});
const
activeBtnName
=
ref
(
"调查案件"
);
const
activeName
=
ref
(
"调查案件"
);
const
handleClickBtn
=
item
=>
{
const
handleClickBtn
=
item
=>
{
active
Btn
Name
.
value
=
item
.
name
;
activeName
.
value
=
item
.
name
;
router
.
push
({
router
.
push
({
path
:
item
.
path
,
path
:
item
.
path
,
query
:
{
query
:
{
id
:
route
.
query
.
id
}
id
:
route
.
query
.
id
}
});
});
};
};
onMounted
(()
=>
{
onMounted
(()
=>
{
if
(
route
.
path
===
"/marketAccessLayout/overview"
)
{
if
(
route
.
path
===
"/marketAccessLayout/overview"
)
{
active
Btn
Name
.
value
=
"数据统计"
;
activeName
.
value
=
"数据统计"
;
}
else
{
}
else
{
active
Btn
Name
.
value
=
"调查案件"
;
activeName
.
value
=
"调查案件"
;
}
}
});
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.
wrap
{
.
page-box
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
overflow
:
hidden
;
overflow-y
:
auto
;
.header
{
width
:
1920px
;
height
:
148px
;
box-sizing
:
border-box
;
border-bottom
:
1px
solid
rgba
(
230
,
231
,
232
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
position
:
sticky
;
top
:
0
;
z-index
:
99999999
;
.header-top
{
display
:
flex
;
display
:
flex
;
height
:
100px
;
flex-direction
:
column
;
justify-content
:
space-between
;
background
:
rgba
(
255
,
255
,
255
,
1
);
.left
{
.page-top
{
margin-left
:
160px
;
width
:
1600px
;
margin-top
:
24px
;
margin
:
0
auto
;
box-sizing
:
border-box
;
.head-box
{
width
:
100%
;
display
:
flex
;
display
:
flex
;
padding
:
30px
0
20px
;
.
icon
{
.head-
icon
{
width
:
54px
;
width
:
54px
;
height
:
54px
;
height
:
54px
;
font-size
:
0px
;
margin-right
:
16px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
.info
{
.head-info
{
margin-left
:
14px
;
width
:
20px
;
margin-top
:
-1px
;
flex
:
auto
;
.title
{
.head-name
{
width
:
100%
;
height
:
26px
;
height
:
26px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
bold
;
line-height
:
26px
;
line-height
:
26px
;
}
}
.conten
t
{
.head-tex
t
{
margin-top
:
1px
;
width
:
100%
;
height
:
24px
;
height
:
24px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -169,61 +150,54 @@ onMounted(() => {
...
@@ -169,61 +150,54 @@ onMounted(() => {
line-height
:
24px
;
line-height
:
24px
;
}
}
}
}
}
.head-button
{
.right
{
margin-left
:
100px
;
margin-top
:
24px
;
margin-right
:
160px
;
width
:
120px
;
width
:
120px
;
height
:
36px
;
height
:
36px
;
border-radius
:
6px
;
border-radius
:
6px
;
background
:
var
(
--
color-main-active
);
background
:
var
(
--
color-main-active
);
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
cursor
:
pointer
;
cursor
:
pointer
;
.icon
{
.
button-
icon
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
margin-left
:
16px
;
font-size
:
0
;
margin-top
:
10px
;
position
:
relative
;
z-index
:
99
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
.text
{
.
button-
text
{
margin-left
:
8px
;
margin-left
:
8px
;
margin-top
:
7px
;
height
:
22px
;
color
:
rgba
(
255
,
255
,
255
,
1
);
color
:
rgba
(
255
,
255
,
255
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
line-height
:
22px
;
}
}
}
}
}
}
.header-footer
{
.page-tabs
{
height
:
48px
;
margin-left
:
160px
;
display
:
flex
;
display
:
flex
;
gap
:
24px
;
align-items
:
flex-start
;
.btn-item
{
.tab-item
{
height
:
40px
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
gap
:
4px
;
gap
:
4px
;
cursor
:
pointer
;
cursor
:
pointer
;
margin-right
:
24px
;
.icon
{
.icon
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
margin-top
:
16px
;
font-size
:
0
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
.text
{
.text
{
margin-left
:
2px
;
margin-top
:
12px
;
height
:
24px
;
height
:
24px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -236,17 +210,26 @@ onMounted(() => {
...
@@ -236,17 +210,26 @@ onMounted(() => {
font-weight
:
700
;
font-weight
:
700
;
}
}
}
}
.btnItemActive
{
.tab-active
{
border-bottom
:
3px
solid
var
(
--
color-main-active
);
position
:
relative
;
&
:
:
after
{
content
:
""
;
position
:
absolute
;
bottom
:
0px
;
left
:
0
;
width
:
100%
;
height
:
3px
;
background-color
:
var
(
--
color-main-active
);
}
}
}
}
}
}
}
.main
{
.main
{
width
:
1920px
;
border-top
:
1px
solid
rgba
(
230
,
231
,
232
,
1
)
;
height
:
868px
;
background-color
:
#f7f8f9
;
background
:
#f7f8f9
;
width
:
100%
;
overflow
:
hidden
;
height
:
20px
;
overflow-y
:
auto
;
flex
:
auto
;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/marketAccessLayout/overview/232/index.vue
浏览文件 @
c367ed1f
...
@@ -201,13 +201,16 @@ onMounted(() => {
...
@@ -201,13 +201,16 @@ onMounted(() => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.wrap
{
.wrap
{
width
:
100%
;
width
:
1600px
;
height
:
100%
;
margin
:
0
auto
;
overflow
:
hidden
;
padding
:
20px
0
;
display
:
flex
;
flex-direction
:
column
;
gap
:
16px
;
.top
{
.top
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
margin
:
16px
160px
;
.item
{
.item
{
width
:
388px
;
width
:
388px
;
height
:
80px
;
height
:
80px
;
...
@@ -338,7 +341,6 @@ onMounted(() => {
...
@@ -338,7 +341,6 @@ onMounted(() => {
.center
{
.center
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
margin
:
0
160px
;
.box1
{
.box1
{
width
:
792px
;
width
:
792px
;
height
:
360px
;
height
:
360px
;
...
@@ -364,7 +366,6 @@ onMounted(() => {
...
@@ -364,7 +366,6 @@ onMounted(() => {
}
}
}
}
.footer
{
.footer
{
margin
:
16px
160px
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
.box3
{
.box3
{
...
...
src/views/marketAccessRestrictions/marketAccessLayout/overview/301/index.vue
浏览文件 @
c367ed1f
<
template
>
<
template
>
<div
class=
"wrap"
>
<div
class=
"wrap"
>
<!--
<div
class=
"sider-tab-box"
>
<SiderTabs
:siderList=
"siderTabList"
@
clickSiderItem=
"handleClickTabItem"
/>
</div>
-->
<div
class=
"top"
>
<div
class=
"top"
>
<div
class=
"box1 box"
v-loading=
"box1Loading"
>
<div
class=
"box1 box"
v-loading=
"box1Loading"
>
<div
class=
"box-header"
>
<div
class=
"box-header"
>
...
@@ -143,28 +140,6 @@ import getSankeyChart from "./utils/sankey";
...
@@ -143,28 +140,6 @@ import getSankeyChart from "./utils/sankey";
import
getPieChart
from
"./utils/piechart"
;
import
getPieChart
from
"./utils/piechart"
;
import
getbarChart
from
"@/views/bill/utils/barchart"
;
import
getbarChart
from
"@/views/bill/utils/barchart"
;
import
{
getSearchCountry
,
getStatArea
,
getStatNum
,
getSearchDirection
}
from
"@/api/marketAccessRestrictions"
;
import
{
getSearchCountry
,
getStatArea
,
getStatNum
,
getSearchDirection
}
from
"@/api/marketAccessRestrictions"
;
import
SiderTabs
from
"@/components/base/SiderTabs/index.vue"
// const siderTabList = ref([
//
{
// name: '分析内11111',
// active: false
//
}
,
//
{
// name: '分析内2',
// active: true
//
}
,
//
{
// name: '分析内3',
// active: false
//
}
,
// ])
// const handleClickTabItem = (value) =>
{
// console.log('val',value);
//
}
const
selectYear
=
ref
(
"2025"
);
const
selectYear
=
ref
(
"2025"
);
...
@@ -339,14 +314,12 @@ onMounted(() => {
...
@@ -339,14 +314,12 @@ onMounted(() => {
<
style
lang
=
"scss"
scoped
>
<
style
lang
=
"scss"
scoped
>
.
wrap
{
.
wrap
{
overflow
:
hidden
;
width
:
1600
px
;
position
:
relative
;
margin
:
0
auto
;
padding
:
20
px
0
;
.
sider
-
tab
-
box
{
display
:
flex
;
position
:
absolute
;
flex
-
direction
:
column
;
left
:
20
px
;
gap
:
16
px
;
top
:
20
px
;
}
.
box
{
.
box
{
width
:
792
px
;
width
:
792
px
;
...
@@ -473,7 +446,6 @@ onMounted(() => {
...
@@ -473,7 +446,6 @@ onMounted(() => {
display
:
flex
;
display
:
flex
;
justify
-
content
:
center
;
justify
-
content
:
center
;
gap
:
16
px
;
gap
:
16
px
;
margin
:
16
px
auto
;
.
box1
{
.
box1
{
.
box1
-
main
{
.
box1
-
main
{
...
@@ -494,9 +466,6 @@ onMounted(() => {
...
@@ -494,9 +466,6 @@ onMounted(() => {
display
:
flex
;
display
:
flex
;
justify
-
content
:
center
;
justify
-
content
:
center
;
gap
:
16
px
;
gap
:
16
px
;
margin
:
0
auto
;
margin
-
bottom
:
16
px
;
.
box3
{
.
box3
{
.
box3
-
main
{
.
box3
-
main
{
height
:
304
px
;
height
:
304
px
;
...
...
src/views/marketAccessRestrictions/marketAccessLayout/overview/337/index.vue
浏览文件 @
c367ed1f
...
@@ -41,45 +41,6 @@
...
@@ -41,45 +41,6 @@
<
/div
>
<
/div
>
<
div
class
=
"footer"
>
<
div
class
=
"footer"
>
<
div
class
=
"box3"
v
-
loading
=
"box3Loading"
>
<
div
class
=
"box3"
v
-
loading
=
"box3Loading"
>
<!--
<
div
class
=
"box-header"
>
<
div
class
=
"header-left"
><
/div
>
<
div
class
=
"title"
>
中国公司受调查情况
<
/div
>
<
div
class
=
"header-btn-box"
>
<
div
class
=
"btn"
:
class
=
"{ btnActive: btnActiveName === '调查次数'
}
"
@
click
=
"handleClickBox3Btn('调查次数')"
>
调查次数
<
/div
>
<
div
class
=
"btn"
:
class
=
"{ btnActive: btnActiveName === '注册地分布'
}
"
@
click
=
"handleClickBox3Btn('注册地分布')"
>
注册地分布
<
/div
>
<
/div
>
<
div
class
=
"header-right"
>
<
div
class
=
"icon"
>
<
img
src
=
"@/assets/icons/box-header-icon1.png"
alt
=
""
/>
<
/div
>
<
div
class
=
"icon"
>
<
img
src
=
"@/assets/icons/box-header-icon2.png"
alt
=
""
/>
<
/div
>
<
div
class
=
"icon"
>
<
img
src
=
"@/assets/icons/box-header-icon3.png"
alt
=
""
/>
<
/div
>
<
/div
>
<
/div
>
<
div
v
-
show
=
"btnActiveName === '调查次数'"
class
=
"box3-main"
id
=
"chart3"
><
/div
>
<
div
v
-
show
=
"btnActiveName === '注册地分布'"
class
=
"box3-main1"
>
<
div
class
=
"box3-main1-left"
>
<
div
class
=
"box3-main1-left-item"
v
-
for
=
"(item, index) in mapData"
:
key
=
"index"
>
<
div
class
=
"box3-main1-left-item-left"
>
{{
index
+
1
}}
<
/div
>
<
div
class
=
"box3-main1-left-item-center"
>
{{
item
.
name
}}
<
/div
>
<
div
class
=
"box3-main1-left-item-right"
>
{{
item
.
value
+
"次"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box3-main1-right"
id
=
"chartMap"
><
/div
>
<
/div
>
<
div
class
=
"box3-footer"
>
<
TipTab
/>
<
/div> --
>
<
AnalysisBox
title
=
"中国公司受调查情况"
>
<
AnalysisBox
title
=
"中国公司受调查情况"
>
<
template
#
header
-
btn
>
<
template
#
header
-
btn
>
<
div
class
=
"header-btn-box"
>
<
div
class
=
"header-btn-box"
>
...
@@ -118,9 +79,6 @@
...
@@ -118,9 +79,6 @@
<
/AnalysisBox
>
<
/AnalysisBox
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<!--
<
div
class
=
"graph-box"
id
=
"graphChart"
>
<
/div> --
>
<
/div
>
<
/div
>
<
/template
>
<
/template
>
<
script
setup
>
<
script
setup
>
...
@@ -523,26 +481,16 @@ onMounted(() => {
...
@@ -523,26 +481,16 @@ onMounted(() => {
<
style
lang
=
"scss"
scoped
>
<
style
lang
=
"scss"
scoped
>
.
wrap
{
.
wrap
{
width
:
100
%
;
width
:
1600
px
;
height
:
100
%
;
margin
:
0
auto
;
overflow
:
hidden
;
padding
:
20
px
0
;
position
:
relative
;
display
:
flex
;
flex
-
direction
:
column
;
.
graph
-
box
{
gap
:
16
px
;
position
:
absolute
;
top
:
100
px
;
left
:
100
px
;
width
:
1000
px
;
height
:
600
px
;
border
-
radius
:
10
px
;
z
-
index
:
9999
;
background
:
#
fff
;
}
.
top
{
.
top
{
display
:
flex
;
display
:
flex
;
justify
-
content
:
space
-
between
;
justify
-
content
:
space
-
between
;
margin
:
16
px
160
px
;
.
item
{
.
item
{
width
:
388
px
;
width
:
388
px
;
...
@@ -635,36 +583,6 @@ onMounted(() => {
...
@@ -635,36 +583,6 @@ onMounted(() => {
font
-
weight
:
700
;
font
-
weight
:
700
;
}
}
// .header-btn-box
{
// position: absolute;
// top: 14px;
// right: 120px;
// display: flex;
// .btn
{
// margin-left: 8px;
// height: 28px;
// padding: 0 8px;
// box-sizing: border-box;
// border: 1px solid rgba(230, 231, 232, 1);
// border-radius: 4px;
// background: rgba(255, 255, 255, 1);
// text-align: center;
// line-height: 28px;
// color: rgba(59, 65, 75, 1);
// font-family: Microsoft YaHei;
// font-size: 16px;
// font-weight: 400;
// cursor: pointer;
//
}
// .btnActive
{
// border: 1px solid var(--color-main-active);
// background: rgba(246, 250, 255, 1);
// color: var(--color-main-active);
//
}
//
}
.
header
-
right
{
.
header
-
right
{
position
:
absolute
;
position
:
absolute
;
top
:
14
px
;
top
:
14
px
;
...
@@ -688,7 +606,6 @@ onMounted(() => {
...
@@ -688,7 +606,6 @@ onMounted(() => {
.
center
{
.
center
{
display
:
flex
;
display
:
flex
;
justify
-
content
:
space
-
between
;
justify
-
content
:
space
-
between
;
margin
:
0
160
px
;
.
box1
{
.
box1
{
width
:
792
px
;
width
:
792
px
;
...
@@ -721,7 +638,6 @@ onMounted(() => {
...
@@ -721,7 +638,6 @@ onMounted(() => {
}
}
.
footer
{
.
footer
{
margin
:
16
px
160
px
;
display
:
flex
;
display
:
flex
;
justify
-
content
:
space
-
between
;
justify
-
content
:
space
-
between
;
...
...
src/views/marketAccessRestrictions/marketAccessLayout/overview/index.vue
浏览文件 @
c367ed1f
<
template
>
<
template
>
<div
class=
"overview-wrap"
>
<div
class=
"overview-wrap"
>
<Discussion1
v-if=
"showDiscussion ==='337'"
></Discussion1>
<Discussion1
v-if=
"showDiscussion ==='337'"
></Discussion1>
<Discussion2
v-
else-
if=
"showDiscussion ==='232'"
></Discussion2>
<Discussion2
v-if=
"showDiscussion ==='232'"
></Discussion2>
<Discussion3
v-
else
></Discussion3>
<Discussion3
v-
if=
"showDiscussion ==='301'"
></Discussion3>
</div>
</div>
</
template
>
</
template
>
...
@@ -28,5 +28,6 @@ onMounted(() => {
...
@@ -28,5 +28,6 @@ onMounted(() => {
.overview-wrap
{
.overview-wrap
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
overflow-y
:
auto
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/singleCaseLayout/assets/images/232.png
0 → 100644
浏览文件 @
c367ed1f
21.2 KB
src/views/marketAccessRestrictions/singleCaseLayout/assets/images/301.png
0 → 100644
浏览文件 @
c367ed1f
32.7 KB
src/views/marketAccessRestrictions/singleCaseLayout/assets/images/337.png
0 → 100644
浏览文件 @
c367ed1f
26.4 KB
src/views/marketAccessRestrictions/singleCaseLayout/assets/images/icon_affiche.png
0 → 100644
浏览文件 @
c367ed1f
302 Bytes
src/views/marketAccessRestrictions/singleCaseLayout/deepdig/232/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/deepdig/337/index.vue
浏览文件 @
c367ed1f
...
@@ -446,9 +446,9 @@ onMounted(() => {
...
@@ -446,9 +446,9 @@ onMounted(() => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.deep-dig-container
{
.deep-dig-container
{
display
:
flex
;
display
:
flex
;
padding
:
16px
160px
;
width
:
1600px
;
margin
:
20px
auto
;
gap
:
16px
;
gap
:
16px
;
background
:
#f7f8f9
;
.box
{
.box
{
background
:
#ffffff
;
background
:
#ffffff
;
...
@@ -553,7 +553,7 @@ onMounted(() => {
...
@@ -553,7 +553,7 @@ onMounted(() => {
}
}
.left-section
{
.left-section
{
width
:
32
0px
;
width
:
48
0px
;
flex-shrink
:
0
;
flex-shrink
:
0
;
.company-list-box
{
.company-list-box
{
...
@@ -565,11 +565,12 @@ onMounted(() => {
...
@@ -565,11 +565,12 @@ onMounted(() => {
margin-bottom
:
16px
;
margin-bottom
:
16px
;
.area-select
{
.area-select
{
flex
:
0
0
10
0px
;
width
:
15
0px
;
}
}
.search-input
{
.search-input
{
flex
:
1
;
flex
:
auto
;
width
:
20px
;
}
}
}
}
...
@@ -624,7 +625,8 @@ onMounted(() => {
...
@@ -624,7 +625,8 @@ onMounted(() => {
}
}
.right-section
{
.right-section
{
flex
:
1
;
flex
:
auto
;
width
:
20px
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
gap
:
16px
;
gap
:
16px
;
...
...
src/views/marketAccessRestrictions/singleCaseLayout/deepdig/index.vue
浏览文件 @
c367ed1f
...
@@ -26,5 +26,6 @@ onMounted(() => {
...
@@ -26,5 +26,6 @@ onMounted(() => {
.deepdig-wrap
{
.deepdig-wrap
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
overflow-y
:
auto
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/singleCaseLayout/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/232/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/301/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/337/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/index.vue
浏览文件 @
c367ed1f
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论