Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
26ddfb50
提交
26ddfb50
authored
12月 19, 2025
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
b243f69b
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
161 行增加
和
108 行删除
+161
-108
introduction.js
src/api/decree/introduction.js
+13
-0
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/decree/decreeHome/index.vue
+42
-21
index.vue
src/views/decree/decreeLayout/index.vue
+34
-9
index.vue
src/views/decree/decreeLayout/influence/index.vue
+65
-67
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+7
-11
没有找到文件。
src/api/decree/introduction.js
浏览文件 @
26ddfb50
...
@@ -35,3 +35,15 @@ export function getDecreeOrganization(params) {
...
@@ -35,3 +35,15 @@ export function getDecreeOrganization(params) {
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/assets/icons/default-icon1.png
0 → 100644
浏览文件 @
26ddfb50
6.5 KB
src/assets/icons/default-icon2.png
0 → 100644
浏览文件 @
26ddfb50
8.2 KB
src/views/decree/decreeHome/index.vue
浏览文件 @
26ddfb50
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
<div
class=
"home-main-header-item-box"
>
<div
class=
"home-main-header-item-box"
>
<div
class=
"item"
v-for=
"(item, index) in govInsList"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
<div
class=
"item"
v-for=
"(item, index) in govInsList"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
<div
class=
"item-left"
>
<div
class=
"item-left"
>
<img
:src=
"item.img"
alt=
""
/>
<img
:src=
"item.img
?item.img: DefaultIcon2
"
alt=
""
/>
</div>
</div>
<div
class=
"item-right"
>
{{
item
.
name
}}
</div>
<div
class=
"item-right"
>
{{
item
.
name
}}
</div>
</div>
</div>
...
@@ -137,7 +137,7 @@
...
@@ -137,7 +137,7 @@
{{
"查看详情 >"
}}
{{
"查看详情 >"
}}
</div>
</div>
</div>
</div>
<el-carousel
ref=
"carouselRef"
trigger=
"click"
height=
"3
76
px"
:autoplay=
"true"
>
<el-carousel
ref=
"carouselRef"
trigger=
"click"
height=
"3
95
px"
:autoplay=
"true"
>
<el-carousel-item
v-for=
"(item, index) in box1DataList"
:key=
"index"
>
<el-carousel-item
v-for=
"(item, index) in box1DataList"
:key=
"index"
>
<div
class=
"box1-main"
>
<div
class=
"box1-main"
>
<div
class=
"box1-main-left"
>
<div
class=
"box1-main-left"
>
...
@@ -147,19 +147,18 @@
...
@@ -147,19 +147,18 @@
<div
class=
"box1-main-right-title"
>
<div
class=
"box1-main-right-title"
>
{{
item
.
name
}}
{{
item
.
name
}}
</div>
</div>
<div
class=
"box1-main-right-info"
v-if=
"item.industryList"
>
<div
class=
"box1-main-right-info"
>
<div
<div
class=
"tag"
class=
"tag"
:class=
"
{
:class=
"
{
tag1: tag.status == 1,
tag1: tag.status == 1,
tag2: tag.status == 2,
tag2: tag.status == 2,
tag3: tag.status == 3,
tag3: tag.status == 3
tag4: tag.status == 4
}"
}"
v-for="(tag, index) in item.industryList"
v-for="(tag, index) in item.industryList"
:key="index"
:key="index"
>
>
{{
tag
.
n
ame
}}
{{
tag
.
industryN
ame
}}
</div>
</div>
</div>
</div>
<div
class=
"box1-main-right-center"
>
<div
class=
"box1-main-right-center"
>
...
@@ -336,7 +335,7 @@
...
@@ -336,7 +335,7 @@
<DivideHeader
id=
"position4"
class=
"divide4"
:titleText=
"'资源库'"
></DivideHeader>
<DivideHeader
id=
"position4"
class=
"divide4"
:titleText=
"'资源库'"
></DivideHeader>
<div
class=
"home-main-footer-header"
>
<div
class=
"home-main-footer-header"
>
<div
class=
"btn-box"
>
<div
class=
"btn-box"
>
<div
class=
"btn-wrapper"
>
<div
<div
class=
"btn"
class=
"btn"
:class=
"
{ btnActive: activeCate === cate.id }"
:class=
"
{ btnActive: activeCate === cate.id }"
...
@@ -346,7 +345,7 @@
...
@@ -346,7 +345,7 @@
>
>
{{
cate
.
name
}}
{{
cate
.
name
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"select-box"
>
<div
class=
"select-box"
>
<div
class=
"paixu-btn"
@
click=
"handleSwithSort"
>
<div
class=
"paixu-btn"
@
click=
"handleSwithSort"
>
...
@@ -420,7 +419,9 @@
...
@@ -420,7 +419,9 @@
<div
class=
"main-item-left"
>
<div
class=
"main-item-left"
>
<div
class=
"left-left"
>
{{
item
.
time
}}
</div>
<div
class=
"left-left"
>
{{
item
.
time
}}
</div>
<div
class=
"left-right"
>
<div
class=
"left-right"
>
<div
class=
"icon"
></div>
<div
class=
"icon"
>
<img
:src=
"item.orgImage?item.orgImage:DefaultIcon2"
alt=
""
>
</div>
<div
class=
"line"
v-if=
"index !== 9 && index !== totalDecreesNum - 1"
></div>
<div
class=
"line"
v-if=
"index !== 9 && index !== totalDecreesNum - 1"
></div>
</div>
</div>
</div>
</div>
...
@@ -496,6 +497,9 @@ import getCalendarHeatChart from "./utils/cleandarHeat";
...
@@ -496,6 +497,9 @@ import getCalendarHeatChart from "./utils/cleandarHeat";
import
setChart
from
"@/utils/setChart"
;
import
setChart
from
"@/utils/setChart"
;
import
DefaultIcon1
from
'@/assets/icons/default-icon1.png'
import
DefaultIcon2
from
'@/assets/icons/default-icon2.png'
import
p1
from
"./assets/images/iconp1.png"
;
import
p1
from
"./assets/images/iconp1.png"
;
import
p2
from
"./assets/images/iconp2.png"
;
import
p2
from
"./assets/images/iconp2.png"
;
import
p3
from
"./assets/images/iconp3.png"
;
import
p3
from
"./assets/images/iconp3.png"
;
...
@@ -674,7 +678,7 @@ const handleClickToDetail = () => {
...
@@ -674,7 +678,7 @@ const handleClickToDetail = () => {
console
.
log
(
"当前 Carousel 激活索引:"
,
activeIndex
);
console
.
log
(
"当前 Carousel 激活索引:"
,
activeIndex
);
const
id
=
box1DataList
.
value
[
activeIndex
].
id
const
id
=
box1DataList
.
value
[
activeIndex
].
id
;
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
path
:
"/decreeLayout"
,
path
:
"/decreeLayout"
,
...
@@ -824,7 +828,7 @@ const handleClickPerson = () => {
...
@@ -824,7 +828,7 @@ const handleClickPerson = () => {
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
path
:
"/characterPage"
,
query
:
{
query
:
{
type
:
1
// 1 2 3
type
:
3
// 1 2 3
}
}
}
);
}
);
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
...
@@ -1201,7 +1205,7 @@ const handleGetDecreeOrderList = async () => {
...
@@ -1201,7 +1205,7 @@ const handleGetDecreeOrderList = async () => {
decreeList
.
value
=
[];
decreeList
.
value
=
[];
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'资源库列表error'
,
error
);
console
.
error
(
"资源库列表error"
,
error
);
decreeList
.
value
=
[];
decreeList
.
value
=
[];
}
}
}
;
}
;
...
@@ -1679,12 +1683,16 @@ onMounted(async () => {
...
@@ -1679,12 +1683,16 @@ onMounted(async () => {
margin
-
left
:
28
px
;
margin
-
left
:
28
px
;
flex
:
1
;
flex
:
1
;
.
box1
-
main
-
right
-
title
{
.
box1
-
main
-
right
-
title
{
height
:
26
px
;
width
:
100
%
;
// height: 26px;
color
:
var
(
--
color
-
main
-
active
);
color
:
var
(
--
color
-
main
-
active
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
20
px
;
font
-
size
:
20
px
;
font
-
weight
:
700
;
font
-
weight
:
700
;
line
-
height
:
26
px
;
line
-
height
:
26
px
;
overflow
:
hidden
;
text
-
overflow
:
ellipsis
;
white
-
space
:
nowrap
;
}
}
.
box1
-
main
-
right
-
info
{
.
box1
-
main
-
right
-
info
{
margin
-
top
:
14
px
;
margin
-
top
:
14
px
;
...
@@ -1693,18 +1701,29 @@ onMounted(async () => {
...
@@ -1693,18 +1701,29 @@ onMounted(async () => {
.
tag
{
.
tag
{
height
:
24
px
;
height
:
24
px
;
line
-
height
:
24
px
;
line
-
height
:
24
px
;
padding
:
1
px
8
px
;
padding
:
0
8
px
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
border
-
radius
:
4
px
;
border
-
radius
:
4
px
;
margin
-
right
:
5
px
;
margin
-
right
:
5
px
;
border
:
1
px
solid
rgba
(
255
,
163
,
158
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
background
:
rgba
(
255
,
241
,
240
,
1
);
}
}
.
tag1
{
.
tag1
{
border
:
1
px
solid
rgba
(
135
,
232
,
222
,
1
);
color
:
rgba
(
19
,
168
,
168
,
1
);
background
:
rgba
(
230
,
255
,
251
,
1
);
}
}
.
tag2
{
.
tag2
{
border
:
1
px
solid
rgba
(
186
,
224
,
255
,
1
);
border
:
1
px
solid
rgba
(
186
,
224
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
color
:
rgba
(
22
,
119
,
255
,
1
);
}
}
.
tag3
{
border
:
1
px
solid
rgba
(
255
,
229
,
143
,
1
);
color
:
rgba
(
250
,
173
,
20
,
1
);
background
:
rgba
(
255
,
251
,
230
,
1
);
}
.
tag4
{
.
tag4
{
border
:
1
px
solid
rgba
(
255
,
163
,
158
,
1
);
border
:
1
px
solid
rgba
(
255
,
163
,
158
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
color
:
rgba
(
245
,
34
,
45
,
1
);
...
@@ -2845,13 +2864,11 @@ onMounted(async () => {
...
@@ -2845,13 +2864,11 @@ onMounted(async () => {
width
:
1450
px
;
width
:
1450
px
;
overflow
-
x
:
auto
;
overflow
-
x
:
auto
;
overflow
-
y
:
hidden
;
overflow
-
y
:
hidden
;
.
btn
-
wrapper
{
width
:
1880
px
;
display
:
flex
;
display
:
flex
;
gap
:
10
px
;
gap
:
8
px
;
overflow
-
x
:
auto
;
white
-
space
:
nowrap
;
overflow
-
y
:
hidden
;
.
btn
{
.
btn
{
min
-
width
:
min
-
content
;
height
:
42
px
;
height
:
42
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font
-
family
:
Microsoft
YaHei
;
font
-
family
:
Microsoft
YaHei
;
...
@@ -2875,7 +2892,7 @@ onMounted(async () => {
...
@@ -2875,7 +2892,7 @@ onMounted(async () => {
background
:
rgba
(
20
,
89
,
187
,
1
);
background
:
rgba
(
20
,
89
,
187
,
1
);
}
}
}
}
}
}
}
.
select
-
box
{
.
select
-
box
{
margin
-
top
:
5
px
;
margin
-
top
:
5
px
;
...
@@ -3037,7 +3054,11 @@ onMounted(async () => {
...
@@ -3037,7 +3054,11 @@ onMounted(async () => {
width
:
24
px
;
width
:
24
px
;
height
:
24
px
;
height
:
24
px
;
border
-
radius
:
12
px
;
border
-
radius
:
12
px
;
background
:
#
ccc
;
overflow
:
hidden
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
}
.
line
{
.
line
{
height
:
112
px
;
height
:
112
px
;
...
...
src/views/decree/decreeLayout/index.vue
浏览文件 @
26ddfb50
...
@@ -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"
>
{{
"唐纳德·约翰·特朗普(Donald John Trump)"
}}
</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
;
...
...
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
26ddfb50
...
@@ -30,7 +30,7 @@
...
@@ -30,7 +30,7 @@
</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"
>
...
@@ -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
);
// 只看中国企业
...
@@ -224,6 +230,7 @@ const handleGetHylyList = async () => {
...
@@ -224,6 +230,7 @@ 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
)
{
}
}
;
}
;
...
@@ -312,26 +319,14 @@ const handleGetCompanyListByArea = async () => {
...
@@ -312,26 +319,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 +353,48 @@ const handleGetAction = async () => {
...
@@ -358,48 +353,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 +406,6 @@ watch(
...
@@ -411,7 +406,6 @@ watch(
);
);
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetCompanyListByArea
();
handleGetChart1Data
();
handleGetChart1Data
();
handleGetHylyList
();
handleGetHylyList
();
handleGetAction
();
handleGetAction
();
...
@@ -529,6 +523,10 @@ onMounted(() => {
...
@@ -529,6 +523,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/overview/introduction/index.vue
浏览文件 @
26ddfb50
...
@@ -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,6 +199,9 @@ import box1Img from "./assets/images/box1-img.png";
...
@@ -206,6 +199,9 @@ 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
);
...
@@ -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
=>
{
...
@@ -356,6 +351,7 @@ const handleGetOrgnization = async () => {
...
@@ -356,6 +351,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
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论