Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
2e8bb3b4
提交
2e8bb3b4
authored
1月 17, 2026
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
9da5a9d2
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
278 行增加
和
58 行删除
+278
-58
App.vue
src/App.vue
+8
-7
index.js
src/api/zmOverview/allElement/index.js
+77
-0
ZMOverView.js
src/router/modules/ZMOverView.js
+4
-0
overview.js
src/router/modules/overview.js
+4
-4
index.vue
...w/components/fourSuppress/components/allElement/index.vue
+0
-0
warning.png
...mprehensiveSearch/searchResults/assets/images/warning.png
+0
-0
index.vue
src/views/comprehensiveSearch/searchResults/index.vue
+170
-11
index.vue
src/views/decree/decreeHome/index.vue
+14
-35
vite.config.js
vite.config.js
+1
-1
没有找到文件。
src/App.vue
浏览文件 @
2e8bb3b4
...
@@ -116,7 +116,7 @@ import Menu11 from "@/assets/icons/overview/menu11.png";
...
@@ -116,7 +116,7 @@ import Menu11 from "@/assets/icons/overview/menu11.png";
import
Menu12
from
"@/assets/icons/overview/menu12.png"
;
import
Menu12
from
"@/assets/icons/overview/menu12.png"
;
const
router
=
useRouter
();
const
router
=
useRouter
();
const
route
=
useRoute
()
const
route
=
useRoute
()
;
// const target = ref(null);
// const target = ref(null);
...
@@ -166,7 +166,13 @@ const handleGetPersonType = async () => {
...
@@ -166,7 +166,13 @@ const handleGetPersonType = async () => {
}
catch
(
error
)
{}
}
catch
(
error
)
{}
};
};
const
isCurrentOverview
=
ref
(
true
);
const
isCurrentOverview
=
computed
(()
=>
{
if
(
route
.
path
===
"/ZMOverView"
)
{
return
true
}
else
{
return
false
;
}
});
// 概览页标题列表
// 概览页标题列表
const
homeTitleList
=
ref
([
const
homeTitleList
=
ref
([
...
@@ -281,11 +287,6 @@ const handleSearch = () => {
...
@@ -281,11 +287,6 @@ const handleSearch = () => {
onMounted
(()
=>
{
onMounted
(()
=>
{
handleGetPersonType
();
handleGetPersonType
();
if
(
route
.
path
===
"/ZMOverView"
)
{
isCurrentOverview
.
value
=
true
;
}
else
{
isCurrentOverview
.
value
=
false
;
}
});
});
</
script
>
</
script
>
...
...
src/api/zmOverview/allElement/index.js
0 → 100644
浏览文件 @
2e8bb3b4
import
request
from
"@/api/request.js"
;
// 全要素统计
export
function
getElementCount
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/elementCount`
,
})
}
// 最新动态
export
function
getNewDynamics
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/newDynamics`
,
})
}
// 美对我要素打压情况
/**
* @param {currentPage, pageSize}
*/
export
function
getElementSuppress
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/elementSuppress`
,
params
})
}
// 关键词云-上
/**
* @param {currentPage, pageSize}
*/
export
function
getKeyWordUp
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/getKeyWordUp`
,
})
}
// 美自身要素发展情况
/**
* @param {currentPage, pageSize}
*/
export
function
getElementDevelop
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/elementDevelop`
,
params
})
}
// 关键词云-下
/**
* @param {currentPage, pageSize}
*/
export
function
getKeyWordDown
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/getKeyWordDown`
,
params
})
}
// 通过id获取政令详细信息
/**
* @param {id}
*/
export
function
getOrderInfo
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/element/getOrderInfo/
${
params
.
id
}
`
,
params
})
}
\ No newline at end of file
src/router/modules/ZMOverView.js
浏览文件 @
2e8bb3b4
...
@@ -2,6 +2,10 @@
...
@@ -2,6 +2,10 @@
import
ZMOverview
from
"@/views/ZMOverView/index.vue"
;
import
ZMOverview
from
"@/views/ZMOverView/index.vue"
;
const
ZMOverviewRoutes
=
[
const
ZMOverviewRoutes
=
[
{
path
:
"/"
,
redirect
:
"/ZMOverView"
},
{
{
path
:
"/ZMOverView"
,
path
:
"/ZMOverView"
,
name
:
"ZMOverView"
,
name
:
"ZMOverView"
,
...
...
src/router/modules/overview.js
浏览文件 @
2e8bb3b4
...
@@ -5,10 +5,10 @@ import gjOverView from "@/views/gjOverView/index.vue";
...
@@ -5,10 +5,10 @@ import gjOverView from "@/views/gjOverView/index.vue";
const
overViewRoutes
=
[
const
overViewRoutes
=
[
// 中美博弈概览页面路由
// 中美博弈概览页面路由
{
//
{
path
:
"/"
,
//
path: "/",
redirect
:
"/overview"
//
redirect: "/overview"
},
//
},
{
{
path
:
"/overview"
,
path
:
"/overview"
,
name
:
"overView"
,
name
:
"overView"
,
...
...
src/views/ZMOverView/components/fourSuppress/components/allElement/index.vue
浏览文件 @
2e8bb3b4
差异被折叠。
点击展开。
src/views/comprehensiveSearch/searchResults/assets/images/warning.png
0 → 100644
浏览文件 @
2e8bb3b4
1.2 KB
src/views/comprehensiveSearch/searchResults/index.vue
浏览文件 @
2e8bb3b4
...
@@ -86,7 +86,7 @@
...
@@ -86,7 +86,7 @@
</div>
</div>
</div>
-->
</div>
-->
</div>
</div>
<div
class=
"main"
>
<div
class=
"main"
v-if=
"curArea !== '实体清单'"
>
<div
class=
"item"
v-for=
"(item, index) in searchResults"
:key=
"index"
@
click=
"handleToPage(item)"
>
<div
class=
"item"
v-for=
"(item, index) in searchResults"
:key=
"index"
@
click=
"handleToPage(item)"
>
<div
class=
"item-left"
v-if=
"item.img"
>
<div
class=
"item-left"
v-if=
"item.img"
>
<img
:src=
"item?.img"
alt=
""
/>
<img
:src=
"item?.img"
alt=
""
/>
...
@@ -95,7 +95,7 @@
...
@@ -95,7 +95,7 @@
<div
class=
"title"
v-html=
"item?.originalTitle"
></div>
<div
class=
"title"
v-html=
"item?.originalTitle"
></div>
<div
class=
"content"
v-html=
"item?.originalDescription"
></div>
<div
class=
"content"
v-html=
"item?.originalDescription"
></div>
<div
class=
"item-right-footer"
>
<div
class=
"item-right-footer"
>
<div
class=
"time"
>
{{
item
?.
date
}}
</div>
<div
class=
"time"
v-if=
"item.date"
>
{{
item
?.
date
}}
</div>
<div
class=
"tag tag3"
>
<div
class=
"tag tag3"
>
{{
item
?.
typeStr
}}
{{
item
?.
typeStr
}}
</div>
</div>
...
@@ -103,6 +103,26 @@
...
@@ -103,6 +103,26 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"main1"
v-if=
"curArea === '实体清单'"
>
<div
class=
"item"
v-for=
"(item, index) in searchResults"
:key=
"index"
@
click=
"handleToPage(item)"
>
<div
class=
"main-header"
>
<div
class=
"title"
v-html=
"item?.originalTitle"
></div>
<div
class=
"tag tag3"
>
{{
item
?.
typeStr
}}
</div>
</div>
<div
class=
"entity-box"
>
<div
class=
"entity"
v-for=
"val,idx in item.sanctionList"
:key=
"idx"
>
<div
class=
"icon"
>
<img
src=
"./assets/images/warning.png"
alt=
""
>
</div>
<div
class=
"name"
>
{{
val
}}
</div>
</div>
</div>
<div
class=
"content"
v-html=
"item?.originalDescription"
></div>
<div
class=
"time"
v-if=
"item.date"
>
{{
item
?.
date
}}
</div>
</div>
</div>
<div
class=
"footer"
>
<div
class=
"footer"
>
<el-pagination
<el-pagination
@
current-change=
"handleChangeCurrentPage"
@
current-change=
"handleChangeCurrentPage"
...
@@ -263,10 +283,10 @@ const handleClickDomains = domain => {
...
@@ -263,10 +283,10 @@ const handleClickDomains = domain => {
};
};
function
highlightText
(
text
,
keyword
)
{
function
highlightText
(
text
,
keyword
)
{
if
(
!
text
||
!
keyword
)
return
text
;
if
(
!
text
||
!
keyword
)
return
text
;
const
regex
=
new
RegExp
(
`(
${
keyword
}
)`
,
'gi'
);
const
regex
=
new
RegExp
(
`(
${
keyword
}
)`
,
"gi"
);
return
text
.
replace
(
regex
,
'<span style="color: red; font-weight: bold;">$1</span>'
);
return
text
.
replace
(
regex
,
'<span style="color: red; font-weight: bold;">$1</span>'
);
}
}
const
handleSearch
=
async
()
=>
{
const
handleSearch
=
async
()
=>
{
...
@@ -300,9 +320,9 @@ const handleSearch = async () => {
...
@@ -300,9 +320,9 @@ const handleSearch = async () => {
}
}
searchResults
.
value
=
res
.
data
.
records
;
searchResults
.
value
=
res
.
data
.
records
;
searchResults
.
value
.
forEach
(
item
=>
{
searchResults
.
value
.
forEach
(
item
=>
{
item
.
originalTitle
=
highlightText
(
item
.
originalTitle
,
keyword
.
value
)
item
.
originalTitle
=
highlightText
(
item
.
originalTitle
,
keyword
.
value
)
;
item
.
originalDescription
=
highlightText
(
item
.
originalDescription
,
keyword
.
value
)
item
.
originalDescription
=
highlightText
(
item
.
originalDescription
,
keyword
.
value
)
;
})
})
;
totalNum
.
value
=
res
.
data
.
total
;
totalNum
.
value
=
res
.
data
.
total
;
if
(
totalNum
.
value
)
{
if
(
totalNum
.
value
)
{
ElMessage
.
success
(
`共计搜索到
${
totalNum
.
value
}
条结果`
);
ElMessage
.
success
(
`共计搜索到
${
totalNum
.
value
}
条结果`
);
...
@@ -493,6 +513,19 @@ const handleToAi = () => {
...
@@ -493,6 +513,19 @@ const handleToAi = () => {
});
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
};
// 跳转公司详情页
const
handleCompClick
=
item
=>
{
console
.
log
(
"item"
,
item
);
window
.
sessionStorage
.
setItem
(
'curTabName'
,
item
)
const
route
=
router
.
resolve
({
name
:
"companyPages"
,
params
:
{
id
:
item
.
entityId
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -782,7 +815,7 @@ const handleToAi = () => {
...
@@ -782,7 +815,7 @@ const handleToAi = () => {
.item-right
{
.item-right
{
// width: 731px;
// width: 731px;
flex
:
1
;
flex
:
1
;
margin-left
:
12px
;
//
margin-left: 12px;
.title
{
.title
{
height
:
24px
;
height
:
24px
;
...
@@ -820,9 +853,9 @@ const handleToAi = () => {
...
@@ -820,9 +853,9 @@ const handleToAi = () => {
line-height
:
24px
;
line-height
:
24px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
margin-right
:
16px
;
}
}
.tag
{
.tag
{
margin-left
:
16px
;
height
:
24px
;
height
:
24px
;
line-height
:
24px
;
line-height
:
24px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
...
@@ -848,6 +881,132 @@ const handleToAi = () => {
...
@@ -848,6 +881,132 @@ const handleToAi = () => {
}
}
}
}
}
}
.main1
{
width
:
913px
;
margin-top
:
36px
;
margin-left
:
240px
;
.item
{
width
:
913px
;
min-height
:
108px
;
// max-height: 148px;
padding-bottom
:
24px
;
padding-top
:
16px
;
border-bottom
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
cursor
:
pointer
;
// &:hover {
// background: var(--color-bg-hover);
// }
.main-header
{
min-height
:
24px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
.title
{
width
:
820px
;
// height: 24px;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-style
:
Bold
;
font-size
:
18px
;
font-weight
:
700
;
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
left
;
}
.tag
{
height
:
24px
;
line-height
:
24px
;
box-sizing
:
border-box
;
padding
:
0
8px
;
border-radius
:
4px
;
}
.tag1
{
border
:
1px
solid
rgba
(
255
,
204
,
199
,
1
);
background
:
rgba
(
255
,
241
,
240
,
1
);
color
:
rgba
(
255
,
77
,
79
,
1
);
}
.tag2
{
color
:
rgba
(
250
,
173
,
20
,
1
);
border
:
1px
solid
rgba
(
255
,
241
,
184
,
1
);
background
:
rgba
(
255
,
251
,
230
,
1
);
}
.tag3
{
color
:
rgba
(
22
,
119
,
255
,
1
);
border
:
1px
solid
rgba
(
186
,
224
,
255
,
1
);
background
:
rgba
(
230
,
244
,
255
,
1
);
}
}
.entity-box
{
margin-top
:
12px
;
display
:
flex
;
gap
:
8px
;
flex-wrap
:
wrap
;
.entity
{
display
:
flex
;
justify-content
:
space-between
;
gap
:
6px
;
height
:
32px
;
line-height
:
32px
;
padding
:
0
12px
;
border-radius
:
20px
;
background
:
rgba
(
255
,
241
,
240
,
1
);
cursor
:
pointer
;
&
:hover
{
.name
{
font-weight
:
bold
;
}
}
.icon
{
width
:
12px
;
height
:
12px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
.name
{
margin-top
:
4px
;
height
:
24px
;
color
:
rgba
(
206
,
79
,
81
,
1
);
font-family
:
Microsoft
YaHei
;
font-style
:
Regular
;
font-size
:
16px
;
font-weight
:
400
;
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
center
;
}
}
}
.content
{
margin-top
:
10px
;
min-height
:
0
;
// max-height: 48px;
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
font-weight
:
400
;
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
left
;
overflow
:
hidden
;
}
.time
{
margin-top
:
10px
;
height
:
24px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
line-height
:
24px
;
letter-spacing
:
0px
;
text-align
:
left
;
margin-right
:
16px
;
}
}
}
.footer
{
.footer
{
width
:
913px
;
width
:
913px
;
margin-left
:
264px
;
margin-left
:
264px
;
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
2e8bb3b4
...
@@ -948,6 +948,10 @@ const chart1Data = ref({
...
@@ -948,6 +948,10 @@ const chart1Data = ref({
});
});
const
box5YearList
=
ref
([
const
box5YearList
=
ref
([
{
label
:
"2026"
,
value
:
"2026"
},
{
{
label
:
"2025"
,
label
:
"2025"
,
value
:
"2025"
value
:
"2025"
...
@@ -969,7 +973,7 @@ const box5YearList = ref([
...
@@ -969,7 +973,7 @@ const box5YearList = ref([
value
:
"2021"
value
:
"2021"
}
}
]);
]);
const
box5SelectedYear
=
ref
(
"202
5
"
);
const
box5SelectedYear
=
ref
(
"202
6
"
);
const
handleGetDecreeYearOrder
=
async
()
=>
{
const
handleGetDecreeYearOrder
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
@@ -1015,6 +1019,10 @@ const chart2Data = ref([
...
@@ -1015,6 +1019,10 @@ const chart2Data = ref([
// const colorList = ["#69B1FF", "#FFC069", "#87E8DE", "#85A5FF", "#FF7875", "#B37FEB", "#4096FF"];
// const colorList = ["#69B1FF", "#FFC069", "#87E8DE", "#85A5FF", "#FF7875", "#B37FEB", "#4096FF"];
const
box6YearList
=
ref
([
const
box6YearList
=
ref
([
{
label
:
"2026"
,
value
:
"2026"
},
{
{
label
:
"2025"
,
label
:
"2025"
,
value
:
"2025"
value
:
"2025"
...
@@ -1036,7 +1044,7 @@ const box6YearList = ref([
...
@@ -1036,7 +1044,7 @@ const box6YearList = ref([
value
:
"2021"
value
:
"2021"
}
}
]);
]);
const
box6SelectedYear
=
ref
(
"202
5
"
);
const
box6SelectedYear
=
ref
(
"202
6
"
);
const
handleGetDecreeArea
=
async
()
=>
{
const
handleGetDecreeArea
=
async
()
=>
{
const
params
=
{
const
params
=
{
...
@@ -1068,18 +1076,7 @@ const handleBox6YearChange = () => {
...
@@ -1068,18 +1076,7 @@ const handleBox6YearChange = () => {
};
};
// 关键行政令
// 关键行政令
const
keyDecreeList
=
ref
([
const
keyDecreeList
=
ref
([]);
// {
// title: "关于“对等关税”的行政令",
// time: "2025年4月",
// content: `对所有贸易伙伴设立10%的“最低基准关税”,并对中国商品加征高达34% 的额外关税,使针对中国的总关税水平大幅提升。`
// },
// {
// title: "《美国优先投资政策》备忘录",
// time: "2025年2月",
// content: `将中国列为“外国对手”,系统性收紧中美在半导体、人工智能、量子技术等前沿科技领域的双向投资,构建对华科技封锁体系。`
// },
]);
const
handleGetKeyDecree
=
async
()
=>
{
const
handleGetKeyDecree
=
async
()
=>
{
try
{
try
{
...
@@ -1186,6 +1183,7 @@ const handleGetAreaList = async () => {
...
@@ -1186,6 +1183,7 @@ const handleGetAreaList = async () => {
};
};
const
pubTime
=
ref
([
const
pubTime
=
ref
([
{
id
:
"2026"
,
name
:
"2026年"
},
{
id
:
"2025"
,
name
:
"2025年"
},
{
id
:
"2025"
,
name
:
"2025年"
},
{
id
:
"2024"
,
name
:
"2024年"
},
{
id
:
"2024"
,
name
:
"2024年"
},
{
id
:
"2023"
,
name
:
"2023年"
},
{
id
:
"2023"
,
name
:
"2023年"
},
...
@@ -1194,30 +1192,11 @@ const pubTime = ref([
...
@@ -1194,30 +1192,11 @@ const pubTime = ref([
{
id
:
"2020"
,
name
:
"2020年"
}
{
id
:
"2020"
,
name
:
"2020年"
}
// { id: "更早时间", name: "更早时间" }
// { id: "更早时间", name: "更早时间" }
]);
]);
const
activePubTime
=
ref
([
"202
5
"
]);
const
activePubTime
=
ref
([
"202
6
"
]);
const
totalDecreesNum
=
ref
(
0
);
const
totalDecreesNum
=
ref
(
0
);
const
decreeList
=
ref
([
const
decreeList
=
ref
([]);
// {
// type: "总统政令",
// status: 1,
// title: "关于进一步延长TikTok执法宽限期的行政令",
// time: "2025年9月16日",
// img: 1,
// desc: "123",
// tagList: ["生物科技"]
// },
// {
// type: "总统政令",
// status: 1,
// title: "为国家安全部署先进核反应堆技术",
// time: "2025年9月16日",
// img: 1,
// desc: "123",
// tagList: ["生物科技"]
// }
]);
const
handleGetDecreeOrderList
=
async
()
=>
{
const
handleGetDecreeOrderList
=
async
()
=>
{
const
p0
=
checkedGovIns
.
value
.
join
(
","
);
const
p0
=
checkedGovIns
.
value
.
join
(
","
);
...
...
vite.config.js
浏览文件 @
2e8bb3b4
...
@@ -72,7 +72,7 @@ export default defineConfig({
...
@@ -72,7 +72,7 @@ export default defineConfig({
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
checklistChat/
,
''
)
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
checklistChat/
,
''
)
},
},
'/temporarySearch'
:
{
'/temporarySearch'
:
{
target
:
'http://106.12.150.59:
18826
/'
,
target
:
'http://106.12.150.59:
8001
/'
,
changeOrigin
:
true
,
changeOrigin
:
true
,
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
temporarySearch/
,
''
)
rewrite
:
(
path
)
=>
path
.
replace
(
/^
\/
temporarySearch/
,
''
)
},
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论