Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
52826e66
提交
52826e66
authored
12月 19, 2025
作者:
yanpeng
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into yp-dev
上级
466aabb3
65953eed
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
38 个修改的文件
包含
938 行增加
和
526 行删除
+938
-526
introduction.js
src/api/decree/introduction.js
+13
-0
deepdig.js
src/api/deepdig.js
+36
-2
influence.js
src/api/influence.js
+14
-0
overview.js
src/api/thinkTank/overview.js
+197
-4
default-icon1.png
src/assets/icons/default-icon1.png
+0
-0
default-icon2.png
src/assets/icons/default-icon2.png
+0
-0
index.vue
src/views/bill/billHome/index.vue
+2
-0
index.vue
src/views/bill/billLayout/index.vue
+1
-1
index.vue
src/views/bill/deepDig/poliContribution/index.vue
+0
-0
piechart.js
src/views/bill/deepDig/poliContribution/utils/piechart.js
+8
-3
sankey.js
src/views/bill/deepDig/poliContribution/utils/sankey.js
+18
-67
index.vue
src/views/bill/deepDig/processAnalysis/index.vue
+99
-28
index.vue
src/views/bill/influence/industry/index.vue
+0
-0
barChart.js
src/views/bill/influence/industry/utils/barChart.js
+73
-50
barChart1.js
src/views/bill/influence/industry/utils/barChart1.js
+1
-1
graphChart.js
src/views/bill/influence/industry/utils/graphChart.js
+1
-1
index.vue
src/views/bill/introdoction/index.vue
+6
-1
index.vue
src/views/decree/decreeHome/index.vue
+0
-0
barChart.js
src/views/decree/decreeHome/utils/barChart.js
+14
-4
piechart.js
src/views/decree/decreeHome/utils/piechart.js
+46
-39
index.vue
src/views/decree/decreeLayout/deepdig/index.vue
+35
-35
index.vue
src/views/decree/decreeLayout/index.vue
+36
-11
index.vue
src/views/decree/decreeLayout/influence/index.vue
+94
-110
barChart.js
src/views/decree/decreeLayout/influence/utils/barChart.js
+6
-1
index.vue
src/views/decree/decreeLayout/overview/background/index.vue
+27
-67
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+38
-45
Timeline.vue
src/views/overView/component/Timeline.vue
+6
-4
index.vue
src/views/overView/index.vue
+24
-22
index.vue
src/views/thinkTank/ReportDetail/index.vue
+37
-12
index.vue
src/views/thinkTank/ReportDetail/policyTracking/index.vue
+106
-18
index.vue
src/views/thinkTank/ReportDetail/reportAnalysis/index.vue
+0
-0
index.vue
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
+0
-0
index.vue
src/views/thinkTank/ThinkTankDetail/index.vue
+0
-0
index.vue
src/views/thinkTank/ThinkTankDetail/thinkDynamics/index.vue
+0
-0
index.vue
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
+0
-0
right-left-icon1.png
src/views/thinkTank/assets/images/right-left-icon1.png
+0
-0
right-left-icon2.png
src/views/thinkTank/assets/images/right-left-icon2.png
+0
-0
index.vue
src/views/thinkTank/index.vue
+0
-0
没有找到文件。
src/api/decree/introduction.js
浏览文件 @
52826e66
...
@@ -34,4 +34,16 @@ export function getDecreeOrganization(params) {
...
@@ -34,4 +34,16 @@ export function getDecreeOrganization(params) {
url
:
`/api/administrativeOrderInfo/organization/
${
params
.
id
}
`
,
url
:
`/api/administrativeOrderInfo/organization/
${
params
.
id
}
`
,
params
params
})
})
}
// 获取全局信息
/**
* @param {id}
*/
export
function
getDecreeSummary
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/administrativeOrderInfo/summary/
${
params
.
id
}
`
,
params
})
}
}
\ No newline at end of file
src/api/deepdig.js
浏览文件 @
52826e66
...
@@ -94,4 +94,39 @@ export function getProcessSummary(params) {
...
@@ -94,4 +94,39 @@ export function getProcessSummary(params) {
url
:
`/api/billDeepDive/processSummary/
${
params
.
id
}
`
,
url
:
`/api/billDeepDive/processSummary/
${
params
.
id
}
`
,
params
,
params
,
})
})
}
}
\ No newline at end of file
// 获取党派政治献金
/**
* @param {id, personCongress}
*/
export
function
getBillPoliContribution
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/billDeepDive/processAnalyze/totalxj/
${
params
.
id
}
`
,
params
})
}
// 获取主要议员政治献金
/**
* @param {id, personCongress}
*/
export
function
getBillMainPoliContribution
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/billDeepDive/processAnalyze/xj/
${
params
.
id
}
`
,
params
})
}
// 根据法案ID获取人员政治献金来源及行业领域分布
/**
* @param {id, personId}
*/
export
function
getBillPersonPoliContribution
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/billDeepDive/processAnalyze/xj/
${
params
.
id
}
/
${
params
.
personId
}
`
})
}
src/api/influence.js
浏览文件 @
52826e66
...
@@ -30,4 +30,17 @@ export function getHylyList() {
...
@@ -30,4 +30,17 @@ export function getHylyList() {
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/billImpactAnalysis/industry/hylyList`
,
url
:
`/api/billImpactAnalysis/industry/hylyList`
,
})
})
}
// 获取公司详情
/**
* @param {billId,companyId,id}
*/
export
function
getCompanyDetail
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/billImpactAnalysis/industry/companyDetail/
${
params
.
billId
}
/
${
params
.
id
}
/
${
params
.
companyId
}
`
,
params
,
})
}
}
\ No newline at end of file
src/api/thinkTank/overview.js
浏览文件 @
52826e66
...
@@ -10,6 +10,15 @@ export function getThinkTankList() {
...
@@ -10,6 +10,15 @@ export function getThinkTankList() {
})
})
}
}
//智库概览:获取智库发布
export
function
getNewReport
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankOverview/newReport`
,
})
}
// 风险信号
// 风险信号
export
function
getThinkTankRiskSignal
()
{
export
function
getThinkTankRiskSignal
()
{
return
request
({
return
request
({
...
@@ -20,10 +29,10 @@ export function getThinkTankRiskSignal() {
...
@@ -20,10 +29,10 @@ export function getThinkTankRiskSignal() {
}
}
// 政策建议趋势分布
// 政策建议趋势分布
export
function
getThinkTankPolicyIndustryChange
()
{
export
function
getThinkTankPolicyIndustryChange
(
params
)
{
return
request
({
return
request
({
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/thinkTankOverview/policyIndustryChange`
,
url
:
`/api/thinkTankOverview/policyIndustryChange
/
${
params
}
`
,
})
})
}
}
...
@@ -44,4 +53,189 @@ export function getThinkTankDonation() {
...
@@ -44,4 +53,189 @@ export function getThinkTankDonation() {
url
:
`/api/thinkTankOverview/donation`
,
url
:
`/api/thinkTankOverview/donation`
,
})
})
}
}
\ No newline at end of file
//智库概览:获取智库研究热点
export
function
getThinkTankHot
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankOverview/research/hot/
${
params
}
`
,
})
}
// 行业领域字典列表
export
function
getHylyList
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/billImpactAnalysis/industry/hylyList`
,
})
}
//获取智库报告
export
function
getThinkTankReport
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankOverview/report`
,
params
:
params
})
}
/********* 智库信息 */
//智库百科:获取全局信息
export
function
getThinkTankSummary
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/summary/
${
params
.
id
}
`
,
})
}
//智库报告:获取智库报告类型
export
function
getThinkDynamicsReportType
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/reportType`
,
})
}
//智库动态:获取智库报告
export
function
getThinkDynamicsReport
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/report/
${
params
.
id
}
/
${
params
.
startDate
}
`
,
params
:
params
.
parmas
})
}
//提出建议领域分布
export
function
getThinkPolicyIndustry
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/policyIndustry/
${
params
.
id
}
/
${
params
.
year
}
`
,
})
}
//获取相关政策领域分布
export
function
getThinkPolicyIndustryTotal
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/policyIndustryTotal/
${
params
.
id
}
/
${
params
.
year
}
`
,
})
}
//获取热门研究方向变化趋势
export
function
getThinkPolicyIndustryChange
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/policyIndustryChange/
${
params
.
id
}
/
${
params
.
year
}
`
,
})
}
//获取智库政策
export
function
getThinkPolicy
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/policy/
${
params
.
id
}
/
${
params
.
startDate
}
`
,
params
})
}
//智库百科基本信息
export
function
getThinkTankInfoBasic
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/basic/
${
params
}
`
,
})
}
//获取全球分支机构
export
function
getThinkTankInfoBranch
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/branch/
${
params
}
`
,
})
}
//获取经费来源统计
export
function
getThinkTankFundsTotal
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/fundsTotal/
${
params
}
`
,
})
}
//获取经费来源
export
function
getThinkTankFundsSource
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/fundsSource/
${
params
}
`
,
})
}
//获取研究领域演变
export
function
getThinkTankResearchAreae
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/researchArea/
${
params
}
`
,
})
}
//获取核心研究人员
export
function
getThinkTankPerson
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankInfo/person/
${
params
}
`
,
})
}
//获取报告内容摘要
export
function
getThinkTankReportAbstract
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankReport/abstract/
${
params
}
`
,
})
}
//获取报告主要观点
export
function
getThinkTankReportContent
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankReport/content/
${
params
}
`
,
})
}
//获取涉及科技领域
export
function
getThinkTankReportIndustry
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankReport/industry/
${
'Rand_RRA3572-1'
}
`
,
})
}
//获取科技领域词云
export
function
getThinkTankReportIndustryCloud
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankReport/industry/
${
params
.
id
}
/
${
params
.
industryId
}
`
,
})
}
//获取政策建议落实情况
export
function
getThinkTankReportPolicy
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankReport/policy/
${
params
}
`
,
})
}
//获取相关政策动态
export
function
getThinkTankReportPolicyAction
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/thinkTankReport/policyAction/
${
params
}
`
,
})
}
src/assets/icons/default-icon1.png
0 → 100644
浏览文件 @
52826e66
6.5 KB
src/assets/icons/default-icon2.png
0 → 100644
浏览文件 @
52826e66
8.2 KB
src/views/bill/billHome/index.vue
浏览文件 @
52826e66
...
@@ -2523,6 +2523,7 @@ onUnmounted(() => {});
...
@@ -2523,6 +2523,7 @@ onUnmounted(() => {});
font
-
size
:
14
px
;
font
-
size
:
14
px
;
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
22
px
;
line
-
height
:
22
px
;
overflow
:
hidden
;
}
}
}
}
.
right
-
footer
{
.
right
-
footer
{
...
@@ -2606,6 +2607,7 @@ onUnmounted(() => {});
...
@@ -2606,6 +2607,7 @@ onUnmounted(() => {});
img
{
img
{
width
:
100
%
;
width
:
100
%
;
height
:
100
%
;
height
:
100
%
;
border
-
radius
:
50
%
;
}
}
}
}
.
right
{
.
right
{
...
...
src/views/bill/billLayout/index.vue
浏览文件 @
52826e66
...
@@ -212,7 +212,7 @@ onMounted(() => {
...
@@ -212,7 +212,7 @@ onMounted(() => {
height
:
1016px
;
height
:
1016px
;
background
:
rgba
(
249
,
250
,
252
,
1
);
background
:
rgba
(
249
,
250
,
252
,
1
);
position
:
relative
;
position
:
relative
;
margin
:
0
auto
;
//
margin: 0 auto;
.layout-header
{
.layout-header
{
width
:
1920px
;
width
:
1920px
;
height
:
64px
;
height
:
64px
;
...
...
src/views/bill/deepDig/poliContribution/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/bill/deepDig/poliContribution/utils/piechart.js
浏览文件 @
52826e66
...
@@ -14,14 +14,19 @@ const getPieChart = (data,colorList) => {
...
@@ -14,14 +14,19 @@ const getPieChart = (data,colorList) => {
},
},
label
:
{
label
:
{
alignTo
:
'edge'
,
alignTo
:
'edge'
,
formatter
:
'{name|{b}}
\
n{time|{
c} 条 {
d}%}'
,
formatter
:
'{name|{b}}
\
n{time|{d}%}'
,
minMargin
:
5
,
minMargin
:
5
,
edgeDistance
:
10
,
edgeDistance
:
10
,
lineHeight
:
15
,
lineHeight
:
15
,
rich
:
{
rich
:
{
time
:
{
time
:
{
fontSize
:
10
,
fontSize
:
12
,
color
:
'#999'
color
:
'#666'
},
name
:
{
fontSize
:
14
,
color
:
'#333'
,
fontWeight
:
'bold'
}
}
}
}
},
},
...
...
src/views/bill/deepDig/poliContribution/utils/sankey.js
浏览文件 @
52826e66
const
getSankeyChart
=
()
=>
{
const
getSankeyChart
=
(
data
=
[],
links
=
[]
)
=>
{
const
option
=
{
const
option
=
{
tooltip
:
{
trigger
:
'item'
,
triggerOn
:
'mousemove'
},
series
:
{
series
:
{
type
:
'sankey'
,
type
:
'sankey'
,
layout
:
'none'
,
layout
:
'none'
,
left
:
'
5
%'
,
left
:
'
1
%'
,
right
:
'
5
%'
,
right
:
'
1
%'
,
top
:
'5%'
,
top
:
'5%'
,
bottom
:
'5%'
,
bottom
:
'5%'
,
emphasis
:
{
emphasis
:
{
focus
:
'adjacency'
focus
:
'adjacency'
},
},
nodeWidth
:
50
,
nodeWidth
:
50
,
nodeGap
:
2
,
layoutIterations
:
32
,
lineStyle
:
{
color
:
'source'
,
curveness
:
0.5
},
label
:
{
label
:
{
show
:
true
,
show
:
true
,
formatter
:
function
(
params
)
{
formatter
:
function
(
params
)
{
return
`
${
params
.
name
}
$
${
params
.
value
}
`
;
return
`
${
params
.
name
}
$
${
params
.
value
.
toLocaleString
()
}
`
;
},
},
position
:
'right'
,
position
:
'right'
,
textStyle
:
{
fontSize
:
16
,
fontSize
:
'16px'
,
color
:
'#555'
color
:
'#555'
}
},
},
data
:
[
data
:
data
,
{
links
:
links
name
:
'马尔科·卢比奥'
,
label
:
{
position
:
'left'
}
},
{
name
:
'成长俱乐部'
},
{
name
:
'埃利奥特管理公司'
},
{
name
:
'高盛集团'
},
{
name
:
'黑石集团'
},
{
name
:
'佛罗里达水晶'
},
{
name
:
'美国银行'
}
],
links
:
[
{
source
:
'成长俱乐部'
,
target
:
'马尔科·卢比奥'
,
value
:
680751
},
{
source
:
'埃利奥特管理公司'
,
target
:
'马尔科·卢比奥'
,
value
:
440120
},
{
source
:
'高盛集团'
,
target
:
'马尔科·卢比奥'
,
value
:
371517
},
{
source
:
'黑石集团'
,
target
:
'马尔科·卢比奥'
,
value
:
259321
},
{
source
:
'佛罗里达水晶'
,
target
:
'马尔科·卢比奥'
,
value
:
203775
},
{
source
:
'美国银行'
,
target
:
'马尔科·卢比奥'
,
value
:
150892
}
]
}
}
};
};
...
...
src/views/bill/deepDig/processAnalysis/index.vue
浏览文件 @
52826e66
...
@@ -95,58 +95,117 @@
...
@@ -95,58 +95,117 @@
<div
class=
"box3-main-center-header-box6"
>
关键议员
</div>
<div
class=
"box3-main-center-header-box6"
>
关键议员
</div>
</div>
</div>
<div
class=
"box3-main-center-content"
>
<div
class=
"box3-main-center-content"
>
<div
class=
"box3-main-center-content-box"
>
<div
class=
"box3-main-center-content-box"
v-for=
"item in voteAnalysisList"
:key=
"item.actionId"
>
<div
class=
"item"
v-for=
"(item, index) in voteAnalysisList1"
:key=
"index"
>
<div
class=
"item"
>
<div
class=
"item-box1"
>
<div
class=
"item-box1"
>
<div
class=
"box1-left"
>
<div
class=
"box1-left"
>
<div
class=
"icon"
v-if=
"item.nameIcon"
>
<div
style=
"width: 100%; display: flex; flex-direction: column; align-items: flex-end;"
>
<img
:src=
"item.nameIcon"
alt=
""
/>
<div
class=
"name nameBlod"
:title=
"item.actionTitle"
style=
"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;"
>
</div>
{{
item
.
actionTitle
}}
<div
style=
"height: 80px;"
>
<div
class=
"name"
:class=
"
{ nameBlod: item.nameBold }">
{{
item
.
name
}}
</div>
</div>
<div
class=
"time"
>
<div
class=
"time"
>
{{
item
.
time
}}
{{
formatDate
(
item
.
actionDate
)
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box1-right"
>
<div
class=
"box1-right"
>
<div
class=
"box1-right-top"
>
<div
class=
"box1-right-top"
>
<el-progress
:percentage=
"
item.supportRate"
:show-text=
"false
"
>
</el-progress>
<el-progress
:percentage=
"
Number(item.agreePercent)"
:show-text=
"false"
color=
"#1677FF
"
>
</el-progress>
</div>
</div>
<div
class=
"box1-right-bottom"
>
<div
class=
"box1-right-bottom"
>
<el-progress
:percentage=
"
item.againistRate"
:show-text=
"false
"
>
</el-progress>
<el-progress
:percentage=
"
Number(item.againstPercent)"
:show-text=
"false"
color=
"#FF9054
"
>
</el-progress>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"item-box2"
>
<div
class=
"item-box2"
>
<div
class=
"box2-1"
>
{{
item
.
suppor
t
+
"票"
}}
</div>
<div
class=
"box2-1"
style=
"color: #1677FF"
>
{{
item
.
agreeCoun
t
+
"票"
}}
</div>
<div
class=
"box2-2"
>
{{
item
.
againis
t
+
"票"
}}
</div>
<div
class=
"box2-2"
style=
"color: #FF9054"
>
{{
item
.
againstCoun
t
+
"票"
}}
</div>
</div>
</div>
<div
class=
"item-box3"
>
<div
class=
"item-box3"
>
<div
class=
"box3-1"
>
{{
item
.
supportRank
}}
</div>
<div
class=
"box3-1"
></div>
<div
class=
"box3-2"
>
{{
item
.
againistRank
}}
</div>
<div
class=
"box3-2"
></div>
</div>
</div>
<div
class=
"item-box4"
>
<div
class=
"item-box4"
>
<div
class=
"box4-1"
>
{{
item
.
supportRate
+
"%"
}}
</div>
<div
class=
"box4-1"
style=
"color: #1677FF"
>
{{
item
.
agreePercent
+
"%"
}}
</div>
<div
class=
"box4-2"
>
{{
item
.
againistRate
+
"%"
}}
</div>
<div
class=
"box4-2"
style=
"color: #FF9054"
>
{{
item
.
againstPercent
+
"%"
}}
</div>
</div>
<div
class=
"item-box5"
></div>
<div
class=
"item-box6"
>
<el-icon
size=
"20"
color=
"#555"
><ArrowDownBold
/></el-icon>
</div>
</div>
<div
class=
"item"
>
<div
class=
"item-box1"
>
<div
class=
"box1-left"
>
<div
class=
"icon"
>
<img
:src=
"MZD"
alt=
""
/>
</div>
<div
class=
"name"
>
民主党
</div>
</div>
<div
class=
"box1-right"
>
<div
class=
"box1-right-top"
>
<el-progress
:percentage=
"Number(item.dagreePercent)"
:show-text=
"false"
color=
"#85b4ff"
>
</el-progress>
</div>
<div
class=
"box1-right-bottom"
>
<el-progress
:percentage=
"Number(item.dagainstPercent)"
:show-text=
"false"
color=
"#FF9054"
>
</el-progress>
</div>
</div>
</div>
<div
class=
"item-box2"
>
<div
class=
"box2-1"
style=
"color: #1677FF"
>
{{
item
.
dagreeCount
+
"票"
}}
</div>
<div
class=
"box2-2"
style=
"color: #FF9054"
>
{{
item
.
dagainstCount
+
"票"
}}
</div>
</div>
<div
class=
"item-box3"
></div>
<div
class=
"item-box4"
>
<div
class=
"box4-1"
style=
"color: #1677FF"
>
{{
item
.
dagreePercent
+
"%"
}}
</div>
<div
class=
"box4-2"
style=
"color: #FF9054"
>
{{
item
.
dagainstPercent
+
"%"
}}
</div>
</div>
</div>
<div
class=
"item-box5"
>
<div
class=
"item-box5"
>
<div
class=
"box5-1"
v-if=
"item.people"
>
{{
item
.
people
+
' 人'
}}
</div>
<div
class=
"box5-1"
style=
"color: #CE4F51"
>
{{
item
.
dreverseCount
+
"人"
}}
</div>
<div
class=
"box5-2"
v-if=
"item.peopleRank"
>
{{
`( ${item.peopleRank
}
)`
}}
<
/div
>
</div>
</div>
<div
class=
"item-box6"
>
<div
class=
"item-box6"
>
<
div
class
=
"img-box"
v
-
if
=
"item.
keyUser
"
>
<div
class=
"img-box"
v-if=
"item.
dpersonImageUrl
"
>
<
img
:
src
=
"item.
keyUser
"
alt
=
""
/>
<img
:src=
"item.
dpersonImageUrl
"
alt=
""
/>
</div>
</div>
<
div
v
-
else
>
</div>
<
el
-
icon
size
=
"20"
color
=
"#555"
><
ArrowDownBold
/><
/el-icon
>
</div>
<div
class=
"item"
>
<div
class=
"item-box1"
>
<div
class=
"box1-left"
>
<div
class=
"icon"
>
<img
:src=
"GHD"
alt=
""
/>
</div>
<div
class=
"name"
>
共和党
</div>
</div>
<div
class=
"box1-right"
>
<div
class=
"box1-right-top"
>
<el-progress
:percentage=
"Number(item.ragreePercent)"
:show-text=
"false"
color=
"#1677FF"
>
</el-progress>
</div>
<div
class=
"box1-right-bottom"
>
<el-progress
:percentage=
"Number(item.ragainstPercent)"
:show-text=
"false"
color=
"#ffdcc8"
>
</el-progress>
</div>
</div>
</div>
<div
class=
"item-box2"
>
<div
class=
"box2-1"
style=
"color: #1677FF"
>
{{
item
.
ragreeCount
+
"票"
}}
</div>
<div
class=
"box2-2"
style=
"color: #FF9054"
>
{{
item
.
ragainstCount
+
"票"
}}
</div>
</div>
<div
class=
"item-box3"
></div>
<div
class=
"item-box4"
>
<div
class=
"box4-1"
style=
"color: #1677FF"
>
{{
item
.
ragreePercent
+
"%"
}}
</div>
<div
class=
"box4-2"
style=
"color: #FF9054"
>
{{
item
.
ragainstPercent
+
"%"
}}
</div>
</div>
<div
class=
"item-box5"
>
<div
class=
"box5-1"
style=
"color: #CE4F51"
>
{{
item
.
rreverseCount
+
"人"
}}
</div>
</div>
<div
class=
"item-box6"
>
<div
class=
"img-box"
v-if=
"item.rpersonImageUrl"
>
<img
:src=
"item.rpersonImageUrl"
alt=
""
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<
div
class
=
"box3-main-center-content-box"
>
<
!--
<
div
class=
"box3-main-center-content-box"
>
<div
class=
"item"
v-for=
"(item, index) in voteAnalysisList2"
:key=
"index"
>
<div
class=
"item"
v-for=
"(item, index) in voteAnalysisList2"
:key=
"index"
>
<div
class=
"item-box1"
>
<div
class=
"item-box1"
>
<div
class=
"box1-left"
>
<div
class=
"box1-left"
>
...
@@ -196,8 +255,8 @@
...
@@ -196,8 +255,8 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div>
--
>
<
div
class
=
"box3-main-center-content-box"
>
<
!--
<
div
class
=
"box3-main-center-content-box"
>
<
div
class
=
"item"
v
-
for
=
"(item, index) in voteAnalysisList3"
:
key
=
"index"
>
<
div
class
=
"item"
v
-
for
=
"(item, index) in voteAnalysisList3"
:
key
=
"index"
>
<
div
class
=
"item-box1"
>
<
div
class
=
"item-box1"
>
<
div
class
=
"box1-left"
>
<
div
class
=
"box1-left"
>
...
@@ -298,7 +357,7 @@
...
@@ -298,7 +357,7 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div>
--
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box3-main-footer"
>
<
div
class
=
"box3-main-footer"
>
...
@@ -597,6 +656,15 @@ const handleGetBillAmeAnalyzeCount = async () => {
...
@@ -597,6 +656,15 @@ const handleGetBillAmeAnalyzeCount = async () => {
}
;
}
;
// 获取投票分析
// 获取投票分析
const
voteAnalysisList
=
ref
([]);
const
formatDate
=
(
dateStr
)
=>
{
if
(
!
dateStr
)
return
""
;
const
date
=
new
Date
(
dateStr
);
const
y
=
date
.
getFullYear
();
const
m
=
date
.
getMonth
()
+
1
;
const
d
=
date
.
getDate
();
return
`${y
}
年${m
}
月${d
}
日`
;
}
;
const
handleGetBillVoteAnalyze
=
async
()
=>
{
const
handleGetBillVoteAnalyze
=
async
()
=>
{
const
params
=
{
const
params
=
{
id
:
window
.
sessionStorage
.
getItem
(
"billId"
)
id
:
window
.
sessionStorage
.
getItem
(
"billId"
)
...
@@ -604,6 +672,7 @@ const handleGetBillVoteAnalyze = async () => {
...
@@ -604,6 +672,7 @@ const handleGetBillVoteAnalyze = async () => {
try
{
try
{
const
res
=
await
getBillTp
(
params
);
const
res
=
await
getBillTp
(
params
);
console
.
log
(
"投票分析"
,
res
);
console
.
log
(
"投票分析"
,
res
);
voteAnalysisList
.
value
=
res
.
data
;
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"投票分析 error"
,
error
);
console
.
error
(
"投票分析 error"
,
error
);
}
}
...
@@ -1152,8 +1221,10 @@ onMounted(async () => {
...
@@ -1152,8 +1221,10 @@ onMounted(async () => {
}
}
}
}
.
box3
-
main
-
center
-
content
{
.
box3
-
main
-
center
-
content
{
height
:
682
px
;
overflow
:
auto
;
.
box3
-
main
-
center
-
content
-
box
{
.
box3
-
main
-
center
-
content
-
box
{
width
:
8
30
px
;
width
:
8
05
px
;
height
:
160
px
;
height
:
160
px
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
border
:
1
px
solid
rgba
(
243
,
243
,
244
,
1
);
border
:
1
px
solid
rgba
(
243
,
243
,
244
,
1
);
...
...
src/views/bill/influence/industry/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/bill/influence/industry/utils/barChart.js
浏览文件 @
52826e66
...
@@ -3,24 +3,65 @@ import * as echarts from "echarts";
...
@@ -3,24 +3,65 @@ import * as echarts from "echarts";
const
getBarChart
=
(
nameList
,
valueList
)
=>
{
const
getBarChart
=
(
nameList
,
valueList
)
=>
{
const
colorList
=
[
'#b37feb'
,
'#ffc53e'
,
'#36cfc9'
,
'#5c80f7'
,
'#ff7d7a'
,
'#4a9cff'
]
const
colorList
=
[
'#b37feb'
,
'#ffc53e'
,
'#36cfc9'
,
'#5c80f7'
,
'#ff7d7a'
,
'#4a9cff'
]
const
option
=
{
const
option
=
{
tooltip
:
{},
tooltip
:
{
trigger
:
'axis'
,
axisPointer
:
{
type
:
'shadow'
}
},
grid
:
{
grid
:
{
top
:
'
3
%'
,
top
:
'
5
%'
,
right
:
'
7
%'
,
right
:
'
15
%'
,
bottom
:
'
1
%'
,
bottom
:
'
5
%'
,
left
:
'
1
%'
,
left
:
'
3
%'
,
containLabel
:
true
containLabel
:
true
},
},
dataZoom
:
[
{
type
:
'slider'
,
show
:
valueList
.
length
>
5
,
yAxisIndex
:
0
,
width
:
8
,
right
:
10
,
top
:
20
,
bottom
:
20
,
startValue
:
0
,
endValue
:
4
,
// Show 5 items (0-4)
fillerColor
:
'rgba(167,183,204,0.4)'
,
borderColor
:
'transparent'
,
handleSize
:
0
,
showDetail
:
false
,
brushSelect
:
false
},
{
type
:
'inside'
,
yAxisIndex
:
0
,
startValue
:
0
,
endValue
:
4
,
zoomOnMouseWheel
:
false
,
moveOnMouseWheel
:
true
,
moveOnTouch
:
true
}
],
xAxis
:
{
xAxis
:
{
type
:
'value'
,
type
:
'value'
,
splitLine
:
{
splitLine
:
{
show
:
false
show
:
false
},
},
show
:
false
axisLine
:
{
show
:
false
},
axisTick
:
{
show
:
false
},
axisLabel
:
{
show
:
false
}
},
},
yAxis
:
{
yAxis
:
{
type
:
'category'
,
type
:
'category'
,
data
:
nameList
,
data
:
nameList
,
inverse
:
true
,
// Display from top to bottom
splitLine
:
{
splitLine
:
{
show
:
false
show
:
false
},
},
...
@@ -31,60 +72,43 @@ const getBarChart = (nameList, valueList) => {
...
@@ -31,60 +72,43 @@ const getBarChart = (nameList, valueList) => {
show
:
false
show
:
false
},
},
axisLabel
:
{
axisLabel
:
{
show
:
true
show
:
true
,
color
:
'#333'
,
fontSize
:
14
,
width
:
100
,
// Limit width to handle long names
overflow
:
'truncate'
,
ellipsis
:
'...'
}
}
},
},
series
:
[{
series
:
[{
type
:
'bar'
,
type
:
'bar'
,
data
:
valueList
.
map
((
item
,
index
)
=>
{
data
:
valueList
.
map
((
item
,
index
)
=>
{
// Cycle through colors if more data than colors
const
colorIndex
=
index
%
colorList
.
length
;
const
color
=
colorList
[
colorIndex
];
return
{
return
{
value
:
item
,
value
:
item
,
itemStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
1
,
0
,
[
{
offset
:
0
,
color
:
'rgba(255,255,255,0)'
},
// Transparent start
{
offset
:
1
,
color
:
color
}
// Solid end
]),
borderRadius
:
[
0
,
10
,
10
,
0
]
},
label
:
{
label
:
{
textStyle
:
{
show
:
true
,
color
:
colorList
[
index
]
position
:
'right'
,
}
color
:
color
,
fontSize
:
16
,
offset
:
[
5
,
0
]
// Add some space between bar and label
}
}
};
};
}
}),
),
barWidth
:
10
,
barWidth
:
8
,
showBackground
:
false
label
:
{
show
:
true
,
position
:
[
365
,
0
],
formatter
:
function
(
params
)
{
return
params
.
value
}
},
itemStyle
:
{
color
:
function
(
params
)
{
var
colorList
=
[
[
'#fff'
,
'#b37feb'
],
[
'#fff'
,
'#ffc53e'
],
[
'#fff'
,
'#36cfc9'
],
[
'#fff'
,
'#5c80f7'
],
[
'#fff'
,
'#ff7d7a'
],
[
'#fff'
,
'#4a9cff'
],
];
var
index
=
params
.
dataIndex
;
if
(
params
.
dataIndex
>=
colorList
.
length
)
{
index
=
params
.
dataIndex
-
colorList
.
length
;
}
return
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
1
,
0
,
[{
offset
:
0
,
color
:
colorList
[
index
][
0
]
},
{
offset
:
1
,
color
:
colorList
[
index
][
1
]
}
]);
},
barBorderRadius
:
4
,
}
}]
}]
}
}
return
option
return
option
}
}
export
default
getBarChart
export
default
getBarChart
\ No newline at end of file
src/views/bill/influence/industry/utils/barChart1.js
浏览文件 @
52826e66
...
@@ -49,7 +49,7 @@ const getBarChart1 = (nameList, valueList) => {
...
@@ -49,7 +49,7 @@ const getBarChart1 = (nameList, valueList) => {
offset
:
1
,
offset
:
1
,
color
:
'rgba(22,119,255,0)'
// 结束颜色:浅色且透明度降低
color
:
'rgba(22,119,255,0)'
// 结束颜色:浅色且透明度降低
}]),
}]),
b
arB
orderRadius
:
4
,
borderRadius
:
4
,
}
}
}]
}]
}
}
...
...
src/views/bill/influence/industry/utils/graphChart.js
浏览文件 @
52826e66
...
@@ -41,7 +41,7 @@ const getGraphChart = (nodes, links) => {
...
@@ -41,7 +41,7 @@ const getGraphChart = (nodes, links) => {
itemStyle
:
{
itemStyle
:
{
color
:
'#73C0DE'
color
:
'#73C0DE'
},
},
layout
:
'
forc
e'
,
layout
:
'
non
e'
,
data
:
nodes
,
data
:
nodes
,
links
:
links
,
links
:
links
,
// categories: categories,
// categories: categories,
...
...
src/views/bill/introdoction/index.vue
浏览文件 @
52826e66
...
@@ -319,7 +319,7 @@
...
@@ -319,7 +319,7 @@
新闻动态
新闻动态
<
/div
>
<
/div
>
<
div
class
=
"btn"
:
class
=
"{ btnActive: dialogBoxBtnActive === 1
}
"
@
click
=
"handleClcikDialogBoxBtn(1)"
>
<
div
class
=
"btn"
:
class
=
"{ btnActive: dialogBoxBtnActive === 1
}
"
@
click
=
"handleClcikDialogBoxBtn(1)"
>
任务
履历
人物
履历
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"inner-right-main"
>
<
div
class
=
"inner-right-main"
>
...
@@ -1411,6 +1411,11 @@ onMounted(() => {
...
@@ -1411,6 +1411,11 @@ onMounted(() => {
font
-
size
:
14
px
;
font
-
size
:
14
px
;
font
-
weight
:
400
;
font
-
weight
:
400
;
line
-
height
:
22
px
;
line
-
height
:
22
px
;
display
:
-
webkit
-
box
;
-
webkit
-
box
-
orient
:
vertical
;
-
webkit
-
line
-
clamp
:
3
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
}
}
.
timeline
-
content1
{
.
timeline
-
content1
{
color
:
rgba
(
132
,
136
,
142
,
1
);
color
:
rgba
(
132
,
136
,
142
,
1
);
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/decree/decreeHome/utils/barChart.js
浏览文件 @
52826e66
...
@@ -6,8 +6,8 @@ const getBarChart = (nameList, valueList) => {
...
@@ -6,8 +6,8 @@ const getBarChart = (nameList, valueList) => {
grid
:
{
grid
:
{
top
:
'3%'
,
top
:
'3%'
,
right
:
'3%'
,
right
:
'3%'
,
bottom
:
'
1
%'
,
bottom
:
'
3
%'
,
left
:
'
1
%'
,
left
:
'
3
%'
,
containLabel
:
true
containLabel
:
true
},
},
yAxis
:
{
yAxis
:
{
...
@@ -18,7 +18,12 @@ const getBarChart = (nameList, valueList) => {
...
@@ -18,7 +18,12 @@ const getBarChart = (nameList, valueList) => {
axisLine
:
{
axisLine
:
{
show
:
false
show
:
false
},
},
show
:
true
show
:
true
,
textStyle
:
{
color
:
'rgba(95, 101, 108, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
fontsize
:
14
,
}
},
},
xAxis
:
{
xAxis
:
{
type
:
'category'
,
type
:
'category'
,
...
@@ -33,7 +38,12 @@ const getBarChart = (nameList, valueList) => {
...
@@ -33,7 +38,12 @@ const getBarChart = (nameList, valueList) => {
show
:
true
show
:
true
},
},
axisLabel
:
{
axisLabel
:
{
show
:
true
show
:
true
,
textStyle
:
{
color
:
'rgba(95, 101, 108, 1)'
,
fontFamily
:
'Microsoft YaHei'
,
fontsize
:
14
,
}
}
}
},
},
series
:
[{
series
:
[{
...
...
src/views/decree/decreeHome/utils/piechart.js
浏览文件 @
52826e66
...
@@ -2,46 +2,53 @@ const getPieChart = (data) => {
...
@@ -2,46 +2,53 @@ const getPieChart = (data) => {
let
option
=
{
let
option
=
{
series
:
[
series
:
[
{
{
type
:
'pie'
,
type
:
'pie'
,
radius
:
[
110
,
143
],
radius
:
[
110
,
143
],
height
:
'100%'
,
height
:
'100%'
,
left
:
'center'
,
left
:
'center'
,
width
:
'100%'
,
width
:
'95%'
,
itemStyle
:
{
itemStyle
:
{
borderColor
:
'#fff'
,
borderColor
:
'#fff'
,
borderWidth
:
1
borderWidth
:
1
},
},
label
:
{
label
:
{
alignTo
:
'edge'
,
alignTo
:
'edge'
,
formatter
:
'{name|{b}}
\
n{time|{c} 条 {d}%}'
,
formatter
:
'{name|{b}}
\
n{time|{c} 条 {d}%}'
,
minMargin
:
5
,
minMargin
:
5
,
edgeDistance
:
10
,
edgeDistance
:
10
,
lineHeight
:
24
,
lineHeight
:
24
,
rich
:
{
rich
:
{
time
:
{
name
:
{
fontSize
:
16
,
color
:
'rgba(59, 65, 75, 1)'
,
color
:
'#999'
fontFamily
:
'Microsoft YaHei'
,
fontSize
:
16
,
fontWeight
:
'bold'
,
},
time
:
{
fontSize
:
16
,
fontFamily
:
'Microsoft YaHei'
,
color
:
'#rgba(95, 101, 108, 1)'
}
}
}
}
},
},
labelLine
:
{
labelLine
:
{
length
:
15
,
length
:
15
,
length2
:
0
,
length2
:
0
,
maxSurfaceAngle
:
80
maxSurfaceAngle
:
80
},
},
labelLayout
:
function
(
params
)
{
labelLayout
:
function
(
params
)
{
const
isLeft
=
params
.
labelRect
.
x
<
556
/
2
;
const
isLeft
=
params
.
labelRect
.
x
<
556
/
2
;
const
points
=
params
.
labelLinePoints
;
const
points
=
params
.
labelLinePoints
;
// Update the end point.
// Update the end point.
points
[
2
][
0
]
=
isLeft
points
[
2
][
0
]
=
isLeft
?
params
.
labelRect
.
x
?
params
.
labelRect
.
x
:
params
.
labelRect
.
x
+
params
.
labelRect
.
width
;
:
params
.
labelRect
.
x
+
params
.
labelRect
.
width
;
return
{
return
{
labelLinePoints
:
points
labelLinePoints
:
points
};
};
},
},
data
:
data
data
:
data
}]
}]
}
}
return
option
return
option
}
}
...
...
src/views/decree/decreeLayout/deepdig/index.vue
浏览文件 @
52826e66
...
@@ -129,26 +129,26 @@ const showList = computed(() => {
...
@@ -129,26 +129,26 @@ const showList = computed(() => {
}
);
}
);
const
siderList
=
ref
([
const
siderList
=
ref
([
{
//
{
time
:
"2023
"
,
// time: "
",
title
:
"拜登人工智能政令
"
// title: "
"
}
,
//
}
,
{
//
{
time
:
"2023"
,
//
time: "2023",
title
:
"拜登人工智能政令"
//
title: "拜登人工智能政令"
}
,
//
}
,
{
//
{
time
:
"2025"
,
//
time: "2025",
title
:
"特朗普撤销拜登AI规则"
//
title: "特朗普撤销拜登AI规则"
}
,
//
}
,
{
//
{
time
:
"2023"
,
//
time: "2023",
title
:
"美国AI行动计划"
//
title: "美国AI行动计划"
}
,
//
}
,
{
//
{
time
:
"2024"
,
//
time: "2024",
title
:
"对中国AI芯片限制"
//
title: "对中国AI芯片限制"
}
//
}
]);
]);
const
siderActiveIndex
=
ref
(
0
);
const
siderActiveIndex
=
ref
(
0
);
const
handleClickSider
=
async
index
=>
{
const
handleClickSider
=
async
index
=>
{
...
@@ -178,22 +178,22 @@ const handleClickSider = async index => {
...
@@ -178,22 +178,22 @@ const handleClickSider = async index => {
}
;
}
;
const
decreeInfo
=
ref
({
const
decreeInfo
=
ref
({
img
:
box2InfoImg
,
img
:
""
,
totalTitle
:
"
关于安全、可靠和可信地开发和使用人工智能的行政命令
"
,
totalTitle
:
""
,
eTotalTitle
:
"
Executive Order on the Safe, Secure, and Trustworthy Development and Use of Artificial Intelligence
"
,
eTotalTitle
:
""
,
signTime
:
"
2025年7月23日
"
,
signTime
:
""
,
signOrg
:
"
乔·拜登(Joe Biden)
"
,
signOrg
:
""
,
list
:
[
list
:
[
{
//
{
content
:
//
content:
"要求强大AI系统开发者与政府分享安全测试结果(“红队测试”);制定生物合成筛查标准防范风险;建立AI生成内容鉴别标准"
//
"要求强大AI系统开发者与政府分享安全测试结果(“红队测试”);制定生物合成筛查标准防范风险;建立AI生成内容鉴别标准"
}
,
//
}
,
{
//
{
content
:
"优先支持隐私保护技术(PET)研发;评估各机构如何收集和使用商业信息;制定评估隐私保护技术有效性的指南。"
//
content: "优先支持隐私保护技术(PET)研发;评估各机构如何收集和使用商业信息;制定评估隐私保护技术有效性的指南。"
}
,
//
}
,
{
//
{
content
:
"为解决算法歧视提供明确指导;确保刑事司法系统中AI使用的公平性;协调调查和起诉AI相关的民权侵犯行为。"
//
content: "为解决算法歧视提供明确指导;确保刑事司法系统中AI使用的公平性;协调调查和起诉AI相关的民权侵犯行为。"
}
//
}
]
]
}
);
}
);
...
...
src/views/decree/decreeLayout/index.vue
浏览文件 @
52826e66
...
@@ -6,16 +6,16 @@
...
@@ -6,16 +6,16 @@
<div
class=
"layout-main-header-left-box"
>
<div
class=
"layout-main-header-left-box"
>
<div
class=
"left-box-top"
>
<div
class=
"left-box-top"
>
<div
class=
"icon"
>
<div
class=
"icon"
>
<img
src=
"./assets/images/USA-logo.png
"
alt=
""
/>
<img
:src=
"summaryInfo.officialUrl
"
alt=
""
/>
</div>
</div>
<div
class=
"info"
>
<div
class=
"info"
>
<div
class=
"info-box1"
>
{{
"EO 14320-推动美国人工智能技术栈的出口"
}}
</div>
<div
class=
"info-box1"
>
{{
summaryInfo
.
name
}}
</div>
<div
class=
"info-box2"
>
<div
class=
"info-box2"
>
<div
class=
"info-box2-item"
>
{{
"总统行动"
}}
</div>
<div
class=
"info-box2-item"
>
{{
summaryInfo
.
order
}}
</div>
|
|
<div
class=
"info-box2-item"
>
{{
"行政命令"
}}
</div>
<div
class=
"info-box2-item"
>
{{
summaryInfo
.
type
}}
</div>
|
|
<div
class=
"info-box2-item"
>
{{
"Promoting the Export of the American AI Technology Stack"
}}
</div>
<div
class=
"info-box2-item"
>
{{
summaryInfo
.
ename
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -39,13 +39,14 @@
...
@@ -39,13 +39,14 @@
</div>
</div>
<div
class=
"layout-main-header-right-box"
>
<div
class=
"layout-main-header-right-box"
>
<div
class=
"right-box-top"
>
<div
class=
"right-box-top"
>
<div
class=
"time"
>
{{
"2025年7月23日"
}}
</div>
<div
class=
"time"
>
{{
summaryInfo
.
postDate
}}
</div>
<div
class=
"name"
>
{{
"唐纳德·约翰·特朗普(Donald John Trump)"
}}
</div>
<div
class=
"name"
>
{{
summaryInfo
.
orgName
}}
</div>
</div>
</div>
<div
class=
"right-box-bottom"
>
<div
class=
"right-box-bottom"
>
<el-button
type=
"plain"
size=
"large"
icon=
"Search"
@
click=
"handleSwitchActiveName('法案原文')"
<
!--
<
el-button
type=
"plain"
size=
"large"
icon=
"Search"
@
click=
"handleSwitchActiveName('法案原文')"
>
政令原文
</el-button
>
政令原文
</el-button
>
>
-->
<el-button
type=
"plain"
size=
"large"
icon=
"Search"
>
政令原文
</el-button>
<el-button
type=
"primary"
size=
"large"
icon=
"EditPen"
>
分析报告
</el-button>
<el-button
type=
"primary"
size=
"large"
icon=
"EditPen"
>
分析报告
</el-button>
</div>
</div>
</div>
</div>
...
@@ -123,6 +124,7 @@
...
@@ -123,6 +124,7 @@
import
{
ref
,
onMounted
,
onUnmounted
}
from
"vue"
;
import
{
ref
,
onMounted
,
onUnmounted
}
from
"vue"
;
import
router
from
"@/router"
;
import
router
from
"@/router"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
getDecreeSummary
}
from
"@/api/decree/introduction"
;
import
search
from
"./assets/images/search.png"
;
import
search
from
"./assets/images/search.png"
;
import
icon1
from
"./assets/icons/icon1.png"
;
import
icon1
from
"./assets/icons/icon1.png"
;
...
@@ -132,12 +134,16 @@ import icon2Active from "./assets/icons/icon2_active.png";
...
@@ -132,12 +134,16 @@ import icon2Active from "./assets/icons/icon2_active.png";
import
icon3
from
"./assets/icons/icon3.png"
;
import
icon3
from
"./assets/icons/icon3.png"
;
import
icon3Active
from
"./assets/icons/icon3_active.png"
;
import
icon3Active
from
"./assets/icons/icon3_active.png"
;
import
DefaultIcon2
from
'@/assets/icons/default-icon2.png'
const
route
=
useRoute
();
const
route
=
useRoute
();
const
decreeId
=
ref
(
route
.
query
.
id
);
const
decreeId
=
ref
(
route
.
query
.
id
);
const
activeName
=
ref
(
"分析报告"
);
const
activeName
=
ref
(
"分析报告"
);
const
summaryInfo
=
ref
({});
const
handleSwitchActiveName
=
name
=>
{
const
handleSwitchActiveName
=
name
=>
{
activeName
.
value
=
name
;
activeName
.
value
=
name
;
};
};
...
@@ -189,7 +195,22 @@ const handleClickMainHeaderBtn = item => {
...
@@ -189,7 +195,22 @@ const handleClickMainHeaderBtn = item => {
});
});
};
};
// 获取全局信息
const
handleGetSummary
=
async
()
=>
{
const
params
=
{
id
:
route
.
query
.
id
};
try
{
const
res
=
await
getDecreeSummary
(
params
);
console
.
log
(
"全局信息"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
summaryInfo
.
value
=
res
.
data
;
}
}
catch
(
error
)
{}
};
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetSummary
();
if
(
window
.
sessionStorage
.
getItem
(
"activeTitle"
))
{
if
(
window
.
sessionStorage
.
getItem
(
"activeTitle"
))
{
activeTitle
.
value
=
window
.
sessionStorage
.
getItem
(
"activeTitle"
);
activeTitle
.
value
=
window
.
sessionStorage
.
getItem
(
"activeTitle"
);
}
}
...
@@ -217,7 +238,7 @@ onUnmounted(() => {
...
@@ -217,7 +238,7 @@ onUnmounted(() => {
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
.layout-main-header-left-box
{
.layout-main-header-left-box
{
width
:
8
00px
;
width
:
11
00px
;
margin-left
:
160px
;
margin-left
:
160px
;
margin-top
:
13px
;
margin-top
:
13px
;
.left-box-top
{
.left-box-top
{
...
@@ -226,6 +247,10 @@ onUnmounted(() => {
...
@@ -226,6 +247,10 @@ onUnmounted(() => {
.icon
{
.icon
{
width
:
64px
;
width
:
64px
;
height
:
64px
;
height
:
64px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
}
.info
{
.info
{
margin-left
:
9px
;
margin-left
:
9px
;
...
@@ -334,7 +359,7 @@ onUnmounted(() => {
...
@@ -334,7 +359,7 @@ onUnmounted(() => {
}
}
.layout-main-center
{
.layout-main-center
{
// height: calc(100% - 137px);
// height: calc(100% - 137px);
overflow
:
hidden
;
overflow
:
hidden
;
}
}
}
}
.layout-report-box
{
.layout-report-box
{
...
...
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
52826e66
...
@@ -30,11 +30,11 @@
...
@@ -30,11 +30,11 @@
</div>
</div>
</div>
</div>
<div
class=
"box1-list-box"
>
<div
class=
"box1-list-box"
>
<div
class=
"box1-item"
v-for=
"(item, index) in showCompanyList"
:key=
"index"
>
<div
class=
"box1-item"
v-for=
"(item, index) in showCompanyList"
:key=
"index"
@
click=
"handleToCompanyDetail"
>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"id"
>
{{
index
+
1
}}
</div>
<div
class=
"title"
>
{{
item
.
name
}}
</div>
<div
class=
"title"
>
{{
item
.
name
}}
</div>
<div
class=
"icon"
>
<div
class=
"icon"
>
<img
v-if=
"item.status
=== 'up'
"
src=
"./assets/images/up.png"
alt=
""
/>
<img
v-if=
"item.status
>= 0
"
src=
"./assets/images/up.png"
alt=
""
/>
<img
v-else
src=
"./assets/images/down.png"
alt=
""
/>
<img
v-else
src=
"./assets/images/down.png"
alt=
""
/>
</div>
</div>
</div>
</div>
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
<
/div
>
<
/div
>
<
div
class
=
"box2-main"
>
<
div
class
=
"box2-main"
>
<
div
class
=
"box2-line-box"
><
/div
>
<
div
class
=
"box2-line-box"
v
-
if
=
"timeLineList.length"
><
/div
>
<
div
<
div
class
=
"box2-item"
class
=
"box2-item"
:
class
=
"{ box2ItemFooter: index % 2
}
"
:
class
=
"{ box2ItemFooter: index % 2
}
"
...
@@ -156,15 +156,21 @@
...
@@ -156,15 +156,21 @@
<
/template
>
<
/template
>
<
script
setup
>
<
script
setup
>
import
{
ref
,
computed
,
watch
,
onMounted
}
from
"vue"
;
import
{
ref
,
computed
,
watch
,
onMounted
}
from
"vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
router
from
"@/router"
;
import
setChart
from
"@/utils/setChart"
;
import
setChart
from
"@/utils/setChart"
;
import
*
as
echarts
from
"echarts"
;
import
getBarChart
from
"./utils/barChart"
;
import
getBarChart
from
"./utils/barChart"
;
import
{
getDecreeIndustry
,
getDecreehylyList
,
getDecreeCompany
,
getDecreeAction
}
from
"@/api/decree/influence"
;
import
{
getDecreeIndustry
,
getDecreehylyList
,
getDecreeCompany
,
getDecreeAction
}
from
"@/api/decree/influence"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
// 跳转企业详情
const
handleToCompanyDetail
=
()
=>
{
const
route
=
router
.
resolve
(
"/companyPages"
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
// 企业影响分析
// 企业影响分析
const
companyTotalNum
=
ref
(
0
);
// 企业数量
const
companyTotalNum
=
ref
(
0
);
// 企业数量
const
isCRelated
=
ref
(
false
);
// 只看中国企业
const
isCRelated
=
ref
(
false
);
// 只看中国企业
...
@@ -208,7 +214,13 @@ const handelBox1 = async () => {
...
@@ -208,7 +214,13 @@ const handelBox1 = async () => {
const
box1BtnActiveName
=
ref
(
""
);
const
box1BtnActiveName
=
ref
(
""
);
const
curAreaId
=
ref
(
0
);
const
curAreaId
=
ref
(
0
);
const
box1BtnList
=
ref
([
"集成电路"
,
"新能源"
,
"人工智能"
,
"先进制造"
,
"量子科技"
]);
const
box1BtnList
=
ref
([
// "集成电路",
// "新能源",
// "人工智能",
// "先进制造",
// "量子科技"
]);
const
handleClickBox1Btn
=
btn
=>
{
const
handleClickBox1Btn
=
btn
=>
{
box1BtnActiveName
.
value
=
btn
.
name
;
box1BtnActiveName
.
value
=
btn
.
name
;
curAreaId
.
value
=
btn
.
id
;
curAreaId
.
value
=
btn
.
id
;
...
@@ -224,51 +236,32 @@ const handleGetHylyList = async () => {
...
@@ -224,51 +236,32 @@ const handleGetHylyList = async () => {
box1BtnList
.
value
=
res
.
data
;
box1BtnList
.
value
=
res
.
data
;
box1BtnActiveName
.
value
=
box1BtnList
.
value
[
0
].
name
;
box1BtnActiveName
.
value
=
box1BtnList
.
value
[
0
].
name
;
curAreaId
.
value
=
box1BtnList
.
value
[
0
].
id
;
curAreaId
.
value
=
box1BtnList
.
value
[
0
].
id
;
handleGetCompanyListByArea
();
}
}
}
catch
(
error
)
{
}
}
catch
(
error
)
{
}
}
;
}
;
const
companyList
=
ref
([
const
companyList
=
ref
([
{
//
{
name
:
"宁德时代新能源科技股份有限公司"
,
// name: "宁德时代新能源科技股份有限公司",
status
:
"down"
// status: "down"
}
,
//
}
,
{
//
{
name
:
"比亚迪股份有限公司"
,
// name: "比亚迪股份有限公司",
status
:
"down"
// status: "down"
}
,
//
}
,
{
//
{
name
:
"隆基绿能科技股份有限公司"
,
// name: "隆基绿能科技股份有限公司",
status
:
"down"
// status: "down"
}
,
//
}
,
{
//
{
name
:
"晶科能源控股有限公司"
,
// name: "晶科能源控股有限公司",
status
:
"down"
// status: "down"
}
,
//
}
,
{
//
{
name
:
"厦门海辰储能科技股份有限公司"
,
// name: "厦门海辰储能科技股份有限公司",
status
:
"down"
// status: "down"
}
,
//
}
{
name
:
"国轩高科股份有限公司"
,
status
:
"up"
}
,
{
name
:
"远景科技集团"
,
status
:
"down"
}
,
{
name
:
"惠州亿纬锂能股份有限公司"
,
status
:
"down"
}
,
{
name
:
"天合光能股份有限公司"
,
status
:
"down"
}
,
{
name
:
"晶澳太阳能科技股份有限公司"
,
status
:
"up"
}
]);
]);
const
currentPage
=
ref
(
1
);
const
currentPage
=
ref
(
1
);
const
pageSize
=
ref
(
10
);
const
pageSize
=
ref
(
10
);
...
@@ -296,7 +289,7 @@ const handleGetCompanyListByArea = async () => {
...
@@ -296,7 +289,7 @@ const handleGetCompanyListByArea = async () => {
return
{
return
{
name
:
item
.
name
,
name
:
item
.
name
,
id
:
item
.
id
,
id
:
item
.
id
,
status
:
"up"
status
:
item
.
marketChange
}
;
}
;
}
);
}
);
companyTotalNum
.
value
=
companyList
.
value
.
length
;
companyTotalNum
.
value
=
companyList
.
value
.
length
;
...
@@ -312,26 +305,14 @@ const handleGetCompanyListByArea = async () => {
...
@@ -312,26 +305,14 @@ const handleGetCompanyListByArea = async () => {
// 政令举措落实分析
// 政令举措落实分析
const
timeLineList
=
ref
([
const
timeLineList
=
ref
([
{
//
{
time
:
"2025年7月25日"
,
// time: "2025年7月25日",
content
:
"商务部已成立AI出口计划办公室,并开始招募专业人员。"
// content: "商务部已成立AI出口计划办公室,并开始招募专业人员。"
}
,
//
}
,
{
//
{
time
:
"2025年7月31日"
,
// time: "2025年7月31日",
content
:
"英伟达、微软、谷歌等企业已提交初步技术栈提案。"
// content: "英伟达、微软、谷歌等企业已提交初步技术栈提案。"
}
,
//
}
{
time
:
"2025年8月5日"
,
content
:
"国务院开始与盟友国家进行初步磋商。"
}
,
{
time
:
"2025年8月9日"
,
content
:
"国防部、能源部安全审查流程尚未最终确定。"
}
,
{
time
:
"2025年8月12日"
,
content
:
"商务部已成立AI出口计划办公室,并开始招募专业人员。"
}
]);
]);
const
handleGetAction
=
async
()
=>
{
const
handleGetAction
=
async
()
=>
{
...
@@ -358,48 +339,48 @@ const handleGetAction = async () => {
...
@@ -358,48 +339,48 @@ const handleGetAction = async () => {
// 历史相似举措及落实情况
// 历史相似举措及落实情况
const
box3List
=
ref
([
const
box3List
=
ref
([
{
//
{
type
:
"科技法案"
,
//
type: "科技法案",
title
:
"瓦森纳安排"
,
//
title: "瓦森纳安排",
content
:
"落实情况:持续有效,但面临技术快速迭代挑战。"
,
//
content: "落实情况:持续有效,但面临技术快速迭代挑战。",
time
:
"1996-至今"
,
//
time: "1996-至今",
tag
:
"人工智能"
//
tag: "人工智能"
}
,
//
}
,
{
//
{
type
:
"科技法案"
,
//
type: "科技法案",
title
:
"云计算出口管制"
,
//
title: "云计算出口管制",
content
:
"落实情况:部分有效,但执行难度大。"
,
//
content: "落实情况:部分有效,但执行难度大。",
time
:
"1996-至今"
,
//
time: "1996-至今",
tag
:
"人工智能"
//
tag: "人工智能"
}
,
//
}
,
{
//
{
type
:
"科技法案"
,
//
type: "科技法案",
title
:
"芯片与科学法案"
,
//
title: "芯片与科学法案",
content
:
"落实情况:正在实施,效果待观察。"
,
//
content: "落实情况:正在实施,效果待观察。",
time
:
"2022-至今"
,
//
time: "2022-至今",
tag
:
"人工智能"
//
tag: "人工智能"
}
,
//
}
,
{
//
{
type
:
"科技法案"
,
//
type: "科技法案",
title
:
"AI芯片出口管制"
,
//
title: "AI芯片出口管制",
content
:
"落实情况:部分有效,但催生中国自主创新。"
,
//
content: "落实情况:部分有效,但催生中国自主创新。",
time
:
"1996-至今"
,
//
time: "1996-至今",
tag
:
"人工智能"
//
tag: "人工智能"
}
,
//
}
,
{
//
{
type
:
"科技法案"
,
//
type: "科技法案",
title
:
"瓦森纳安排"
,
//
title: "瓦森纳安排",
content
:
"落实情况:持续有效,但面临技术快速迭代挑战。"
,
//
content: "落实情况:持续有效,但面临技术快速迭代挑战。",
time
:
"1996-至今"
,
//
time: "1996-至今",
tag
:
"人工智能"
//
tag: "人工智能"
}
,
//
}
,
{
//
{
type
:
"科技法案"
,
//
type: "科技法案",
title
:
"瓦森纳安排"
,
//
title: "瓦森纳安排",
content
:
"落实情况:持续有效,但面临技术快速迭代挑战。"
,
//
content: "落实情况:持续有效,但面临技术快速迭代挑战。",
time
:
"1996-至今"
,
//
time: "1996-至今",
tag
:
"人工智能"
//
tag: "人工智能"
}
//
}
]);
]);
watch
(
watch
(
...
@@ -411,7 +392,6 @@ watch(
...
@@ -411,7 +392,6 @@ watch(
);
);
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetCompanyListByArea
();
handleGetChart1Data
();
handleGetChart1Data
();
handleGetHylyList
();
handleGetHylyList
();
handleGetAction
();
handleGetAction
();
...
@@ -529,6 +509,10 @@ onMounted(() => {
...
@@ -529,6 +509,10 @@ onMounted(() => {
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
bottom
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
radius
:
4
px
;
border
-
radius
:
4
px
;
display
:
flex
;
display
:
flex
;
cursor
:
pointer
;
&
:
hover
{
background
:
var
(
--
color
-
bg
-
hover
);
}
.
id
{
.
id
{
width
:
24
px
;
width
:
24
px
;
height
:
24
px
;
height
:
24
px
;
...
...
src/views/decree/decreeLayout/influence/utils/barChart.js
浏览文件 @
52826e66
...
@@ -31,7 +31,12 @@ const getBarChart = (nameList, valueList) => {
...
@@ -31,7 +31,12 @@ const getBarChart = (nameList, valueList) => {
show
:
false
show
:
false
},
},
axisLabel
:
{
axisLabel
:
{
show
:
true
show
:
true
,
textStyle
:
{
fontSize
:
16
,
fontFamily
:
'Microsoft YaHei'
,
color
:
'rgba(59, 65, 75, 1)'
}
}
}
},
},
series
:
[{
series
:
[{
...
...
src/views/decree/decreeLayout/overview/background/index.vue
浏览文件 @
52826e66
...
@@ -126,12 +126,12 @@ const handleClickBox1Btn = btn => {
...
@@ -126,12 +126,12 @@ const handleClickBox1Btn = btn => {
}
;
}
;
const
backgroundListNum
=
ref
(
0
);
const
backgroundListNum
=
ref
(
0
);
const
backgroundList
=
ref
([
const
backgroundList
=
ref
([
{
//
{
content
:
"认为人工智能(AI)是一项将决定未来几十年经济增长、国家安全和全球竞争力的基础性技术"
//
content: "认为人工智能(AI)是一项将决定未来几十年经济增长、国家安全和全球竞争力的基础性技术"
}
,
//
}
,
{
//
{
content
:
"要求美国不仅必须在开发通用和前沿AI能力方面领先,还必须确保美国的人工智能技术、标准和治理模式在全球范围内被采用"
//
content: "要求美国不仅必须在开发通用和前沿AI能力方面领先,还必须确保美国的人工智能技术、标准和治理模式在全球范围内被采用"
}
,
//
}
,
]);
]);
const
handleGetBackground
=
async
()
=>
{
const
handleGetBackground
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
@@ -155,39 +155,14 @@ const handleGetBackground = async () => {
...
@@ -155,39 +155,14 @@ const handleGetBackground = async () => {
// 相关事件
// 相关事件
const
relatedEvents
=
ref
([
const
relatedEvents
=
ref
([
{
//
{
image
:
Img1
,
// image: Img1,
title
:
"中美AI模型性能差距迅速缩小"
,
// title: "中美AI模型性能差距迅速缩小",
content
:
// content:
"斯坦福大学《2025年人工智能指数报告》显示,中美顶尖AI模型在MMLU(大规模多任务语言理解)等主流基准测试中的性能..."
,
// "斯坦福大学《2025年人工智能指数报告》显示,中美顶尖AI模型在MMLU(大规模多任务语言理解)等主流基准测试中的性能...",
time
:
"2025-08-30"
// time: "2025-08-30"
}
,
//
}
{
image
:
Img2
,
title
:
"中国模型以更低成本实现高性能"
,
content
:
"2025年1月,中国公司深度求索(DeepSeek)发布高性能AI推理模型R1,以其极低的训练成本和媲美顶级模型的推理能力受..."
,
time
:
"2025-05-16"
}
,
{
image
:
Img3
,
title
:
"美国发布《赢得AI竞赛:美国AI行动计划》"
,
content
:
"特朗普政府发布该计划,核心包括加速创新(解除监管)、建设AI基础设施(加速数据中心审批、保障能源供应)和引领国际..."
,
time
:
"2025-07-23"
}
,
{
image
:
Img4
,
title
:
"中国深入推进“人工智能+”行动"
,
content
:
"中国国务院常务会议审议通过《关于深入实施“人工智能+”行动的意见》,大力推进AI在各领域的规模化商业化应用和和深..."
,
time
:
"2025-07-31"
}
,
{
image
:
Img5
,
title
:
"美国对华AI芯片出口管制持续升级"
,
content
:
"美国商务部宣布撤销拜登时期的《AI扩散规则》,要求全球使用美国技术的芯片厂商停止向中国出口AI芯片,直接影响英伟达..."
,
time
:
"2025-05-20"
}
]);
]);
const
handleGetRelateEvents
=
async
()
=>
{
const
handleGetRelateEvents
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
@@ -215,34 +190,19 @@ const handleGetRelateEvents = async () => {
...
@@ -215,34 +190,19 @@ const handleGetRelateEvents = async () => {
// 法律依据
// 法律依据
const
laws
=
ref
([
const
laws
=
ref
([
{
//
{
name
:
"《美国法典》"
,
// name: "《美国法典》",
info
:
"第3编第301条"
,
// info: "第3编第301条",
content
:
// content:
"允许总统通过行政命令(Executive Order) 或其它书面形式授权行政部门或机构的负责人(如国务卿、财政部长等)代行本属于总统的法定职能(由国会立法授予总统的职能)。"
// "允许总统通过行政命令(Executive Order) 或其它书面形式授权行政部门或机构的负责人(如国务卿、财政部长等)代行本属于总统的法定职能(由国会立法授予总统的职能)。"
}
,
//
}
,
{
//
{
name
:
"《出口管制改革法案》"
,
// name: "《出口管制改革法案》",
info
:
""
,
// info: "",
content
:
// content:
"该法案授权政府出于国家安全和外交政策目的对特定技术、商品和软件的出口进行管制。确保AI技术不流向“对手国家”是其题中应有之义。"
// "该法案授权政府出于国家安全和外交政策目的对特定技术、商品和软件的出口进行管制。确保AI技术不流向“对手国家”是其题中应有之义。"
}
,
//
}
{
name
:
"《国际紧急经济权力法》"
,
info
:
""
,
content
:
"授予总统在应对“不寻常且极其严重的威胁”时,监管商业和金融交易的广泛权力,包括实施出口管制。这在以往的贸易和科技管制中常被引用。"
}
,
{
name
:
"《2019年通过外交捍卫美国商业法》"
,
info
:
"第708(c)(3)条"
,
content
:
"授权小企业管理局局长和OSTP主任任命其各自行政部门和机构的高级官员担任EDAG成员。"
}
,
{
name
:
"《关于安全、可靠和可信地开发和使用人工智能的行政命令》"
,
info
:
""
,
content
:
"要求强大AI系统的开发者与政府共享安全测试结果,并为AI安全、隐私保护、公平权利及创新竞争等方面制定标准。"
}
]);
]);
const
handleGetLaws
=
async
()
=>
{
const
handleGetLaws
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
...
src/views/decree/decreeLayout/overview/introduction/index.vue
浏览文件 @
52826e66
...
@@ -127,7 +127,7 @@
...
@@ -127,7 +127,7 @@
<
div
class
=
"box3-top"
>
<
div
class
=
"box3-top"
>
<
div
class
=
"box3-top-top"
>
<
div
class
=
"box3-top-top"
>
<
div
class
=
"left"
>
<
div
class
=
"left"
>
<
img
:
src
=
"box3TopData.logo"
alt
=
""
/>
<
img
:
src
=
"box3TopData.logo
?box3TopData.logo:DefaultIcon2
"
alt
=
""
/>
<
/div
>
<
/div
>
<
div
class
=
"right"
>
<
div
class
=
"right"
>
<
div
class
=
"name"
>
{{
box3TopData
.
name
}}
<
/div
>
<
div
class
=
"name"
>
{{
box3TopData
.
name
}}
<
/div
>
...
@@ -147,13 +147,6 @@
...
@@ -147,13 +147,6 @@
<
div
class
=
"item-left"
>
{{
"成立时间:"
}}
<
/div
>
<
div
class
=
"item-left"
>
{{
"成立时间:"
}}
<
/div
>
<
div
class
=
"item-right"
>
{{
box3TopData
.
clsj
}}
<
/div
>
<
div
class
=
"item-right"
>
{{
box3TopData
.
clsj
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"main-item"
>
<
div
class
=
"item-icon"
><
/div
>
<
div
class
=
"item-left"
>
{{
"主要职责:"
}}
<
/div
>
<
div
class
=
"item-right"
>
{{
box3TopData
.
zyzz
}}
<
/div
>
<
/div
>
<
div
class
=
"main-item"
>
<
div
class
=
"main-item"
>
<
div
class
=
"item-icon"
><
/div
>
<
div
class
=
"item-icon"
><
/div
>
<
div
class
=
"item-left"
>
{{
"总部地址:"
}}
<
/div
>
<
div
class
=
"item-left"
>
{{
"总部地址:"
}}
<
/div
>
...
@@ -206,20 +199,23 @@ import box1Img from "./assets/images/box1-img.png";
...
@@ -206,20 +199,23 @@ import box1Img from "./assets/images/box1-img.png";
import
Box3Logo
from
"./assets/images/box3-img.png"
;
import
Box3Logo
from
"./assets/images/box3-img.png"
;
import
{
getDecreeBasicInfo
,
getDecreeMainContent
,
getDecreeOrganization
}
from
"@/api/decree/introduction"
;
import
{
getDecreeBasicInfo
,
getDecreeMainContent
,
getDecreeOrganization
}
from
"@/api/decree/introduction"
;
import
DefaultIcon1
from
'@/assets/icons/default-icon1.png'
import
DefaultIcon2
from
'@/assets/icons/default-icon2.png'
const
route
=
useRoute
();
const
route
=
useRoute
();
const
decreeId
=
ref
(
route
.
query
.
id
);
const
decreeId
=
ref
(
route
.
query
.
id
);
// 基本信息
// 基本信息
const
basicInfo
=
ref
({
const
basicInfo
=
ref
({
img
:
box1Img
,
img
:
""
,
name
:
"
推动美国人工智能技术栈出口
"
,
name
:
""
,
eName
:
"
Promoting the Export of the American AI Technology Stack
"
,
eName
:
""
,
areaList
:
[
"人工智能"
,
"出口管制"
,
"半导体产业"
,
"关税"
,
"光伏产业"
],
areaList
:
[],
signTime
:
"
2025年7月23日
"
,
signTime
:
""
,
signPeople
:
"
唐纳德·约翰·特朗普(Donald John Trump)
"
,
signPeople
:
""
,
bh
:
"
第14320号行政命令 (EO 14320)
"
,
bh
:
""
,
deadline
:
"
签署后90天内建立机制并开始实施
"
deadline
:
""
}
);
}
);
const
handleGetBasicInfo
=
async
()
=>
{
const
handleGetBasicInfo
=
async
()
=>
{
...
@@ -246,10 +242,10 @@ handleGetBasicInfo();
...
@@ -246,10 +242,10 @@ handleGetBasicInfo();
// 主要指令
// 主要指令
const
majorList
=
ref
([
const
majorList
=
ref
([
{
//
{
id
:
1
,
//
id: 1,
content
:
'要求商务部在90天内建立"全栈式"美国AI出口机制。'
//
content: '要求商务部在90天内建立"全栈式"美国AI出口机制。'
}
//
}
]);
]);
const
currentPage
=
ref
(
1
);
const
currentPage
=
ref
(
1
);
const
pageSize
=
ref
(
5
);
const
pageSize
=
ref
(
5
);
...
@@ -285,8 +281,8 @@ const handleMajorList = async () => {
...
@@ -285,8 +281,8 @@ const handleMajorList = async () => {
handleMajorList
();
handleMajorList
();
// 执行机构
// 执行机构
const
box3BtnList
=
ref
([
"商务部"
,
"经济外交行动组"
]);
const
box3BtnList
=
ref
([]);
const
box3ActiveBtn
=
ref
(
"
商务部
"
);
const
box3ActiveBtn
=
ref
(
""
);
const
box3BtnActiveIndex
=
ref
(
0
);
const
box3BtnActiveIndex
=
ref
(
0
);
const
handleClickBox3Btn
=
(
btn
,
index
)
=>
{
const
handleClickBox3Btn
=
(
btn
,
index
)
=>
{
box3ActiveBtn
.
value
=
btn
;
box3ActiveBtn
.
value
=
btn
;
...
@@ -296,7 +292,6 @@ const handleClickBox3Btn = (btn, index) => {
...
@@ -296,7 +292,6 @@ const handleClickBox3Btn = (btn, index) => {
box3TopData
.
value
.
name
=
box3Data
.
value
[
index
].
name
;
box3TopData
.
value
.
name
=
box3Data
.
value
[
index
].
name
;
box3TopData
.
value
.
eName
=
box3Data
.
value
[
index
].
ename
;
box3TopData
.
value
.
eName
=
box3Data
.
value
[
index
].
ename
;
box3TopData
.
value
.
clsj
=
box3Data
.
value
[
index
].
foundingDate
;
box3TopData
.
value
.
clsj
=
box3Data
.
value
[
index
].
foundingDate
;
box3TopData
.
value
.
zyzz
=
"暂无数据"
;
box3TopData
.
value
.
zbdz
=
box3Data
.
value
[
index
].
address
;
box3TopData
.
value
.
zbdz
=
box3Data
.
value
[
index
].
address
;
box3TopData
.
value
.
bz
=
box3Data
.
value
[
index
].
leaderName
;
box3TopData
.
value
.
bz
=
box3Data
.
value
[
index
].
leaderName
;
eventList
.
value
=
box3Data
.
value
[
index
].
newsList
.
map
(
val
=>
{
eventList
.
value
=
box3Data
.
value
[
index
].
newsList
.
map
(
val
=>
{
...
@@ -310,32 +305,29 @@ const handleClickBox3Btn = (btn, index) => {
...
@@ -310,32 +305,29 @@ const handleClickBox3Btn = (btn, index) => {
const
box3Data
=
ref
([]);
const
box3Data
=
ref
([]);
const
box3TopData
=
ref
({
const
box3TopData
=
ref
({
logo
:
Box3Logo
,
logo
:
""
,
name
:
"
美国商务部
"
,
name
:
""
,
eName
:
"
United States Department of Commerce
"
,
eName
:
""
,
clsj
:
"
1903年2月14日
"
,
clsj
:
""
,
zbdz
:
"
华盛顿宪法大道1401号胡佛大楼
"
,
zbdz
:
""
,
bz
:
"
霍华德·卢特尼克
"
bz
:
""
}
);
}
);
// 机构动态
// 机构动态
const
eventList
=
ref
([
const
eventList
=
ref
([
{
//
{
time
:
"2025-07-31"
,
// time: "2025-07-31",
title
:
"美商务部发布指南,警告全球企业使用华为昇腾芯片可能违反美国出口管制。意在限制中国AI产业发展,阻碍其获得先进算力。"
// title: "美商务部发布指南,警告全球企业使用华为昇腾芯片可能违反美国出口管制。意在限制中国AI产业发展,阻碍其获得先进算力。"
}
,
//
}
,
{
//
{
time
:
"2025-07-25"
,
// time: "2025-07-25",
title
:
"美商务部持续对多种中国产品发起“双反”(反倾销、反补贴)调查并作出裁决,涉及产品从工业原料到日常用品,且裁定的税率普遍较高。"
// title: "美商务部持续对多种中国产品发起“双反”(反倾销、反补贴)调查并作出裁决,涉及产品从工业原料到日常用品,且裁定的税率普遍较高。"
}
,
//
}
,
{
//
{
time
:
"2025-07-21"
,
// time: "2025-07-21",
title
:
"美商务部进一步收紧对华先进半导体出口管制,将更多中国实体列入“实体清单”。限制14纳米及以下先进芯片、DRAM等对华出口"
// title: "美商务部进一步收紧对华先进半导体出口管制,将更多中国实体列入“实体清单”。限制14纳米及以下先进芯片、DRAM等对华出口"
}
,
//
}
{
time
:
"2025-07-12"
,
title
:
"美商务部发起第三次反倾销和反补贴日落复审调查。"
}
]);
]);
const
handleGetOrgnization
=
async
()
=>
{
const
handleGetOrgnization
=
async
()
=>
{
...
@@ -356,6 +348,7 @@ const handleGetOrgnization = async () => {
...
@@ -356,6 +348,7 @@ const handleGetOrgnization = async () => {
box3TopData
.
value
.
clsj
=
res
.
data
[
0
].
foundingDate
;
box3TopData
.
value
.
clsj
=
res
.
data
[
0
].
foundingDate
;
box3TopData
.
value
.
zbdz
=
res
.
data
[
0
].
address
;
box3TopData
.
value
.
zbdz
=
res
.
data
[
0
].
address
;
box3TopData
.
value
.
bz
=
res
.
data
[
0
].
leaderName
;
box3TopData
.
value
.
bz
=
res
.
data
[
0
].
leaderName
;
box3ActiveBtn
.
value
=
res
.
data
[
0
].
name
;
eventList
.
value
=
res
.
data
[
0
].
newsList
.
map
(
val
=>
{
eventList
.
value
=
res
.
data
[
0
].
newsList
.
map
(
val
=>
{
return
{
return
{
time
:
val
.
newsDate
,
time
:
val
.
newsDate
,
...
...
src/views/overView/component/Timeline.vue
浏览文件 @
52826e66
...
@@ -177,7 +177,7 @@ export default {
...
@@ -177,7 +177,7 @@ export default {
/* 向上节点:线往下伸 */
/* 向上节点:线往下伸 */
.dot.up
::after
{
.dot.up
::after
{
bottom
:
100%
;
bottom
:
100%
;
height
:
1
80
px
;
height
:
1
65
px
;
/* 圆环底部 → 卡片顶 */
/* 圆环底部 → 卡片顶 */
}
}
...
@@ -185,15 +185,15 @@ export default {
...
@@ -185,15 +185,15 @@ export default {
.dot.down
::after
{
.dot.down
::after
{
top
:
100%
;
top
:
100%
;
height
:
1
80
px
;
height
:
1
65
px
;
}
}
.card
{
.card
{
position
:
absolute
;
position
:
absolute
;
height
:
1
80
px
;
height
:
1
65
px
;
width
:
320px
;
width
:
320px
;
padding
:
8px
12px
;
padding
:
8px
12px
;
text-align
:
left
;
text-align
:
left
;
cursor
:
pointer
;
cursor
:
pointer
;
...
@@ -208,6 +208,7 @@ export default {
...
@@ -208,6 +208,7 @@ export default {
line-height
:
26px
;
line-height
:
26px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
justify
;
text-align
:
justify
;
margin-bottom
:
10px
;
}
}
.title
{
.title
{
...
@@ -218,6 +219,7 @@ export default {
...
@@ -218,6 +219,7 @@ export default {
line-height
:
26px
;
line-height
:
26px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
justify
;
text-align
:
justify
;
margin-bottom
:
10px
;
}
}
.content
{
.content
{
...
...
src/views/overView/index.vue
浏览文件 @
52826e66
...
@@ -52,27 +52,20 @@
...
@@ -52,27 +52,20 @@
}}
}}
</div>
</div>
</div>
</div>
<img
<img
class=
"item-card-content-title-image"
:src=
"organizationNews[organizationNewsShow].image"
class=
"item-card-content-title-image"
alt=
""
/>
:src=
"organizationNews[organizationNewsShow].image"
alt=
""
/>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-card-content-text"
>
<div
class=
"item-card-content-text"
>
{{
organizationNews
[
organizationNewsShow
].
content
}}
{{
organizationNews
[
organizationNewsShow
].
content
}}
</div>
</div>
<div
style=
"display: flex; margin-top: 30px"
>
<div
style=
"display: flex; margin-top: 30px"
>
<div
<div
class=
"item-card-content-tag"
v-for=
"(tag, index) in organizationNews[organizationNewsShow].tag"
class=
"item-card-content-tag"
:key=
"index"
:style=
"
{
v-for=
"(tag, index) in organizationNews[organizationNewsShow].tag"
:key=
"index"
:style=
"
{
color: tag.textColor,
color: tag.textColor,
background: tag.color,
background: tag.color,
border: `1px solid ${tag.textColor}`
border: `1px solid ${tag.textColor}`
}"
}">
>
{{
tag
.
text
}}
{{
tag
.
text
}}
</div>
</div>
</div>
</div>
...
@@ -114,13 +107,10 @@
...
@@ -114,13 +107,10 @@
<div
style=
"padding: 30px 23px; height: 400px"
>
<div
style=
"padding: 30px 23px; height: 400px"
>
<div
class=
"waring-item"
v-for=
"(item, index) in warningList"
:key=
"index"
>
<div
class=
"waring-item"
v-for=
"(item, index) in warningList"
:key=
"index"
>
<div
style=
"display: flex; height: 47px"
>
<div
style=
"display: flex; height: 47px"
>
<div
<div
class=
"waring-status"
:style=
"
{
class=
"waring-status"
color: item.status === 0 ? '#CE4F51' : item.status === 1 ? '#FA8C16' : '#52C41A',
:style=
"
{
backgroundColor: item.status === 0 ? '#FFF1F0' : item.status === 1 ? '#FFF7E6' : '#F6FFED'
color: item.status === 0 ? '#CE4F51' : item.status === 1 ? '#FA8C16' : '#52C41A',
}">
backgroundColor: item.status === 0 ? '#FFF1F0' : item.status === 1 ? '#FFF7E6' : '#F6FFED'
}"
>
{{
item
.
status
===
0
?
"特别重大"
:
item
.
status
===
1
?
"重大风险"
:
"一般风险"
}}
{{
item
.
status
===
0
?
"特别重大"
:
item
.
status
===
1
?
"重大风险"
:
"一般风险"
}}
</div>
</div>
<div
class=
"waring-text"
>
<div
class=
"waring-text"
>
...
@@ -424,7 +414,7 @@ function changeOrganizationNews(type) {
...
@@ -424,7 +414,7 @@ function changeOrganizationNews(type) {
:
(
organizationNewsShow
.
value
=
organizationNewsShow
.
value
+
1
);
:
(
organizationNewsShow
.
value
=
organizationNewsShow
.
value
+
1
);
}
}
}
}
onMounted
(()
=>
{});
onMounted
(()
=>
{
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -450,6 +440,7 @@ onMounted(() => {});
...
@@ -450,6 +440,7 @@ onMounted(() => {});
box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding-left
:
160px
;
padding-left
:
160px
;
position
:
relative
;
position
:
relative
;
.header-search-box
{
.header-search-box
{
position
:
absolute
;
position
:
absolute
;
top
:
14px
;
top
:
14px
;
...
@@ -457,6 +448,7 @@ onMounted(() => {});
...
@@ -457,6 +448,7 @@ onMounted(() => {});
display
:
flex
;
display
:
flex
;
gap
:
12px
;
gap
:
12px
;
justify-content
:
flex-end
;
justify-content
:
flex-end
;
.header-search-left
{
.header-search-left
{
width
:
360px
;
width
:
360px
;
height
:
36px
;
height
:
36px
;
...
@@ -464,18 +456,22 @@ onMounted(() => {});
...
@@ -464,18 +456,22 @@ onMounted(() => {});
border-radius
:
4px
;
border-radius
:
4px
;
background
:
rgba
(
255
,
255
,
255
,
0
.3
);
background
:
rgba
(
255
,
255
,
255
,
0
.3
);
display
:
flex
;
display
:
flex
;
.input-box
{
.input-box
{
width
:
324px
;
width
:
324px
;
}
}
.icon
{
.icon
{
width
:
36px
;
width
:
36px
;
height
:
36px
;
height
:
36px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
}
}
.header-search-right
{
.header-search-right
{
width
:
36px
;
width
:
36px
;
height
:
36px
;
height
:
36px
;
...
@@ -483,10 +479,12 @@ onMounted(() => {});
...
@@ -483,10 +479,12 @@ onMounted(() => {});
border-radius
:
4px
;
border-radius
:
4px
;
background
:
rgba
(
255
,
255
,
255
,
0
.3
);
background
:
rgba
(
255
,
255
,
255
,
0
.3
);
cursor
:
pointer
;
cursor
:
pointer
;
.header-img-box
{
.header-img-box
{
width
:
19px
;
width
:
19px
;
height
:
24px
;
height
:
24px
;
margin
:
4px
auto
;
margin
:
4px
auto
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
...
@@ -590,6 +588,7 @@ onMounted(() => {});
...
@@ -590,6 +588,7 @@ onMounted(() => {});
font-size
:
14px
;
font-size
:
14px
;
}
}
}
}
.item-header-text-1
{
.item-header-text-1
{
// width: 150px;
// width: 150px;
height
:
48px
;
height
:
48px
;
...
@@ -641,7 +640,7 @@ onMounted(() => {});
...
@@ -641,7 +640,7 @@ onMounted(() => {});
}
}
.item-card-content-tag
{
.item-card-content-tag
{
width
:
7
4
px
;
width
:
7
6
px
;
height
:
24px
;
height
:
24px
;
padding
:
1px
8px
1px
8px
;
padding
:
1px
8px
1px
8px
;
margin
:
2px
;
margin
:
2px
;
...
@@ -682,7 +681,7 @@ onMounted(() => {});
...
@@ -682,7 +681,7 @@ onMounted(() => {});
.item-card-content
{
.item-card-content
{
height
:
100%
;
height
:
100%
;
width
:
calc
(
100%
-
50px
)
;
width
:
454px
;
padding
:
20px
;
padding
:
20px
;
.item-card-content-header
{
.item-card-content-header
{
...
@@ -1002,10 +1001,12 @@ onMounted(() => {});
...
@@ -1002,10 +1001,12 @@ onMounted(() => {});
}
}
}
}
}
}
:deep
(
.el-input__wrapper
)
{
:deep
(
.el-input__wrapper
)
{
box-shadow
:
none
;
box-shadow
:
none
;
background
:
none
;
background
:
none
;
}
}
:deep
(
.el-input__wrapper
:hover
)
{
:deep
(
.el-input__wrapper
:hover
)
{
box-shadow
:
none
!
important
;
box-shadow
:
none
!
important
;
}
}
...
@@ -1013,6 +1014,7 @@ onMounted(() => {});
...
@@ -1013,6 +1014,7 @@ onMounted(() => {});
:deep
(
.el-input__wrapper.is-focus
)
{
:deep
(
.el-input__wrapper.is-focus
)
{
box-shadow
:
none
!
important
;
box-shadow
:
none
!
important
;
}
}
:deep
(
.el-input__inner
::placeholder
)
{
:deep
(
.el-input__inner
::placeholder
)
{
color
:
rgba
(
132
,
136
,
142
,
1
);
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
...
src/views/thinkTank/ReportDetail/index.vue
浏览文件 @
52826e66
...
@@ -63,10 +63,10 @@
...
@@ -63,10 +63,10 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"main"
>
<div
class=
"main"
>
<ReportAnalysis
v-if=
"tabActiveName === '报告分析'"
></ReportAnalysis>
<ReportAnalysis
v-if=
"tabActiveName === '报告分析'"
></ReportAnalysis>
<PolicyTracking
v-else
></PolicyTracking>
<PolicyTracking
v-else
></PolicyTracking>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -86,7 +86,8 @@ const switchTab = name => {
...
@@ -86,7 +86,8 @@ const switchTab = name => {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.wrap
{
.wrap
{
width
:
1920px
;
width
:
1920px
;
height
:
984px
;
// height: 984px;
.header
{
.header
{
width
:
1920px
;
width
:
1920px
;
height
:
188px
;
height
:
188px
;
...
@@ -95,12 +96,14 @@ const switchTab = name => {
...
@@ -95,12 +96,14 @@ const switchTab = name => {
border-top
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-top
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.header-top
{
.header-top
{
margin-top
:
20px
;
margin-top
:
20px
;
margin-left
:
248px
;
margin-left
:
248px
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
margin-right
:
160px
;
margin-right
:
160px
;
.header-top-left
{
.header-top-left
{
.title
{
.title
{
height
:
26px
;
height
:
26px
;
...
@@ -112,6 +115,7 @@ const switchTab = name => {
...
@@ -112,6 +115,7 @@ const switchTab = name => {
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
}
}
.en-title
{
.en-title
{
height
:
24px
;
height
:
24px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
...
@@ -122,10 +126,12 @@ const switchTab = name => {
...
@@ -122,10 +126,12 @@ const switchTab = name => {
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
}
}
.tag-box
{
.tag-box
{
margin-top
:
11px
;
margin-top
:
11px
;
display
:
flex
;
display
:
flex
;
gap
:
8px
;
gap
:
8px
;
.tag
{
.tag
{
height
:
26px
;
height
:
26px
;
padding
:
0
8px
;
padding
:
0
8px
;
...
@@ -143,6 +149,7 @@ const switchTab = name => {
...
@@ -143,6 +149,7 @@ const switchTab = name => {
}
}
}
}
}
}
.header-top-right
{
.header-top-right
{
.name
{
.name
{
height
:
24px
;
height
:
24px
;
...
@@ -154,6 +161,7 @@ const switchTab = name => {
...
@@ -154,6 +161,7 @@ const switchTab = name => {
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
right
;
text-align
:
right
;
}
}
.time
{
.time
{
height
:
24px
;
height
:
24px
;
margin-top
:
5px
;
margin-top
:
5px
;
...
@@ -167,6 +175,7 @@ const switchTab = name => {
...
@@ -167,6 +175,7 @@ const switchTab = name => {
}
}
}
}
}
}
.header-bottom
{
.header-bottom
{
margin
:
0
auto
;
margin
:
0
auto
;
margin-top
:
30px
;
margin-top
:
30px
;
...
@@ -174,13 +183,15 @@ const switchTab = name => {
...
@@ -174,13 +183,15 @@ const switchTab = name => {
height
:
48px
;
height
:
48px
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
.tab-box
{
.tab-box
{
width
:
224px
;
width
:
224px
;
height
:
48px
;
height
:
48px
;
display
:
flex
;
display
:
flex
;
gap
:
24px
;
gap
:
24px
;
.tab
{
.tab
{
width
:
9
2
px
;
width
:
9
4
px
;
height
:
48px
;
height
:
48px
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
@@ -188,14 +199,17 @@ const switchTab = name => {
...
@@ -188,14 +199,17 @@ const switchTab = name => {
gap
:
4px
;
gap
:
4px
;
cursor
:
pointer
;
cursor
:
pointer
;
border-bottom
:
2px
solid
transparent
;
border-bottom
:
2px
solid
transparent
;
.icon
{
.icon
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
.text
{
.text
{
height
:
24px
;
height
:
24px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
...
@@ -204,18 +218,22 @@ const switchTab = name => {
...
@@ -204,18 +218,22 @@ const switchTab = name => {
font-weight
:
400
;
font-weight
:
400
;
line-height
:
24px
;
line-height
:
24px
;
}
}
.textActive
{
.textActive
{
color
:
rgba
(
5
,
95
,
194
,
1
);
color
:
rgba
(
5
,
95
,
194
,
1
);
font-weight
:
700
;
font-weight
:
700
;
}
}
}
}
.tabActive
{
.tabActive
{
border-bottom
:
2px
solid
rgba
(
5
,
95
,
194
,
1
);
border-bottom
:
2px
solid
rgba
(
5
,
95
,
194
,
1
);
}
}
}
}
.btn-box
{
.btn-box
{
display
:
flex
;
display
:
flex
;
gap
:
12px
;
gap
:
12px
;
.btn
{
.btn
{
width
:
120px
;
width
:
120px
;
height
:
36px
;
height
:
36px
;
...
@@ -227,16 +245,19 @@ const switchTab = name => {
...
@@ -227,16 +245,19 @@ const switchTab = name => {
align-items
:
center
;
align-items
:
center
;
justify-content
:
center
;
justify-content
:
center
;
gap
:
8px
;
gap
:
8px
;
.icon
{
.icon
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
.text
{
.text
{
width
:
6
4
px
;
width
:
6
6
px
;
height
:
22px
;
height
:
22px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -247,18 +268,21 @@ const switchTab = name => {
...
@@ -247,18 +268,21 @@ const switchTab = name => {
text-align
:
center
;
text-align
:
center
;
}
}
}
}
.btn1
{
.btn1
{
border-radius
:
6px
;
border-radius
:
6px
;
background
:
var
(
--
color-main-active
);
background
:
var
(
--
color-main-active
);
.text
{
color
:
rgba
(
255
,
255
,
255
,
1
);
.text
{
}
color
:
rgba
(
255
,
255
,
255
,
1
);
}
}
}
}
}
}
}
}
}
.main
{
width
:
100%
;
.main
{
}
width
:
100%
;
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/thinkTank/ReportDetail/policyTracking/index.vue
浏览文件 @
52826e66
...
@@ -17,10 +17,10 @@
...
@@ -17,10 +17,10 @@
<div
class=
"box1-main"
>
<div
class=
"box1-main"
>
<div
class=
"box1-item"
v-for=
"(item, index) in box1Data"
:key=
"index"
>
<div
class=
"box1-item"
v-for=
"(item, index) in box1Data"
:key=
"index"
>
<div
class=
"left"
>
<div
class=
"left"
>
{{
i
tem
.
id
}}
{{
i
ndex
+
1
}}
</div>
</div>
<div
class=
"center"
>
<div
class=
"center"
>
<div
class=
"title"
>
{{
item
.
title
}}
</div>
<div
class=
"title"
>
{{
item
.
content
}}
</div>
<div
class=
"tag-box"
>
<div
class=
"tag-box"
>
<div
class=
"tag"
v-for=
"(val, idx) in item.tagList"
:key=
"idx"
>
<div
class=
"tag"
v-for=
"(val, idx) in item.tagList"
:key=
"idx"
>
{{
val
}}
{{
val
}}
...
@@ -28,8 +28,15 @@
...
@@ -28,8 +28,15 @@
</div>
</div>
<div
class=
"file-box"
>
<div
class=
"file-box"
>
<div
class=
"file-item"
v-for=
"(vall, idxx) in item.fileList"
:key=
"idxx"
>
<div
class=
"file-item"
v-for=
"(vall, idxx) in item.fileList"
:key=
"idxx"
>
<div
class=
"file-item-left"
>
{{
vall
.
type
}}
</div>
<div
class=
"file-item-left"
>
法案
</div>
<div
class=
"file-item-center"
>
{{
vall
.
name
}}
</div>
<div
class=
"file-item-center"
>
{{
vall
.
relationBillsList
}}
</div>
<div
class=
"file-item-right"
>
<img
src=
"@/assets/images/icon-right-circle.png"
alt=
""
/>
</div>
</div>
<div
class=
"file-item"
v-for=
"(vall, idxx) in item.fileList"
:key=
"idxx"
>
<div
class=
"file-item-left"
>
政令
</div>
<div
class=
"file-item-center"
>
{{
vall
.
relationAdList
}}
</div>
<div
class=
"file-item-right"
>
<div
class=
"file-item-right"
>
<img
src=
"@/assets/images/icon-right-circle.png"
alt=
""
/>
<img
src=
"@/assets/images/icon-right-circle.png"
alt=
""
/>
</div>
</div>
...
@@ -46,14 +53,7 @@
...
@@ -46,14 +53,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box1-footer"
>
<div
class=
"info"
>
{{
`共105项调查`
}}
</div>
<div
class=
"page-box"
>
<el-pagination
:page-size=
"10"
background
layout=
"prev, pager, next"
:total=
"120"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -79,13 +79,13 @@
...
@@ -79,13 +79,13 @@
<div
class=
"line"
v-if=
"index
<
5
"
></div>
<div
class=
"line"
v-if=
"index
<
5
"
></div>
</div>
</div>
<div
class=
"box2-item-center"
>
<div
class=
"box2-item-center"
>
<div
class=
"title"
>
{{
item
.
title
}}
</div>
<div
class=
"title"
>
{{
item
.
sjbt
}}
</div>
<div
class=
"content"
>
{{
item
.
content
}}
</div>
<div
class=
"content"
>
{{
item
.
sjnr
}}
</div>
</div>
</div>
<div
class=
"box2-item-right"
>
<div
class=
"box2-item-right"
>
<div
class=
"time"
>
{{
item
.
time
}}
</div>
<div
class=
"time"
>
{{
item
.
time
}}
</div>
<div
class=
"img-box"
>
<div
class=
"img-box"
>
<img
:src=
"item.im
g
"
alt=
""
/>
<img
:src=
"item.im
ageUrl
"
alt=
""
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -102,7 +102,12 @@
...
@@ -102,7 +102,12 @@
<
script
setup
>
<
script
setup
>
import
{
ref
,
onMounted
}
from
"vue"
;
import
{
ref
,
onMounted
}
from
"vue"
;
import
{
getThinkTankReportPolicy
,
getThinkTankReportPolicyAction
}
from
"@/api/thinkTank/overview"
;
import
{
useRouter
}
from
"vue-router"
;
const
router
=
useRouter
();
// 政策建议落实情况
// 政策建议落实情况
const
box1Data
=
ref
([
const
box1Data
=
ref
([
{
{
...
@@ -257,6 +262,19 @@ const box1Data = ref([
...
@@ -257,6 +262,19 @@ const box1Data = ref([
}
}
]);
]);
const
handleGetThinkTankReportPolicy
=
async
()
=>
{
try
{
const
res
=
await
getThinkTankReportPolicy
(
router
.
currentRoute
.
_value
.
params
.
id
);
console
.
log
(
"政策建议落实情况"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box1Data
.
value
=
res
.
data
}
}
catch
(
error
)
{
console
.
error
(
"获取政策建议落实情况rror"
,
error
);
}
};
// 相关政策动态
// 相关政策动态
const
box2Data
=
ref
([
const
box2Data
=
ref
([
{
{
...
@@ -296,6 +314,24 @@ const box2Data = ref([
...
@@ -296,6 +314,24 @@ const box2Data = ref([
img
:
1
img
:
1
}
}
]);
]);
const
handleGetThinkTankReportPolicyAction
=
async
()
=>
{
try
{
const
res
=
await
getThinkTankReportPolicyAction
(
router
.
currentRoute
.
_value
.
params
.
id
);
console
.
log
(
"相关政策动态"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box2Data
.
value
=
res
.
data
}
}
catch
(
error
)
{
console
.
error
(
"获取相关政策动态rror"
,
error
);
}
};
onMounted
(
async
()
=>
{
handleGetThinkTankReportPolicy
()
handleGetThinkTankReportPolicyAction
()
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -303,11 +339,14 @@ const box2Data = ref([
...
@@ -303,11 +339,14 @@ const box2Data = ref([
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
gap
:
16px
;
gap
:
16px
;
height
:
100%
;
.box-header
{
.box-header
{
width
:
100%
;
width
:
100%
;
height
:
50px
;
height
:
50px
;
display
:
flex
;
display
:
flex
;
position
:
relative
;
position
:
relative
;
.header-left
{
.header-left
{
margin-top
:
18px
;
margin-top
:
18px
;
width
:
8px
;
width
:
8px
;
...
@@ -315,6 +354,7 @@ const box2Data = ref([
...
@@ -315,6 +354,7 @@ const box2Data = ref([
border-radius
:
0
4px
4px
0
;
border-radius
:
0
4px
4px
0
;
background
:
var
(
--
color-main-active
);
background
:
var
(
--
color-main-active
);
}
}
.title
{
.title
{
margin-left
:
14px
;
margin-left
:
14px
;
margin-top
:
14px
;
margin-top
:
14px
;
...
@@ -325,6 +365,7 @@ const box2Data = ref([
...
@@ -325,6 +365,7 @@ const box2Data = ref([
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
}
}
.header-btn-box
{
.header-btn-box
{
position
:
absolute
;
position
:
absolute
;
top
:
15px
;
top
:
15px
;
...
@@ -332,6 +373,7 @@ const box2Data = ref([
...
@@ -332,6 +373,7 @@ const box2Data = ref([
display
:
flex
;
display
:
flex
;
justify-content
:
flex-end
;
justify-content
:
flex-end
;
gap
:
8px
;
gap
:
8px
;
.btn
{
.btn
{
height
:
28px
;
height
:
28px
;
padding
:
0
8px
;
padding
:
0
8px
;
...
@@ -345,11 +387,13 @@ const box2Data = ref([
...
@@ -345,11 +387,13 @@ const box2Data = ref([
font-weight
:
400
;
font-weight
:
400
;
line-height
:
28px
;
line-height
:
28px
;
}
}
.btnActive
{
.btnActive
{
color
:
var
(
--
color-main-active
);
color
:
var
(
--
color-main-active
);
border
:
1px
solid
var
(
--
color-main-active
);
border
:
1px
solid
var
(
--
color-main-active
);
}
}
}
}
.header-right
{
.header-right
{
position
:
absolute
;
position
:
absolute
;
top
:
14px
;
top
:
14px
;
...
@@ -357,9 +401,11 @@ const box2Data = ref([
...
@@ -357,9 +401,11 @@ const box2Data = ref([
display
:
flex
;
display
:
flex
;
justify-content
:
flex-end
;
justify-content
:
flex-end
;
gap
:
4px
;
gap
:
4px
;
.icon
{
.icon
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
...
@@ -367,26 +413,33 @@ const box2Data = ref([
...
@@ -367,26 +413,33 @@ const box2Data = ref([
}
}
}
}
}
}
.left
{
.left
{
height
:
1442px
;
height
:
100%
;
.box1
{
.box1
{
margin-top
:
16px
;
margin-top
:
16px
;
width
:
1104px
;
width
:
1104px
;
height
:
1
405px
;
height
:
1
00%
;
margin-bottom
:
16px
;
margin-bottom
:
16px
;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
10px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.box1-main
{
.box1-main
{
width
:
1056px
;
width
:
1056px
;
height
:
1280px
;
height
:
1280px
;
margin
:
0
auto
;
margin
:
0
auto
;
overflow
:
hidden
;
overflow-y
:
auto
;
.box1-item
{
.box1-item
{
height
:
128px
;
height
:
128px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
display
:
flex
;
display
:
flex
;
position
:
relative
;
position
:
relative
;
.left
{
.left
{
width
:
28px
;
width
:
28px
;
height
:
28px
;
height
:
28px
;
...
@@ -402,8 +455,11 @@ const box2Data = ref([
...
@@ -402,8 +455,11 @@ const box2Data = ref([
font-weight
:
400
;
font-weight
:
400
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
}
}
.center
{
.center
{
width
:
850px
;
margin-left
:
18px
;
margin-left
:
18px
;
.title
{
.title
{
margin-top
:
16px
;
margin-top
:
16px
;
height
:
24px
;
height
:
24px
;
...
@@ -415,10 +471,12 @@ const box2Data = ref([
...
@@ -415,10 +471,12 @@ const box2Data = ref([
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
}
}
.tag-box
{
.tag-box
{
display
:
flex
;
display
:
flex
;
margin-top
:
7px
;
margin-top
:
7px
;
gap
:
8px
;
gap
:
8px
;
.tag
{
.tag
{
height
:
22px
;
height
:
22px
;
padding
:
0
8px
;
padding
:
0
8px
;
...
@@ -435,10 +493,12 @@ const box2Data = ref([
...
@@ -435,10 +493,12 @@ const box2Data = ref([
text-align
:
left
;
text-align
:
left
;
}
}
}
}
.file-box
{
.file-box
{
margin-top
:
7px
;
margin-top
:
7px
;
display
:
flex
;
display
:
flex
;
gap
:
8px
;
gap
:
8px
;
.file-item
{
.file-item
{
height
:
32px
;
height
:
32px
;
padding
:
0
8px
;
padding
:
0
8px
;
...
@@ -446,6 +506,7 @@ const box2Data = ref([
...
@@ -446,6 +506,7 @@ const box2Data = ref([
background
:
rgba
(
246
,
250
,
255
,
1
);
background
:
rgba
(
246
,
250
,
255
,
1
);
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
.file-item-left
{
.file-item-left
{
height
:
22px
;
height
:
22px
;
padding
:
0
4px
;
padding
:
0
4px
;
...
@@ -460,6 +521,7 @@ const box2Data = ref([
...
@@ -460,6 +521,7 @@ const box2Data = ref([
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
}
}
.file-item-center
{
.file-item-center
{
margin-left
:
12px
;
margin-left
:
12px
;
color
:
var
(
--
color-main-active
);
color
:
var
(
--
color-main-active
);
...
@@ -470,10 +532,12 @@ const box2Data = ref([
...
@@ -470,10 +532,12 @@ const box2Data = ref([
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
}
}
.file-item-right
{
.file-item-right
{
margin-left
:
12px
;
margin-left
:
12px
;
width
:
20px
;
width
:
20px
;
height
:
20px
;
height
:
20px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
...
@@ -482,6 +546,7 @@ const box2Data = ref([
...
@@ -482,6 +546,7 @@ const box2Data = ref([
}
}
}
}
}
}
.right
{
.right
{
position
:
absolute
;
position
:
absolute
;
top
:
16px
;
top
:
16px
;
...
@@ -491,6 +556,7 @@ const box2Data = ref([
...
@@ -491,6 +556,7 @@ const box2Data = ref([
justify-content
:
flex-end
;
justify-content
:
flex-end
;
align-items
:
center
;
align-items
:
center
;
gap
:
9px
;
gap
:
9px
;
.text
{
.text
{
height
:
24px
;
height
:
24px
;
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -501,9 +567,11 @@ const box2Data = ref([
...
@@ -501,9 +567,11 @@ const box2Data = ref([
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
right
;
text-align
:
right
;
}
}
.icon
{
.icon
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
...
@@ -512,12 +580,14 @@ const box2Data = ref([
...
@@ -512,12 +580,14 @@ const box2Data = ref([
}
}
}
}
}
}
.box1-footer
{
.box1-footer
{
height
:
50px
;
height
:
50px
;
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding
:
20px
;
padding
:
20px
;
.info
{
.info
{
color
:
rgba
(
132
,
136
,
142
,
1
);
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -539,24 +609,30 @@ const box2Data = ref([
...
@@ -539,24 +609,30 @@ const box2Data = ref([
border-radius
:
10px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
.box2-main
{
.box2-main
{
margin
:
0
auto
;
margin
:
0
auto
;
margin-top
:
15px
;
margin-top
:
15px
;
width
:
459px
;
width
:
459px
;
height
:
654px
;
height
:
654px
;
overflow
:
hidden
;
.box2-item
{
.box2-item
{
height
:
109px
;
height
:
109px
;
display
:
flex
;
display
:
flex
;
.box2-item-left
{
.box2-item-left
{
.point
{
.point
{
margin-left
:
14px
;
margin-left
:
14px
;
width
:
10px
;
width
:
10px
;
height
:
10px
;
height
:
10px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
}
}
}
}
.line
{
.line
{
width
:
2px
;
width
:
2px
;
height
:
109px
;
height
:
109px
;
...
@@ -564,8 +640,10 @@ const box2Data = ref([
...
@@ -564,8 +640,10 @@ const box2Data = ref([
margin-left
:
18px
;
margin-left
:
18px
;
}
}
}
}
.box2-item-center
{
.box2-item-center
{
margin-left
:
11px
;
margin-left
:
11px
;
.title
{
.title
{
width
:
314px
;
width
:
314px
;
height
:
24px
;
height
:
24px
;
...
@@ -580,6 +658,7 @@ const box2Data = ref([
...
@@ -580,6 +658,7 @@ const box2Data = ref([
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
white-space
:
nowrap
;
}
}
.content
{
.content
{
width
:
314px
;
width
:
314px
;
height
:
48px
;
height
:
48px
;
...
@@ -593,8 +672,10 @@ const box2Data = ref([
...
@@ -593,8 +672,10 @@ const box2Data = ref([
overflow
:
hidden
;
overflow
:
hidden
;
}
}
}
}
.box2-item-right
{
.box2-item-right
{
margin-left
:
18px
;
margin-left
:
18px
;
.time
{
.time
{
height
:
22px
;
height
:
22px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
...
@@ -608,11 +689,13 @@ const box2Data = ref([
...
@@ -608,11 +689,13 @@ const box2Data = ref([
text-overflow
:
ellipsis
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
white-space
:
nowrap
;
}
}
.img-box
{
.img-box
{
margin-top
:
14px
;
margin-top
:
14px
;
width
:
78px
;
width
:
78px
;
height
:
50px
;
height
:
50px
;
border-radius
:
2px
;
border-radius
:
2px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
...
@@ -621,6 +704,7 @@ const box2Data = ref([
...
@@ -621,6 +704,7 @@ const box2Data = ref([
}
}
}
}
}
}
.box2-footer
{
.box2-footer
{
margin
:
10px
auto
;
margin
:
10px
auto
;
width
:
108px
;
width
:
108px
;
...
@@ -630,9 +714,11 @@ const box2Data = ref([
...
@@ -630,9 +714,11 @@ const box2Data = ref([
justify-content
:
center
;
justify-content
:
center
;
gap
:
4px
;
gap
:
4px
;
cursor
:
pointer
;
cursor
:
pointer
;
&
:hover
{
&
:hover
{
background
:
var
(
--
color-bg-hover
);
background
:
var
(
--
color-bg-hover
);
}
}
.text
{
.text
{
color
:
var
(
--
color-main-active
);
color
:
var
(
--
color-main-active
);
height
:
22px
;
height
:
22px
;
...
@@ -642,9 +728,11 @@ const box2Data = ref([
...
@@ -642,9 +728,11 @@ const box2Data = ref([
line-height
:
22px
;
line-height
:
22px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
}
}
.icon
{
.icon
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
img
{
img
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
...
...
src/views/thinkTank/ReportDetail/reportAnalysis/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/ThinkTankDetail/PolicyTracking/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/ThinkTankDetail/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/ThinkTankDetail/thinkDynamics/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/ThinkTankDetail/thinkInfo/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/assets/images/right-left-icon1.png
0 → 100644
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/assets/images/right-left-icon2.png
0 → 100644
浏览文件 @
52826e66
差异被折叠。
点击展开。
src/views/thinkTank/index.vue
浏览文件 @
52826e66
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论