Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
bb86a146
提交
bb86a146
authored
4月 23, 2026
作者:
张烨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:科技政令修改
上级
d8b5f5a0
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
190 行增加
和
102 行删除
+190
-102
index.vue
src/views/decree/decreeLayout/influence/index.vue
+60
-19
index.vue
src/views/decree/decreeLayout/overview/background/index.vue
+70
-72
index.vue
...views/decree/decreeLayout/overview/introduction/index.vue
+23
-9
index.vue
src/views/decree/decreeLayout/overview/measures/index.vue
+37
-2
没有找到文件。
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
bb86a146
<
template
>
<
template
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
>
<div
class=
"box1"
>
<div
class=
"box1"
v-loading=
"entityInfo.loading"
>
<AnalysisBox
title=
"受影响实体"
:showAllBtn=
"false"
>
<AnalysisBox
title=
"受影响实体"
:showAllBtn=
"false"
>
<div
class=
"box1-main"
>
<div
class=
"box1-main"
>
<div
class=
"data-filter"
>
<div
class=
"data-filter"
>
...
@@ -49,7 +49,7 @@
...
@@ -49,7 +49,7 @@
<
/div
>
<
/div
>
<
/AnalysisBox
>
<
/AnalysisBox
>
<
/div
>
<
/div
>
<
div
class
=
"box2"
>
<
div
class
=
"box2"
v
-
loading
=
"box2Params.loading"
>
<
AnalysisBox
:
showAllBtn
=
"false"
>
<
AnalysisBox
:
showAllBtn
=
"false"
>
<
template
#
custom
-
title
>
<
template
#
custom
-
title
>
<
div
class
=
"custom-title"
>
<
div
class
=
"custom-title"
>
...
@@ -80,7 +80,8 @@
...
@@ -80,7 +80,8 @@
<
ChartChain
:
listData
=
"fishbone.list"
:
baseData
=
"fishbone.base"
/>
<
ChartChain
:
listData
=
"fishbone.list"
:
baseData
=
"fishbone.base"
/>
<
/div
>
<
/div
>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==2"
>
<
div
class
=
"graph-box"
v
-
if
=
"contentType==2"
>
<
GraphChart
v
-
if
=
"graphInfo.nodes?.length"
:
nodes
=
"graphInfo.nodes"
:
links
=
"graphInfo.links"
layoutType
=
"force"
/>
<!--
<
GraphChart
v
-
if
=
"graphInfo.nodes?.length"
:
nodes
=
"graphInfo.nodes"
:
links
=
"graphInfo.links"
layoutType
=
"force"
/>
-->
<
RelationChart
v
-
if
=
"graphInfo.nodes?.length"
:
graphData
=
"graphInfo"
><
/RelationChart
>
<
el
-
empty
v
-
else
style
=
"height: 100%;"
description
=
"暂无数据"
:
image
-
size
=
"100"
/>
<
el
-
empty
v
-
else
style
=
"height: 100%;"
description
=
"暂无数据"
:
image
-
size
=
"100"
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -103,6 +104,7 @@ import {
...
@@ -103,6 +104,7 @@ import {
import
ChartChain
from
"./com/ChartChain.vue"
;
import
ChartChain
from
"./com/ChartChain.vue"
;
// import AiTips from "./com/AiTips.vue";
// import AiTips from "./com/AiTips.vue";
import
GraphChart
from
"@/components/base/GraphChart/index.vue"
;
import
GraphChart
from
"@/components/base/GraphChart/index.vue"
;
import
RelationChart
from
"@/components/base/RelationChart/index.vue"
import
defaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
defaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
noticeIcon
from
"./assets/images/notice-icon.png"
;
import
noticeIcon
from
"./assets/images/notice-icon.png"
;
import
icon422
from
"./assets/images/icon422.png"
;
import
icon422
from
"./assets/images/icon422.png"
;
...
@@ -134,6 +136,7 @@ const handleGetHylyList = async () => {
...
@@ -134,6 +136,7 @@ const handleGetHylyList = async () => {
// 受影响实体
// 受影响实体
const
entityInfo
=
reactive
({
const
entityInfo
=
reactive
({
loading
:
false
,
keyword
:
""
,
keyword
:
""
,
pageSize
:
10
,
pageSize
:
10
,
pageNum
:
1
,
pageNum
:
1
,
...
@@ -144,6 +147,7 @@ const entityInfo = reactive({
...
@@ -144,6 +147,7 @@ const entityInfo = reactive({
}
)
}
)
const
onDecreeEntities
=
async
(
page
=
1
)
=>
{
const
onDecreeEntities
=
async
(
page
=
1
)
=>
{
entityInfo
.
pageNum
=
page
;
entityInfo
.
pageNum
=
page
;
entityInfo
.
loading
=
true
;
try
{
try
{
let
params
=
{
let
params
=
{
id
:
route
.
query
.
id
,
id
:
route
.
query
.
id
,
...
@@ -154,19 +158,31 @@ const onDecreeEntities = async (page=1) => {
...
@@ -154,19 +158,31 @@ const onDecreeEntities = async (page=1) => {
}
}
const
res
=
await
getDecreeEntities
(
params
);
const
res
=
await
getDecreeEntities
(
params
);
console
.
log
(
"受影响实体:"
,
res
);
console
.
log
(
"受影响实体:"
,
res
);
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
entityInfo
.
list
=
res
.
data
.
companyInfos
;
entityInfo
.
list
=
res
.
data
.
companyInfos
;
entityInfo
.
total
=
res
.
data
.
total
;
entityInfo
.
total
=
res
.
data
.
total
;
if
(
entityInfo
.
total
&&
entityInfo
.
list
.
every
(
item
=>
item
.
id
!=
entityInfo
.
id
))
{
if
(
entityInfo
.
total
&&
entityInfo
.
list
.
every
(
item
=>
item
.
id
!=
entityInfo
.
id
))
{
headerChartData
(
entityInfo
.
list
[
0
])
headerChartData
(
entityInfo
.
list
[
0
])
}
}
}
else
{
entityInfo
.
list
=
[];
entityInfo
.
total
=
0
;
fishbone
.
list
=
[];
graphInfo
.
nodes
=
[];
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
"获取受影响实体失败"
,
error
);
entityInfo
.
list
=
[];
entityInfo
.
total
=
0
;
fishbone
.
list
=
[];
graphInfo
.
nodes
=
[];
}
}
entityInfo
.
loading
=
false
;
}
;
}
;
const
contentType
=
ref
(
1
);
const
contentType
=
ref
(
1
);
const
box2Params
=
reactive
({
loading
:
false
,
}
)
const
headerContentType
=
(
type
)
=>
{
const
headerContentType
=
(
type
)
=>
{
contentType
.
value
=
type
;
contentType
.
value
=
type
;
if
(
!
entityInfo
.
total
)
return
;
if
(
!
entityInfo
.
total
)
return
;
...
@@ -206,9 +222,7 @@ const onDecreeRelatedChain = async (id) => {
...
@@ -206,9 +222,7 @@ const onDecreeRelatedChain = async (id) => {
industryChain
.
list
=
res
.
data
;
industryChain
.
list
=
res
.
data
;
if
(
industryChain
.
list
.
length
)
onDecreeChainNodes
(
industryChain
.
list
[
0
].
id
)
if
(
industryChain
.
list
.
length
)
onDecreeChainNodes
(
industryChain
.
list
[
0
].
id
)
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
}
console
.
log
(
"获取产业链失败"
,
error
);
}
}
;
}
;
// 产业链鱼骨图
// 产业链鱼骨图
...
@@ -217,6 +231,7 @@ const fishbone = reactive({
...
@@ -217,6 +231,7 @@ const fishbone = reactive({
base
:
[],
base
:
[],
}
)
}
)
const
onDecreeChainNodes
=
async
(
id
)
=>
{
const
onDecreeChainNodes
=
async
(
id
)
=>
{
box2Params
.
loading
=
true
;
industryChain
.
id
=
id
;
industryChain
.
id
=
id
;
try
{
try
{
const
res
=
await
getDecreeChainNodes
({
id
}
);
const
res
=
await
getDecreeChainNodes
({
id
}
);
...
@@ -238,31 +253,57 @@ const onDecreeChainNodes = async (id) => {
...
@@ -238,31 +253,57 @@ const onDecreeChainNodes = async (id) => {
return
{...
item
,
name
:
[
'上游'
,
'中游'
,
'下游'
][
index
]
}
return
{...
item
,
name
:
[
'上游'
,
'中游'
,
'下游'
][
index
]
}
}
);
}
);
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
}
console
.
log
(
"获取产业链鱼骨图失败"
,
error
);
box2Params
.
loading
=
false
;
}
}
;
}
;
// 实体关系
// 实体关系
const
graphInfo
=
reactive
({
const
graphInfo
=
reactive
({
nodes
:
[],
nodes
:
[],
links
:
[],
links
:
[],
rootId
:
""
,
}
);
}
);
const
onDecreeRelatedEntitie
=
async
(
orgId
)
=>
{
const
onDecreeRelatedEntitie
=
async
(
orgId
)
=>
{
box2Params
.
loading
=
true
;
try
{
try
{
const
res
=
await
getDecreeRelatedEntitie
({
orgId
,
rule
:
false
,
withSanInfo
:
false
}
);
const
res
=
await
getDecreeRelatedEntitie
({
orgId
,
rule
:
false
,
withSanInfo
:
false
}
);
console
.
log
(
"实体关系:"
,
res
);
console
.
log
(
"实体关系:"
,
res
);
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
let
arr1
=
res
.
data
.
parentOrgList
.
map
(
item
=>
({
...
item
,
level
:
1
}
))
let
arr1
=
res
.
data
.
parentOrgList
.
map
((
item
,
index
)
=>
{
let
arr3
=
res
.
data
.
childrenOrgList
.
map
(
item
=>
({
...
item
,
level
:
3
}
))
return
{
id
:
`1-${index
}
`
,
text
:
item
.
name
,
description
:
item
.
description
,
level
:
1
,
}
}
)
let
arr3
=
res
.
data
.
childrenOrgList
.
map
((
item
,
index
)
=>
{
return
{
id
:
`3-${index
}
`
,
text
:
item
.
name
,
description
:
item
.
description
,
level
:
3
,
}
}
)
graphInfo
.
links
=
[...
arr1
,...
arr3
].
map
(
onFormatLink
)
graphInfo
.
links
=
[...
arr1
,...
arr3
].
map
((
item
=>
{
graphInfo
.
nodes
=
[...
arr1
,...
arr3
].
map
(
onFormatNode
)
return
{
graphInfo
.
nodes
.
unshift
(
onFormatNode
({
name
:
res
.
data
.
orgName
,
id
:
res
.
data
.
orgId
}
,
-
1
))
from
:
'0-0'
,
to
:
item
.
id
,
text
:
(
item
.
level
==
1
?
'被'
:
''
)
+
item
.
description
,
fontColor
:
(
item
.
level
==
1
?
'#ff954d'
:
'#218139'
),
color
:
(
item
.
level
==
1
?
'#fbf0e9'
:
'#e4eee7'
),
textOffset_x
:
-
20
,
lineWidth
:
5
}
}
))
graphInfo
.
nodes
=
[...
arr1
,...
arr3
]
graphInfo
.
nodes
.
unshift
({
text
:
res
.
data
.
orgName
,
id
:
'0-0'
,
level
:
2
}
)
graphInfo
.
rootId
=
'0-0'
console
.
log
(
'graphInfo'
,
graphInfo
)
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
}
console
.
log
(
"获取实体关系失败"
,
error
);
box2Params
.
loading
=
false
}
}
}
const
onFormatLink
=
(
item
,
index
)
=>
{
const
onFormatLink
=
(
item
,
index
)
=>
{
return
{
return
{
...
...
src/views/decree/decreeLayout/overview/background/index.vue
浏览文件 @
bb86a146
<
template
>
<
template
>
<div
class=
"introduction-wrap"
>
<div
class=
"introduction-wrap"
>
<div
class=
"left"
>
<div
class=
"left"
>
<div
class=
"box1"
>
<div
class=
"box1"
v-loading=
"box1Params.loading"
>
<AnalysisBox
title=
"提出背景"
:showAllBtn=
"false"
>
<AnalysisBox
title=
"提出背景"
:showAllBtn=
"false"
>
<template
#
header-btn
>
<template
#
header-btn
>
<div
class=
"header-btn-box"
>
<div
class=
"header-btn-box"
>
<div
class=
"btn"
:class=
"
{ btnActive: box1
ActiveBtn
=== 1 }" @click="handleClickBox1Btn(1)">涉华背景
</div>
<div
class=
"btn"
:class=
"
{ btnActive: box1
Params.active
=== 1 }" @click="handleClickBox1Btn(1)">涉华背景
</div>
<div
class=
"btn"
:class=
"
{ btnActive: box1
ActiveBtn
=== 2 }" @click="handleClickBox1Btn(2)">全部背景
</div>
<div
class=
"btn"
:class=
"
{ btnActive: box1
Params.active
=== 2 }" @click="handleClickBox1Btn(2)">全部背景
</div>
</div>
</div>
</
template
>
</
template
>
<div
class=
"box1-container"
>
<div
class=
"box1-container"
>
...
@@ -20,11 +20,11 @@
...
@@ -20,11 +20,11 @@
</div> -->
</div> -->
</div>
</div>
</div>
</div>
<div
class=
"box
1-footer"
v-if=
"backgroundListNum > 10
"
>
<div
class=
"box
-footer
"
>
<div
class=
"box
1-footer-left"
>
{{ `共 ${backgroundListNum
} 项` }}
</div>
<div
class=
"box
-footer-left"
>
{{ `共 ${box1Params.total
} 项` }}
</div>
<div
class=
"box
1
-footer-right"
>
<div
class=
"box-footer-right"
>
<el-pagination
:page-size=
"
10"
@
current-change=
"handleCurrentChange"
:current-page=
"currentP
age"
<el-pagination
:page-size=
"
box1Params.size"
@
current-change=
"handleGetBackground"
:current-page=
"box1Params.p
age"
background
layout=
"prev, pager, next"
:total=
"b
ackgroundListNum
"
/>
background
layout=
"prev, pager, next"
:total=
"b
ox1Params.total
"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -60,6 +60,13 @@
...
@@ -60,6 +60,13 @@
</el-collapse>
</el-collapse>
</div>
</div>
</div>
</div>
<div
class=
"box-footer"
style=
"padding: 0 18px 16px;"
>
<div
class=
"box-footer-left"
>
{{ `共 ${box2Params.total} 项` }}
</div>
<div
class=
"box-footer-right"
>
<el-pagination
:page-size=
"box2Params.size"
@
current-change=
"handleGetLaws"
:current-page=
"box2Params.page"
background
layout=
"prev, pager, next"
:total=
"box2Params.total"
/>
</div>
</div>
</AnalysisBox>
</AnalysisBox>
</div>
</div>
</div>
</div>
...
@@ -126,56 +133,46 @@ const decodeMaybeBase64NumericId = (raw) => {
...
@@ -126,56 +133,46 @@ const decodeMaybeBase64NumericId = (raw) => {
const
decreeId
=
computed
(()
=>
decodeMaybeBase64NumericId
(
route
.
query
.
id
));
const
decreeId
=
computed
(()
=>
decodeMaybeBase64NumericId
(
route
.
query
.
id
));
// 提出背景
// 提出背景
const
box1ActiveBtn
=
ref
(
1
);
const
backgroundList
=
ref
([]);
const
box1Params
=
reactive
({
loading
:
false
,
size
:
5
,
page
:
1
,
total
:
0
,
active
:
1
,
})
const
handleClickBox1Btn
=
btn
=>
{
const
handleClickBox1Btn
=
btn
=>
{
box1
ActiveBtn
.
valu
e
=
btn
;
box1
Params
.
activ
e
=
btn
;
handle
CurrentChange
(
1
)
handle
GetBackground
(
)
};
};
const
backgroundListNum
=
ref
(
0
);
const
handleGetBackground
=
async
(
page
=
1
)
=>
{
const
backgroundList
=
ref
([
box1Params
.
page
=
page
;
// {
box1Params
.
loading
=
true
;
// content: "认为人工智能(AI)是一项将决定未来几十年经济增长、国家安全和全球竞争力的基础性技术"
// },
// {
// content: "要求美国不仅必须在开发通用和前沿AI能力方面领先,还必须确保美国的人工智能技术、标准和治理模式在全球范围内被采用"
// },
]);
const
currentPage
=
ref
(
1
);
const
handleCurrentChange
=
page
=>
{
currentPage
.
value
=
page
;
handleGetBackground
();
};
const
handleGetBackground
=
async
()
=>
{
const
params
=
{
cRelated
:
box1ActiveBtn
.
value
===
1
,
currentPage
:
currentPage
.
value
-
1
,
pageSize
:
10
,
id
:
decreeId
.
value
};
try
{
try
{
const
res
=
await
getDecreeBackground
(
params
);
const
res
=
await
getDecreeBackground
({
cRelated
:
box1Params
.
active
==
1
,
currentPage
:
box1Params
.
page
-
1
,
pageSize
:
box1Params
.
size
,
id
:
decreeId
.
value
});
console
.
log
(
"提出背景"
,
res
);
console
.
log
(
"提出背景"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
b
ackgroundListNum
.
value
=
res
.
data
.
numberOfElements
;
b
ox1Params
.
total
=
res
.
data
.
numberOfElements
;
backgroundList
.
value
=
res
.
data
.
content
;
backgroundList
.
value
=
res
.
data
.
content
;
}
else
{
}
else
{
b
ackgroundListNum
.
value
=
0
;
b
ox1Params
.
total
=
0
;
backgroundList
.
value
=
[];
backgroundList
.
value
=
[];
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
b
ackgroundListNum
.
value
=
0
;
b
ox1Params
.
total
=
0
;
backgroundList
.
value
=
[];
backgroundList
.
value
=
[];
}
}
box1Params
.
loading
=
false
;
};
};
// 前序政令
// 前序政令
const
prevList
=
ref
([
const
prevList
=
ref
([]);
// {
// proposeOrgName: "白宫",
// postDate: "2025-07-31",
// describe: "美商务部发布指南,警告全球企业使用华为昇腾芯片可能违反美国出口管制。意在限制中国AI产业发展,阻碍其获得先进算力。"
// },
]);
const
handleGetPrev
=
async
()
=>
{
const
handleGetPrev
=
async
()
=>
{
try
{
try
{
const
res
=
await
getDecreePrev
({
id
:
decreeId
.
value
});
const
res
=
await
getDecreePrev
({
id
:
decreeId
.
value
});
...
@@ -199,12 +196,6 @@ const handleToInstitution = item => {
...
@@ -199,12 +196,6 @@ const handleToInstitution = item => {
}
}
});
});
window
.
open
(
curRoute
.
href
,
"_blank"
);
window
.
open
(
curRoute
.
href
,
"_blank"
);
// router.push({
// path: "/institution",
// query: {
// id: item.orgId
// }
// })
};
};
// 跳转科技政令详情页
// 跳转科技政令详情页
const
handleClickDecree
=
item
=>
{
const
handleClickDecree
=
item
=>
{
...
@@ -215,32 +206,37 @@ const handleClickDecree = item => {
...
@@ -215,32 +206,37 @@ const handleClickDecree = item => {
}
}
});
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
// router.push({
// path: "/decreeLayout",
// query: {
// id: item.id
// }
// })
};
};
// 法律依据
// 法律依据
const
box2Params
=
reactive
({
const
box2Params
=
reactive
({
loading
:
false
,
loading
:
false
,
size
:
5
,
page
:
1
,
total
:
0
,
active
:
[],
active
:
[],
list
:
[],
list
:
[],
})
})
const
handleGetLaws
=
async
()
=>
{
const
handleGetLaws
=
async
(
page
=
1
)
=>
{
box2Params
.
page
=
page
;
box2Params
.
loading
=
true
;
box2Params
.
loading
=
true
;
try
{
try
{
const
res
=
await
getDecreeDepend
({
id
:
decreeId
.
value
});
const
res
=
await
getDecreeDepend
({
id
:
decreeId
.
value
,
currentPage
:
box2Params
.
page
-
1
,
pageSize
:
box2Params
.
size
,
});
console
.
log
(
"法律依据"
,
res
);
console
.
log
(
"法律依据"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
box2Params
.
list
=
res
.
data
;
box2Params
.
list
=
res
.
data
;
box2Params
.
total
=
0
}
else
{
}
else
{
box2Params
.
list
=
[];
box2Params
.
list
=
[];
box2Params
.
total
=
0
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
box2Params
.
list
=
[];
box2Params
.
list
=
[];
box2Params
.
total
=
0
}
}
box2Params
.
loading
=
false
;
box2Params
.
loading
=
false
;
};
};
...
@@ -361,21 +357,6 @@ onMounted(() => {
...
@@ -361,21 +357,6 @@ onMounted(() => {
background-color
:
rgba
(
247
,
248
,
249
,
1
);
background-color
:
rgba
(
247
,
248
,
249
,
1
);
}
}
}
}
.box1-footer
{
display
:
flex
;
justify-content
:
space-between
;
margin-top
:
10px
;
.box1-footer-left
{
height
:
20px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
line-height
:
20px
;
}
}
}
}
.box2
{
.box2
{
...
@@ -507,4 +488,20 @@ onMounted(() => {
...
@@ -507,4 +488,20 @@ onMounted(() => {
}
}
}
}
}
}
.box-footer
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-top
:
10px
;
.box-footer-left
{
height
:
20px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
line-height
:
20px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/decree/decreeLayout/overview/introduction/index.vue
浏览文件 @
bb86a146
...
@@ -74,7 +74,7 @@
...
@@ -74,7 +74,7 @@
</div>
</div>
</AnalysisBox>
</AnalysisBox>
</div>
</div>
<div>
<div
v-loading=
"relateParams.loading"
>
<AnalysisBox
title=
"相关事件"
:showAllBtn=
"false"
>
<AnalysisBox
title=
"相关事件"
:showAllBtn=
"false"
>
<div
class=
"box2-main"
>
<div
class=
"box2-main"
>
<el-empty
v-if=
"!relatedData.length"
description=
"暂无数据"
:image-size=
"100"
/>
<el-empty
v-if=
"!relatedData.length"
description=
"暂无数据"
:image-size=
"100"
/>
...
@@ -90,6 +90,7 @@
...
@@ -90,6 +90,7 @@
<div
class=
"content"
>
{{ item.sjnr }}
</div>
<div
class=
"content"
>
{{ item.sjnr }}
</div>
</div>
</div>
</div>
</div>
<SimplePagination
v-model:current-page=
"relateParams.page"
:page-size=
"relateParams.size"
:total=
"relateParams.total"
@
page-change=
"onDecreeRelatedEvent"
/>
</div>
</div>
</AnalysisBox>
</AnalysisBox>
</div>
</div>
...
@@ -106,12 +107,12 @@
...
@@ -106,12 +107,12 @@
<div
class=
"box3"
>
<div
class=
"box3"
>
<AnalysisBox
title=
"发布机构"
:showAllBtn=
"false"
>
<AnalysisBox
title=
"发布机构"
:showAllBtn=
"false"
>
<div
class=
"box3-top"
>
<div
class=
"box3-top"
>
<div
class=
"box3-top-top"
@
click=
"handleToInstitution(box3TopTopData)"
>
<div
class=
"box3-top-top"
>
<div
class=
"left"
>
<div
class=
"left"
>
<img
:src=
"box3TopTopData?.logo || DefaultIcon2"
alt=
""
/>
<img
:src=
"box3TopTopData?.logo || DefaultIcon2"
alt=
""
/>
</div>
</div>
<div
class=
"right"
>
<div
class=
"right"
>
<div
class=
"name"
>
{{ box3TopTopData.name + " >" }}
</div>
<div
class=
"name
text-click-hover"
@
click=
"handleToInstitution(box3TopTopData)
"
>
{{ box3TopTopData.name + " >" }}
</div>
<div
class=
"ename"
>
{{ box3TopTopData.eName }}
</div>
<div
class=
"ename"
>
{{ box3TopTopData.eName }}
</div>
</div>
</div>
</div>
</div>
...
@@ -158,7 +159,7 @@
...
@@ -158,7 +159,7 @@
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
ref
,
onMounted
}
from
"vue"
;
import
{
ref
,
onMounted
,
reactive
}
from
"vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
router
from
"@/router"
;
import
router
from
"@/router"
;
import
WarnningPane
from
'@/components/base/WarningPane/index.vue'
import
WarnningPane
from
'@/components/base/WarningPane/index.vue'
...
@@ -171,7 +172,8 @@ import {
...
@@ -171,7 +172,8 @@ import {
getOverview
,
getOverview
,
}
from
"@/api/decree/introduction"
;
}
from
"@/api/decree/introduction"
;
import
{
getDecreeRelatedEvent
}
from
"@/api/decree/background"
;
import
{
getDecreeRelatedEvent
}
from
"@/api/decree/background"
;
import
AiSummary
from
'@/components/base/Ai/AiSummary/index.vue'
import
AiSummary
from
'@/components/base/Ai/AiSummary/index.vue'
;
import
SimplePagination
from
"@/components/SimplePagination.vue"
;
import
DefaultIcon1
from
"@/assets/icons/default-icon1.png"
;
import
DefaultIcon1
from
"@/assets/icons/default-icon1.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
...
@@ -296,9 +298,21 @@ const onOverview = async () => {
...
@@ -296,9 +298,21 @@ const onOverview = async () => {
// 相关事件
// 相关事件
const
relatedData
=
ref
([]);
const
relatedData
=
ref
([]);
const
handleGetRelateEvents
=
async
()
=>
{
const
relateParams
=
reactive
({
size
:
5
,
page
:
1
,
total
:
0
,
loading
:
false
,
})
const
onDecreeRelatedEvent
=
async
(
page
)
=>
{
if
(
page
)
keyDecreeInfo
.
page
=
page
relateParams
.
loading
=
true
;
try
{
try
{
const
res
=
await
getDecreeRelatedEvent
({
id
:
decreeId
.
value
});
const
res
=
await
getDecreeRelatedEvent
({
id
:
decreeId
.
value
,
pageNum
:
relateParams
.
page
-
1
,
pageSize
:
relateParams
.
size
,
});
console
.
log
(
"相关事件"
,
res
);
console
.
log
(
"相关事件"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
relatedData
.
value
=
res
.
data
;
relatedData
.
value
=
res
.
data
;
...
@@ -307,8 +321,8 @@ const handleGetRelateEvents = async () => {
...
@@ -307,8 +321,8 @@ const handleGetRelateEvents = async () => {
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
relatedData
.
value
=
[];
relatedData
.
value
=
[];
console
.
error
(
"获取相关事件数据失败"
,
error
);
}
}
relateParams
.
loading
=
false
;
};
};
// 发布机构
// 发布机构
...
@@ -382,7 +396,7 @@ onMounted(() => {
...
@@ -382,7 +396,7 @@ onMounted(() => {
onOverview
()
onOverview
()
onKeyWordUp
()
onKeyWordUp
()
onRiskSignalData
()
onRiskSignalData
()
handleGetRelateEvents
();
onDecreeRelatedEvent
();
handleGetOrgnization
();
handleGetOrgnization
();
});
});
</
script
>
</
script
>
...
...
src/views/decree/decreeLayout/overview/measures/index.vue
浏览文件 @
bb86a146
...
@@ -61,6 +61,13 @@
...
@@ -61,6 +61,13 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box-footer"
style=
"padding: 10px 18px 16px;"
>
<div
class=
"box-footer-left"
>
{{ `共 ${box1Params.total} 项` }}
</div>
<div
class=
"box-footer-right"
>
<el-pagination
:page-size=
"box1Params.size"
@
current-change=
"onMainContentData"
:current-page=
"box1Params.page"
background
layout=
"prev, pager, next"
:total=
"box1Params.total"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</AnalysisBox>
</AnalysisBox>
...
@@ -159,6 +166,7 @@ import ActionButton from '@/components/base/ActionButton/index.vue'
...
@@ -159,6 +166,7 @@ import ActionButton from '@/components/base/ActionButton/index.vue'
import
DefaultIcon1
from
"@/assets/icons/default-icon1.png"
;
import
DefaultIcon1
from
"@/assets/icons/default-icon1.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
defaultCom
from
"@/views/coopRestriction/assets/images/default-icon2.png"
import
defaultCom
from
"@/views/coopRestriction/assets/images/default-icon2.png"
import
SimplePagination
from
"@/components/SimplePagination.vue"
;
import
{
onNumToChinese
}
from
"@/views/marketAccessRestrictions/utils/index"
import
{
onNumToChinese
}
from
"@/views/marketAccessRestrictions/utils/index"
const
route
=
useRoute
();
const
route
=
useRoute
();
...
@@ -217,14 +225,24 @@ const contentList = ref([]);
...
@@ -217,14 +225,24 @@ const contentList = ref([]);
const
ALPHABET
=
[
"a"
,
"b"
,
"c"
,
"d"
,
"e"
,
"f"
,
"g"
,
"h"
,
"i"
,
"j"
,
"k"
,
"l"
,
"m"
,
"n"
,
"o"
,
"p"
,
"q"
,
"r"
,
"s"
,
"t"
,
"u"
,
"v"
,
"w"
,
"x"
,
"y"
,
"z"
];
const
ALPHABET
=
[
"a"
,
"b"
,
"c"
,
"d"
,
"e"
,
"f"
,
"g"
,
"h"
,
"i"
,
"j"
,
"k"
,
"l"
,
"m"
,
"n"
,
"o"
,
"p"
,
"q"
,
"r"
,
"s"
,
"t"
,
"u"
,
"v"
,
"w"
,
"x"
,
"y"
,
"z"
];
const
box1Params
=
reactive
({
const
box1Params
=
reactive
({
loading
:
false
,
loading
:
false
,
size
:
5
,
page
:
1
,
total
:
0
,
})
})
const
onMainContentData
=
async
()
=>
{
const
onMainContentData
=
async
(
page
=
1
)
=>
{
box1Params
.
page
=
page
box1Params
.
loading
=
true
;
box1Params
.
loading
=
true
;
try
{
try
{
const
keyword
=
commandWord
.
value
;
const
keyword
=
commandWord
.
value
;
const
id
=
decreeId
.
value
;
const
id
=
decreeId
.
value
;
if
(
!
id
)
return
;
if
(
!
id
)
return
;
const
res
=
await
getDecreeMainContent
({
id
,
keyword
,
domainId
:
areaType
.
value
});
const
res
=
await
getDecreeMainContent
({
id
,
keyword
:
keyword
||
null
,
domainId
:
areaType
.
value
||
null
,
currentPage
:
box1Params
.
page
,
pageSize
:
box1Params
.
size
,
});
console
.
log
(
"主要指令"
,
res
);
console
.
log
(
"主要指令"
,
res
);
if
(
res
&&
res
.
code
===
200
)
{
if
(
res
&&
res
.
code
===
200
)
{
contentList
.
value
=
res
.
data
||
[];
contentList
.
value
=
res
.
data
||
[];
...
@@ -936,4 +954,20 @@ onMounted(() => {
...
@@ -936,4 +954,20 @@ onMounted(() => {
}
}
}
}
}
}
.box-footer
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-top
:
10px
;
.box-footer-left
{
height
:
20px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
line-height
:
20px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论