Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
86617244
提交
86617244
authored
4月 15, 2026
作者:
张伊明
浏览文件
操作
浏览文件
下载
差异文件
合并分支 'zy-dev' 到 'pre'
Zy dev 查看合并请求
!342
上级
ddff29ea
eb9f4307
流水线
#487
已通过 于阶段
in 4 分 50 秒
变更
31
流水线
1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
31 个修改的文件
包含
356 行增加
和
467 行删除
+356
-467
index.js
src/api/marketAccessRestrictions/index.js
+23
-2
index.vue
src/components/base/TipTab/index.vue
+13
-2
marketAccessRestrictions.js
src/router/modules/marketAccessRestrictions.js
+8
-2
index.vue
src/views/decree/decreeHome/index.vue
+22
-65
index.vue
src/views/decree/decreeLayout/overview/measures/index.vue
+4
-90
Level1List.vue
src/views/marketAccessRestrictions/com/Level1List.vue
+91
-0
Level2List.vue
src/views/marketAccessRestrictions/com/Level2List.vue
+41
-0
SurveyConclusion.vue
src/views/marketAccessRestrictions/com/SurveyConclusion.vue
+3
-75
CarouselItem232.vue
...cessRestrictions/marketAccessHome/com/CarouselItem232.vue
+4
-4
CarouselItem301.vue
...cessRestrictions/marketAccessHome/com/CarouselItem301.vue
+4
-5
index.vue
...views/marketAccessRestrictions/marketAccessHome/index.vue
+0
-0
barChart1.js
...ketAccessRestrictions/marketAccessHome/utils/barChart1.js
+32
-18
index.vue
...tAccessRestrictions/marketAccessLayout/case/232/index.vue
+26
-47
index.vue
...tAccessRestrictions/marketAccessLayout/case/301/index.vue
+38
-75
index.vue
...tAccessRestrictions/marketAccessLayout/case/337/index.vue
+8
-49
index.vue
...ews/marketAccessRestrictions/marketAccessLayout/index.vue
+1
-2
index.vue
...essRestrictions/marketAccessLayout/overview/232/index.vue
+0
-0
index.vue
...essRestrictions/marketAccessLayout/overview/301/index.vue
+0
-0
barChart.js
...ictions/marketAccessLayout/overview/301/utils/barChart.js
+37
-30
index.vue
...essRestrictions/marketAccessLayout/overview/337/index.vue
+0
-0
barChart.js
...ictions/marketAccessLayout/overview/337/utils/barChart.js
+1
-1
reportOriginal.vue
src/views/marketAccessRestrictions/pages/reportOriginal.vue
+0
-0
index.vue
...AccessRestrictions/singleCaseLayout/deepdig/232/index.vue
+0
-0
index.vue
...AccessRestrictions/singleCaseLayout/deepdig/337/index.vue
+0
-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
baseLineChart.js
src/views/marketAccessRestrictions/utils/baseLineChart.js
+0
-0
basePiechart.js
src/views/marketAccessRestrictions/utils/basePiechart.js
+0
-0
index.ts
src/views/marketAccessRestrictions/utils/index.ts
+0
-0
没有找到文件。
src/api/marketAccessRestrictions/index.js
浏览文件 @
86617244
...
...
@@ -11,10 +11,11 @@ export function getStatCount(params) {
}
// 分类接口
export
function
getStatSort
()
{
export
function
getStatSort
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchHome/statSort`
url
:
`/api/marketsearchHome/statSort`
,
params
})
}
...
...
@@ -39,6 +40,18 @@ export function getStatNum(params) {
})
}
// 查询关税税率
/**
* @param {byYorM}
*/
export
function
getSearchTariff
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchDetails/getSearchTariff`
,
params
})
}
// 制裁领域分布
/**
* @param {years}
...
...
@@ -178,6 +191,14 @@ export function getSearchBlurb(params) {
})
}
// 获取原文
export
function
getOriginalUrl
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/marketsearchDetails/getOriginalUrl/
${
params
.
id
}
`
,
})
}
// 获取相关事件
export
function
getRelatedEvents
(
params
)
{
return
request
({
...
...
src/components/base/TipTab/index.vue
浏览文件 @
86617244
...
...
@@ -3,7 +3,10 @@
<div
class=
"icon"
>
<img
src=
"./tip-icon.svg"
alt=
""
>
</div>
<div
class=
"text text-tip-2 text-primary-50-clor"
>
{{
tipText
}}
</div>
<div
class=
"text text-tip-2 text-primary-50-clor"
>
<div
v-if=
"ellipsis"
:title=
"tipText"
class=
"one-line-ellipsis"
>
{{
tipText
}}
</div>
<div
v-else
>
{{
tipText
}}
</div>
</div>
</div>
</
template
>
...
...
@@ -23,7 +26,10 @@ const props = defineProps({
type
:
String
,
default
:
'2023.1至2025.12'
},
ellipsis
:
{
type
:
Boolean
,
default
:
false
}
})
const
tipText
=
computed
(()
=>
props
.
text
||
`数据来源:
${
props
.
dataSource
}
,数据时间:
${
props
.
dataTime
}
`
)
...
...
@@ -48,5 +54,9 @@ const tipText = computed(() => props.text || `数据来源:${props.dataSource}
height
:
100%
;
}
}
.text
{
width
:
20px
;
flex
:
auto
;
}
}
</
style
>
\ No newline at end of file
src/router/modules/marketAccessRestrictions.js
浏览文件 @
86617244
...
...
@@ -6,6 +6,7 @@ const MarketAccessCase = () => import('@/views/marketAccessRestrictions/marketAc
const
MarketSingleCaseLayout
=
()
=>
import
(
'@/views/marketAccessRestrictions/singleCaseLayout/index.vue'
)
const
MarketSingleCaseOverview
=
()
=>
import
(
'@/views/marketAccessRestrictions/singleCaseLayout/overview/index.vue'
)
const
MarketSingleCaseDeepdig
=
()
=>
import
(
'@/views/marketAccessRestrictions/singleCaseLayout/deepdig/index.vue'
)
const
MarketSingleReportOriginal
=
()
=>
import
(
'@/views/marketAccessRestrictions/pages/reportOriginal.vue'
)
const
marketAccessRestrictionsRoutes
=
[
// 市场准入限制首页
...
...
@@ -42,7 +43,6 @@ const marketAccessRestrictionsRoutes = [
}
]
},
{
path
:
"/marketSingleCaseLayout"
,
name
:
"MarketSingleCaseLayout"
,
...
...
@@ -67,7 +67,12 @@ const marketAccessRestrictionsRoutes = [
}
]
},
{
path
:
"reportOriginal"
,
name
:
"MarketSingleReportOriginal"
,
component
:
MarketSingleReportOriginal
,
meta
:
{
noTitle
:
true
}
}
]
export
default
marketAccessRestrictionsRoutes
\ No newline at end of file
src/views/decree/decreeHome/index.vue
浏览文件 @
86617244
...
...
@@ -152,7 +152,7 @@
</div>
<div
class=
"ai-pane"
>
<AiButton
/>
<AiPane
:aiContent=
"
summarize
1"
/>
<AiPane
:aiContent=
"
aiContent.content
1"
/>
</div>
</div>
...
...
@@ -188,7 +188,7 @@
</div>
<div
class=
"ai-pane"
>
<AiButton
/>
<AiPane
:aiContent=
"
summarize
2"
/>
<AiPane
:aiContent=
"
aiContent.content
2"
/>
</div>
</div>
</div>
...
...
@@ -442,6 +442,7 @@ import setChart from "@/utils/setChart";
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
tipsTcon
from
"./assets/images/tips-icon.png"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
getAIReport
,
getNearYearList
}
from
"@/views/marketAccessRestrictions/utils/index.ts"
import
{
useGotoNewsDetail
}
from
'@/router/modules/news'
;
...
...
@@ -722,17 +723,16 @@ const handleClickPerson = async item => {
}
catch
(
error
)
{
}
};
// 获取最近年份列表
const
currentYear
=
new
Date
().
getFullYear
();
const
getYearList
=
(
count
=
6
)
=>
{
const
yearOptions
=
[];
for
(
let
i
=
0
;
i
<
count
;
i
++
)
{
const
year
=
currentYear
-
i
;
yearOptions
.
push
({
label
:
year
.
toString
(),
value
:
year
.
toString
()
});
}
return
yearOptions
;
};
const
yearList
=
getYearList
();
const
yearList
=
getNearYearList
();
// 获取AI智能报告
const
aiContent
=
reactive
({
content1
:
"正在生成..."
,
content2
:
"正在生成..."
,
})
const
onAIReport
=
(
data
,
key
)
=>
{
getAIReport
(
data
).
then
(
res
=>
{
aiContent
[
key
]
=
res
})
}
// 行政令发布频度
const
chart1Data
=
ref
({
...
...
@@ -745,7 +745,6 @@ const box5Params = reactive({
proposeName
:
''
,
loading
:
false
,
})
const
summarize1
=
ref
()
const
handleGetDecreeYearOrder
=
async
()
=>
{
box5Params
.
loading
=
true
try
{
...
...
@@ -763,61 +762,17 @@ const handleGetDecreeYearOrder = async () => {
chart1Data
.
value
.
dataY
=
res
.
data
.
map
(
item
=>
{
return
item
.
count
;
});
onChartInterpretation
({
type
:
"柱状图"
,
name
:
"数量变化趋势"
,
data
:
res
.
data
},
summarize1
)
onAIReport
({
type
:
"柱状图"
,
name
:
"数量变化趋势"
,
data
:
res
.
data
},
"content1"
)
}
else
{
chart1Data
.
value
.
dataX
=
[];
chart1Data
.
value
.
dataY
=
[];
aiContent
.
content1
=
""
}
}
catch
(
error
)
{
console
.
error
(
"行政令发布频度error"
,
error
);
}
box5Params
.
loading
=
false
};
// AI智能总结
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'
,
{
method
:
'POST'
,
headers
:
{
"X-API-Key"
:
"aircasKEY19491001"
,
'Content-Type'
:
'application/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
decoder
=
new
TextDecoder
();
let
buffer
=
''
;
let
summarize
=
''
;
while
(
true
)
{
const
{
done
,
value
}
=
await
reader
.
read
();
if
(
done
)
break
;
buffer
+=
decoder
.
decode
(
value
,
{
stream
:
true
});
const
lines
=
buffer
.
split
(
'
\
n'
);
buffer
=
lines
.
pop
()
||
''
;
for
(
const
line
of
lines
)
{
if
(
line
.
startsWith
(
'data: '
))
{
const
content
=
line
.
substring
(
6
);
const
textMatch
=
content
.
match
(
/"解读":
\s
*"
([^
"
]
*
)
"/
);
if
(
textMatch
&&
textMatch
[
1
])
summarize
=
textMatch
[
1
];
}
}
}
param
.
value
=
summarize
}
catch
(
err
)
{
param
.
value
=
"系统异常,生成失败"
;
}
}
const
handleBox5
=
async
()
=>
{
await
handleGetDecreeYearOrder
();
...
...
@@ -863,7 +818,6 @@ const box6Params = reactive({
proposeName
:
''
,
loading
:
false
,
});
const
summarize2
=
ref
()
const
handleGetDecreeArea
=
async
()
=>
{
box6Params
.
loading
=
true
try
{
...
...
@@ -880,7 +834,10 @@ const handleGetDecreeArea = async () => {
value
:
item
.
count
};
});
onChartInterpretation
({
type
:
"环形图"
,
name
:
"领域分布情况"
,
data
:
res
.
data
},
summarize2
)
onAIReport
({
type
:
"环形图"
,
name
:
"领域分布情况"
,
data
:
res
.
data
},
"content2"
)
}
else
{
chart2Data
.
value
=
[]
aiContent
.
content2
=
""
}
}
catch
(
error
)
{
console
.
error
(
"政令科技领域error"
,
error
);
...
...
src/views/decree/decreeLayout/overview/measures/index.vue
浏览文件 @
86617244
...
...
@@ -53,7 +53,7 @@
<div
v-for=
"(subSubItem, subSubIndex) in subItem.slaver"
:key=
"subSubIndex"
class=
"sub-sub-item"
>
<div
class=
"sub-sub-item-dot"
>
{{ ALPHABET[subSubIndex % 26] }}.
</div>
<div
class=
"sub-sub-item-word"
v-html=
"subItem.content"
></div>
<div
class=
"sub-sub-item-word"
v-html=
"sub
Sub
Item.content"
></div>
</div>
</div>
</div>
...
...
@@ -157,6 +157,7 @@ import ActionButton from '@/components/base/ActionButton/index.vue'
import
DefaultIcon1
from
"@/assets/icons/default-icon1.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
defaultCom
from
"@/views/coopRestriction/assets/images/default-icon2.png"
import
{
onNumToChinese
}
from
"@/views/marketAccessRestrictions/utils/index"
const
route
=
useRoute
();
...
...
@@ -185,70 +186,7 @@ const handleGetAreaList = async () => {
// 主要指令
const
isHighlight
=
ref
(
false
);
const
commandWord
=
ref
(
""
);
const
contentList
=
ref
([
// {
// content: "建立美国人工智能出口计划建立美国人工智能出口计划建立美国人工智能出口计划建立美国人工智能出口计划建立美国人工智能出口计划",
// slaver: [
// {
// content: '在本命令发布之日起 90 天内,商务部长应与国务卿及科学技术政策办公室(OSTP)主任协商,建立并实施美国人工智能出口计划(计划),以支持美国全栈人工智能出口软件包的开发和部署。'
// },
// {
// content: '商务部长应公开征集由行业主导的联盟提案,以纳入该计划。公开征集要求每项提案必须:',
// slaver: [
// {
// content: '包含一套全栈人工智能技术包,涵盖:',
// slaver: [
// {
// content: 'AI 优化的计算机硬件(如芯片、服务器和加速器)、数据中心存储、云服务和网络,以及这些设备是否以及在多大程度上在美国制造的描述;'
// },
// {
// content: '数据管道和标签系统;'
// },
// {
// content: '人工智能模型与系统;'
// },
// {
// content: '采取措施保障人工智能模型和系统的安全性和网络安全;'
// },
// {
// content: '针对特定用例的人工智能应用(如软件工程、教育、医疗保健、农业或交通运输);'
// }
// ]
// },
// {
// content: '确定出口参与者的具体目标国家或区域集团;'
// },
// {
// content: '描述一个业务和运营模型,以在高层次上说明哪些实体将建设、拥有和运营数据中心及相关基础设施;'
// },
// {
// content: '联邦激励和支持机制请求的细节;'
// },
// {
// content: '遵守所有相关的美国出口管制制度、出境投资法规和终端用户政策,包括美国法典第 50 编第 58 章及商务部工业与安全局的相关指导。'
// }
// ]
// },
// {
// content: '商务部要求提案须在公开征集后不超过 90 天内提交,并应滚动考虑提案纳入项目。'
// },
// {
// content: '商务部长应与国务卿、国防部长、能源部长及 OSTP 主任协商,评估提交的纳入计划提案。商务部长与国务卿、国防部长、能源部长及 OSTP 主任协商后选定的提案,将被指定为优先 AI 出口包,并通过优先访问本命令第 4 节指定的工具予以支持,符合适用法律。'
// }
// ]
// },
// {
// content: "动员联邦融资工具",
// slaver: [
// {
// content: '经济外交行动小组(EDAG),于 2024 年 6 月 21 日总统备忘录中成立,由国务卿主持,并与商务部长和美国贸易代表协商,并根据 2019 年《通过外交倡导美国企业法案》(公共法 116-94 J 部分第七章)第 708 条(CABDA)所述,应协调联邦融资工具的动员,以支持优先的人工智能出口方案。'
// },
// {
// content: '我将根据 CABDA α 第 708 (c) (3) 条授权小企业管理局局长和 OSTP 主任任命各自执行部门和机构的高级官员担任 EDAG 。'
// }
// ]
// }
]);
const
contentList
=
ref
([]);
const
ALPHABET
=
[
"a"
,
"b"
,
"c"
,
"d"
,
"e"
,
"f"
,
"g"
,
"h"
,
"i"
,
"j"
,
"k"
,
"l"
,
"m"
,
"n"
,
"o"
,
"p"
,
"q"
,
"r"
,
"s"
,
"t"
,
"u"
,
"v"
,
"w"
,
"x"
,
"y"
,
"z"
];
const
onMainContentData
=
async
()
=>
{
try
{
...
...
@@ -257,7 +195,7 @@ const onMainContentData = async () => {
console
.
log
(
"主要指令"
,
res
);
if
(
res
&&
res
.
code
===
200
)
{
contentList
.
value
=
res
.
data
||
[];
contentList
.
value
.
forEach
((
item
,
index
)
=>
{
item
.
content
=
`(
${
simple
NumToChinese
(
index
+
1
)}
)
${
item
.
content
}
`
})
contentList
.
value
.
forEach
((
item
,
index
)
=>
{
item
.
content
=
`(
${
on
NumToChinese
(
index
+
1
)}
)
${
item
.
content
}
`
})
if
(
keyword
)
{
let
word
=
keyword
.
replace
(
/
[
.*+?^${}()|[
\]\\]
/g
,
"
\\
$&"
);
contentList
.
value
.
forEach
(
item
=>
{
onHighlight
(
word
,
item
)
})
...
...
@@ -279,30 +217,6 @@ const onHighlight = (word, row) => {
row
.
slaver
.
forEach
(
item
=>
{
onHighlight
(
word
,
item
)
})
}
}
// 数字转中文(支持 0-99 整数)
const
simpleNumToChinese
=
(
num
)
=>
{
// 1. 基础校验:只处理 0-99 的整数
if
(
!
Number
.
isInteger
(
num
)
||
num
<
0
||
num
>
99
)
return
'100'
;
// 2. 定义基础字符
const
singleChars
=
[
'零'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'七'
,
'八'
,
'九'
];
const
tenChar
=
'十'
;
// 3. 核心转换逻辑
if
(
num
<
10
)
{
// 0-9 直接返回对应字符
return
singleChars
[
num
];
}
else
if
(
num
===
10
)
{
// 10 特殊处理
return
tenChar
;
}
else
if
(
num
<
20
)
{
// 11-19:十 + 个位(如十一、十九)
return
tenChar
+
singleChars
[
num
-
10
];
}
else
{
// 20-99:十位 + 十 + 个位(个位为0则省略,如二十、二十九)
const
ten
=
Math
.
floor
(
num
/
10
);
// 十位数字
const
unit
=
num
%
10
;
// 个位数字
return
singleChars
[
ten
]
+
tenChar
+
(
unit
===
0
?
''
:
singleChars
[
unit
]);
}
}
// 思维导图
const
isTreeDialog
=
ref
(
false
);
...
...
src/views/marketAccessRestrictions/com/Level1List.vue
0 → 100644
浏览文件 @
86617244
<
template
>
<div
class=
"data-list"
>
<div
class=
"data-item"
v-for=
"(item, index) in props.list"
:key=
"index"
>
<div
class=
"item-head"
>
<div
class=
"item-name"
>
{{
`(${onNumToChinese(Number(index)+1)
}
). ${item.title
}
`
}}
<
/div
>
<
div
class
=
"button-box"
@
click
=
"onNavigateTo()"
>
<
div
class
=
"button-icon"
>
<
img
src
=
"../assets/icons/open.png"
alt
=
""
/>
<
/div
>
<
div
class
=
"button-text"
>
跳转原文
<
/div
>
<
/div
>
<
/div
>
<
Level2List
:
list
=
"item.data"
><
/Level2List
>
<
/div
>
<
/div
>
<
/template
>
<
script
setup
lang
=
"ts"
name
=
"Level2List"
>
import
router
from
"@/router"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
onNumToChinese
}
from
"@/views/marketAccessRestrictions/utils/index"
import
Level2List
from
"@/views/marketAccessRestrictions/com/Level2List.vue"
;
const
route
=
useRoute
();
const
props
=
defineProps
({
list
:
{
type
:
Array
as
any
,
default
:
()
=>
([])
}
,
}
)
const
onNavigateTo
=
()
=>
{
const
page
=
router
.
resolve
({
name
:
"MarketSingleReportOriginal"
,
query
:
{
...
route
.
query
}
}
);
window
.
open
(
page
.
href
,
"_blank"
);
}
<
/script
>
<
style
scoped
lang
=
"scss"
>
.
data
-
list
{
margin
-
bottom
:
16
px
;
border
-
top
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
.
data
-
item
{
.
item
-
head
{
padding
:
0
20
px
;
height
:
48
px
;
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
background
:
rgba
(
247
,
248
,
249
,
1
);
display
:
flex
;
align
-
items
:
center
;
.
item
-
name
{
width
:
20
px
;
flex
:
auto
;
font
-
family
:
Source
Han
Sans
CN
;
font
-
size
:
18
px
;
font
-
weight
:
bold
;
line
-
height
:
30
px
;
color
:
var
(
--
text
-
primary
-
80
-
color
);
}
.
button
-
box
{
display
:
flex
;
align
-
items
:
center
;
margin
-
left
:
50
px
;
cursor
:
pointer
;
.
button
-
icon
{
width
:
16
px
;
height
:
16
px
;
font
-
size
:
0
;
margin
-
right
:
4
px
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
.
button
-
text
{
color
:
var
(
--
color
-
primary
-
100
);
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
12
px
;
font
-
weight
:
400
;
line
-
height
:
12
px
;
}
}
}
}
}
<
/style>
\ No newline at end of file
src/views/marketAccessRestrictions/com/Level2List.vue
0 → 100644
浏览文件 @
86617244
<
template
>
<div
class=
"view-box"
>
<div
class=
"item-info"
v-for=
"(text, num) in props.list"
:key=
"num"
>
<div
class=
"item-num"
>
{{
Number
(
num
)
+
1
}}
.
</div>
<div
class=
"text-align-justify"
>
{{
text
}}
</div>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
name=
"Level2List"
>
const
props
=
defineProps
({
list
:
{
type
:
Array
as
any
,
default
:
()
=>
([])
}
})
</
script
>
<
style
scoped
lang=
"scss"
>
.view-box
{
.item-info
{
padding
:
12px
20px
12px
50px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Source
Han
Sans
CN
;
font-size
:
16px
;
font-weight
:
400
;
line-height
:
30px
;
letter-spacing
:
0px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
position
:
relative
;
.item-num
{
position
:
absolute
;
left
:
26px
;
top
:
12px
;
}
}
}
</
style
>
\ No newline at end of file
src/views/marketAccessRestrictions/com/SurveyConclusion.vue
浏览文件 @
86617244
...
...
@@ -2,29 +2,15 @@
<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>
<Level1List
:list=
"props.listData"
></Level1List>
<!--
<AiTips
:tips=
"tips"
></AiTips>
-->
</div>
</AnalysisBox>
</
template
>
<
script
setup
lang=
"ts"
name=
"SurveyConclusion"
>
import
AiTips
from
"@/views/marketAccessRestrictions/com/AiTips.vue"
;
import
Level1List
from
"@/views/marketAccessRestrictions/com/Level1List.vue"
;
const
props
=
defineProps
({
listData
:
{
...
...
@@ -46,62 +32,5 @@ const props = defineProps({
<
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/marketAccessHome/com/CarouselItem232.vue
浏览文件 @
86617244
...
...
@@ -2,19 +2,19 @@
<div
class=
"box-text-box"
>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"启动时间:"
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
searchnum
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
progressdate
}}
</div>
</div>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"调查概括:"
}}
</div>
<div
class=
"box-text-right two-line-ellipsis"
>
{{
props
.
baseInfo
.
product
}}
</div>
<div
class=
"box-text-right two-line-ellipsis"
>
{{
props
.
baseInfo
.
investSummary
}}
</div>
</div>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"调查阶段:"
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
plaintiff
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
investStage
}}
</div>
</div>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"调查范围:"
}}
</div>
<div
class=
"box-text-right five-line-ellipsis"
>
{{
props
.
baseInfo
.
defendant
}}
</div>
<div
class=
"box-text-right five-line-ellipsis"
>
{{
props
.
baseInfo
.
investScope
}}
</div>
</div>
</div>
</
template
>
...
...
src/views/marketAccessRestrictions/marketAccessHome/com/CarouselItem301.vue
浏览文件 @
86617244
...
...
@@ -2,26 +2,25 @@
<div
class=
"box-blue-box"
>
<div
class=
"box-blue-name"
>
<div
class=
"box-blue-time"
>
{{
props
.
baseInfo
.
progressdate
}}
</div>
<div
class=
"box-blue-time"
>
{{
props
.
baseInfo
.
progressresult
}}
</div>
</div>
<div
class=
"box-blue-text one-line-ellipsis"
>
{{
props
.
baseInfo
.
progressdetails
}}
</div>
</div>
<div
class=
"box-text-box"
>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"启动时间:"
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
searchnum
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
investDate
}}
</div>
</div>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"调查对象:"
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
produ
ct
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
investSubje
ct
}}
</div>
</div>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"调查状态:"
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
plaintiff
}}
</div>
<div
class=
"box-text-right one-line-ellipsis"
>
{{
props
.
baseInfo
.
investStatus
}}
</div>
</div>
<div
class=
"box-text-item"
>
<div
class=
"box-text-left"
>
{{
"请愿方:"
}}
</div>
<div
class=
"box-text-right three-line-ellipsis"
>
{{
props
.
baseInfo
.
p
roduct
}}
</div>
<div
class=
"box-text-right three-line-ellipsis"
>
{{
props
.
baseInfo
.
p
etitioner
}}
</div>
</div>
</div>
</
template
>
...
...
src/views/marketAccessRestrictions/marketAccessHome/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessHome/utils/barChart1.js
浏览文件 @
86617244
import
{
symbolCircle
}
from
"d3"
;
import
*
as
echarts
from
"echarts"
;
const
getBarChart
=
(
nameList
,
valueList
)
=>
{
...
...
@@ -15,27 +14,45 @@ const getBarChart = (nameList, valueList) => {
},
yAxis
:
{
type
:
'value'
,
name
:
"项"
,
nameLocation
:
'end'
,
nameGap
:
12
,
nameTextStyle
:
{
color
:
'#666'
,
fontSize
:
14
,
fontWeight
:
400
,
padding
:
[
0
,
0
,
6
,
-
26
]
},
axisLabel
:
{
formatter
:
'{value}'
,
color
:
'#666'
,
fontSize
:
14
,
fontWeight
:
400
},
splitLine
:
{
show
:
false
show
:
true
,
lineStyle
:
{
color
:
'#e7f3ff'
,
type
:
'dashed'
,
}
},
show
:
false
},
xAxis
:
{
type
:
'category'
,
data
:
nameList
.
map
(
item
=>
{
return
item
.
name
}),
splitLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
data
:
nameList
.
map
(
item
=>
item
.
name
),
axisLine
:
{
show
:
false
show
:
true
,
lineStyle
:
{
color
:
'#e7f3ff'
,
},
},
axisLabel
:
{
show
:
true
show
:
true
,
textStyle
:
{
color
:
'rgba(95, 101, 108, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
fontsize
:
14
,
}
}
},
series
:
[{
...
...
@@ -57,8 +74,7 @@ const getBarChart = (nameList, valueList) => {
barWidth
:
20
,
markPoint
:
{
symbol
:
'circle'
,
symbolSize
:
20
,
symbolSize
:
0
,
data
:
(
function
()
{
const
data
=
[];
nameList
.
forEach
((
item
,
index
)
=>
{
...
...
@@ -67,9 +83,7 @@ const getBarChart = (nameList, valueList) => {
xAxis
:
index
,
yAxis
:
valueList
[
index
],
symbol
:
`image://
${
item
.
img
}
`
,
// symbolSize: [20, 20],
symbolSize
:
20
,
// symbolOffset: [0, 20],
symbolCircle
:
20
,
itemStyle
:
{
borderRadius
:
'50%'
,
...
...
src/views/marketAccessRestrictions/marketAccessLayout/case/232/index.vue
浏览文件 @
86617244
...
...
@@ -11,22 +11,24 @@
<el-option
label=
"调查中"
value=
"1"
/>
<el-option
label=
"调查结束"
value=
"0"
/>
</el-select>
<el-select
v-model=
"filterParty"
placeholder=
"全部原告/被告"
class=
"filter-select"
clearable
>
<
!--
<
el-select
v-model=
"filterParty"
placeholder=
"全部原告/被告"
class=
"filter-select"
clearable
>
<el-option
label=
"全部原告/被告"
value=
""
/>
</el-select>
<el-select
v-model=
"filterReason"
placeholder=
"全部原因"
class=
"filter-select"
clearable
>
<el-option
label=
"全部原因"
value=
""
/>
</el-select>
</el-select>
-->
</div>
</div>
<div
class=
"select-box"
>
<div
class=
"paixu-btn"
@
click=
"handleSwithSort"
>
<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=
"isSort"
placeholder=
"发布时间"
style=
"width: 166px"
>
<template
#
prefix
>
<div
style=
"display: flex; align-items: center; height: 100%"
>
<img
src=
"@/assets/icons/jiangxu1.png"
style=
"width: 14px; height: 14px"
/>
</div>
</
template
>
<el-option
label=
"按发布时间降序"
value=
"desc"
/>
<el-option
label=
"按发布时间升序"
value=
"asc"
/>
</el-select>
</div>
</div>
<div
class=
"wrapper-main"
>
...
...
@@ -95,11 +97,7 @@ const searchText = ref("");
const
filterStage
=
ref
(
""
);
const
filterParty
=
ref
(
""
);
const
filterReason
=
ref
(
""
);
const
isSort
=
ref
(
false
);
// false 降序
const
handleSwithSort
=
()
=>
{
isSort
.
value
=
!
isSort
.
value
;
}
;
const
isSort
=
ref
(
'desc'
);
// 降序
// 科技领域过滤
const
surveyAreaList
=
ref
([]);
...
...
@@ -166,20 +164,17 @@ const handleFetchSurveyList = async () => {
publishYear
:
checkedYearList
.
value
.
join
(
','
)
||
null
,
Area
:
checkedAreaList
.
value
.
join
(
','
)
||
null
,
caseStatus
:
filterStage
.
value
,
keywords
:
searchText
.
value
,
keywords
:
searchText
.
value
||
null
,
sortField
:
"date"
,
sortOrder
:
isSort
.
value
?
"asc"
:
"desc"
sortOrder
:
isSort
.
value
};
const
res
=
await
getSurveyList
(
params
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
surveyInfoList
.
value
=
res
.
data
.
content
;
totalDiscussNum
.
value
=
res
.
data
.
totalElements
||
0
;
}
}
catch
(
error
)
{
console
.
error
(
"获取调查列表失败"
,
error
);
}
finally
{
listLoading
.
value
=
false
;
}
}
catch
(
error
)
{}
listLoading
.
value
=
false
;
};
const
handleCurrentChange
=
val
=>
{
...
...
@@ -241,30 +236,6 @@ onMounted(async () => {
}
}
}
.
select
-
box
{
.
paixu
-
btn
{
display
:
flex
;
align
-
items
:
center
;
gap
:
8
px
;
height
:
32
px
;
border
:
1
px
solid
#
e6e7e8
;
border
-
radius
:
4
px
;
background
:
#
fff
;
cursor
:
pointer
;
padding
:
0
12
px
;
.
text
{
font
-
size
:
14
px
;
color
:
#
5
f656c
;
}
.
icon2
{
width
:
10
px
;
img
{
width
:
100
%
;
}
}
}
}
}
.wrapper-main
{
...
...
@@ -335,18 +306,26 @@ onMounted(async () => {
height
:
48px
;
display
:
flex
;
align-items
:
center
;
padding
:
0
20
px
;
.icon
{
width
:
22px
;
height
:
18px
;
margin-left
:
19px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.title
{
height
:
26px
;
margin-left
:
12px
;
color
:
var
(
--
color-main-active
);
font-family
:
Microsoft
YaHei
;
font-style
:
Bold
;
font-size
:
20px
;
font-weight
:
700
;
color
:
var
(
--
color
-
main
-
active
);
line-height
:
26px
;
letter-spacing
:
0px
;
text-align
:
left
;
}
}
...
...
src/views/marketAccessRestrictions/marketAccessLayout/case/301/index.vue
浏览文件 @
86617244
<
template
>
<div
class=
"case-wrapper"
>
<div
class=
"wrapper-header"
>
<div
class=
"search-box"
>
<el-input
v-model=
"searchText"
style=
"width: 360px; height: 32px"
placeholder=
"搜索调查案件"
@
keyup
.
enter=
"handleSearch"
:suffix-icon=
"Search"
></el-input>
<div
class=
"header-filters"
>
<div
class=
"search-box"
>
<el-input
v-model=
"searchText"
style=
"width: 360px; height: 32px"
placeholder=
"搜索调查案件"
@
keyup
.
enter=
"handleSearch"
:suffix-icon=
"Search"
></el-input>
</div>
</div>
<div
class=
"select-box"
>
<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=
"isSort"
placeholder=
"发布时间"
style=
"width: 166px"
>
<template
#
prefix
>
<div
style=
"display: flex; align-items: center; height: 100%"
>
<img
src=
"@/assets/icons/jiangxu1.png"
style=
"width: 14px; height: 14px"
/>
</div>
</
template
>
<el-option
label=
"按发布时间降序"
value=
"desc"
/>
<el-option
label=
"按发布时间升序"
value=
"asc"
/>
</el-select>
</div>
</div>
<div
class=
"wrapper-main"
>
...
...
@@ -54,7 +54,7 @@
</div>
<SurveyHistory
v-loading=
"listLoading"
:surveyList=
"surveyInfoList"
></SurveyHistory>
<div
class=
"right-footer"
>
<div
class=
"footer-left"
>
{{
`共
${totalDiscussNum
}
项
`
}}
<
/div
>
<div
class=
"footer-left"
>
{{ `共
${totalDiscussNum}项调查
` }}
</div>
<div
class=
"footer-right"
>
<el-pagination
@
current-change=
"handleCurrentChange"
:pageSize=
"pageSize"
:current-page=
"currentPage"
background
layout=
"prev, pager, next"
:total=
"totalDiscussNum"
/>
</div>
...
...
@@ -70,10 +70,8 @@ import { Search } from "@element-plus/icons-vue";
import
{
getSearchAllArea
,
getSearchAllYear
,
getSurveyList
}
from
"@/api/marketAccessRestrictions"
;
import
SurveyHistory
from
"@/views/marketAccessRestrictions/com/SurveyHistory.vue"
const
isSort
=
ref
(
true
);
// true 升序 false 倒序
const
handleSwithSort
=
()
=>
{
isSort
.
value
=
!
isSort
.
value
;
}
;
const
searchText
=
ref
(
''
);
// 搜索文本
const
isSort
=
ref
(
'desc'
);
// 降序
// 科技领域过滤
const
surveyAreaList
=
ref
([]);
...
...
@@ -139,20 +137,17 @@ const handleFetchSurveyList = async () => {
sortCode
:
"301"
,
publishYear
:
checkedYearList
.
value
.
join
(
','
)
||
null
,
Area
:
checkedAreaList
.
value
.
join
(
','
)
||
null
,
// keywords: searchText.value
,
keywords
:
searchText
.
value
||
null
,
sortField
:
"date"
,
sortOrder
:
isSort
.
value
?
"asc"
:
"desc"
sortOrder
:
isSort
.
value
};
const
res
=
await
getSurveyList
(
params
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
surveyInfoList
.
value
=
res
.
data
.
content
;
totalDiscussNum
.
value
=
res
.
data
.
totalElements
||
0
;
}
}
catch
(
error
)
{
console
.
error
(
"获取调查列表失败"
,
error
);
}
finally
{
listLoading
.
value
=
false
;
}
}
catch
(
error
)
{}
listLoading
.
value
=
false
;
};
const
handleCurrentChange
=
(
val
)
=>
{
...
...
@@ -190,56 +185,24 @@ onMounted(async () => {
display
:
flex
;
margin-bottom
:
16px
;
justify-content
:
space-between
;
.
search
-
box
{
background
-
color
:
#
fff
;
border
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
radius
:
4
px
;
}
.
select
-
box
{
height
:
32
px
;
box
-
sizing
:
border
-
box
;
.
paixu
-
btn
{
display
:
flex
;
width
:
120
px
;
height
:
32
px
;
box
-
sizing
:
border
-
box
;
border
:
1
px
solid
rgba
(
230
,
231
,
232
,
1
);
.header-filters
{
display
:
flex
;
gap
:
16px
;
align-items
:
center
;
.search-box
{
background-color
:
#fff
;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
4px
;
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
%
;
}
.dropdown-filters
{
display
:
flex
;
gap
:
12px
;
.filter-select
{
width
:
140px
;
:deep
(
.el-input__wrapper
)
{
background-color
:
#fff
;
}
}
}
...
...
@@ -324,7 +287,7 @@ onMounted(async () => {
}
.title
{
height
:
26px
;
margin
-
left
:
1
9
px
;
margin-left
:
1
2
px
;
color
:
var
(
--
color-main-active
);
font-family
:
Microsoft
YaHei
;
font-style
:
Bold
;
...
...
src/views/marketAccessRestrictions/marketAccessLayout/case/337/index.vue
浏览文件 @
86617244
...
...
@@ -11,12 +11,12 @@
<el-option
label=
"调查中"
value=
"1"
/>
<el-option
label=
"调查结束"
value=
"0"
/>
</el-select>
<el-select
v-model=
"filterParty"
placeholder=
"全部原告/被告"
class=
"filter-select"
clearable
>
<
!--
<
el-select
v-model=
"filterParty"
placeholder=
"全部原告/被告"
class=
"filter-select"
clearable
>
<el-option
label=
"全部原告/被告"
value=
""
/>
</el-select>
<el-select
v-model=
"filterReason"
placeholder=
"全部原因"
class=
"filter-select"
clearable
>
<el-option
label=
"全部原因"
value=
""
/>
</el-select>
</el-select>
-->
</div>
</div>
<div
class=
"select-box"
>
...
...
@@ -26,7 +26,8 @@
<img
src=
"@/assets/icons/jiangxu1.png"
style=
"width: 14px; height: 14px"
/>
</div>
</
template
>
<el-option
v-for=
"item in releaseTimeList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
<el-option
label=
"按发布时间降序"
value=
"desc"
/>
<el-option
label=
"按发布时间升序"
value=
"asc"
/>
</el-select>
</div>
</div>
...
...
@@ -99,19 +100,7 @@ const searchText = ref("");
const
filterStage
=
ref
(
""
);
const
filterParty
=
ref
(
""
);
const
filterReason
=
ref
(
""
);
const
isSort
=
ref
(
false
);
// false 降序
const
releaseTimeList
=
ref
([
{
label
:
"按发布时间倒序"
,
value
:
false
},
{
label
:
"按发布时间升序"
,
value
:
true
}
]);
const
isSort
=
ref
(
'desc'
);
// 降序
// 科技领域过滤
const
surveyAreaList
=
ref
([]);
...
...
@@ -203,18 +192,15 @@ const handleFetchSurveyList = async () => {
caseStatus
:
filterStage
.
value
||
null
,
keywords
:
searchText
.
value
||
null
,
sortField
:
"date"
,
sortOrder
:
isSort
.
value
?
"asc"
:
"desc"
sortOrder
:
isSort
.
value
};
const
res
=
await
getSurveyList
(
params
);
if
(
res
.
code
===
200
)
{
surveyInfoList
.
value
=
res
.
data
?.
content
||
[];
totalDiscussNum
.
value
=
res
.
data
?.
totalElements
||
0
;
}
}
catch
(
error
)
{
console
.
error
(
"获取调查列表失败"
,
error
);
}
finally
{
listLoading
.
value
=
false
;
}
}
catch
(
error
)
{}
listLoading
.
value
=
false
;
};
const
handleCurrentChange
=
val
=>
{
...
...
@@ -278,33 +264,6 @@ onMounted(async () => {
}
}
}
.select-box
{
.paixu-btn
{
display
:
flex
;
align-items
:
center
;
gap
:
8px
;
height
:
32px
;
border
:
1px
solid
#e6e7e8
;
border-radius
:
4px
;
background
:
#fff
;
cursor
:
pointer
;
padding
:
0
12px
;
.text
{
font-size
:
14px
;
color
:
#5f656c
;
}
.icon2
{
width
:
10px
;
img
{
width
:
100%
;
}
}
}
}
}
.wrapper-main
{
...
...
src/views/marketAccessRestrictions/marketAccessLayout/index.vue
浏览文件 @
86617244
...
...
@@ -19,8 +19,7 @@
<div
class=
"page-tabs"
>
<div
:class=
"['tab-item',
{'tab-active': activeName==item.name}]" v-for="(item, index) in tabList" :key="index" @click="handleClickBtn(item)">
<div
class=
"icon"
>
<img
:src=
"item.activeIcon"
alt=
""
v-if=
"activeName==item.name"
/>
<img
:src=
"item.icon"
alt=
""
v-else
/>
<img
:src=
"activeName==item.name ? item.activeIcon : item.icon"
alt=
""
/>
</div>
<div
class=
"text"
:class=
"
{ textActive: activeName==item.name }">
{{
item
.
name
}}
...
...
src/views/marketAccessRestrictions/marketAccessLayout/overview/232/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/overview/301/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/overview/301/utils/barChart.js
浏览文件 @
86617244
...
...
@@ -3,48 +3,56 @@ import * as echarts from "echarts";
const
getBarChart
=
(
nameList
,
valueList
)
=>
{
const
option
=
{
tooltip
:
{},
title
:
{
text
:
'单位:万人'
,
left
:
660
,
top
:
10
,
textStyle
:
{
color
:
'rgba(95, 101, 108, 1)'
,
fontSize
:
14
,
fontFamily
:
'Microsoft YaHei'
,
fontstyle
:
'Regular'
,
fontWeight
:
'normal'
}
},
grid
:
{
top
:
'5%'
,
right
:
'3%'
,
bottom
:
'1%'
,
width
:
'100%'
,
height
:
'83%'
,
top
:
'15%'
,
right
:
'5%'
,
bottom
:
'2%'
,
left
:
'1%'
,
containLabel
:
true
},
yAxis
:
{
type
:
'value'
,
name
:
"项"
,
nameLocation
:
'end'
,
nameGap
:
12
,
nameTextStyle
:
{
color
:
'#666'
,
fontSize
:
14
,
fontWeight
:
400
,
padding
:
[
0
,
0
,
6
,
-
26
]
},
axisLabel
:
{
formatter
:
'{value}'
,
color
:
'#666'
,
fontSize
:
14
,
fontWeight
:
400
},
splitLine
:
{
show
:
false
show
:
true
,
lineStyle
:
{
color
:
'#e7f3ff'
,
type
:
'dashed'
,
}
},
show
:
false
},
xAxis
:
{
type
:
'category'
,
data
:
nameList
.
map
(
item
=>
{
return
item
.
name
}),
splitLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
data
:
nameList
.
map
(
item
=>
item
.
name
),
axisLine
:
{
show
:
false
show
:
true
,
lineStyle
:
{
color
:
'#e7f3ff'
,
},
},
axisLabel
:
{
show
:
true
show
:
true
,
textStyle
:
{
color
:
'rgba(95, 101, 108, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
fontsize
:
14
,
}
}
},
series
:
[{
...
...
@@ -71,8 +79,7 @@ const getBarChart = (nameList, valueList) => {
const
data
=
[];
nameList
.
forEach
((
item
,
index
)
=>
{
data
.
push
({
name
:
'icon'
,
// value: '',
name
:
`icon
${
index
}
`
,
xAxis
:
index
,
yAxis
:
valueList
[
index
],
symbol
:
`image://
${
item
.
img
}
`
,
...
...
src/views/marketAccessRestrictions/marketAccessLayout/overview/337/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/marketAccessLayout/overview/337/utils/barChart.js
浏览文件 @
86617244
...
...
@@ -43,7 +43,7 @@ const getBarChart = (nameList, valueList) => {
data
:
valueList
,
label
:
{
show
:
true
,
position
:
[
4
80
,
0
],
position
:
[
4
34
,
0
],
formatter
:
function
(
params
)
{
return
params
.
value
+
' 次'
},
...
...
src/views/marketAccessRestrictions/pages/reportOriginal.vue
0 → 100644
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/deepdig/232/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/deepdig/337/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/232/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/301/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/singleCaseLayout/overview/337/index.vue
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/
marketAccessHome/utils/multi
LineChart.js
→
src/views/marketAccessRestrictions/
utils/base
LineChart.js
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/
marketAccessHome/utils/p
iechart.js
→
src/views/marketAccessRestrictions/
utils/baseP
iechart.js
浏览文件 @
86617244
差异被折叠。
点击展开。
src/views/marketAccessRestrictions/utils/index.ts
0 → 100644
浏览文件 @
86617244
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论